From 31a9ce0bbc65850919aaf27a8a730b4e797bd38f Mon Sep 17 00:00:00 2001 From: matthieu_ Date: Tue, 28 Aug 2007 17:32:26 +0000 Subject: code documentation mvc specification finished referer API implementation --- MVC specification.php | 36 ++++ TODO | 10 +- api_test.php | 21 --- index.php | 182 ++++++++++++++++--- misc/generateDoc.sh | 6 +- misc/phpdoc-config.ini | 4 +- misc/stress.sh | 2 +- modules/API/APIable.php | 14 +- modules/API/Proxy.php | 70 +++++++- modules/API/Request.php | 197 ++++++++++++++------- modules/Access.php | 1 - modules/ArchiveProcessing.php | 2 +- modules/ArchiveProcessing/Day.php | 12 +- modules/ArchiveProcessing/Period.php | 4 +- modules/ArchiveProcessing/Record.php | 120 ++++++++++--- modules/Auth.php | 3 +- modules/Common.php | 3 +- modules/Config.php | 2 +- modules/DataFiles/Browsers.php | 5 + modules/DataFiles/Countries.php | 7 +- modules/DataFiles/OS.php | 5 + modules/DataFiles/SearchEngines.php | 19 +- modules/DataTable.php | 1 - modules/DataTable/Filter.php | 25 ++- modules/DataTable/Filter/ColumnCallback.php | 6 +- .../DataTable/Filter/ColumnCallbackAddDetail.php | 9 +- modules/DataTable/Filter/ColumnCallbackReplace.php | 7 +- .../DataTable/Filter/DetailCallbackAddDetail.php | 6 +- modules/DataTable/Filter/Empty.php | 9 +- modules/DataTable/Filter/ExcludeLowPopulation.php | 11 +- modules/DataTable/Filter/Limit.php | 9 +- modules/DataTable/Filter/Pattern.php | 11 +- modules/DataTable/Filter/ReplaceColumnNames.php | 23 ++- modules/DataTable/Filter/Sort.php | 9 +- modules/DataTable/Manager.php | 31 +++- modules/DataTable/Renderer.php | 36 +++- modules/DataTable/Renderer/Console.php | 9 +- modules/DataTable/Renderer/HTML.php | 10 +- modules/DataTable/Renderer/PHP.php | 8 + modules/DataTable/Renderer/XML.php | 7 + modules/DataTable/Row.php | 126 ++++++++++--- modules/DataTable/Row/DataTableSummary.php | 14 +- modules/DataTable/Simple.php | 28 ++- modules/Date.php | 2 +- modules/ErrorHandler.php | 10 +- modules/ExceptionHandler.php | 2 +- modules/Log.php | 2 +- modules/Log/APICall.php | 2 +- modules/Log/Error.php | 2 +- modules/Log/Exception.php | 2 +- modules/Log/Message.php | 2 +- modules/Log/Null.php | 2 +- modules/LogStats.php | 2 +- modules/LogStats/Action.php | 2 +- modules/LogStats/Config.php | 2 +- modules/LogStats/Cookie.php | 2 +- modules/LogStats/Db.php | 3 +- modules/LogStats/Generator.php | 2 +- modules/LogStats/Visit.php | 2 +- modules/Period.php | 4 - modules/Piwik.php | 2 +- modules/Plugin.php | 2 +- modules/PluginsManager.php | 1 - modules/Site.php | 2 +- modules/SitesManager.php | 4 +- modules/TablePartitioning.php | 2 +- modules/Timer.php | 1 - modules/Translate.php | 2 +- modules/UsersManager.php | 2 +- piwik.php | 4 +- plugins/Referers.php | 53 ++++-- plugins/Referers/API.php | 101 ++++++++--- .../searchEngines/affiliate.espotting.fr.png | Bin 0 -> 1045 bytes .../images/searchEngines/arianna.libero.it.png | Bin 0 -> 1025 bytes .../images/searchEngines/class.hit-parade.com.png | Bin 0 -> 1214 bytes .../images/searchEngines/directory.google.com.png | Bin 0 -> 1127 bytes plugins/Referers/images/searchEngines/dmoz.org.png | Bin 0 -> 277 bytes .../images/searchEngines/find.copernic.com.png | Bin 0 -> 28708 bytes .../Referers/images/searchEngines/fr.dir.com.png | Bin 0 -> 1072 bytes .../Referers/images/searchEngines/fr.wedoo.com.png | Bin 0 -> 1001 bytes .../images/searchEngines/fulltext.centrum.cz.png | Bin 0 -> 507 bytes .../Referers/images/searchEngines/g.msn.com.png | Bin 0 -> 1102 bytes .../Referers/images/searchEngines/go.mail.ru.png | Bin 0 -> 255 bytes .../images/searchEngines/hledani.tiscali.cz.png | Bin 0 -> 284 bytes plugins/Referers/images/searchEngines/hotbox.png | Bin 0 -> 1130 bytes .../images/searchEngines/images.google.com.png | Bin 0 -> 1127 bytes .../images/searchEngines/images.yandex.ru.png | Bin 0 -> 341 bytes plugins/Referers/images/searchEngines/jyxo.cz.png | Bin 0 -> 1052 bytes .../images/searchEngines/morfeo.centrum.cz.png | Bin 0 -> 507 bytes .../images/searchEngines/msxml.excite.com.png | Bin 0 -> 1008 bytes .../images/searchEngines/news.google.com.png | Bin 0 -> 1127 bytes .../searchEngines/recherche.club-internet.fr.png | Bin 0 -> 1016 bytes .../searchEngines/recherche.francite.com.png | Bin 0 -> 1095 bytes .../images/searchEngines/recherche.toile.qc.ca.png | Bin 0 -> 1067 bytes .../searchEngines/rechercher.aliceadsl.fr.png | Bin 0 -> 694 bytes .../rechercher.nomade.aliceadsl.fr.png | Bin 0 -> 1062 bytes .../images/searchEngines/search-dyn.tiscali.it.png | Bin 0 -> 1055 bytes .../images/searchEngines/search.about.com.png | Bin 0 -> 733 bytes .../images/searchEngines/search.aol.com.png | Bin 0 -> 1062 bytes .../images/searchEngines/search.atlas.cz.png | Bin 0 -> 489 bytes .../images/searchEngines/search.bluewin.ch.png | Bin 0 -> 852 bytes .../images/searchEngines/search.centrum.cz.png | Bin 0 -> 507 bytes .../images/searchEngines/search.earthlink.net.png | Bin 0 -> 257 bytes .../images/searchEngines/search.free.fr.png | Bin 0 -> 1143 bytes .../images/searchEngines/search.ke.wanadoo.fr.png | Bin 0 -> 1193 bytes .../searchEngines/search.metacrawler.com.png | Bin 0 -> 1128 bytes .../images/searchEngines/search.msn.com.png | Bin 0 -> 1055 bytes .../images/searchEngines/search.netscape.com.png | Bin 0 -> 1132 bytes .../images/searchEngines/search.seznam.cz.png | Bin 0 -> 1149 bytes .../images/searchEngines/search.skynet.be.png | Bin 0 -> 1128 bytes .../images/searchEngines/search.virgilio.it.png | Bin 0 -> 227 bytes .../images/searchEngines/search.voila.com.png | Bin 0 -> 929 bytes .../images/searchEngines/search.yaca.yandex.ru.png | Bin 0 -> 341 bytes .../images/searchEngines/search.yahoo.com.png | Bin 0 -> 254 bytes .../images/searchEngines/search1.seznam.cz.png | Bin 0 -> 1149 bytes .../images/searchEngines/search2.seznam.cz.png | Bin 0 -> 1149 bytes .../Referers/images/searchEngines/sm.aport.ru.png | Bin 0 -> 1032 bytes .../images/searchEngines/translate.google.com.png | Bin 0 -> 1127 bytes .../images/searchEngines/web.toile.com.png | Bin 0 -> 1115 bytes .../Referers/images/searchEngines/web.volny.cz.png | Bin 0 -> 293 bytes .../Referers/images/searchEngines/www.a9.com.png | Bin 0 -> 403 bytes .../images/searchEngines/www.alltheweb.com.png | Bin 0 -> 307 bytes .../images/searchEngines/www.altavista.com.png | Bin 0 -> 454 bytes .../Referers/images/searchEngines/www.ask.com.png | Bin 0 -> 1030 bytes .../Referers/images/searchEngines/www.eo.st.png | Bin 0 -> 598 bytes .../images/searchEngines/www.eu.ixquick.com.png | Bin 0 -> 489 bytes .../images/searchEngines/www.euroseek.com.png | Bin 0 -> 1072 bytes .../images/searchEngines/www.exalead.fr.png | Bin 0 -> 696 bytes .../images/searchEngines/www.google.com.png | Bin 0 -> 1127 bytes .../images/searchEngines/www.google.interia.pl.png | Bin 0 -> 382 bytes .../images/searchEngines/www.hotbot.com.png | Bin 0 -> 237 bytes .../Referers/images/searchEngines/www.icq.com.png | Bin 0 -> 1208 bytes .../images/searchEngines/www.looksmart.com.png | Bin 0 -> 1089 bytes .../images/searchEngines/www.mozbot.com.png | Bin 0 -> 1041 bytes .../searchEngines/www.multimania.lycos.fr.png | Bin 0 -> 1214 bytes .../images/searchEngines/www.mywebsearch.com.png | Bin 0 -> 1092 bytes .../Referers/images/searchEngines/www.najdi.si.png | Bin 0 -> 721 bytes .../images/searchEngines/www.northernlight.com.png | Bin 0 -> 1141 bytes .../images/searchEngines/www.rambler.ru.png | Bin 0 -> 539 bytes .../images/searchEngines/www.reacteur.com.png | Bin 0 -> 1076 bytes .../images/searchEngines/www.search.ch.png | Bin 0 -> 250 bytes .../images/searchEngines/www.search.com.png | Bin 0 -> 997 bytes .../images/searchEngines/www.searchalot.com.png | Bin 0 -> 223 bytes .../images/searchEngines/www.teoma.com.png | Bin 0 -> 1003 bytes .../images/searchEngines/www.webalta.ru.png | Bin 0 -> 389 bytes .../images/searchEngines/www.weborama.fr.png | Bin 0 -> 1214 bytes .../Referers/images/searchEngines/www.ya.ru.png | Bin 0 -> 341 bytes .../images/searchEngines/www.yandex.ru.png | Bin 0 -> 341 bytes .../images/searchEngines/www.zoeken.nl.png | Bin 0 -> 1031 bytes .../Referers/images/searchEngines/www3.zoek.nl.png | Bin 0 -> 1214 bytes plugins/Referers/images/searchEngines/xx.gif | Bin 0 -> 55 bytes plugins/Referers/images/searchEngines/xx.png | Bin 0 -> 980 bytes plugins/Referers/images/searchEngines/ya.ru.png | Bin 0 -> 341 bytes .../Referers/images/searchEngines/yandex.ru.png | Bin 0 -> 341 bytes .../Referers/images/searchEngines/zoohoo.cz.png | Bin 0 -> 1009 bytes plugins/Referers/lang/en.php | 2 +- plugins/UserCountry/flags/ad.png | Bin 0 -> 760 bytes plugins/UserCountry/flags/ae.png | Bin 0 -> 657 bytes plugins/UserCountry/flags/af.png | Bin 0 -> 760 bytes plugins/UserCountry/flags/ag.png | Bin 0 -> 730 bytes plugins/UserCountry/flags/al.png | Bin 0 -> 737 bytes plugins/UserCountry/flags/am.png | Bin 0 -> 751 bytes plugins/UserCountry/flags/ao.png | Bin 0 -> 756 bytes plugins/UserCountry/flags/ar.png | Bin 0 -> 761 bytes plugins/UserCountry/flags/at.png | Bin 0 -> 747 bytes plugins/UserCountry/flags/au.png | Bin 0 -> 773 bytes plugins/UserCountry/flags/az.png | Bin 0 -> 772 bytes plugins/UserCountry/flags/ba.png | Bin 0 -> 776 bytes plugins/UserCountry/flags/bb.png | Bin 0 -> 773 bytes plugins/UserCountry/flags/bd.png | Bin 0 -> 728 bytes plugins/UserCountry/flags/be.png | Bin 0 -> 748 bytes plugins/UserCountry/flags/bf.png | Bin 0 -> 763 bytes plugins/UserCountry/flags/bg.png | Bin 0 -> 756 bytes plugins/UserCountry/flags/bh.png | Bin 0 -> 698 bytes plugins/UserCountry/flags/bi.png | Bin 0 -> 770 bytes plugins/UserCountry/flags/bj.png | Bin 0 -> 757 bytes plugins/UserCountry/flags/bn.png | Bin 0 -> 779 bytes plugins/UserCountry/flags/bo.png | Bin 0 -> 769 bytes plugins/UserCountry/flags/br.png | Bin 0 -> 779 bytes plugins/UserCountry/flags/bs.png | Bin 0 -> 766 bytes plugins/UserCountry/flags/bt.png | Bin 0 -> 776 bytes plugins/UserCountry/flags/bw.png | Bin 0 -> 714 bytes plugins/UserCountry/flags/by.png | Bin 0 -> 770 bytes plugins/UserCountry/flags/bz.png | Bin 0 -> 776 bytes plugins/UserCountry/flags/ca.png | Bin 0 -> 755 bytes plugins/UserCountry/flags/cf.png | Bin 0 -> 782 bytes plugins/UserCountry/flags/cg.png | Bin 0 -> 722 bytes plugins/UserCountry/flags/ch.png | Bin 0 -> 744 bytes plugins/UserCountry/flags/ci.png | Bin 0 -> 725 bytes plugins/UserCountry/flags/ck.png | Bin 0 -> 773 bytes plugins/UserCountry/flags/cl.png | Bin 0 -> 735 bytes plugins/UserCountry/flags/cm.png | Bin 0 -> 776 bytes plugins/UserCountry/flags/cn.png | Bin 0 -> 576 bytes plugins/UserCountry/flags/co.png | Bin 0 -> 724 bytes plugins/UserCountry/flags/cr.png | Bin 0 -> 773 bytes plugins/UserCountry/flags/cs.png | Bin 0 -> 589 bytes plugins/UserCountry/flags/cu.png | Bin 0 -> 779 bytes plugins/UserCountry/flags/cv.png | Bin 0 -> 765 bytes plugins/UserCountry/flags/cy.png | Bin 0 -> 687 bytes plugins/UserCountry/flags/cz.png | Bin 0 -> 739 bytes plugins/UserCountry/flags/de.png | Bin 0 -> 753 bytes plugins/UserCountry/flags/dj.png | Bin 0 -> 764 bytes plugins/UserCountry/flags/dk.png | Bin 0 -> 719 bytes plugins/UserCountry/flags/dm.png | Bin 0 -> 787 bytes plugins/UserCountry/flags/do.png | Bin 0 -> 777 bytes plugins/UserCountry/flags/dz.png | Bin 0 -> 695 bytes plugins/UserCountry/flags/ec.png | Bin 0 -> 775 bytes plugins/UserCountry/flags/ee.png | Bin 0 -> 720 bytes plugins/UserCountry/flags/eg.png | Bin 0 -> 735 bytes plugins/UserCountry/flags/er.png | Bin 0 -> 782 bytes plugins/UserCountry/flags/es.png | Bin 0 -> 782 bytes plugins/UserCountry/flags/et.png | Bin 0 -> 776 bytes plugins/UserCountry/flags/fi.png | Bin 0 -> 728 bytes plugins/UserCountry/flags/fj.png | Bin 0 -> 782 bytes plugins/UserCountry/flags/fm.png | Bin 0 -> 685 bytes plugins/UserCountry/flags/fr.png | Bin 0 -> 738 bytes plugins/UserCountry/flags/ga.png | Bin 0 -> 779 bytes plugins/UserCountry/flags/gb.png | Bin 0 -> 779 bytes plugins/UserCountry/flags/gd.png | Bin 0 -> 793 bytes plugins/UserCountry/flags/ge.png | Bin 0 -> 595 bytes plugins/UserCountry/flags/gh.png | Bin 0 -> 742 bytes plugins/UserCountry/flags/gm.png | Bin 0 -> 748 bytes plugins/UserCountry/flags/gn.png | Bin 0 -> 716 bytes plugins/UserCountry/flags/gq.png | Bin 0 -> 778 bytes plugins/UserCountry/flags/gr.png | Bin 0 -> 779 bytes plugins/UserCountry/flags/gt.png | Bin 0 -> 767 bytes plugins/UserCountry/flags/gw.png | Bin 0 -> 737 bytes plugins/UserCountry/flags/gy.png | Bin 0 -> 765 bytes plugins/UserCountry/flags/hk.png | Bin 0 -> 1055 bytes plugins/UserCountry/flags/hn.png | Bin 0 -> 757 bytes plugins/UserCountry/flags/hr.png | Bin 0 -> 765 bytes plugins/UserCountry/flags/ht.png | Bin 0 -> 776 bytes plugins/UserCountry/flags/hu.png | Bin 0 -> 745 bytes plugins/UserCountry/flags/id.png | Bin 0 -> 726 bytes plugins/UserCountry/flags/ie.png | Bin 0 -> 730 bytes plugins/UserCountry/flags/il.png | Bin 0 -> 751 bytes plugins/UserCountry/flags/in.png | Bin 0 -> 764 bytes plugins/UserCountry/flags/iq.png | Bin 0 -> 754 bytes plugins/UserCountry/flags/ir.png | Bin 0 -> 779 bytes plugins/UserCountry/flags/is.png | Bin 0 -> 779 bytes plugins/UserCountry/flags/it.png | Bin 0 -> 710 bytes plugins/UserCountry/flags/jm.png | Bin 0 -> 763 bytes plugins/UserCountry/flags/jo.png | Bin 0 -> 766 bytes plugins/UserCountry/flags/jp.png | Bin 0 -> 630 bytes plugins/UserCountry/flags/ke.png | Bin 0 -> 763 bytes plugins/UserCountry/flags/kg.png | Bin 0 -> 750 bytes plugins/UserCountry/flags/kh.png | Bin 0 -> 776 bytes plugins/UserCountry/flags/ki.png | Bin 0 -> 778 bytes plugins/UserCountry/flags/km.png | Bin 0 -> 781 bytes plugins/UserCountry/flags/kn.png | Bin 0 -> 697 bytes plugins/UserCountry/flags/kp.png | Bin 0 -> 776 bytes plugins/UserCountry/flags/kr.png | Bin 0 -> 686 bytes plugins/UserCountry/flags/kw.png | Bin 0 -> 703 bytes plugins/UserCountry/flags/kz.png | Bin 0 -> 754 bytes plugins/UserCountry/flags/la.png | Bin 0 -> 744 bytes plugins/UserCountry/flags/lb.png | Bin 0 -> 751 bytes plugins/UserCountry/flags/lc.png | Bin 0 -> 773 bytes plugins/UserCountry/flags/li.png | Bin 0 -> 715 bytes plugins/UserCountry/flags/lk.png | Bin 0 -> 782 bytes plugins/UserCountry/flags/lr.png | Bin 0 -> 775 bytes plugins/UserCountry/flags/ls.png | Bin 0 -> 790 bytes plugins/UserCountry/flags/lt.png | Bin 0 -> 595 bytes plugins/UserCountry/flags/lu.png | Bin 0 -> 750 bytes plugins/UserCountry/flags/lv.png | Bin 0 -> 705 bytes plugins/UserCountry/flags/ly.png | Bin 0 -> 548 bytes plugins/UserCountry/flags/ma.png | Bin 0 -> 849 bytes plugins/UserCountry/flags/mc.png | Bin 0 -> 730 bytes plugins/UserCountry/flags/md.png | Bin 0 -> 753 bytes plugins/UserCountry/flags/mg.png | Bin 0 -> 741 bytes plugins/UserCountry/flags/mh.png | Bin 0 -> 754 bytes plugins/UserCountry/flags/mk.png | Bin 0 -> 811 bytes plugins/UserCountry/flags/ml.png | Bin 0 -> 720 bytes plugins/UserCountry/flags/mm.png | Bin 0 -> 693 bytes plugins/UserCountry/flags/mn.png | Bin 0 -> 782 bytes plugins/UserCountry/flags/mr.png | Bin 0 -> 676 bytes plugins/UserCountry/flags/mt.png | Bin 0 -> 733 bytes plugins/UserCountry/flags/mu.png | Bin 0 -> 721 bytes plugins/UserCountry/flags/mv.png | Bin 0 -> 754 bytes plugins/UserCountry/flags/mw.png | Bin 0 -> 648 bytes plugins/UserCountry/flags/mx.png | Bin 0 -> 745 bytes plugins/UserCountry/flags/my.png | Bin 0 -> 782 bytes plugins/UserCountry/flags/mz.png | Bin 0 -> 770 bytes plugins/UserCountry/flags/na.png | Bin 0 -> 773 bytes plugins/UserCountry/flags/ne.png | Bin 0 -> 769 bytes plugins/UserCountry/flags/ng.png | Bin 0 -> 660 bytes plugins/UserCountry/flags/ni.png | Bin 0 -> 751 bytes plugins/UserCountry/flags/nl.png | Bin 0 -> 744 bytes plugins/UserCountry/flags/no.png | Bin 0 -> 753 bytes plugins/UserCountry/flags/np.png | Bin 0 -> 591 bytes plugins/UserCountry/flags/nr.png | Bin 0 -> 744 bytes plugins/UserCountry/flags/nu.png | Bin 0 -> 727 bytes plugins/UserCountry/flags/nz.png | Bin 0 -> 760 bytes plugins/UserCountry/flags/om.png | Bin 0 -> 750 bytes plugins/UserCountry/flags/pa.png | Bin 0 -> 1116 bytes plugins/UserCountry/flags/pe.png | Bin 0 -> 770 bytes plugins/UserCountry/flags/pg.png | Bin 0 -> 619 bytes plugins/UserCountry/flags/ph.png | Bin 0 -> 776 bytes plugins/UserCountry/flags/pk.png | Bin 0 -> 759 bytes plugins/UserCountry/flags/pl.png | Bin 0 -> 703 bytes plugins/UserCountry/flags/po.png | Bin 0 -> 703 bytes plugins/UserCountry/flags/pt.png | Bin 0 -> 724 bytes plugins/UserCountry/flags/pw.png | Bin 0 -> 723 bytes plugins/UserCountry/flags/py.png | Bin 0 -> 765 bytes plugins/UserCountry/flags/qa.png | Bin 0 -> 662 bytes plugins/UserCountry/flags/ro.png | Bin 0 -> 772 bytes plugins/UserCountry/flags/rs.png | Bin 0 -> 756 bytes plugins/UserCountry/flags/ru.png | Bin 0 -> 756 bytes plugins/UserCountry/flags/rw.png | Bin 0 -> 739 bytes plugins/UserCountry/flags/sa.png | Bin 0 -> 745 bytes plugins/UserCountry/flags/sb.png | Bin 0 -> 773 bytes plugins/UserCountry/flags/sc.png | Bin 0 -> 796 bytes plugins/UserCountry/flags/sd.png | Bin 0 -> 741 bytes plugins/UserCountry/flags/se.png | Bin 0 -> 765 bytes plugins/UserCountry/flags/sg.png | Bin 0 -> 726 bytes plugins/UserCountry/flags/si.png | Bin 0 -> 748 bytes plugins/UserCountry/flags/sk.png | Bin 0 -> 760 bytes plugins/UserCountry/flags/sl.png | Bin 0 -> 754 bytes plugins/UserCountry/flags/sm.png | Bin 0 -> 796 bytes plugins/UserCountry/flags/sn.png | Bin 0 -> 721 bytes plugins/UserCountry/flags/so.png | Bin 0 -> 694 bytes plugins/UserCountry/flags/sr.png | Bin 0 -> 715 bytes plugins/UserCountry/flags/st.png | Bin 0 -> 745 bytes plugins/UserCountry/flags/sv.png | Bin 0 -> 736 bytes plugins/UserCountry/flags/sy.png | Bin 0 -> 615 bytes plugins/UserCountry/flags/sz.png | Bin 0 -> 811 bytes plugins/UserCountry/flags/td.png | Bin 0 -> 714 bytes plugins/UserCountry/flags/tg.png | Bin 0 -> 779 bytes plugins/UserCountry/flags/th.png | Bin 0 -> 770 bytes plugins/UserCountry/flags/tj.png | Bin 0 -> 778 bytes plugins/UserCountry/flags/tm.png | Bin 0 -> 567 bytes plugins/UserCountry/flags/tn.png | Bin 0 -> 744 bytes plugins/UserCountry/flags/to.png | Bin 0 -> 667 bytes plugins/UserCountry/flags/tr.png | Bin 0 -> 672 bytes plugins/UserCountry/flags/tt.png | Bin 0 -> 773 bytes plugins/UserCountry/flags/tv.png | Bin 0 -> 773 bytes plugins/UserCountry/flags/tw.png | Bin 0 -> 1061 bytes plugins/UserCountry/flags/tz.png | Bin 0 -> 725 bytes plugins/UserCountry/flags/ua.png | Bin 0 -> 765 bytes plugins/UserCountry/flags/ug.png | Bin 0 -> 773 bytes plugins/UserCountry/flags/uk.png | Bin 0 -> 779 bytes plugins/UserCountry/flags/us.png | Bin 0 -> 779 bytes plugins/UserCountry/flags/uy.png | Bin 0 -> 773 bytes plugins/UserCountry/flags/uz.png | Bin 0 -> 769 bytes plugins/UserCountry/flags/va.png | Bin 0 -> 745 bytes plugins/UserCountry/flags/vc.png | Bin 0 -> 805 bytes plugins/UserCountry/flags/ve.png | Bin 0 -> 776 bytes plugins/UserCountry/flags/vi.png | Bin 0 -> 776 bytes plugins/UserCountry/flags/vn.png | Bin 0 -> 696 bytes plugins/UserCountry/flags/vu.png | Bin 0 -> 737 bytes plugins/UserCountry/flags/ws.png | Bin 0 -> 673 bytes plugins/UserCountry/flags/xx.png | Bin 0 -> 658 bytes plugins/UserCountry/flags/ye.png | Bin 0 -> 717 bytes plugins/UserCountry/flags/yu.png | Bin 0 -> 751 bytes plugins/UserCountry/flags/za.png | Bin 0 -> 779 bytes plugins/UserCountry/flags/zm.png | Bin 0 -> 645 bytes plugins/UserCountry/flags/zr.png | Bin 0 -> 757 bytes plugins/UserCountry/flags/zw.png | Bin 0 -> 782 bytes plugins/UserSettings.php | 2 +- tests/all_tests.php | 2 +- tests/modules/Common.test.php | 2 +- tests/modules/Date.test.php | 2 +- tests/modules/Period.test.php | 2 +- tests/modules/Piwik.test.php | 2 +- tests/modules/SitesManager.test.php | 2 +- tests/modules/TablePartitioning.test.php | 2 +- tests/modules/blank.test.php | 2 +- 366 files changed, 1053 insertions(+), 308 deletions(-) create mode 100644 MVC specification.php delete mode 100644 api_test.php create mode 100644 plugins/Referers/images/searchEngines/affiliate.espotting.fr.png create mode 100644 plugins/Referers/images/searchEngines/arianna.libero.it.png create mode 100644 plugins/Referers/images/searchEngines/class.hit-parade.com.png create mode 100644 plugins/Referers/images/searchEngines/directory.google.com.png create mode 100644 plugins/Referers/images/searchEngines/dmoz.org.png create mode 100644 plugins/Referers/images/searchEngines/find.copernic.com.png create mode 100644 plugins/Referers/images/searchEngines/fr.dir.com.png create mode 100644 plugins/Referers/images/searchEngines/fr.wedoo.com.png create mode 100644 plugins/Referers/images/searchEngines/fulltext.centrum.cz.png create mode 100644 plugins/Referers/images/searchEngines/g.msn.com.png create mode 100644 plugins/Referers/images/searchEngines/go.mail.ru.png create mode 100644 plugins/Referers/images/searchEngines/hledani.tiscali.cz.png create mode 100644 plugins/Referers/images/searchEngines/hotbox.png create mode 100644 plugins/Referers/images/searchEngines/images.google.com.png create mode 100644 plugins/Referers/images/searchEngines/images.yandex.ru.png create mode 100644 plugins/Referers/images/searchEngines/jyxo.cz.png create mode 100644 plugins/Referers/images/searchEngines/morfeo.centrum.cz.png create mode 100644 plugins/Referers/images/searchEngines/msxml.excite.com.png create mode 100644 plugins/Referers/images/searchEngines/news.google.com.png create mode 100644 plugins/Referers/images/searchEngines/recherche.club-internet.fr.png create mode 100644 plugins/Referers/images/searchEngines/recherche.francite.com.png create mode 100644 plugins/Referers/images/searchEngines/recherche.toile.qc.ca.png create mode 100644 plugins/Referers/images/searchEngines/rechercher.aliceadsl.fr.png create mode 100644 plugins/Referers/images/searchEngines/rechercher.nomade.aliceadsl.fr.png create mode 100644 plugins/Referers/images/searchEngines/search-dyn.tiscali.it.png create mode 100644 plugins/Referers/images/searchEngines/search.about.com.png create mode 100644 plugins/Referers/images/searchEngines/search.aol.com.png create mode 100644 plugins/Referers/images/searchEngines/search.atlas.cz.png create mode 100644 plugins/Referers/images/searchEngines/search.bluewin.ch.png create mode 100644 plugins/Referers/images/searchEngines/search.centrum.cz.png create mode 100644 plugins/Referers/images/searchEngines/search.earthlink.net.png create mode 100644 plugins/Referers/images/searchEngines/search.free.fr.png create mode 100644 plugins/Referers/images/searchEngines/search.ke.wanadoo.fr.png create mode 100644 plugins/Referers/images/searchEngines/search.metacrawler.com.png create mode 100644 plugins/Referers/images/searchEngines/search.msn.com.png create mode 100644 plugins/Referers/images/searchEngines/search.netscape.com.png create mode 100644 plugins/Referers/images/searchEngines/search.seznam.cz.png create mode 100644 plugins/Referers/images/searchEngines/search.skynet.be.png create mode 100644 plugins/Referers/images/searchEngines/search.virgilio.it.png create mode 100644 plugins/Referers/images/searchEngines/search.voila.com.png create mode 100644 plugins/Referers/images/searchEngines/search.yaca.yandex.ru.png create mode 100644 plugins/Referers/images/searchEngines/search.yahoo.com.png create mode 100644 plugins/Referers/images/searchEngines/search1.seznam.cz.png create mode 100644 plugins/Referers/images/searchEngines/search2.seznam.cz.png create mode 100644 plugins/Referers/images/searchEngines/sm.aport.ru.png create mode 100644 plugins/Referers/images/searchEngines/translate.google.com.png create mode 100644 plugins/Referers/images/searchEngines/web.toile.com.png create mode 100644 plugins/Referers/images/searchEngines/web.volny.cz.png create mode 100644 plugins/Referers/images/searchEngines/www.a9.com.png create mode 100644 plugins/Referers/images/searchEngines/www.alltheweb.com.png create mode 100644 plugins/Referers/images/searchEngines/www.altavista.com.png create mode 100644 plugins/Referers/images/searchEngines/www.ask.com.png create mode 100644 plugins/Referers/images/searchEngines/www.eo.st.png create mode 100644 plugins/Referers/images/searchEngines/www.eu.ixquick.com.png create mode 100644 plugins/Referers/images/searchEngines/www.euroseek.com.png create mode 100644 plugins/Referers/images/searchEngines/www.exalead.fr.png create mode 100644 plugins/Referers/images/searchEngines/www.google.com.png create mode 100644 plugins/Referers/images/searchEngines/www.google.interia.pl.png create mode 100644 plugins/Referers/images/searchEngines/www.hotbot.com.png create mode 100644 plugins/Referers/images/searchEngines/www.icq.com.png create mode 100644 plugins/Referers/images/searchEngines/www.looksmart.com.png create mode 100644 plugins/Referers/images/searchEngines/www.mozbot.com.png create mode 100644 plugins/Referers/images/searchEngines/www.multimania.lycos.fr.png create mode 100644 plugins/Referers/images/searchEngines/www.mywebsearch.com.png create mode 100644 plugins/Referers/images/searchEngines/www.najdi.si.png create mode 100644 plugins/Referers/images/searchEngines/www.northernlight.com.png create mode 100644 plugins/Referers/images/searchEngines/www.rambler.ru.png create mode 100644 plugins/Referers/images/searchEngines/www.reacteur.com.png create mode 100644 plugins/Referers/images/searchEngines/www.search.ch.png create mode 100644 plugins/Referers/images/searchEngines/www.search.com.png create mode 100644 plugins/Referers/images/searchEngines/www.searchalot.com.png create mode 100644 plugins/Referers/images/searchEngines/www.teoma.com.png create mode 100644 plugins/Referers/images/searchEngines/www.webalta.ru.png create mode 100644 plugins/Referers/images/searchEngines/www.weborama.fr.png create mode 100644 plugins/Referers/images/searchEngines/www.ya.ru.png create mode 100644 plugins/Referers/images/searchEngines/www.yandex.ru.png create mode 100644 plugins/Referers/images/searchEngines/www.zoeken.nl.png create mode 100644 plugins/Referers/images/searchEngines/www3.zoek.nl.png create mode 100644 plugins/Referers/images/searchEngines/xx.gif create mode 100644 plugins/Referers/images/searchEngines/xx.png create mode 100644 plugins/Referers/images/searchEngines/ya.ru.png create mode 100644 plugins/Referers/images/searchEngines/yandex.ru.png create mode 100644 plugins/Referers/images/searchEngines/zoohoo.cz.png create mode 100755 plugins/UserCountry/flags/ad.png create mode 100755 plugins/UserCountry/flags/ae.png create mode 100755 plugins/UserCountry/flags/af.png create mode 100755 plugins/UserCountry/flags/ag.png create mode 100755 plugins/UserCountry/flags/al.png create mode 100755 plugins/UserCountry/flags/am.png create mode 100755 plugins/UserCountry/flags/ao.png create mode 100755 plugins/UserCountry/flags/ar.png create mode 100755 plugins/UserCountry/flags/at.png create mode 100755 plugins/UserCountry/flags/au.png create mode 100755 plugins/UserCountry/flags/az.png create mode 100755 plugins/UserCountry/flags/ba.png create mode 100755 plugins/UserCountry/flags/bb.png create mode 100755 plugins/UserCountry/flags/bd.png create mode 100755 plugins/UserCountry/flags/be.png create mode 100755 plugins/UserCountry/flags/bf.png create mode 100755 plugins/UserCountry/flags/bg.png create mode 100755 plugins/UserCountry/flags/bh.png create mode 100755 plugins/UserCountry/flags/bi.png create mode 100755 plugins/UserCountry/flags/bj.png create mode 100755 plugins/UserCountry/flags/bn.png create mode 100755 plugins/UserCountry/flags/bo.png create mode 100755 plugins/UserCountry/flags/br.png create mode 100755 plugins/UserCountry/flags/bs.png create mode 100755 plugins/UserCountry/flags/bt.png create mode 100755 plugins/UserCountry/flags/bw.png create mode 100755 plugins/UserCountry/flags/by.png create mode 100755 plugins/UserCountry/flags/bz.png create mode 100755 plugins/UserCountry/flags/ca.png create mode 100755 plugins/UserCountry/flags/cf.png create mode 100755 plugins/UserCountry/flags/cg.png create mode 100755 plugins/UserCountry/flags/ch.png create mode 100755 plugins/UserCountry/flags/ci.png create mode 100755 plugins/UserCountry/flags/ck.png create mode 100755 plugins/UserCountry/flags/cl.png create mode 100755 plugins/UserCountry/flags/cm.png create mode 100755 plugins/UserCountry/flags/cn.png create mode 100755 plugins/UserCountry/flags/co.png create mode 100755 plugins/UserCountry/flags/cr.png create mode 100755 plugins/UserCountry/flags/cs.png create mode 100755 plugins/UserCountry/flags/cu.png create mode 100755 plugins/UserCountry/flags/cv.png create mode 100755 plugins/UserCountry/flags/cy.png create mode 100755 plugins/UserCountry/flags/cz.png create mode 100755 plugins/UserCountry/flags/de.png create mode 100755 plugins/UserCountry/flags/dj.png create mode 100755 plugins/UserCountry/flags/dk.png create mode 100755 plugins/UserCountry/flags/dm.png create mode 100755 plugins/UserCountry/flags/do.png create mode 100755 plugins/UserCountry/flags/dz.png create mode 100755 plugins/UserCountry/flags/ec.png create mode 100755 plugins/UserCountry/flags/ee.png create mode 100755 plugins/UserCountry/flags/eg.png create mode 100755 plugins/UserCountry/flags/er.png create mode 100755 plugins/UserCountry/flags/es.png create mode 100755 plugins/UserCountry/flags/et.png create mode 100755 plugins/UserCountry/flags/fi.png create mode 100755 plugins/UserCountry/flags/fj.png create mode 100755 plugins/UserCountry/flags/fm.png create mode 100755 plugins/UserCountry/flags/fr.png create mode 100755 plugins/UserCountry/flags/ga.png create mode 100755 plugins/UserCountry/flags/gb.png create mode 100755 plugins/UserCountry/flags/gd.png create mode 100755 plugins/UserCountry/flags/ge.png create mode 100755 plugins/UserCountry/flags/gh.png create mode 100755 plugins/UserCountry/flags/gm.png create mode 100755 plugins/UserCountry/flags/gn.png create mode 100755 plugins/UserCountry/flags/gq.png create mode 100755 plugins/UserCountry/flags/gr.png create mode 100755 plugins/UserCountry/flags/gt.png create mode 100755 plugins/UserCountry/flags/gw.png create mode 100755 plugins/UserCountry/flags/gy.png create mode 100755 plugins/UserCountry/flags/hk.png create mode 100755 plugins/UserCountry/flags/hn.png create mode 100755 plugins/UserCountry/flags/hr.png create mode 100755 plugins/UserCountry/flags/ht.png create mode 100755 plugins/UserCountry/flags/hu.png create mode 100755 plugins/UserCountry/flags/id.png create mode 100755 plugins/UserCountry/flags/ie.png create mode 100755 plugins/UserCountry/flags/il.png create mode 100755 plugins/UserCountry/flags/in.png create mode 100755 plugins/UserCountry/flags/iq.png create mode 100755 plugins/UserCountry/flags/ir.png create mode 100755 plugins/UserCountry/flags/is.png create mode 100755 plugins/UserCountry/flags/it.png create mode 100755 plugins/UserCountry/flags/jm.png create mode 100755 plugins/UserCountry/flags/jo.png create mode 100755 plugins/UserCountry/flags/jp.png create mode 100755 plugins/UserCountry/flags/ke.png create mode 100755 plugins/UserCountry/flags/kg.png create mode 100755 plugins/UserCountry/flags/kh.png create mode 100755 plugins/UserCountry/flags/ki.png create mode 100755 plugins/UserCountry/flags/km.png create mode 100755 plugins/UserCountry/flags/kn.png create mode 100755 plugins/UserCountry/flags/kp.png create mode 100755 plugins/UserCountry/flags/kr.png create mode 100755 plugins/UserCountry/flags/kw.png create mode 100755 plugins/UserCountry/flags/kz.png create mode 100755 plugins/UserCountry/flags/la.png create mode 100755 plugins/UserCountry/flags/lb.png create mode 100755 plugins/UserCountry/flags/lc.png create mode 100755 plugins/UserCountry/flags/li.png create mode 100755 plugins/UserCountry/flags/lk.png create mode 100755 plugins/UserCountry/flags/lr.png create mode 100755 plugins/UserCountry/flags/ls.png create mode 100755 plugins/UserCountry/flags/lt.png create mode 100755 plugins/UserCountry/flags/lu.png create mode 100755 plugins/UserCountry/flags/lv.png create mode 100755 plugins/UserCountry/flags/ly.png create mode 100755 plugins/UserCountry/flags/ma.png create mode 100755 plugins/UserCountry/flags/mc.png create mode 100755 plugins/UserCountry/flags/md.png create mode 100755 plugins/UserCountry/flags/mg.png create mode 100755 plugins/UserCountry/flags/mh.png create mode 100755 plugins/UserCountry/flags/mk.png create mode 100755 plugins/UserCountry/flags/ml.png create mode 100755 plugins/UserCountry/flags/mm.png create mode 100755 plugins/UserCountry/flags/mn.png create mode 100755 plugins/UserCountry/flags/mr.png create mode 100755 plugins/UserCountry/flags/mt.png create mode 100755 plugins/UserCountry/flags/mu.png create mode 100755 plugins/UserCountry/flags/mv.png create mode 100755 plugins/UserCountry/flags/mw.png create mode 100755 plugins/UserCountry/flags/mx.png create mode 100755 plugins/UserCountry/flags/my.png create mode 100755 plugins/UserCountry/flags/mz.png create mode 100755 plugins/UserCountry/flags/na.png create mode 100755 plugins/UserCountry/flags/ne.png create mode 100755 plugins/UserCountry/flags/ng.png create mode 100755 plugins/UserCountry/flags/ni.png create mode 100755 plugins/UserCountry/flags/nl.png create mode 100755 plugins/UserCountry/flags/no.png create mode 100755 plugins/UserCountry/flags/np.png create mode 100755 plugins/UserCountry/flags/nr.png create mode 100755 plugins/UserCountry/flags/nu.png create mode 100755 plugins/UserCountry/flags/nz.png create mode 100755 plugins/UserCountry/flags/om.png create mode 100755 plugins/UserCountry/flags/pa.png create mode 100755 plugins/UserCountry/flags/pe.png create mode 100755 plugins/UserCountry/flags/pg.png create mode 100755 plugins/UserCountry/flags/ph.png create mode 100755 plugins/UserCountry/flags/pk.png create mode 100755 plugins/UserCountry/flags/pl.png create mode 100755 plugins/UserCountry/flags/po.png create mode 100755 plugins/UserCountry/flags/pt.png create mode 100755 plugins/UserCountry/flags/pw.png create mode 100755 plugins/UserCountry/flags/py.png create mode 100755 plugins/UserCountry/flags/qa.png create mode 100755 plugins/UserCountry/flags/ro.png create mode 100755 plugins/UserCountry/flags/rs.png create mode 100755 plugins/UserCountry/flags/ru.png create mode 100755 plugins/UserCountry/flags/rw.png create mode 100755 plugins/UserCountry/flags/sa.png create mode 100755 plugins/UserCountry/flags/sb.png create mode 100755 plugins/UserCountry/flags/sc.png create mode 100755 plugins/UserCountry/flags/sd.png create mode 100755 plugins/UserCountry/flags/se.png create mode 100755 plugins/UserCountry/flags/sg.png create mode 100755 plugins/UserCountry/flags/si.png create mode 100755 plugins/UserCountry/flags/sk.png create mode 100755 plugins/UserCountry/flags/sl.png create mode 100755 plugins/UserCountry/flags/sm.png create mode 100755 plugins/UserCountry/flags/sn.png create mode 100755 plugins/UserCountry/flags/so.png create mode 100755 plugins/UserCountry/flags/sr.png create mode 100755 plugins/UserCountry/flags/st.png create mode 100755 plugins/UserCountry/flags/sv.png create mode 100755 plugins/UserCountry/flags/sy.png create mode 100755 plugins/UserCountry/flags/sz.png create mode 100755 plugins/UserCountry/flags/td.png create mode 100755 plugins/UserCountry/flags/tg.png create mode 100755 plugins/UserCountry/flags/th.png create mode 100755 plugins/UserCountry/flags/tj.png create mode 100755 plugins/UserCountry/flags/tm.png create mode 100755 plugins/UserCountry/flags/tn.png create mode 100755 plugins/UserCountry/flags/to.png create mode 100755 plugins/UserCountry/flags/tr.png create mode 100755 plugins/UserCountry/flags/tt.png create mode 100755 plugins/UserCountry/flags/tv.png create mode 100755 plugins/UserCountry/flags/tw.png create mode 100755 plugins/UserCountry/flags/tz.png create mode 100755 plugins/UserCountry/flags/ua.png create mode 100755 plugins/UserCountry/flags/ug.png create mode 100755 plugins/UserCountry/flags/uk.png create mode 100755 plugins/UserCountry/flags/us.png create mode 100755 plugins/UserCountry/flags/uy.png create mode 100755 plugins/UserCountry/flags/uz.png create mode 100755 plugins/UserCountry/flags/va.png create mode 100755 plugins/UserCountry/flags/vc.png create mode 100755 plugins/UserCountry/flags/ve.png create mode 100755 plugins/UserCountry/flags/vi.png create mode 100755 plugins/UserCountry/flags/vn.png create mode 100755 plugins/UserCountry/flags/vu.png create mode 100755 plugins/UserCountry/flags/ws.png create mode 100755 plugins/UserCountry/flags/xx.png create mode 100755 plugins/UserCountry/flags/ye.png create mode 100755 plugins/UserCountry/flags/yu.png create mode 100755 plugins/UserCountry/flags/za.png create mode 100755 plugins/UserCountry/flags/zm.png create mode 100755 plugins/UserCountry/flags/zr.png create mode 100755 plugins/UserCountry/flags/zw.png diff --git a/MVC specification.php b/MVC specification.php new file mode 100644 index 0000000000..728c205227 --- /dev/null +++ b/MVC specification.php @@ -0,0 +1,36 @@ +MVC specification +================= + +Modules that need to display HTML +- Installation +- Administration modules +- All the reports modules + +These modules can be part of the "core" or "plugins" + +It must be *easy* for a plugin to display some data in the interface +Either +- add a menu in the main menu, or a submenu +- Modify the footer/header +- Add a table in a page + +A plugin can have a tab for its configuration + +But at the same time a plugin can require to edit the template +and add some dirty PHP code in the source so that the author doesn't +have to bother about model, view and controller if he wants to do something simple + + +* Using Smarty for template engine + + +Use cases +------------------------------------------------------------------------------------ +1 - Plugin publishes the list of the last N visitors with their information +2 - Display a Google map of the last visitors locations +3 - Display a DataTable of the last N new search keywords +4 - Feed tracking via feedburner API integration +5 - Alexa, pagerank, etc. summary in the dashboard +6 - Database import / export tool +7 - Plugin that add a selection for every user + diff --git a/TODO b/TODO index c41f4cb001..b858f10dcf 100644 --- a/TODO +++ b/TODO @@ -6,6 +6,7 @@ FEATURES we could select the information last_action_time, last_id_action, etc. assuming we have the idvisitor in the cookie this would allow to save the logs later by big bulk - Purge log_ when archiving is done +- Provide Config file feature for plugins (works as the translation system) BUGS ==== @@ -29,9 +30,16 @@ TODO MISC - when the plugins are not used in the piwik.php logging script, don't load the related files - Archive::build must have the same parameters order as all the API calls that use idSite, Period, Date - change all .png images to GIF - +- Ensure that all parameters to the API are checked against security rules etc. CHANGES DONE TO LIBRARIES ========================= - edited zend_log and changed attr to protected - fixed bug fwrite in zend_log stream writer +- fixed PEAR so that it works under PHP5 with STRICT MODE enabled + +COMMENT +======= +When commenting +- check warning PHP DOC for missing @package +- look for "[TAB]function " for missing public/private on methods \ No newline at end of file diff --git a/api_test.php b/api_test.php deleted file mode 100644 index 032c3773ab..0000000000 --- a/api_test.php +++ /dev/null @@ -1,21 +0,0 @@ -Use cases - -This part is the equivalent of the Model in MVC. -It accepts a list of defined parameters and executes action OR gives data. -It doesnt read anything except the methods parameters. -The query parameter processing is done outside. - -A request returns: -- one datatable -- one datable with lots of filters applied -- an HTML page containing 3 datatables + other values -- 2 datatable being from different websites, different dates, different filters applied -- the results of 3 other requests with the same parameters - - - - diff --git a/index.php b/index.php index 49767be382..bc23adf4f5 100755 --- a/index.php +++ b/index.php @@ -70,7 +70,7 @@ $doNotDrop = array( Piwik::prefixTable('log_action'), Piwik::prefixTable('log_profiling'), Piwik::prefixTable('archive'), - ); +); Piwik::dropTables($doNotDrop); Piwik::createTables(); @@ -135,8 +135,8 @@ function displayProfiler() function main() { Piwik::log( - ' - http://localhost/dev/piwiktrunk/?method=UserSettings.getResolution&idSite=1&date=yesterday&period=week&format=xml&filter_limit=&filter_offset=&filter_column=label&filter_pattern=12 + ' + http://localhost/dev/piwiktrunk/?method=UserSettings.getResolution&idSite=1&date=2007-08-25&period=week&format=xml&filter_limit=&filter_offset=&filter_column=label&filter_pattern=12
' ); @@ -162,7 +162,7 @@ function main() $request = new Piwik_API_Request(' method=UserSettings.getResolution &idSite=1 - &date=yesterday + &date=2007-08-25 &period=week &format=console &filter_limit= @@ -176,7 +176,7 @@ function main() $request = new Piwik_API_Request('method=UserSettings.getOS &idSite=1 - &date=yesterday + &date=2007-08-25 &period=week &format=xml &filter_limit= @@ -190,7 +190,7 @@ function main() $request = new Piwik_API_Request(' method=UserSettings.getConfiguration &idSite=1 - &date=yesterday + &date=2007-08-25 &period=week &format=xml &filter_limit=10 @@ -204,7 +204,7 @@ function main() $request = new Piwik_API_Request(' method=UserSettings.getBrowser &idSite=1 - &date=yesterday + &date=2007-08-25 &period=week &format=xml &filter_limit= @@ -218,7 +218,7 @@ function main() $request = new Piwik_API_Request(' method=UserSettings.getBrowserType &idSite=1 - &date=yesterday + &date=2007-08-25 &period=week &format=xml &filter_limit= @@ -232,7 +232,7 @@ function main() $request = new Piwik_API_Request(' method=UserSettings.getWideScreen &idSite=1 - &date=yesterday + &date=2007-08-25 &period=week &format=xml &filter_limit= @@ -246,7 +246,7 @@ function main() $request = new Piwik_API_Request(' method=UserSettings.getPlugin &idSite=1 - &date=yesterday + &date=2007-08-25 &period=week &format=xml &filter_limit= @@ -260,7 +260,7 @@ function main() $request = new Piwik_API_Request( 'method=Actions.getActions &idSite=1 - &date=yesterday + &date=2007-08-25 &period=month &format=html &filter_limit=10 @@ -273,7 +273,7 @@ function main() $request = new Piwik_API_Request( 'method=Actions.getActions &idSite=1 - &date=yesterday + &date=2007-08-25 &period=month &format=html &expanded=true @@ -291,7 +291,7 @@ function main() 'method=Actions.getActions &idSubtable=5477 &idSite=1 - &date=yesterday + &date=2007-08-25 &period=month &format=html &expanded=false @@ -304,7 +304,7 @@ function main() $request = new Piwik_API_Request( 'method=Actions.getDownloads &idSite=1 - &date=yesterday + &date=2007-08-25 &period=month &format=xml ' @@ -314,7 +314,7 @@ function main() $request = new Piwik_API_Request( 'method=Actions.getOutlinks &idSite=1 - &date=yesterday + &date=2007-08-25 &period=month &format=xml ' @@ -324,7 +324,7 @@ function main() $request = new Piwik_API_Request( 'method=Provider.getProvider &idSite=1 - &date=yesterday + &date=2007-08-25 &period=month &format=xml ' @@ -335,7 +335,7 @@ function main() $request = new Piwik_API_Request( 'method=UserCountry.getCountry &idSite=1 - &date=yesterday + &date=2007-08-25 &period=month &format=xml &filter_limit=10 @@ -348,7 +348,7 @@ function main() $request = new Piwik_API_Request( 'method=UserCountry.getContinent &idSite=1 - &date=yesterday + &date=2007-08-25 &period=month &format=xml ' @@ -360,7 +360,7 @@ function main() $request = new Piwik_API_Request( 'method=VisitFrequency.getSummary &idSite=1 - &date=yesterday + &date=2007-08-25 &period=month &format=xml ' @@ -371,7 +371,7 @@ function main() $request = new Piwik_API_Request( 'method=VisitorInterest.getNumberOfVisitsPerVisitDuration &idSite=1 - &date=yesterday + &date=2007-08-25 &period=month &format=xml ' @@ -382,7 +382,7 @@ function main() $request = new Piwik_API_Request( 'method=VisitorInterest.getNumberOfVisitsPerPage &idSite=1 - &date=yesterday + &date=2007-08-25 &period=month &format=xml ' @@ -395,7 +395,7 @@ function main() $request = new Piwik_API_Request( 'method=VisitTime.getVisitInformationPerServerTime &idSite=1 - &date=yesterday + &date=2007-08-25 &period=week &format=xml ' @@ -407,7 +407,7 @@ function main() $request = new Piwik_API_Request( 'method=Referers.getRefererType &idSite=1 - &date=yesterday + &date=2007-08-25 &period=week &format=xml ' @@ -418,7 +418,7 @@ function main() $request = new Piwik_API_Request( 'method=Referers.getKeywords &idSite=1 - &date=yesterday + &date=2007-08-25 &period=week &format=xml &filter_limit=10 @@ -430,7 +430,7 @@ function main() $request = new Piwik_API_Request( 'method=Referers.getSearchEnginesFromKeywordId &idSite=1 - &date=yesterday + &date=2007-08-25 &period=week &format=xml &idSubtable=1886 @@ -444,15 +444,145 @@ function main() $request = new Piwik_API_Request( 'method=Referers.getSearchEngines &idSite=1 - &date=yesterday + &date=2007-08-25 + &period=week + &format=xml + &filter_limit=10 + &filter_offset=0 + ' + ); + dump(htmlentities($request->process())); + + + Piwik::log("getKeywordsFromSearchEngineId"); + $request = new Piwik_API_Request( + 'method=Referers.getKeywordsFromSearchEngineId + &idSite=1 + &date=2007-08-25 + &period=week + &format=xml + &filter_limit=10 + &filter_offset=0 + &idSubtable=1779 + ' + ); + dump(htmlentities($request->process())); + + + + Piwik::log("getCampaigns"); + $request = new Piwik_API_Request( + 'method=Referers.getCampaigns + &idSite=1 + &date=2007-08-25 + &period=week + &format=xml + &filter_limit=10 + &filter_offset=0 + ' + ); + dump(htmlentities($request->process())); + + + + Piwik::log("getKeywordsFromCampaignId"); + $request = new Piwik_API_Request( + 'method=Referers.getKeywordsFromCampaignId + &idSite=1 + &date=2007-08-25 + &period=week + &format=xml + &filter_limit=10 + &filter_offset=0 + &idSubtable=2251 + ' + ); + dump(htmlentities($request->process())); + + + Piwik::log("getWebsites"); + $request = new Piwik_API_Request( + 'method=Referers.getWebsites + &idSite=1 + &date=2007-08-25 + &period=week + &format=xml + &filter_limit=10 + &filter_offset=0 + ' + ); + dump(htmlentities($request->process())); + + + + Piwik::log("getUrlsFromWebsiteId"); + $request = new Piwik_API_Request( + 'method=Referers.getUrlsFromWebsiteId + &idSite=1 + &date=2007-08-25 &period=week &format=xml &filter_limit=10 &filter_offset=0 + &idSubtable=2432 ' ); dump(htmlentities($request->process())); + Piwik::log("getPartners"); + $request = new Piwik_API_Request( + 'method=Referers.getPartners + &idSite=1 + &date=2007-08-25 + &period=week + &format=xml + &filter_limit=10 + &filter_offset=0 + ' + ); + dump(htmlentities($request->process())); + + + + Piwik::log("getUrlsFromPartnerId"); + $request = new Piwik_API_Request( + 'method=Referers.getUrlsFromPartnerId + &idSite=1 + &date=2007-08-25 + &period=week + &format=xml + &filter_limit=10 + &filter_offset=0 + &idSubtable=3090 + ' + ); + dump(htmlentities($request->process())); + + + $referersNumeric=array( + 'getNumberOfDistinctSearchEngines', + 'getNumberOfDistinctKeywords', + 'getNumberOfDistinctCampaigns', + 'getNumberOfDistinctWebsites', + 'getNumberOfDistinctWebsitesUrls', + 'getNumberOfDistinctPartners', + 'getNumberOfDistinctPartnersUrls', + ); + foreach($referersNumeric as $name) + { + Piwik::log("$name"); + $request = new Piwik_API_Request( + "method=Referers.$name + &idSite=1 + &date=2007-08-20 + &period=day + &format=xml + &filter_limit=10 + &filter_offset=0 + " + ); + dump(htmlentities($request->process())); + } } diff --git a/misc/generateDoc.sh b/misc/generateDoc.sh index b318b1c186..0faa658e18 100755 --- a/misc/generateDoc.sh +++ b/misc/generateDoc.sh @@ -1,3 +1,3 @@ -rm -Rf ../documentation/ -mkdir ../documentation/ -../libs/PhpDocumentor-1.3.2/phpdoc -c phpdoc-config.ini +rm -R documentation/ +mkdir documentation/ +libs/PhpDocumentor-1.3.2/phpdoc -c misc/phpdoc-config.ini diff --git a/misc/phpdoc-config.ini b/misc/phpdoc-config.ini index 99f120d629..ad01aec3d1 100755 --- a/misc/phpdoc-config.ini +++ b/misc/phpdoc-config.ini @@ -53,7 +53,7 @@ defaultpackagename = Piwik ;; where should the documentation be written? ;; legal values: a legal path ;target = /home/cellog/output -target = ../documentation +target = documentation ;; Which files should be parsed out as special documentation files, such as README, ;; INSTALL and CHANGELOG? This overrides the default files found in @@ -72,7 +72,7 @@ readmeinstallchangelog = README, INSTALL, FAQ, LICENSE ;; legal values: directory paths separated by commas ;directory = /path1,/path2,.,..,subdirectory ;directory = /home/jeichorn/cvs/pear -directory = ../modules,../core +directory = modules,core,plugins ;target = /you-MUST/also-change-me/to-fit/your-environment ;; template base directory (the equivalent directory of /phpDocumentor) diff --git a/misc/stress.sh b/misc/stress.sh index 0127ebedac..1482fba911 100755 --- a/misc/stress.sh +++ b/misc/stress.sh @@ -2,4 +2,4 @@ echo " Stress testing piwik.php ======================== " -ab -n500 -c50 "http://localhost/dev/piwiktrunk/piwik.php?url=http%3A%2F%2Flocalhost%2Fdev%2Fpiwiktrunk%2F&action_name=&idsite=1&res=1280x1024&col=24&h=18&m=46&s=59&fla=1&dir=0&qt=1&realp=1&pdf=0&wma=1&java=1&cookie=1&title=&urlref=" +ab -n5000 -c50 "http://localhost/dev/piwiktrunk/piwik.php?url=http%3A%2F%2Flocalhost%2Fdev%2Fpiwiktrunk%2F&action_name=&idsite=1&res=1280x1024&col=24&h=18&m=46&s=59&fla=1&dir=0&qt=1&realp=1&pdf=0&wma=1&java=1&cookie=1&title=&urlref=" diff --git a/modules/API/APIable.php b/modules/API/APIable.php index f3ce32a1fe..9a9feea6f7 100755 --- a/modules/API/APIable.php +++ b/modules/API/APIable.php @@ -1,4 +1,10 @@ methodsNotToPublish[] = $methodName; } } -?> \ No newline at end of file diff --git a/modules/API/Proxy.php b/modules/API/Proxy.php index f051024eee..35d2b6e0e8 100755 --- a/modules/API/Proxy.php +++ b/modules/API/Proxy.php @@ -1,4 +1,15 @@ alreadyRegistered[$fileName])) @@ -96,7 +118,7 @@ class Piwik_API_Proxy $aParameters[$nameVariable] = $defaultValue; } $this->api[$class][$name]['parameters'] = $aParameters; - $this->api[$class][$name]['numberOfRequiredParameters'] = $method->getNumberOfParameters(); + $this->api[$class][$name]['numberOfRequiredParameters'] = $method->getNumberOfRequiredParameters(); Piwik::log("- $name is public ".$this->getStrListParameters($class, $name)); } @@ -105,6 +127,12 @@ class Piwik_API_Proxy $this->alreadyRegistered[$fileName] = true; } + /** + * Returns the methods $class.$name parameters (and default value if provided) + * as a string. + * + * Example: [ idSite, period, date = today ] + */ private function getStrListParameters($class, $name) { $aParameters = $this->getParametersList($class, $name); @@ -112,7 +140,7 @@ class Piwik_API_Proxy foreach($aParameters as $nameVariable=> $defaultValue) { $str = $nameVariable; - if(!empty($defaultValue)) + if($defaultValue !== Piwik_API_Proxy::NO_DEFAULT_VALUE) { $str .= " = $defaultValue"; } @@ -137,11 +165,17 @@ class Piwik_API_Proxy return $this->api[$class][$name]['parameters']; } + /** + * Returns the number of required parameters (parameters without default values). + */ private function getNumberOfRequiredParameters($class, $name) { return $this->api[$class][$name]['numberOfRequiredParameters']; } + /** + * Returns true if the method is found in the API + */ private function isMethodAvailable( $className, $methodName) { return isset($this->api[$className][$methodName]); @@ -153,6 +187,9 @@ class Piwik_API_Proxy return $this; } + /** + * + */ private function checkNumberOfParametersMatch($className, $methodName, $parameters) { $nbParamsGiven = count($parameters); @@ -170,6 +207,11 @@ class Piwik_API_Proxy } } + /** + * Checks that the class is a Singleton (presence of the getInstance() method) + * + * @throws exception If the class is not a Singleton + */ private function checkClassIsSingleton($className) { if(!method_exists($className, "getInstance")) @@ -178,6 +220,11 @@ class Piwik_API_Proxy } } + /** + * Checks that the method exists in the class + * + * @throws exception If the method is not found + */ public function checkMethodExists($className, $methodName) { if(!$this->isMethodAvailable($className, $methodName)) @@ -185,12 +232,25 @@ class Piwik_API_Proxy throw new Exception("The method '$methodName' does not exist or is not available in the module '".$className."'."); } } - - public function getClassNameFromModule($module) + + /** + * Returns the API class name given the module name. + * + * For exemple for $module = 'Referers' it returns 'Piwik_Referers_API' + * Piwik_Referers_API is the class that extends Piwik_Apiable + * and that contains the methods to be published in the API. + */ + protected function getClassNameFromModule($module) { $class = Piwik::prefixClass($module ."_API"); return $class; } + + /** + * Method always called when making an API request. + * It checks several things before actually calling the real method on the given module. + * It also logs the API calls, with the parameters values, the returned value, the performance, etc. + */ public function __call($methodName, $parameterValues ) { $returnedValue = null; @@ -228,6 +288,7 @@ class Piwik_API_Proxy } catch( Exception $e) { + //TODO replace with nice error message Piwik::log("
\n Error during API call {$className}.{$methodName}...
\n => ". $e->getMessage()); @@ -238,4 +299,3 @@ class Piwik_API_Proxy return $returnedValue; } } -?> \ No newline at end of file diff --git a/modules/API/Request.php b/modules/API/Request.php index 96211e1bc3..58204ac631 100644 --- a/modules/API/Request.php +++ b/modules/API/Request.php @@ -1,7 +1,31 @@ process(); + * echo $result; + * + * @package Piwik_API + */ class Piwik_API_Request { + /** + * @param string GET request that defines the API call (must at least contain a "method" parameter) + * Example: method=UserSettings.getWideScreen&idSite=1&date=yesterday&period=week&format=xml + * If a request is not provided, then we use the $_REQUEST superglobal and fetch + * the values directly from the HTTP GET query. + */ function __construct($request = null) { $requestArray = $_REQUEST; @@ -15,6 +39,11 @@ class Piwik_API_Request $this->requestToUse = $requestArray; } + /** + * Returns array( $class, $method) from the given string $class.$method + * + * @return array + */ private function extractModuleAndMethod($parameter) { $a = explode('.',$parameter); @@ -25,68 +54,92 @@ class Piwik_API_Request return $a; } + /** + * Handles the request to the API. + * It first checks that the method called (parameter 'method') is available in the module (it means that the method exists and is public) + * It then reads the parameters from the request string and throws an exception if there are absent parameters. + * It then calls the API Proxy which will call the method. + * If the data resulted from the API call is a Piwik_DataTable then + * - we apply the standard filters if the parameters have been found + * in the URL. For example to offset,limit the Table you can add the following parameters to any API + * call that returns a DataTable: filter_limit=10&filter_offset=20 + * - we apply the filters that have been previously queued on the DataTable + * - we apply the renderer that generate the DataTable in a given format (XML, PHP, HTML, JSON, etc.) + * the format can be changed using the 'format' parameter in the request. + * Example: format=xml + * + * @return mixed The data resulting from the API call + */ public function process() { - // read parameters - $moduleMethod = Piwik_Common::getRequestVar('method', null, null, $this->requestToUse); - - list($module, $method) = $this->extractModuleAndMethod($moduleMethod); - - if(!Piwik_PluginsManager::getInstance()->isPluginEnabled($module)) - { - throw new Exception("The plugin '$module' is not enabled."); - } - // call the method via the PublicAPI class - $api = Piwik_Api_Proxy::getInstance(); - $api->registerClass($module); - - // read method to call meta information - $className = "Piwik_" . $module . "_API"; - - // check method exists - $api->checkMethodExists($className, $method); - - $parameters = $api->getParametersList($className, $method); - - $finalParameters = array(); - foreach($parameters as $name => $defaultValue) - { - try{ - // there is a default value specified - if($defaultValue !== Piwik_API_Proxy::NO_DEFAULT_VALUE) - { - $requestValue = Piwik_Common::getRequestVar($name, $defaultValue, null, $this->requestToUse); - } - else - { - $requestValue = Piwik_Common::getRequestVar($name, null, null, $this->requestToUse); - } - } catch(Exception $e) { - Piwik::error("The required variable '$name' is not correct or has not been found in the API Request.
\n ".var_export($this->requestToUse, true)); - } - $finalParameters[] = $requestValue; - } - - $returnedValue = call_user_func_array( array( $api->$module, $method), $finalParameters ); - - $toReturn = $returnedValue; - - // If the returned value is an object DataTable we - // apply the set of generic filters if asked in the URL - // and we render the DataTable according to the format specified in the URL - if($returnedValue instanceof Piwik_DataTable) - { - $dataTable = $returnedValue; + try { + + // read parameters + $moduleMethod = Piwik_Common::getRequestVar('method', null, null, $this->requestToUse); - $this->applyDataTableGenericFilters($dataTable); - $dataTable->applyQueuedFilters(); - $toReturn = $this->getRenderedDataTable($dataTable); + list($module, $method) = $this->extractModuleAndMethod($moduleMethod); + if(!Piwik_PluginsManager::getInstance()->isPluginEnabled($module)) + { + throw new Exception("The plugin '$module' is not enabled."); + } + // call the method via the PublicAPI class + $api = Piwik_Api_Proxy::getInstance(); + $api->registerClass($module); + + // read method to call meta information + $className = "Piwik_" . $module . "_API"; + + // check method exists + $api->checkMethodExists($className, $method); + + $parameters = $api->getParametersList($className, $method); + + $finalParameters = array(); + foreach($parameters as $name => $defaultValue) + { + try{ + // there is a default value specified + if($defaultValue !== Piwik_API_Proxy::NO_DEFAULT_VALUE) + { + $requestValue = Piwik_Common::getRequestVar($name, $defaultValue, null, $this->requestToUse); + } + else + { + $requestValue = Piwik_Common::getRequestVar($name, null, null, $this->requestToUse); + } + } catch(Exception $e) { + Piwik::error("The required variable '$name' is not correct or has not been found in the API Request.
\n ".var_export($this->requestToUse, true)); + } + $finalParameters[] = $requestValue; + } + + $returnedValue = call_user_func_array( array( $api->$module, $method), $finalParameters ); + + $toReturn = $returnedValue; + + // If the returned value is an object DataTable we + // apply the set of generic filters if asked in the URL + // and we render the DataTable according to the format specified in the URL + if($returnedValue instanceof Piwik_DataTable) + { + $dataTable = $returnedValue; + + $this->applyDataTableGenericFilters($dataTable); + $dataTable->applyQueuedFilters(); + $toReturn = $this->getRenderedDataTable($dataTable); + + } + } catch(Exception $e ) { + $toReturn = 'XML ERROR TEMPLATE TODO'; } - return $toReturn; } + /** + * Apply the specified renderer to the DataTable + * @return Piwik_DataTable + */ protected function getRenderedDataTable($dataTable) { // Renderer @@ -98,6 +151,10 @@ class Piwik_API_Request return $toReturn; } + /** + * Applys generic filters to the DataTable object resulting from the API Call. + * @return void + */ protected function applyDataTableGenericFilters($dataTable) { @@ -111,20 +168,20 @@ class Piwik_API_Request */ $genericFilters = array( 'Pattern' => array( - 'filter_column' => 'string', - 'filter_pattern' => 'string', + 'filter_column' => array('string'), + 'filter_pattern' => array('string'), ), 'ExcludeLowPopulation' => array( - 'filter_excludelowpop' => 'string', - 'filter_excludelowpop_value' => 'float', + 'filter_excludelowpop' => array('string'), + 'filter_excludelowpop_value'=> array('float'), ), 'Sort' => array( - 'filter_sort_column' => 'string', - 'filter_sort_order' => 'string', + 'filter_sort_column' => array('string', Piwik_Archive::INDEX_NB_VISITS), + 'filter_sort_order' => array('string', 'desc'), ), 'Limit' => array( - 'filter_offset' => 'integer', - 'filter_limit' => 'integer', + 'filter_offset' => array('integer'), + 'filter_limit' => array('integer'), ), ); @@ -133,10 +190,20 @@ class Piwik_API_Request $filterParameters = array(); $exceptionRaised = false; - foreach($parameters as $name => $type) + foreach($parameters as $name => $info) { + // parameter type to cast to + $type = $info[0]; + + // default value if specified, when the parameter doesn't have a value + $defaultValue = null; + if(isset($info[1])) + { + $defaultValue = $info[1]; + } + try { - $value = Piwik_Common::getRequestVar($name, null, null, $this->requestToUse); + $value = Piwik_Common::getRequestVar($name, $defaultValue, $type, $this->requestToUse); settype($value, $type); $filterParameters[] = $value; } diff --git a/modules/Access.php b/modules/Access.php index 6de0673257..28c44103a9 100755 --- a/modules/Access.php +++ b/modules/Access.php @@ -138,4 +138,3 @@ class Piwik_Access } } -?> \ No newline at end of file diff --git a/modules/ArchiveProcessing.php b/modules/ArchiveProcessing.php index 46b8628870..beac05210d 100644 --- a/modules/ArchiveProcessing.php +++ b/modules/ArchiveProcessing.php @@ -295,4 +295,4 @@ abstract class Piwik_ArchiveProcessing } } -?> + diff --git a/modules/ArchiveProcessing/Day.php b/modules/ArchiveProcessing/Day.php index 4e17c58fbd..a38e2dcb2c 100644 --- a/modules/ArchiveProcessing/Day.php +++ b/modules/ArchiveProcessing/Day.php @@ -1,4 +1,13 @@ + + diff --git a/modules/ArchiveProcessing/Period.php b/modules/ArchiveProcessing/Period.php index f08726daba..ce40097478 100644 --- a/modules/ArchiveProcessing/Period.php +++ b/modules/ArchiveProcessing/Period.php @@ -1,5 +1,7 @@ name = $name; + $this->value = $value; + Piwik_ArchiveProcessing_Record_Manager::getInstance()->registerRecord($this); + } + public function delete() + { + Piwik_ArchiveProcessing_Record_Manager::getInstance()->unregister($this); + } + public function __destruct() + { + } +} +/** + * + * @subpackage Piwik_ArchiveProcessing_Record + */ class Piwik_ArchiveProcessing_Record_Manager { protected $records = array(); @@ -17,16 +55,30 @@ class Piwik_ArchiveProcessing_Record_Manager return self::$instance; } + /** + * Method called by Record objects to register themselves. + * All records registered here will be saved in the DB at the end of the archiving process. + * @return void + */ public function registerRecord( $record ) { $this->records[$record->name] = $record; } + /** + * Removes a record from the Record Manager. + * + * @return void + */ public function unregister( $deleteRecord ) { unset($this->records[$deleteRecord->name]); } + /** + * Returns a string containing the "name : value" of the record + * @return string + */ public function toString() { $str = ''; @@ -37,16 +89,26 @@ class Piwik_ArchiveProcessing_Record_Manager return $str; } + /** + * @return string + */ public function __toString() { return $this->toString(); } + /** + * @return array of Records + */ public function getRecords() { return $this->records; } + /** + * Delete all records saved in the Manager. + * @return void + */ public function deleteAll() { foreach($this->records as $key => $record) @@ -56,27 +118,13 @@ class Piwik_ArchiveProcessing_Record_Manager $this->records = array(); } } - -abstract class Piwik_ArchiveProcessing_Record -{ - public $name; - public $value; - - function __construct( $name, $value) - { - $this->name = $name; - $this->value = $value; - Piwik_ArchiveProcessing_Record_Manager::getInstance()->registerRecord($this); - } - public function delete() - { - Piwik_ArchiveProcessing_Record_Manager::getInstance()->unregister($this); - } - public function __destruct() - { - } -} - + +/** + * Numeric record. + * Example: $record = new Piwik_ArchiveProcessing_Record_Numeric('nb_visitors_live', 15); + * + * @subpackage Piwik_ArchiveProcessing_Record + */ class Piwik_ArchiveProcessing_Record_Numeric extends Piwik_ArchiveProcessing_Record { function __construct( $name, $value) @@ -90,7 +138,12 @@ class Piwik_ArchiveProcessing_Record_Numeric extends Piwik_ArchiveProcessing_Rec } } - +/** + * Blob record. + * Example: $record = new Piwik_ArchiveProcessing_Record_Blob('visitor_names', serialize(array('piwik-fan', 'php', 'stevie-vibes'))); + * The value will be compressed before being saved in the DB. + * @subpackage Piwik_ArchiveProcessing_Record + */ class Piwik_ArchiveProcessing_Record_Blob extends Piwik_ArchiveProcessing_Record { public $name; @@ -107,6 +160,26 @@ class Piwik_ArchiveProcessing_Record_Blob extends Piwik_ArchiveProcessing_Record } +/** + * Array of blob records. + * Useful for easily saving splited data in the DB. + * + * Example: $record = new Piwik_ArchiveProcessing_Record_Blob_Array( + * 'veryLongBook', + * 0 => serialize( array( '1st chapter very long, 6MB of data we dont want to save' )), + * 1 => serialize( array( '2nd chapter very long, 8MB of data we dont want to save' )), + * 2 => serialize( array( '3rd chapter very long, 7MB of data we dont want to save' )), + * 3 => serialize( array( '4th chapter very long, 10MB of data we dont want to save' )), + * ); + * + * Will be saved in the DB as + * veryLongBook => X + * veryLongBook_1 => Y + * veryLongBook_2 => Z + * veryLongBook_3 => M + * + * @subpackage Piwik_ArchiveProcessing_Record + */ class Piwik_ArchiveProcessing_Record_Blob_Array extends Piwik_ArchiveProcessing_Record { public $name; @@ -137,8 +210,7 @@ class Piwik_ArchiveProcessing_Record_Blob_Array extends Piwik_ArchiveProcessing_ { throw new Exception( 'Not valid' ); } - } -?> + diff --git a/modules/Auth.php b/modules/Auth.php index 982ec466bb..49cecc573d 100644 --- a/modules/Auth.php +++ b/modules/Auth.php @@ -43,4 +43,5 @@ class Piwik_Auth extends Zend_Auth_Adapter_DbTable } } -?> + + diff --git a/modules/Common.php b/modules/Common.php index 152c177938..d4101569fb 100644 --- a/modules/Common.php +++ b/modules/Common.php @@ -522,4 +522,5 @@ class Piwik_Common } } -?> + + diff --git a/modules/Config.php b/modules/Config.php index ef1861fc2b..ff31e16e56 100755 --- a/modules/Config.php +++ b/modules/Config.php @@ -28,4 +28,4 @@ class Piwik_Config extends Zend_Config_Ini Zend_Registry::set('tablesPrefix', $this->database->tables_prefix); } } -?> + diff --git a/modules/DataFiles/Browsers.php b/modules/DataFiles/Browsers.php index 842fadd891..53bdb89ec5 100644 --- a/modules/DataFiles/Browsers.php +++ b/modules/DataFiles/Browsers.php @@ -1,4 +1,9 @@ array('afr'), ); } -?> + diff --git a/modules/DataFiles/OS.php b/modules/DataFiles/OS.php index 99517e91aa..b68eafb8cb 100644 --- a/modules/DataFiles/OS.php +++ b/modules/DataFiles/OS.php @@ -1,4 +1,9 @@ array( SearchEngineName, VariableKeyword, [charset used by the search engine]) + * + * The main search engine URL has to be at the top of the list for the given search Engine. + * + * You can add new search engines icons by adding the icon + * in the plugins/Referers/images/SearchEngines directory + * using the format "mainSearchEngineUrl.png". Example: www.google.com.png + * + * Post your new search engines and logos in the forum, thank you for your help! + * + * @package Piwik_DataFiles + */ if(!isset($GLOBALS['Piwik_SearchEngines'] )) { $GLOBALS['Piwik_SearchEngines'] = array( @@ -1047,4 +1062,4 @@ if(!isset($GLOBALS['Piwik_SearchEngines'] )) } } -?> + diff --git a/modules/DataTable.php b/modules/DataTable.php index c0cb2c312c..c14a6040ed 100644 --- a/modules/DataTable.php +++ b/modules/DataTable.php @@ -527,4 +527,3 @@ function Piwik_DataTable_orderRowByLabel($o1,$o2) * [ keyword2, +1000% ] * [ keyword3, -430% ] */ -?> \ No newline at end of file diff --git a/modules/DataTable/Filter.php b/modules/DataTable/Filter.php index d3a09464d2..11bc2ebf56 100644 --- a/modules/DataTable/Filter.php +++ b/modules/DataTable/Filter.php @@ -1,5 +1,18 @@ + diff --git a/modules/DataTable/Filter/ExcludeLowPopulation.php b/modules/DataTable/Filter/ExcludeLowPopulation.php index d7630ea1ed..efa63fcde7 100644 --- a/modules/DataTable/Filter/ExcludeLowPopulation.php +++ b/modules/DataTable/Filter/ExcludeLowPopulation.php @@ -1,4 +1,13 @@ = self::$minimumValue; } } -?> + diff --git a/modules/DataTable/Filter/Limit.php b/modules/DataTable/Filter/Limit.php index 6ec00244a5..ec50762844 100644 --- a/modules/DataTable/Filter/Limit.php +++ b/modules/DataTable/Filter/Limit.php @@ -1,5 +1,10 @@ + diff --git a/modules/DataTable/Filter/Pattern.php b/modules/DataTable/Filter/Pattern.php index 52c1ff46bf..849ddc5c36 100644 --- a/modules/DataTable/Filter/Pattern.php +++ b/modules/DataTable/Filter/Pattern.php @@ -1,5 +1,12 @@ + diff --git a/modules/DataTable/Filter/ReplaceColumnNames.php b/modules/DataTable/Filter/ReplaceColumnNames.php index 6309b16938..8ae60e50bb 100644 --- a/modules/DataTable/Filter/ReplaceColumnNames.php +++ b/modules/DataTable/Filter/ReplaceColumnNames.php @@ -1,7 +1,18 @@ 'sum_visit_length', Piwik_Archive::INDEX_BOUNCE_COUNT => 'bounce_count', ); - + /** + * @param DataTable Table + * @param array Mapping to apply. Must have the format + * array( OLD_COLUMN_NAME => NEW_COLUMN NAME, + * OLD_COLUMN_NAME2 => NEW_COLUMN NAME2, + * ) + */ public function __construct( $table, $mappingToApply = null ) { parent::__construct($table); diff --git a/modules/DataTable/Filter/Sort.php b/modules/DataTable/Filter/Sort.php index a5c2463505..f4c6b24061 100644 --- a/modules/DataTable/Filter/Sort.php +++ b/modules/DataTable/Filter/Sort.php @@ -1,5 +1,10 @@ table->sort( array($this,"sort") ); } } -?> + diff --git a/modules/DataTable/Manager.php b/modules/DataTable/Manager.php index cc93c61089..a7647d652d 100644 --- a/modules/DataTable/Manager.php +++ b/modules/DataTable/Manager.php @@ -1,5 +1,10 @@ tables[] = $table; $this->count++; return $this->count; } - function getTable( $idTable ) + /** + * Returns the DataTable associated to the ID $idTable. + * NB: The datatable has to have been instanciated before! + * This method will not fetch the DataTable from the DB. + * + * @exception If the table can't be found + */ + public function getTable( $idTable ) { // the array tables is indexed at 0 // but the index is computed as the count() of the array after inserting the table @@ -40,15 +55,21 @@ class Piwik_DataTable_Manager return $this->tables[$idTable]; } - function deleteAll() + /** + * Delete all the registered DataTables + */ + public function deleteAll() { Piwik::log("DELETE ALL ".$this->count()." TABLES"); $this->tables = array(); } + /** + * Returns the number of DataTable currently registered. + */ function count() { return count($this->tables); } } -?> + diff --git a/modules/DataTable/Renderer.php b/modules/DataTable/Renderer.php index a9a3a7412b..4e921d2386 100644 --- a/modules/DataTable/Renderer.php +++ b/modules/DataTable/Renderer.php @@ -1,6 +1,11 @@ render(); + } + + /** + * Set the DataTable to be rendered + */ public function setTable($table) { if(!($table instanceof Piwik_DataTable)) @@ -21,11 +42,10 @@ class Piwik_DataTable_Renderer $this->table = $table; } - public function __toString() - { - return $this->render(); - } - + /** + * Returns the DataTable associated to the output format $name + * @exception If the renderer is unknown + */ static public function factory( $name ) { $name = strtolower($name); @@ -66,4 +86,4 @@ class Piwik_DataTable_Renderer } -?> + diff --git a/modules/DataTable/Renderer/Console.php b/modules/DataTable/Renderer/Console.php index 3375bb52fe..e6a4b82980 100644 --- a/modules/DataTable/Renderer/Console.php +++ b/modules/DataTable/Renderer/Console.php @@ -1,5 +1,10 @@ + diff --git a/modules/DataTable/Renderer/HTML.php b/modules/DataTable/Renderer/HTML.php index 0e27fc25bd..d948766710 100644 --- a/modules/DataTable/Renderer/HTML.php +++ b/modules/DataTable/Renderer/HTML.php @@ -1,5 +1,11 @@ getRows() as $row) { + //TODO put that in a Simple_PHP filter that will make it easy as well to export in CSV foreach($row->getColumns() as $column => $value) { $allColumns[$column] = true; @@ -123,4 +130,5 @@ class Piwik_DataTable_Renderer_HTML extends Piwik_DataTable_Renderer } } -?> + + diff --git a/modules/DataTable/Renderer/PHP.php b/modules/DataTable/Renderer/PHP.php index 228275fea0..3708431fe2 100644 --- a/modules/DataTable/Renderer/PHP.php +++ b/modules/DataTable/Renderer/PHP.php @@ -1,4 +1,12 @@ getIdSubDataTable(); @@ -61,6 +74,11 @@ class Piwik_DataTable_Row } } + /** + * Returns the given column + * @param string Column name + * @return mixed|false The column value + */ public function getColumn( $name ) { if(!isset($this->c[self::COLUMNS][$name])) @@ -70,26 +88,51 @@ class Piwik_DataTable_Row return $this->c[self::COLUMNS][$name]; } + /** + * Returns the given detail + * @param string Detail name + * @return mixed|false The detail value + */ + public function getDetail( $name ) + { + if(!isset($this->c[self::DETAILS][$name])) + { + return false; + } + return $this->c[self::DETAILS][$name]; + } + + /** + * Returns the array of columns + * + * @return array array( + * 'column1' => VALUE, + * 'label' => 'www.php.net' + * 'nb_visits' => 15894, + * ) + */ public function getColumns() { return $this->c[self::COLUMNS]; } + /** + * Returns the array of details + * + * @return array array( + * 'logo' => 'images/logo/www.google.png', + * 'url' => 'www.google.com' + * ) + */ public function getDetails() { return $this->c[self::DETAILS]; } - public function getDetail( $name ) - { - if(!isset($this->c[self::DETAILS][$name])) - { - return false; - } - return $this->c[self::DETAILS][$name]; - } - /** + * Returns the ID of the subDataTable. + * If there is no such a table, returns null. + * * @return int|null */ public function getIdSubDataTable() @@ -97,6 +140,12 @@ class Piwik_DataTable_Row return $this->c[self::DATATABLE_ASSOCIATED]; } + /** + * Sums a DataTable to this row subDataTable. + * If this row doesn't have a SubDataTable yet, we create a new one. + * Then we add the values of the given DataTable to this row's DataTable + * @see addDataTable() for the summing algorithm + */ public function sumSubtable(Piwik_DataTable $subTable) { $thisSubtableID = $this->getIdSubDataTable(); @@ -113,15 +162,6 @@ class Piwik_DataTable_Row $thisSubTable->addDataTable($subTable); } - /** - * Adds a subtable to a row. - * - */ - public function addSubtable(Piwik_DataTable $subTable) - { - $this->checkNoSubTable(); - $this->c[self::DATATABLE_ASSOCIATED] = $subTable->getId(); - } protected function checkNoSubTable() { @@ -132,21 +172,51 @@ class Piwik_DataTable_Row } + /** + * Set a DataTable to be associated to this row. + * If the row already has a DataTable associated to it, throws an Exception. + * @throws Exception + * + */ + public function addSubtable(Piwik_DataTable $subTable) + { + $this->checkNoSubTable(); + $this->c[self::DATATABLE_ASSOCIATED] = $subTable->getId(); + } + + /** + * Set a DataTable to this row. If there is already + * a DataTable associated, it is simply overwritten. + */ public function setSubtable(Piwik_DataTable $subTable) { $this->c[self::DATATABLE_ASSOCIATED] = $subTable->getId(); } + /** + * Set all the columns at once. + * @param array array( + * 'label' => 'www.php.net' + * 'nb_visits' => 15894, + * ) + */ public function setColumns( $columns ) { $this->c[self::COLUMNS] = $columns; } + /** + * Set the $value value to the column named $name + */ public function setColumn($name, $value) { $this->c[self::COLUMNS][$name] = $value; } + /** + * Add a new column to the row. If the column already exist, throw an exception + * @throws Exception + */ public function addColumn($name, $value) { if(isset($this->c[self::COLUMNS][$name])) @@ -156,6 +226,11 @@ class Piwik_DataTable_Row $this->c[self::COLUMNS][$name] = $value; } + + /** + * Add a new detail to the row. If the column already exist, throw an exception + * @throws Exception + */ public function addDetail($name, $value) { if(isset($this->c[self::DETAILS][$name])) @@ -192,8 +267,11 @@ class Piwik_DataTable_Row /** - * 2rows are equal is exact same columns / details - * and if subtable is there then subtable has to be the same! + * Helper function to test if two rows are equal. + * + * Two rows are equal + * - if they have exactly the same columns / details + * - if they have a subDataTable associated and that both of them are exactly the same. */ static public function isEqual( $row1, $row2 ) { @@ -240,4 +318,4 @@ class Piwik_DataTable_Row } require_once "Row/DataTableSummary.php"; -?> + diff --git a/modules/DataTable/Row/DataTableSummary.php b/modules/DataTable/Row/DataTableSummary.php index 6881c6b8d6..0dceb67c8f 100644 --- a/modules/DataTable/Row/DataTableSummary.php +++ b/modules/DataTable/Row/DataTableSummary.php @@ -1,5 +1,15 @@ + diff --git a/modules/DataTable/Simple.php b/modules/DataTable/Simple.php index 4c86186024..70cb79fa51 100644 --- a/modules/DataTable/Simple.php +++ b/modules/DataTable/Simple.php @@ -1,11 +1,34 @@ value + * + * Returning a DataTable_Simple from a plugin API Call has huge advantages: + * - the generic filters can be applied automatically (offset, limit, pattern search, sort, etc.) + * - the renderer can be applied (XML, PHP, HTML, etc.) + * + * So you don't have to write specific renderer for your data, it is already available in all the formats supported natively by Piwik. + * + * NB: A DataTable_Simple actually is a DataTable with 2 columns: 'label' and 'value'. + * + * @package Piwik_DataTable + */ class Piwik_DataTable_Simple extends Piwik_DataTable { public function __construct() { parent::__construct(); } - + + /** + * Loads in the DataTable the array information + * @param array Array containing the rows information + * array( + * 'Label row 1' => Value row 1, + * 'Label row 2' => Value row 2, + * ) + */ function loadFromArray($array) { foreach($array as $label => $value) @@ -17,4 +40,5 @@ class Piwik_DataTable_Simple extends Piwik_DataTable } } } -?> + + diff --git a/modules/Date.php b/modules/Date.php index 507af231b3..0eec3c9206 100644 --- a/modules/Date.php +++ b/modules/Date.php @@ -42,4 +42,4 @@ class Piwik_Date extends Zend_Date } } } -?> + diff --git a/modules/ErrorHandler.php b/modules/ErrorHandler.php index 7ae1fc9d9d..76a562da8a 100755 --- a/modules/ErrorHandler.php +++ b/modules/ErrorHandler.php @@ -1,10 +1,10 @@ log($errno, $errstr, $errfile, $errline, $backtrace); switch($errno) @@ -31,4 +31,4 @@ function Piwik_ErrorHandler($errno, $errstr, $errfile, $errline) break; } } -?> + diff --git a/modules/ExceptionHandler.php b/modules/ExceptionHandler.php index 62c2441534..9446ef02a0 100644 --- a/modules/ExceptionHandler.php +++ b/modules/ExceptionHandler.php @@ -15,4 +15,4 @@ function Piwik_ExceptionHandler(Exception $exception) print("'" . $e->getMessage()."'"); } } -?> + diff --git a/modules/Log.php b/modules/Log.php index a5ea277e5a..b1b56363ac 100755 --- a/modules/Log.php +++ b/modules/Log.php @@ -125,4 +125,4 @@ class Piwik_Log_Formatter_FileFormatter implements Zend_Log_Formatter_Interface -?> + diff --git a/modules/Log/APICall.php b/modules/Log/APICall.php index 423760ded8..72574620d3 100644 --- a/modules/Log/APICall.php +++ b/modules/Log/APICall.php @@ -93,4 +93,4 @@ class Piwik_Log_Formatter_APICall_ScreenFormatter implements Zend_Log_Formatter_ } } -?> + diff --git a/modules/Log/Error.php b/modules/Log/Error.php index 138375de11..dfd3558937 100644 --- a/modules/Log/Error.php +++ b/modules/Log/Error.php @@ -84,4 +84,4 @@ class Piwik_Log_Formatter_Error_ScreenFormatter implements Zend_Log_Formatter_In } } -?> + diff --git a/modules/Log/Exception.php b/modules/Log/Exception.php index bc3b925cb8..189fe55407 100644 --- a/modules/Log/Exception.php +++ b/modules/Log/Exception.php @@ -64,4 +64,4 @@ class Piwik_Log_Formatter_Exception_ScreenFormatter implements Zend_Log_Formatte -?> + diff --git a/modules/Log/Message.php b/modules/Log/Message.php index 121b7cfd00..e9890ada59 100644 --- a/modules/Log/Message.php +++ b/modules/Log/Message.php @@ -48,4 +48,4 @@ class Piwik_Log_Formatter_Message_ScreenFormatter implements Zend_Log_Formatter_ } } } -?> + diff --git a/modules/Log/Null.php b/modules/Log/Null.php index a108c3d554..0f9e628f32 100644 --- a/modules/Log/Null.php +++ b/modules/Log/Null.php @@ -13,4 +13,4 @@ class Piwik_Log_Null extends Zend_Log } } -?> + diff --git a/modules/LogStats.php b/modules/LogStats.php index ef10f58285..d603366f08 100644 --- a/modules/LogStats.php +++ b/modules/LogStats.php @@ -202,4 +202,4 @@ function printDebug( $info = '' ) } } } -?> + diff --git a/modules/LogStats/Action.php b/modules/LogStats/Action.php index fad520f6e2..7c10d8abc5 100644 --- a/modules/LogStats/Action.php +++ b/modules/LogStats/Action.php @@ -219,4 +219,4 @@ class Piwik_LogStats_Action } } -?> + diff --git a/modules/LogStats/Config.php b/modules/LogStats/Config.php index bd486ac519..1a25ef22d3 100644 --- a/modules/LogStats/Config.php +++ b/modules/LogStats/Config.php @@ -38,4 +38,4 @@ class Piwik_LogStats_Config } } -?> + diff --git a/modules/LogStats/Cookie.php b/modules/LogStats/Cookie.php index b682fdc037..0b095a4c4e 100644 --- a/modules/LogStats/Cookie.php +++ b/modules/LogStats/Cookie.php @@ -221,4 +221,4 @@ class Piwik_LogStats_Cookie //$c->save(); //$c->deleteCookie(); -?> + diff --git a/modules/LogStats/Db.php b/modules/LogStats/Db.php index 25f09d8784..6cd9e70287 100644 --- a/modules/LogStats/Db.php +++ b/modules/LogStats/Db.php @@ -123,4 +123,5 @@ class Piwik_LogStats_Db } } } -?> + + diff --git a/modules/LogStats/Generator.php b/modules/LogStats/Generator.php index 090434a8a8..4871c899a9 100644 --- a/modules/LogStats/Generator.php +++ b/modules/LogStats/Generator.php @@ -461,4 +461,4 @@ class Piwik_LogStats_Generator_Visit extends Piwik_LogStats_Visit } } -?> + diff --git a/modules/LogStats/Visit.php b/modules/LogStats/Visit.php index d42faee6d4..5e3537135b 100644 --- a/modules/LogStats/Visit.php +++ b/modules/LogStats/Visit.php @@ -738,4 +738,4 @@ class Piwik_LogStats_Visit } } -?> + diff --git a/modules/Period.php b/modules/Period.php index 53b7a570b7..f3082d2014 100644 --- a/modules/Period.php +++ b/modules/Period.php @@ -344,7 +344,3 @@ class Piwik_Period_Year extends Piwik_Period } } - - - -?> diff --git a/modules/Piwik.php b/modules/Piwik.php index 96a33bde85..4a7984fc3a 100755 --- a/modules/Piwik.php +++ b/modules/Piwik.php @@ -516,4 +516,4 @@ class Piwik $db->query( "DROP TABLE IF EXISTS ". implode(", ", self::getTablesNames()) ); } } -?> + diff --git a/modules/Plugin.php b/modules/Plugin.php index d9b72adbd0..057bdc26bb 100644 --- a/modules/Plugin.php +++ b/modules/Plugin.php @@ -84,4 +84,4 @@ abstract class Piwik_Plugin return; } } -?> + diff --git a/modules/PluginsManager.php b/modules/PluginsManager.php index bf7caeca8f..090f4cc7f2 100644 --- a/modules/PluginsManager.php +++ b/modules/PluginsManager.php @@ -167,4 +167,3 @@ function Piwik_PostEvent( $eventName, $object = null, $info = array() ) } -?> diff --git a/modules/Site.php b/modules/Site.php index 06b7043f81..aa892465bf 100644 --- a/modules/Site.php +++ b/modules/Site.php @@ -12,4 +12,4 @@ class Piwik_Site return $this->id; } } -?> + diff --git a/modules/SitesManager.php b/modules/SitesManager.php index 6064e04009..d6bac0a111 100755 --- a/modules/SitesManager.php +++ b/modules/SitesManager.php @@ -2,7 +2,7 @@ require_once "API/APIable.php"; -class Piwik_SitesManager_API extends Piwik_APIable +class Piwik_SitesManager_API extends Piwik_Apiable { static private $instance = null; protected function __construct() @@ -450,4 +450,4 @@ class Piwik_SitesManager_API extends Piwik_APIable return $aUrls; } } -?> + diff --git a/modules/TablePartitioning.php b/modules/TablePartitioning.php index 081849896b..59a1d91771 100644 --- a/modules/TablePartitioning.php +++ b/modules/TablePartitioning.php @@ -98,4 +98,4 @@ class Piwik_TablePartitioning_Daily extends Piwik_TablePartitioning } } -?> + diff --git a/modules/Timer.php b/modules/Timer.php index fcbc9043a0..d26a8cef07 100644 --- a/modules/Timer.php +++ b/modules/Timer.php @@ -34,4 +34,3 @@ class Piwik_Timer return "Time elapsed: ". $this->getTime() ."s"; } } -?> \ No newline at end of file diff --git a/modules/Translate.php b/modules/Translate.php index 3c8e7706dd..47a09fc1cf 100644 --- a/modules/Translate.php +++ b/modules/Translate.php @@ -49,4 +49,4 @@ function Piwik_Translate($index) } throw new Exception("Translation string '$index' not available."); } -?> + diff --git a/modules/UsersManager.php b/modules/UsersManager.php index c6d7a90a8c..769f8ac00e 100755 --- a/modules/UsersManager.php +++ b/modules/UsersManager.php @@ -1,7 +1,7 @@ main(); ob_end_flush(); printDebug($_COOKIE); -?> + diff --git a/plugins/Referers.php b/plugins/Referers.php index 9bc242b92f..5500eff3c3 100644 --- a/plugins/Referers.php +++ b/plugins/Referers.php @@ -59,6 +59,18 @@ class Piwik_Referers extends Piwik_Plugin ); $this->archiveProcessing->archiveDataTable($dataTableToSum); + + $dataNumericToSum = array( + 'Referers_distinctSearchEngines', + 'Referers_distinctKeywords', + 'Referers_distinctCampaigns', + 'Referers_distinctWebsites', + 'Referers_distinctWebsitesUrls', + 'Referers_distinctPartners', + 'Referers_distinctPartnersUrls', + ); + + $this->archiveProcessing->archiveNumericValuesSum($dataNumericToSum); } @@ -98,7 +110,9 @@ class Piwik_Referers extends Piwik_Plugin $interestByNewsletter = $keywordByCampaign = $interestByCampaign = - $interestByType = array(); + $interestByType = + $distinctUrls[Piwik_Common::REFERER_TYPE_WEBSITE] = + $distinctUrls[Piwik_Common::REFERER_TYPE_PARTNER] = array(); while($rowBefore = $query->fetch() ) { @@ -132,15 +146,6 @@ class Piwik_Referers extends Piwik_Plugin case Piwik_Common::REFERER_TYPE_WEBSITE: case Piwik_Common::REFERER_TYPE_PARTNER: - - // for a website we remove the HOST from the url, to save some bytes in the DB - // for partners URLs we keep the full URL as the partner's name can be an alias and - // so is not necessarily the hostname of the URL... - if($row['referer_type']==Piwik_Common::REFERER_TYPE_WEBSITE - && !empty($row['referer_url'])) - { - $row['referer_url'] = Piwik_Common::getPathAndQueryFromUrl($row['referer_url']); - } if(!isset($interestByWebsite[$row['referer_type']][$row['referer_name']])) $interestByWebsite[$row['referer_type']][$row['referer_name']]= $archiveProcessing->getNewInterestRow(); $archiveProcessing->updateInterestStats( $row, $interestByWebsite[$row['referer_type']][$row['referer_name']]); @@ -148,6 +153,11 @@ class Piwik_Referers extends Piwik_Plugin if(!isset($urlByWebsite[$row['referer_type']][$row['referer_name']][$row['referer_url']])) $urlByWebsite[$row['referer_type']][$row['referer_name']][$row['referer_url']]= $archiveProcessing->getNewInterestRow(); $archiveProcessing->updateInterestStats( $row, $urlByWebsite[$row['referer_type']][$row['referer_name']][$row['referer_url']]); + if(!isset($distinctUrls[$row['referer_type']][$row['referer_url']])) + { + $distinctUrls[$row['referer_type']][$row['referer_url']] = true; + } + break; case Piwik_Common::REFERER_TYPE_NEWSLETTER: @@ -200,6 +210,29 @@ class Piwik_Referers extends Piwik_Plugin // Piwik::log("Urls by partner website:"); // Piwik::log($urlByWebsite[Piwik_Common::REFERER_TYPE_PARTNER]); + + $numberOfDistinctSearchEngines = count($keywordBySearchEngine); + $numberOfDistinctKeywords = count($searchEngineByKeyword); + $numberOfDistinctCampaigns = count($keywordByCampaign); + $numberOfDistinctWebsites = count($interestByWebsite[Piwik_Common::REFERER_TYPE_WEBSITE]); + $numberOfDistinctWebsitesUrls = count($distinctUrls[Piwik_Common::REFERER_TYPE_WEBSITE]); + $numberOfDistinctPartners = count($interestByWebsite[Piwik_Common::REFERER_TYPE_PARTNER]); + $numberOfDistinctPartnersUrls = count($distinctUrls[Piwik_Common::REFERER_TYPE_PARTNER]); + + $numericRecords = array( + 'Referers_distinctSearchEngines' => $numberOfDistinctSearchEngines, + 'Referers_distinctKeywords' => $numberOfDistinctKeywords, + 'Referers_distinctCampaigns' => $numberOfDistinctCampaigns, + 'Referers_distinctWebsites' => $numberOfDistinctWebsites, + 'Referers_distinctWebsitesUrls' => $numberOfDistinctWebsitesUrls, + 'Referers_distinctPartners' => $numberOfDistinctPartners, + 'Referers_distinctPartnersUrls' => $numberOfDistinctPartnersUrls, + ); + foreach($numericRecords as $name => $value) + { + $record = new Piwik_ArchiveProcessing_Record_Numeric($name, $value); + } + Piwik::printMemoryUsage("Middle of ".get_class($this)." "); $data = $archiveProcessing->getDataTableSerialized($interestByType); diff --git a/plugins/Referers/API.php b/plugins/Referers/API.php index 3047972707..e8668f0f59 100644 --- a/plugins/Referers/API.php +++ b/plugins/Referers/API.php @@ -22,7 +22,7 @@ class Piwik_Referers_API extends Piwik_Apiable return self::$instance; } - function getDataTable($name, $idSite, $period, $date, $idSubtable = null) + private function getDataTable($name, $idSite, $period, $date, $idSubtable = null) { Piwik::checkUserHasViewAccess( $idSite ); $archive = Piwik_Archive::build($idSite, $date, $period ); @@ -46,7 +46,6 @@ class Piwik_Referers_API extends Piwik_Apiable function getSearchEnginesFromKeywordId($idSite, $period, $date, $idSubtable) { - require PIWIK_DATAFILES_INCLUDE_PATH . "/SearchEngines.php"; $dataTable = $this->getDataTable('Referers_searchEngineByKeyword',$idSite, $period, $date, $idSubtable); $dataTable->queueFilter('Piwik_DataTable_Filter_ColumnCallbackAddDetail', array( 'label', 'url', 'Piwik_getSearchEngineUrlFromName') ); $dataTable->queueFilter('Piwik_DataTable_Filter_DetailCallbackAddDetail', array( 'url', 'logo', 'Piwik_getSearchEngineLogoFromName') ); @@ -62,42 +61,102 @@ class Piwik_Referers_API extends Piwik_Apiable } function getKeywordsFromSearchEngineId($idSite, $period, $date, $idSubtable) - {} + { + $dataTable = $this->getDataTable('Referers_keywordBySearchEngine',$idSite, $period, $date, $idSubtable); + return $dataTable; + } function getCampaigns($idSite, $period, $date) - {} + { + $dataTable = $this->getDataTable('Referers_keywordByCampaign',$idSite, $period, $date); + return $dataTable; + } + function getKeywordsFromCampaignId($idSite, $period, $date, $idSubtable) - {} + { + $dataTable = $this->getDataTable('Referers_keywordByCampaign',$idSite, $period, $date, $idSubtable); + return $dataTable; + } function getWebsites($idSite, $period, $date) - {} + { + $dataTable = $this->getDataTable('Referers_urlByWebsite',$idSite, $period, $date); + return $dataTable; + } function getUrlsFromWebsiteId($idSite, $period, $date, $idSubtable) - {} + { + $dataTable = $this->getDataTable('Referers_urlByWebsite',$idSite, $period, $date, $idSubtable); + $dataTable->queueFilter('Piwik_DataTable_Filter_ColumnCallbackAddDetail', array( 'label', 'url', create_function('$label', 'return $label;')) ); + $dataTable->queueFilter('Piwik_DataTable_Filter_ColumnCallbackReplace', array('label', 'Piwik_getPathFromUrl')); + return $dataTable; + } function getPartners($idSite, $period, $date) - {} + { + $dataTable = $this->getDataTable('Referers_urlByPartner',$idSite, $period, $date); + return $dataTable; + } + function getUrlsFromPartnerId($idSite, $period, $date, $idSubtable) - {} + { + $dataTable = $this->getDataTable('Referers_urlByPartner',$idSite, $period, $date, $idSubtable); + $dataTable->queueFilter('Piwik_DataTable_Filter_ColumnCallbackAddDetail', array( 'label', 'url', create_function('$label', 'return $label;')) ); + $dataTable->queueFilter('Piwik_DataTable_Filter_ColumnCallbackReplace', array('label', 'Piwik_getPathFromUrl')); + return $dataTable; + } + private function getNumeric($name, $idSite, $period, $date) + { + Piwik::checkUserHasViewAccess( $idSite ); + $archive = Piwik_Archive::build($idSite, $date, $period ); + return $archive->getDataTableFromNumeric($name); + } function getNumberOfDistinctSearchEngines($idSite, $period, $date) - {} + { + return $this->getNumeric('Referers_distinctSearchEngines', $idSite, $period, $date); + } + function getNumberOfDistinctKeywords($idSite, $period, $date) - {} + { + return $this->getNumeric('Referers_distinctKeywords', $idSite, $period, $date); + } function getNumberOfDistinctCampaigns($idSite, $period, $date) - {} + { + return $this->getNumeric('Referers_distinctCampaigns', $idSite, $period, $date); + } function getNumberOfDistinctWebsites($idSite, $period, $date) - {} + { + return $this->getNumeric('Referers_distinctWebsites', $idSite, $period, $date); + } function getNumberOfDistinctWebsitesUrls($idSite, $period, $date) - {} + { + return $this->getNumeric('Referers_distinctWebsitesUrls', $idSite, $period, $date); + } function getNumberOfDistinctPartners($idSite, $period, $date) - {} + { + return $this->getNumeric('Referers_distinctPartners', $idSite, $period, $date); + } function getNumberOfDistinctPartnersUrls($idSite, $period, $date) - {} + { + return $this->getNumeric('Referers_distinctPartnersUrls', $idSite, $period, $date); + } +} + +function Piwik_getPathFromUrl($url) +{ + $path = Piwik_Common::getPathAndQueryFromUrl($url); + if(empty($path)) + { + return 'index'; + } + return $path; } + function Piwik_getSearchEngineUrlFromName($name) { + require_once PIWIK_DATAFILES_INCLUDE_PATH . "/SearchEngines.php"; if(isset($GLOBALS['Piwik_SearchEngines_NameToUrl'][$name])) { $url = 'http://'.$GLOBALS['Piwik_SearchEngines_NameToUrl'][$name]; @@ -109,8 +168,10 @@ function Piwik_getSearchEngineUrlFromName($name) return $url; } + function Piwik_getSearchEngineLogoFromName($url) { + require_once PIWIK_DATAFILES_INCLUDE_PATH . "/SearchEngines.php"; $path = PIWIK_PLUGINS_PATH . '/Referers/images/searchEngines/%s.png'; $beginningUrl = strpos($url,'//')+2; @@ -124,6 +185,7 @@ function Piwik_getSearchEngineLogoFromName($url) return $normalPath; } + function Piwik_getRefererTypeLabel($label) { $indexTranslation = ''; @@ -150,11 +212,4 @@ function Piwik_getRefererTypeLabel($label) } return Piwik_Translate($indexTranslation); } -//'Referers_keywordBySearchEngine', -//'Referers_searchEngineByKeyword', -//'Referers_type', - -//'Referers_keywordByCampaign', -//'Referers_urlByWebsite', -//'Referers_urlByPartner', diff --git a/plugins/Referers/images/searchEngines/affiliate.espotting.fr.png b/plugins/Referers/images/searchEngines/affiliate.espotting.fr.png new file mode 100644 index 0000000000..7a4f6fd510 Binary files /dev/null and b/plugins/Referers/images/searchEngines/affiliate.espotting.fr.png differ diff --git a/plugins/Referers/images/searchEngines/arianna.libero.it.png b/plugins/Referers/images/searchEngines/arianna.libero.it.png new file mode 100644 index 0000000000..ec6500bd55 Binary files /dev/null and b/plugins/Referers/images/searchEngines/arianna.libero.it.png differ diff --git a/plugins/Referers/images/searchEngines/class.hit-parade.com.png b/plugins/Referers/images/searchEngines/class.hit-parade.com.png new file mode 100644 index 0000000000..3525114470 Binary files /dev/null and b/plugins/Referers/images/searchEngines/class.hit-parade.com.png differ diff --git a/plugins/Referers/images/searchEngines/directory.google.com.png b/plugins/Referers/images/searchEngines/directory.google.com.png new file mode 100644 index 0000000000..154ecfcfe0 Binary files /dev/null and b/plugins/Referers/images/searchEngines/directory.google.com.png differ diff --git a/plugins/Referers/images/searchEngines/dmoz.org.png b/plugins/Referers/images/searchEngines/dmoz.org.png new file mode 100644 index 0000000000..2e83e81df0 Binary files /dev/null and b/plugins/Referers/images/searchEngines/dmoz.org.png differ diff --git a/plugins/Referers/images/searchEngines/find.copernic.com.png b/plugins/Referers/images/searchEngines/find.copernic.com.png new file mode 100644 index 0000000000..d646c9fbb4 Binary files /dev/null and b/plugins/Referers/images/searchEngines/find.copernic.com.png differ diff --git a/plugins/Referers/images/searchEngines/fr.dir.com.png b/plugins/Referers/images/searchEngines/fr.dir.com.png new file mode 100644 index 0000000000..4dcd20f0f2 Binary files /dev/null and b/plugins/Referers/images/searchEngines/fr.dir.com.png differ diff --git a/plugins/Referers/images/searchEngines/fr.wedoo.com.png b/plugins/Referers/images/searchEngines/fr.wedoo.com.png new file mode 100644 index 0000000000..98ea792bc7 Binary files /dev/null and b/plugins/Referers/images/searchEngines/fr.wedoo.com.png differ diff --git a/plugins/Referers/images/searchEngines/fulltext.centrum.cz.png b/plugins/Referers/images/searchEngines/fulltext.centrum.cz.png new file mode 100644 index 0000000000..0530ca5bdd Binary files /dev/null and b/plugins/Referers/images/searchEngines/fulltext.centrum.cz.png differ diff --git a/plugins/Referers/images/searchEngines/g.msn.com.png b/plugins/Referers/images/searchEngines/g.msn.com.png new file mode 100644 index 0000000000..5ca23d7674 Binary files /dev/null and b/plugins/Referers/images/searchEngines/g.msn.com.png differ diff --git a/plugins/Referers/images/searchEngines/go.mail.ru.png b/plugins/Referers/images/searchEngines/go.mail.ru.png new file mode 100644 index 0000000000..5088758879 Binary files /dev/null and b/plugins/Referers/images/searchEngines/go.mail.ru.png differ diff --git a/plugins/Referers/images/searchEngines/hledani.tiscali.cz.png b/plugins/Referers/images/searchEngines/hledani.tiscali.cz.png new file mode 100644 index 0000000000..e5b9a88685 Binary files /dev/null and b/plugins/Referers/images/searchEngines/hledani.tiscali.cz.png differ diff --git a/plugins/Referers/images/searchEngines/hotbox.png b/plugins/Referers/images/searchEngines/hotbox.png new file mode 100644 index 0000000000..ad53185532 Binary files /dev/null and b/plugins/Referers/images/searchEngines/hotbox.png differ diff --git a/plugins/Referers/images/searchEngines/images.google.com.png b/plugins/Referers/images/searchEngines/images.google.com.png new file mode 100644 index 0000000000..154ecfcfe0 Binary files /dev/null and b/plugins/Referers/images/searchEngines/images.google.com.png differ diff --git a/plugins/Referers/images/searchEngines/images.yandex.ru.png b/plugins/Referers/images/searchEngines/images.yandex.ru.png new file mode 100644 index 0000000000..bc3c364935 Binary files /dev/null and b/plugins/Referers/images/searchEngines/images.yandex.ru.png differ diff --git a/plugins/Referers/images/searchEngines/jyxo.cz.png b/plugins/Referers/images/searchEngines/jyxo.cz.png new file mode 100644 index 0000000000..657306bcc7 Binary files /dev/null and b/plugins/Referers/images/searchEngines/jyxo.cz.png differ diff --git a/plugins/Referers/images/searchEngines/morfeo.centrum.cz.png b/plugins/Referers/images/searchEngines/morfeo.centrum.cz.png new file mode 100644 index 0000000000..0530ca5bdd Binary files /dev/null and b/plugins/Referers/images/searchEngines/morfeo.centrum.cz.png differ diff --git a/plugins/Referers/images/searchEngines/msxml.excite.com.png b/plugins/Referers/images/searchEngines/msxml.excite.com.png new file mode 100644 index 0000000000..8ef8d0ba7c Binary files /dev/null and b/plugins/Referers/images/searchEngines/msxml.excite.com.png differ diff --git a/plugins/Referers/images/searchEngines/news.google.com.png b/plugins/Referers/images/searchEngines/news.google.com.png new file mode 100644 index 0000000000..154ecfcfe0 Binary files /dev/null and b/plugins/Referers/images/searchEngines/news.google.com.png differ diff --git a/plugins/Referers/images/searchEngines/recherche.club-internet.fr.png b/plugins/Referers/images/searchEngines/recherche.club-internet.fr.png new file mode 100644 index 0000000000..0ecaddec26 Binary files /dev/null and b/plugins/Referers/images/searchEngines/recherche.club-internet.fr.png differ diff --git a/plugins/Referers/images/searchEngines/recherche.francite.com.png b/plugins/Referers/images/searchEngines/recherche.francite.com.png new file mode 100644 index 0000000000..672f662591 Binary files /dev/null and b/plugins/Referers/images/searchEngines/recherche.francite.com.png differ diff --git a/plugins/Referers/images/searchEngines/recherche.toile.qc.ca.png b/plugins/Referers/images/searchEngines/recherche.toile.qc.ca.png new file mode 100644 index 0000000000..71fb5e56b1 Binary files /dev/null and b/plugins/Referers/images/searchEngines/recherche.toile.qc.ca.png differ diff --git a/plugins/Referers/images/searchEngines/rechercher.aliceadsl.fr.png b/plugins/Referers/images/searchEngines/rechercher.aliceadsl.fr.png new file mode 100644 index 0000000000..3ee3bd24f9 Binary files /dev/null and b/plugins/Referers/images/searchEngines/rechercher.aliceadsl.fr.png differ diff --git a/plugins/Referers/images/searchEngines/rechercher.nomade.aliceadsl.fr.png b/plugins/Referers/images/searchEngines/rechercher.nomade.aliceadsl.fr.png new file mode 100644 index 0000000000..bfecab9c17 Binary files /dev/null and b/plugins/Referers/images/searchEngines/rechercher.nomade.aliceadsl.fr.png differ diff --git a/plugins/Referers/images/searchEngines/search-dyn.tiscali.it.png b/plugins/Referers/images/searchEngines/search-dyn.tiscali.it.png new file mode 100644 index 0000000000..13ef7b5474 Binary files /dev/null and b/plugins/Referers/images/searchEngines/search-dyn.tiscali.it.png differ diff --git a/plugins/Referers/images/searchEngines/search.about.com.png b/plugins/Referers/images/searchEngines/search.about.com.png new file mode 100644 index 0000000000..76ab165757 Binary files /dev/null and b/plugins/Referers/images/searchEngines/search.about.com.png differ diff --git a/plugins/Referers/images/searchEngines/search.aol.com.png b/plugins/Referers/images/searchEngines/search.aol.com.png new file mode 100644 index 0000000000..c509afb2ba Binary files /dev/null and b/plugins/Referers/images/searchEngines/search.aol.com.png differ diff --git a/plugins/Referers/images/searchEngines/search.atlas.cz.png b/plugins/Referers/images/searchEngines/search.atlas.cz.png new file mode 100644 index 0000000000..8d69124ce9 Binary files /dev/null and b/plugins/Referers/images/searchEngines/search.atlas.cz.png differ diff --git a/plugins/Referers/images/searchEngines/search.bluewin.ch.png b/plugins/Referers/images/searchEngines/search.bluewin.ch.png new file mode 100644 index 0000000000..520da0fc77 Binary files /dev/null and b/plugins/Referers/images/searchEngines/search.bluewin.ch.png differ diff --git a/plugins/Referers/images/searchEngines/search.centrum.cz.png b/plugins/Referers/images/searchEngines/search.centrum.cz.png new file mode 100644 index 0000000000..0530ca5bdd Binary files /dev/null and b/plugins/Referers/images/searchEngines/search.centrum.cz.png differ diff --git a/plugins/Referers/images/searchEngines/search.earthlink.net.png b/plugins/Referers/images/searchEngines/search.earthlink.net.png new file mode 100644 index 0000000000..cacacf21a3 Binary files /dev/null and b/plugins/Referers/images/searchEngines/search.earthlink.net.png differ diff --git a/plugins/Referers/images/searchEngines/search.free.fr.png b/plugins/Referers/images/searchEngines/search.free.fr.png new file mode 100644 index 0000000000..e1bcb89e9b Binary files /dev/null and b/plugins/Referers/images/searchEngines/search.free.fr.png differ diff --git a/plugins/Referers/images/searchEngines/search.ke.wanadoo.fr.png b/plugins/Referers/images/searchEngines/search.ke.wanadoo.fr.png new file mode 100644 index 0000000000..de46f2c077 Binary files /dev/null and b/plugins/Referers/images/searchEngines/search.ke.wanadoo.fr.png differ diff --git a/plugins/Referers/images/searchEngines/search.metacrawler.com.png b/plugins/Referers/images/searchEngines/search.metacrawler.com.png new file mode 100644 index 0000000000..6b9e0d6901 Binary files /dev/null and b/plugins/Referers/images/searchEngines/search.metacrawler.com.png differ diff --git a/plugins/Referers/images/searchEngines/search.msn.com.png b/plugins/Referers/images/searchEngines/search.msn.com.png new file mode 100644 index 0000000000..6217b7151c Binary files /dev/null and b/plugins/Referers/images/searchEngines/search.msn.com.png differ diff --git a/plugins/Referers/images/searchEngines/search.netscape.com.png b/plugins/Referers/images/searchEngines/search.netscape.com.png new file mode 100644 index 0000000000..a7dfae8e6f Binary files /dev/null and b/plugins/Referers/images/searchEngines/search.netscape.com.png differ diff --git a/plugins/Referers/images/searchEngines/search.seznam.cz.png b/plugins/Referers/images/searchEngines/search.seznam.cz.png new file mode 100644 index 0000000000..49ea24c48c Binary files /dev/null and b/plugins/Referers/images/searchEngines/search.seznam.cz.png differ diff --git a/plugins/Referers/images/searchEngines/search.skynet.be.png b/plugins/Referers/images/searchEngines/search.skynet.be.png new file mode 100644 index 0000000000..3ebed64a4b Binary files /dev/null and b/plugins/Referers/images/searchEngines/search.skynet.be.png differ diff --git a/plugins/Referers/images/searchEngines/search.virgilio.it.png b/plugins/Referers/images/searchEngines/search.virgilio.it.png new file mode 100644 index 0000000000..80874c36bb Binary files /dev/null and b/plugins/Referers/images/searchEngines/search.virgilio.it.png differ diff --git a/plugins/Referers/images/searchEngines/search.voila.com.png b/plugins/Referers/images/searchEngines/search.voila.com.png new file mode 100644 index 0000000000..50f3d37353 Binary files /dev/null and b/plugins/Referers/images/searchEngines/search.voila.com.png differ diff --git a/plugins/Referers/images/searchEngines/search.yaca.yandex.ru.png b/plugins/Referers/images/searchEngines/search.yaca.yandex.ru.png new file mode 100644 index 0000000000..bc3c364935 Binary files /dev/null and b/plugins/Referers/images/searchEngines/search.yaca.yandex.ru.png differ diff --git a/plugins/Referers/images/searchEngines/search.yahoo.com.png b/plugins/Referers/images/searchEngines/search.yahoo.com.png new file mode 100644 index 0000000000..20ba5ed665 Binary files /dev/null and b/plugins/Referers/images/searchEngines/search.yahoo.com.png differ diff --git a/plugins/Referers/images/searchEngines/search1.seznam.cz.png b/plugins/Referers/images/searchEngines/search1.seznam.cz.png new file mode 100644 index 0000000000..49ea24c48c Binary files /dev/null and b/plugins/Referers/images/searchEngines/search1.seznam.cz.png differ diff --git a/plugins/Referers/images/searchEngines/search2.seznam.cz.png b/plugins/Referers/images/searchEngines/search2.seznam.cz.png new file mode 100644 index 0000000000..49ea24c48c Binary files /dev/null and b/plugins/Referers/images/searchEngines/search2.seznam.cz.png differ diff --git a/plugins/Referers/images/searchEngines/sm.aport.ru.png b/plugins/Referers/images/searchEngines/sm.aport.ru.png new file mode 100644 index 0000000000..f8eb0bc5e3 Binary files /dev/null and b/plugins/Referers/images/searchEngines/sm.aport.ru.png differ diff --git a/plugins/Referers/images/searchEngines/translate.google.com.png b/plugins/Referers/images/searchEngines/translate.google.com.png new file mode 100644 index 0000000000..154ecfcfe0 Binary files /dev/null and b/plugins/Referers/images/searchEngines/translate.google.com.png differ diff --git a/plugins/Referers/images/searchEngines/web.toile.com.png b/plugins/Referers/images/searchEngines/web.toile.com.png new file mode 100644 index 0000000000..b5111f71f3 Binary files /dev/null and b/plugins/Referers/images/searchEngines/web.toile.com.png differ diff --git a/plugins/Referers/images/searchEngines/web.volny.cz.png b/plugins/Referers/images/searchEngines/web.volny.cz.png new file mode 100644 index 0000000000..c246b877d3 Binary files /dev/null and b/plugins/Referers/images/searchEngines/web.volny.cz.png differ diff --git a/plugins/Referers/images/searchEngines/www.a9.com.png b/plugins/Referers/images/searchEngines/www.a9.com.png new file mode 100644 index 0000000000..170bce68c8 Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.a9.com.png differ diff --git a/plugins/Referers/images/searchEngines/www.alltheweb.com.png b/plugins/Referers/images/searchEngines/www.alltheweb.com.png new file mode 100644 index 0000000000..d11dcbdd42 Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.alltheweb.com.png differ diff --git a/plugins/Referers/images/searchEngines/www.altavista.com.png b/plugins/Referers/images/searchEngines/www.altavista.com.png new file mode 100644 index 0000000000..67abe6bcaa Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.altavista.com.png differ diff --git a/plugins/Referers/images/searchEngines/www.ask.com.png b/plugins/Referers/images/searchEngines/www.ask.com.png new file mode 100644 index 0000000000..4d346a67a1 Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.ask.com.png differ diff --git a/plugins/Referers/images/searchEngines/www.eo.st.png b/plugins/Referers/images/searchEngines/www.eo.st.png new file mode 100644 index 0000000000..19184f55db Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.eo.st.png differ diff --git a/plugins/Referers/images/searchEngines/www.eu.ixquick.com.png b/plugins/Referers/images/searchEngines/www.eu.ixquick.com.png new file mode 100644 index 0000000000..a688041220 Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.eu.ixquick.com.png differ diff --git a/plugins/Referers/images/searchEngines/www.euroseek.com.png b/plugins/Referers/images/searchEngines/www.euroseek.com.png new file mode 100644 index 0000000000..35214de4af Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.euroseek.com.png differ diff --git a/plugins/Referers/images/searchEngines/www.exalead.fr.png b/plugins/Referers/images/searchEngines/www.exalead.fr.png new file mode 100644 index 0000000000..c77f6e1ecd Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.exalead.fr.png differ diff --git a/plugins/Referers/images/searchEngines/www.google.com.png b/plugins/Referers/images/searchEngines/www.google.com.png new file mode 100644 index 0000000000..154ecfcfe0 Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.google.com.png differ diff --git a/plugins/Referers/images/searchEngines/www.google.interia.pl.png b/plugins/Referers/images/searchEngines/www.google.interia.pl.png new file mode 100644 index 0000000000..75a8d7c0f0 Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.google.interia.pl.png differ diff --git a/plugins/Referers/images/searchEngines/www.hotbot.com.png b/plugins/Referers/images/searchEngines/www.hotbot.com.png new file mode 100644 index 0000000000..882c6f89bc Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.hotbot.com.png differ diff --git a/plugins/Referers/images/searchEngines/www.icq.com.png b/plugins/Referers/images/searchEngines/www.icq.com.png new file mode 100644 index 0000000000..f32a06f160 Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.icq.com.png differ diff --git a/plugins/Referers/images/searchEngines/www.looksmart.com.png b/plugins/Referers/images/searchEngines/www.looksmart.com.png new file mode 100644 index 0000000000..31eba8236e Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.looksmart.com.png differ diff --git a/plugins/Referers/images/searchEngines/www.mozbot.com.png b/plugins/Referers/images/searchEngines/www.mozbot.com.png new file mode 100644 index 0000000000..1a284a60ad Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.mozbot.com.png differ diff --git a/plugins/Referers/images/searchEngines/www.multimania.lycos.fr.png b/plugins/Referers/images/searchEngines/www.multimania.lycos.fr.png new file mode 100644 index 0000000000..cb1478bb01 Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.multimania.lycos.fr.png differ diff --git a/plugins/Referers/images/searchEngines/www.mywebsearch.com.png b/plugins/Referers/images/searchEngines/www.mywebsearch.com.png new file mode 100644 index 0000000000..5a437790fd Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.mywebsearch.com.png differ diff --git a/plugins/Referers/images/searchEngines/www.najdi.si.png b/plugins/Referers/images/searchEngines/www.najdi.si.png new file mode 100644 index 0000000000..bd0be8a587 Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.najdi.si.png differ diff --git a/plugins/Referers/images/searchEngines/www.northernlight.com.png b/plugins/Referers/images/searchEngines/www.northernlight.com.png new file mode 100644 index 0000000000..5408c4481e Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.northernlight.com.png differ diff --git a/plugins/Referers/images/searchEngines/www.rambler.ru.png b/plugins/Referers/images/searchEngines/www.rambler.ru.png new file mode 100644 index 0000000000..fc11bd0fab Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.rambler.ru.png differ diff --git a/plugins/Referers/images/searchEngines/www.reacteur.com.png b/plugins/Referers/images/searchEngines/www.reacteur.com.png new file mode 100644 index 0000000000..26a9946586 Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.reacteur.com.png differ diff --git a/plugins/Referers/images/searchEngines/www.search.ch.png b/plugins/Referers/images/searchEngines/www.search.ch.png new file mode 100644 index 0000000000..9b8211d192 Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.search.ch.png differ diff --git a/plugins/Referers/images/searchEngines/www.search.com.png b/plugins/Referers/images/searchEngines/www.search.com.png new file mode 100644 index 0000000000..05344bc555 Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.search.com.png differ diff --git a/plugins/Referers/images/searchEngines/www.searchalot.com.png b/plugins/Referers/images/searchEngines/www.searchalot.com.png new file mode 100644 index 0000000000..ae648faf4b Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.searchalot.com.png differ diff --git a/plugins/Referers/images/searchEngines/www.teoma.com.png b/plugins/Referers/images/searchEngines/www.teoma.com.png new file mode 100644 index 0000000000..09d7ad7179 Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.teoma.com.png differ diff --git a/plugins/Referers/images/searchEngines/www.webalta.ru.png b/plugins/Referers/images/searchEngines/www.webalta.ru.png new file mode 100644 index 0000000000..ba7a30a043 Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.webalta.ru.png differ diff --git a/plugins/Referers/images/searchEngines/www.weborama.fr.png b/plugins/Referers/images/searchEngines/www.weborama.fr.png new file mode 100644 index 0000000000..7a9dce5a62 Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.weborama.fr.png differ diff --git a/plugins/Referers/images/searchEngines/www.ya.ru.png b/plugins/Referers/images/searchEngines/www.ya.ru.png new file mode 100644 index 0000000000..bc3c364935 Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.ya.ru.png differ diff --git a/plugins/Referers/images/searchEngines/www.yandex.ru.png b/plugins/Referers/images/searchEngines/www.yandex.ru.png new file mode 100644 index 0000000000..bc3c364935 Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.yandex.ru.png differ diff --git a/plugins/Referers/images/searchEngines/www.zoeken.nl.png b/plugins/Referers/images/searchEngines/www.zoeken.nl.png new file mode 100644 index 0000000000..3947c8f03e Binary files /dev/null and b/plugins/Referers/images/searchEngines/www.zoeken.nl.png differ diff --git a/plugins/Referers/images/searchEngines/www3.zoek.nl.png b/plugins/Referers/images/searchEngines/www3.zoek.nl.png new file mode 100644 index 0000000000..9e62e7daab Binary files /dev/null and b/plugins/Referers/images/searchEngines/www3.zoek.nl.png differ diff --git a/plugins/Referers/images/searchEngines/xx.gif b/plugins/Referers/images/searchEngines/xx.gif new file mode 100644 index 0000000000..5ddb8b8edb Binary files /dev/null and b/plugins/Referers/images/searchEngines/xx.gif differ diff --git a/plugins/Referers/images/searchEngines/xx.png b/plugins/Referers/images/searchEngines/xx.png new file mode 100644 index 0000000000..655abc953d Binary files /dev/null and b/plugins/Referers/images/searchEngines/xx.png differ diff --git a/plugins/Referers/images/searchEngines/ya.ru.png b/plugins/Referers/images/searchEngines/ya.ru.png new file mode 100644 index 0000000000..bc3c364935 Binary files /dev/null and b/plugins/Referers/images/searchEngines/ya.ru.png differ diff --git a/plugins/Referers/images/searchEngines/yandex.ru.png b/plugins/Referers/images/searchEngines/yandex.ru.png new file mode 100644 index 0000000000..bc3c364935 Binary files /dev/null and b/plugins/Referers/images/searchEngines/yandex.ru.png differ diff --git a/plugins/Referers/images/searchEngines/zoohoo.cz.png b/plugins/Referers/images/searchEngines/zoohoo.cz.png new file mode 100644 index 0000000000..5aebf0909f Binary files /dev/null and b/plugins/Referers/images/searchEngines/zoohoo.cz.png differ diff --git a/plugins/Referers/lang/en.php b/plugins/Referers/lang/en.php index 9d6248eaa6..bd1946605c 100644 --- a/plugins/Referers/lang/en.php +++ b/plugins/Referers/lang/en.php @@ -7,4 +7,4 @@ $translations = array( 'Referers_Newsletters' => 'Newsletters', 'Referers_Campaigns' => 'Campaigns', ); -?> + diff --git a/plugins/UserCountry/flags/ad.png b/plugins/UserCountry/flags/ad.png new file mode 100755 index 0000000000..847c63c19f Binary files /dev/null and b/plugins/UserCountry/flags/ad.png differ diff --git a/plugins/UserCountry/flags/ae.png b/plugins/UserCountry/flags/ae.png new file mode 100755 index 0000000000..a5e2499fe3 Binary files /dev/null and b/plugins/UserCountry/flags/ae.png differ diff --git a/plugins/UserCountry/flags/af.png b/plugins/UserCountry/flags/af.png new file mode 100755 index 0000000000..1f3a0f38dc Binary files /dev/null and b/plugins/UserCountry/flags/af.png differ diff --git a/plugins/UserCountry/flags/ag.png b/plugins/UserCountry/flags/ag.png new file mode 100755 index 0000000000..f418d0d28b Binary files /dev/null and b/plugins/UserCountry/flags/ag.png differ diff --git a/plugins/UserCountry/flags/al.png b/plugins/UserCountry/flags/al.png new file mode 100755 index 0000000000..74a63561cd Binary files /dev/null and b/plugins/UserCountry/flags/al.png differ diff --git a/plugins/UserCountry/flags/am.png b/plugins/UserCountry/flags/am.png new file mode 100755 index 0000000000..f6acfdb5af Binary files /dev/null and b/plugins/UserCountry/flags/am.png differ diff --git a/plugins/UserCountry/flags/ao.png b/plugins/UserCountry/flags/ao.png new file mode 100755 index 0000000000..f1ac05445d Binary files /dev/null and b/plugins/UserCountry/flags/ao.png differ diff --git a/plugins/UserCountry/flags/ar.png b/plugins/UserCountry/flags/ar.png new file mode 100755 index 0000000000..65e8f67216 Binary files /dev/null and b/plugins/UserCountry/flags/ar.png differ diff --git a/plugins/UserCountry/flags/at.png b/plugins/UserCountry/flags/at.png new file mode 100755 index 0000000000..5a8dbb4ba6 Binary files /dev/null and b/plugins/UserCountry/flags/at.png differ diff --git a/plugins/UserCountry/flags/au.png b/plugins/UserCountry/flags/au.png new file mode 100755 index 0000000000..e070dd8edb Binary files /dev/null and b/plugins/UserCountry/flags/au.png differ diff --git a/plugins/UserCountry/flags/az.png b/plugins/UserCountry/flags/az.png new file mode 100755 index 0000000000..5d196bbf08 Binary files /dev/null and b/plugins/UserCountry/flags/az.png differ diff --git a/plugins/UserCountry/flags/ba.png b/plugins/UserCountry/flags/ba.png new file mode 100755 index 0000000000..db1e0ccd72 Binary files /dev/null and b/plugins/UserCountry/flags/ba.png differ diff --git a/plugins/UserCountry/flags/bb.png b/plugins/UserCountry/flags/bb.png new file mode 100755 index 0000000000..d97f8b25ef Binary files /dev/null and b/plugins/UserCountry/flags/bb.png differ diff --git a/plugins/UserCountry/flags/bd.png b/plugins/UserCountry/flags/bd.png new file mode 100755 index 0000000000..0aafdcbab7 Binary files /dev/null and b/plugins/UserCountry/flags/bd.png differ diff --git a/plugins/UserCountry/flags/be.png b/plugins/UserCountry/flags/be.png new file mode 100755 index 0000000000..5510342aaa Binary files /dev/null and b/plugins/UserCountry/flags/be.png differ diff --git a/plugins/UserCountry/flags/bf.png b/plugins/UserCountry/flags/bf.png new file mode 100755 index 0000000000..8aef105027 Binary files /dev/null and b/plugins/UserCountry/flags/bf.png differ diff --git a/plugins/UserCountry/flags/bg.png b/plugins/UserCountry/flags/bg.png new file mode 100755 index 0000000000..3f3784e292 Binary files /dev/null and b/plugins/UserCountry/flags/bg.png differ diff --git a/plugins/UserCountry/flags/bh.png b/plugins/UserCountry/flags/bh.png new file mode 100755 index 0000000000..107db46f84 Binary files /dev/null and b/plugins/UserCountry/flags/bh.png differ diff --git a/plugins/UserCountry/flags/bi.png b/plugins/UserCountry/flags/bi.png new file mode 100755 index 0000000000..988cf2a251 Binary files /dev/null and b/plugins/UserCountry/flags/bi.png differ diff --git a/plugins/UserCountry/flags/bj.png b/plugins/UserCountry/flags/bj.png new file mode 100755 index 0000000000..14fd6f0c23 Binary files /dev/null and b/plugins/UserCountry/flags/bj.png differ diff --git a/plugins/UserCountry/flags/bn.png b/plugins/UserCountry/flags/bn.png new file mode 100755 index 0000000000..a0612db57f Binary files /dev/null and b/plugins/UserCountry/flags/bn.png differ diff --git a/plugins/UserCountry/flags/bo.png b/plugins/UserCountry/flags/bo.png new file mode 100755 index 0000000000..ba67b9fce6 Binary files /dev/null and b/plugins/UserCountry/flags/bo.png differ diff --git a/plugins/UserCountry/flags/br.png b/plugins/UserCountry/flags/br.png new file mode 100755 index 0000000000..8fb282d442 Binary files /dev/null and b/plugins/UserCountry/flags/br.png differ diff --git a/plugins/UserCountry/flags/bs.png b/plugins/UserCountry/flags/bs.png new file mode 100755 index 0000000000..a094bc89fb Binary files /dev/null and b/plugins/UserCountry/flags/bs.png differ diff --git a/plugins/UserCountry/flags/bt.png b/plugins/UserCountry/flags/bt.png new file mode 100755 index 0000000000..695d897b65 Binary files /dev/null and b/plugins/UserCountry/flags/bt.png differ diff --git a/plugins/UserCountry/flags/bw.png b/plugins/UserCountry/flags/bw.png new file mode 100755 index 0000000000..576233a3c8 Binary files /dev/null and b/plugins/UserCountry/flags/bw.png differ diff --git a/plugins/UserCountry/flags/by.png b/plugins/UserCountry/flags/by.png new file mode 100755 index 0000000000..480b5956ae Binary files /dev/null and b/plugins/UserCountry/flags/by.png differ diff --git a/plugins/UserCountry/flags/bz.png b/plugins/UserCountry/flags/bz.png new file mode 100755 index 0000000000..3254ac7664 Binary files /dev/null and b/plugins/UserCountry/flags/bz.png differ diff --git a/plugins/UserCountry/flags/ca.png b/plugins/UserCountry/flags/ca.png new file mode 100755 index 0000000000..f74f3747b5 Binary files /dev/null and b/plugins/UserCountry/flags/ca.png differ diff --git a/plugins/UserCountry/flags/cf.png b/plugins/UserCountry/flags/cf.png new file mode 100755 index 0000000000..1e47f318d4 Binary files /dev/null and b/plugins/UserCountry/flags/cf.png differ diff --git a/plugins/UserCountry/flags/cg.png b/plugins/UserCountry/flags/cg.png new file mode 100755 index 0000000000..e6d26cd552 Binary files /dev/null and b/plugins/UserCountry/flags/cg.png differ diff --git a/plugins/UserCountry/flags/ch.png b/plugins/UserCountry/flags/ch.png new file mode 100755 index 0000000000..a06c8e3594 Binary files /dev/null and b/plugins/UserCountry/flags/ch.png differ diff --git a/plugins/UserCountry/flags/ci.png b/plugins/UserCountry/flags/ci.png new file mode 100755 index 0000000000..3d22ba6832 Binary files /dev/null and b/plugins/UserCountry/flags/ci.png differ diff --git a/plugins/UserCountry/flags/ck.png b/plugins/UserCountry/flags/ck.png new file mode 100755 index 0000000000..571a6b7635 Binary files /dev/null and b/plugins/UserCountry/flags/ck.png differ diff --git a/plugins/UserCountry/flags/cl.png b/plugins/UserCountry/flags/cl.png new file mode 100755 index 0000000000..e3752bd7f7 Binary files /dev/null and b/plugins/UserCountry/flags/cl.png differ diff --git a/plugins/UserCountry/flags/cm.png b/plugins/UserCountry/flags/cm.png new file mode 100755 index 0000000000..889f6c9093 Binary files /dev/null and b/plugins/UserCountry/flags/cm.png differ diff --git a/plugins/UserCountry/flags/cn.png b/plugins/UserCountry/flags/cn.png new file mode 100755 index 0000000000..3c539df4a5 Binary files /dev/null and b/plugins/UserCountry/flags/cn.png differ diff --git a/plugins/UserCountry/flags/co.png b/plugins/UserCountry/flags/co.png new file mode 100755 index 0000000000..460eaddcae Binary files /dev/null and b/plugins/UserCountry/flags/co.png differ diff --git a/plugins/UserCountry/flags/cr.png b/plugins/UserCountry/flags/cr.png new file mode 100755 index 0000000000..05f0b5cfe3 Binary files /dev/null and b/plugins/UserCountry/flags/cr.png differ diff --git a/plugins/UserCountry/flags/cs.png b/plugins/UserCountry/flags/cs.png new file mode 100755 index 0000000000..fab2cafe9e Binary files /dev/null and b/plugins/UserCountry/flags/cs.png differ diff --git a/plugins/UserCountry/flags/cu.png b/plugins/UserCountry/flags/cu.png new file mode 100755 index 0000000000..57eec0a21e Binary files /dev/null and b/plugins/UserCountry/flags/cu.png differ diff --git a/plugins/UserCountry/flags/cv.png b/plugins/UserCountry/flags/cv.png new file mode 100755 index 0000000000..40b637f3ab Binary files /dev/null and b/plugins/UserCountry/flags/cv.png differ diff --git a/plugins/UserCountry/flags/cy.png b/plugins/UserCountry/flags/cy.png new file mode 100755 index 0000000000..257c628e39 Binary files /dev/null and b/plugins/UserCountry/flags/cy.png differ diff --git a/plugins/UserCountry/flags/cz.png b/plugins/UserCountry/flags/cz.png new file mode 100755 index 0000000000..96af880568 Binary files /dev/null and b/plugins/UserCountry/flags/cz.png differ diff --git a/plugins/UserCountry/flags/de.png b/plugins/UserCountry/flags/de.png new file mode 100755 index 0000000000..7707c43321 Binary files /dev/null and b/plugins/UserCountry/flags/de.png differ diff --git a/plugins/UserCountry/flags/dj.png b/plugins/UserCountry/flags/dj.png new file mode 100755 index 0000000000..5cc56c7319 Binary files /dev/null and b/plugins/UserCountry/flags/dj.png differ diff --git a/plugins/UserCountry/flags/dk.png b/plugins/UserCountry/flags/dk.png new file mode 100755 index 0000000000..392989ae22 Binary files /dev/null and b/plugins/UserCountry/flags/dk.png differ diff --git a/plugins/UserCountry/flags/dm.png b/plugins/UserCountry/flags/dm.png new file mode 100755 index 0000000000..a7b2507fe4 Binary files /dev/null and b/plugins/UserCountry/flags/dm.png differ diff --git a/plugins/UserCountry/flags/do.png b/plugins/UserCountry/flags/do.png new file mode 100755 index 0000000000..627d6701fb Binary files /dev/null and b/plugins/UserCountry/flags/do.png differ diff --git a/plugins/UserCountry/flags/dz.png b/plugins/UserCountry/flags/dz.png new file mode 100755 index 0000000000..f2f87465df Binary files /dev/null and b/plugins/UserCountry/flags/dz.png differ diff --git a/plugins/UserCountry/flags/ec.png b/plugins/UserCountry/flags/ec.png new file mode 100755 index 0000000000..784ca3063b Binary files /dev/null and b/plugins/UserCountry/flags/ec.png differ diff --git a/plugins/UserCountry/flags/ee.png b/plugins/UserCountry/flags/ee.png new file mode 100755 index 0000000000..d13d2b848c Binary files /dev/null and b/plugins/UserCountry/flags/ee.png differ diff --git a/plugins/UserCountry/flags/eg.png b/plugins/UserCountry/flags/eg.png new file mode 100755 index 0000000000..69376045d4 Binary files /dev/null and b/plugins/UserCountry/flags/eg.png differ diff --git a/plugins/UserCountry/flags/er.png b/plugins/UserCountry/flags/er.png new file mode 100755 index 0000000000..31e2087b91 Binary files /dev/null and b/plugins/UserCountry/flags/er.png differ diff --git a/plugins/UserCountry/flags/es.png b/plugins/UserCountry/flags/es.png new file mode 100755 index 0000000000..071c892f55 Binary files /dev/null and b/plugins/UserCountry/flags/es.png differ diff --git a/plugins/UserCountry/flags/et.png b/plugins/UserCountry/flags/et.png new file mode 100755 index 0000000000..e5ff7b024e Binary files /dev/null and b/plugins/UserCountry/flags/et.png differ diff --git a/plugins/UserCountry/flags/fi.png b/plugins/UserCountry/flags/fi.png new file mode 100755 index 0000000000..99b2d6eac2 Binary files /dev/null and b/plugins/UserCountry/flags/fi.png differ diff --git a/plugins/UserCountry/flags/fj.png b/plugins/UserCountry/flags/fj.png new file mode 100755 index 0000000000..50d87c5f52 Binary files /dev/null and b/plugins/UserCountry/flags/fj.png differ diff --git a/plugins/UserCountry/flags/fm.png b/plugins/UserCountry/flags/fm.png new file mode 100755 index 0000000000..13617857be Binary files /dev/null and b/plugins/UserCountry/flags/fm.png differ diff --git a/plugins/UserCountry/flags/fr.png b/plugins/UserCountry/flags/fr.png new file mode 100755 index 0000000000..b74ec942a3 Binary files /dev/null and b/plugins/UserCountry/flags/fr.png differ diff --git a/plugins/UserCountry/flags/ga.png b/plugins/UserCountry/flags/ga.png new file mode 100755 index 0000000000..b69a9c96c0 Binary files /dev/null and b/plugins/UserCountry/flags/ga.png differ diff --git a/plugins/UserCountry/flags/gb.png b/plugins/UserCountry/flags/gb.png new file mode 100755 index 0000000000..bb6e8d1814 Binary files /dev/null and b/plugins/UserCountry/flags/gb.png differ diff --git a/plugins/UserCountry/flags/gd.png b/plugins/UserCountry/flags/gd.png new file mode 100755 index 0000000000..2926e06a9e Binary files /dev/null and b/plugins/UserCountry/flags/gd.png differ diff --git a/plugins/UserCountry/flags/ge.png b/plugins/UserCountry/flags/ge.png new file mode 100755 index 0000000000..827385dbb3 Binary files /dev/null and b/plugins/UserCountry/flags/ge.png differ diff --git a/plugins/UserCountry/flags/gh.png b/plugins/UserCountry/flags/gh.png new file mode 100755 index 0000000000..8b62bf646d Binary files /dev/null and b/plugins/UserCountry/flags/gh.png differ diff --git a/plugins/UserCountry/flags/gm.png b/plugins/UserCountry/flags/gm.png new file mode 100755 index 0000000000..8a47b0710a Binary files /dev/null and b/plugins/UserCountry/flags/gm.png differ diff --git a/plugins/UserCountry/flags/gn.png b/plugins/UserCountry/flags/gn.png new file mode 100755 index 0000000000..5bb5db00aa Binary files /dev/null and b/plugins/UserCountry/flags/gn.png differ diff --git a/plugins/UserCountry/flags/gq.png b/plugins/UserCountry/flags/gq.png new file mode 100755 index 0000000000..fcc94fbb19 Binary files /dev/null and b/plugins/UserCountry/flags/gq.png differ diff --git a/plugins/UserCountry/flags/gr.png b/plugins/UserCountry/flags/gr.png new file mode 100755 index 0000000000..75e4705996 Binary files /dev/null and b/plugins/UserCountry/flags/gr.png differ diff --git a/plugins/UserCountry/flags/gt.png b/plugins/UserCountry/flags/gt.png new file mode 100755 index 0000000000..7e8213f712 Binary files /dev/null and b/plugins/UserCountry/flags/gt.png differ diff --git a/plugins/UserCountry/flags/gw.png b/plugins/UserCountry/flags/gw.png new file mode 100755 index 0000000000..8061a014c0 Binary files /dev/null and b/plugins/UserCountry/flags/gw.png differ diff --git a/plugins/UserCountry/flags/gy.png b/plugins/UserCountry/flags/gy.png new file mode 100755 index 0000000000..3fe78f030f Binary files /dev/null and b/plugins/UserCountry/flags/gy.png differ diff --git a/plugins/UserCountry/flags/hk.png b/plugins/UserCountry/flags/hk.png new file mode 100755 index 0000000000..75b341426a Binary files /dev/null and b/plugins/UserCountry/flags/hk.png differ diff --git a/plugins/UserCountry/flags/hn.png b/plugins/UserCountry/flags/hn.png new file mode 100755 index 0000000000..b693e72893 Binary files /dev/null and b/plugins/UserCountry/flags/hn.png differ diff --git a/plugins/UserCountry/flags/hr.png b/plugins/UserCountry/flags/hr.png new file mode 100755 index 0000000000..e552636fc1 Binary files /dev/null and b/plugins/UserCountry/flags/hr.png differ diff --git a/plugins/UserCountry/flags/ht.png b/plugins/UserCountry/flags/ht.png new file mode 100755 index 0000000000..d6b597416d Binary files /dev/null and b/plugins/UserCountry/flags/ht.png differ diff --git a/plugins/UserCountry/flags/hu.png b/plugins/UserCountry/flags/hu.png new file mode 100755 index 0000000000..24f1bfe2b2 Binary files /dev/null and b/plugins/UserCountry/flags/hu.png differ diff --git a/plugins/UserCountry/flags/id.png b/plugins/UserCountry/flags/id.png new file mode 100755 index 0000000000..6e65f8f015 Binary files /dev/null and b/plugins/UserCountry/flags/id.png differ diff --git a/plugins/UserCountry/flags/ie.png b/plugins/UserCountry/flags/ie.png new file mode 100755 index 0000000000..094e5a8eb7 Binary files /dev/null and b/plugins/UserCountry/flags/ie.png differ diff --git a/plugins/UserCountry/flags/il.png b/plugins/UserCountry/flags/il.png new file mode 100755 index 0000000000..a4e24dda30 Binary files /dev/null and b/plugins/UserCountry/flags/il.png differ diff --git a/plugins/UserCountry/flags/in.png b/plugins/UserCountry/flags/in.png new file mode 100755 index 0000000000..3f7c0edb53 Binary files /dev/null and b/plugins/UserCountry/flags/in.png differ diff --git a/plugins/UserCountry/flags/iq.png b/plugins/UserCountry/flags/iq.png new file mode 100755 index 0000000000..36edac7653 Binary files /dev/null and b/plugins/UserCountry/flags/iq.png differ diff --git a/plugins/UserCountry/flags/ir.png b/plugins/UserCountry/flags/ir.png new file mode 100755 index 0000000000..95ffb11d2f Binary files /dev/null and b/plugins/UserCountry/flags/ir.png differ diff --git a/plugins/UserCountry/flags/is.png b/plugins/UserCountry/flags/is.png new file mode 100755 index 0000000000..4d90c1b704 Binary files /dev/null and b/plugins/UserCountry/flags/is.png differ diff --git a/plugins/UserCountry/flags/it.png b/plugins/UserCountry/flags/it.png new file mode 100755 index 0000000000..a3e3a7b81c Binary files /dev/null and b/plugins/UserCountry/flags/it.png differ diff --git a/plugins/UserCountry/flags/jm.png b/plugins/UserCountry/flags/jm.png new file mode 100755 index 0000000000..a2c0e1c73c Binary files /dev/null and b/plugins/UserCountry/flags/jm.png differ diff --git a/plugins/UserCountry/flags/jo.png b/plugins/UserCountry/flags/jo.png new file mode 100755 index 0000000000..202f5163c2 Binary files /dev/null and b/plugins/UserCountry/flags/jo.png differ diff --git a/plugins/UserCountry/flags/jp.png b/plugins/UserCountry/flags/jp.png new file mode 100755 index 0000000000..0cd1398777 Binary files /dev/null and b/plugins/UserCountry/flags/jp.png differ diff --git a/plugins/UserCountry/flags/ke.png b/plugins/UserCountry/flags/ke.png new file mode 100755 index 0000000000..a836331550 Binary files /dev/null and b/plugins/UserCountry/flags/ke.png differ diff --git a/plugins/UserCountry/flags/kg.png b/plugins/UserCountry/flags/kg.png new file mode 100755 index 0000000000..345815148a Binary files /dev/null and b/plugins/UserCountry/flags/kg.png differ diff --git a/plugins/UserCountry/flags/kh.png b/plugins/UserCountry/flags/kh.png new file mode 100755 index 0000000000..34283df5ab Binary files /dev/null and b/plugins/UserCountry/flags/kh.png differ diff --git a/plugins/UserCountry/flags/ki.png b/plugins/UserCountry/flags/ki.png new file mode 100755 index 0000000000..1f17af1408 Binary files /dev/null and b/plugins/UserCountry/flags/ki.png differ diff --git a/plugins/UserCountry/flags/km.png b/plugins/UserCountry/flags/km.png new file mode 100755 index 0000000000..d9722a5b08 Binary files /dev/null and b/plugins/UserCountry/flags/km.png differ diff --git a/plugins/UserCountry/flags/kn.png b/plugins/UserCountry/flags/kn.png new file mode 100755 index 0000000000..1d109f3e09 Binary files /dev/null and b/plugins/UserCountry/flags/kn.png differ diff --git a/plugins/UserCountry/flags/kp.png b/plugins/UserCountry/flags/kp.png new file mode 100755 index 0000000000..730c8aab25 Binary files /dev/null and b/plugins/UserCountry/flags/kp.png differ diff --git a/plugins/UserCountry/flags/kr.png b/plugins/UserCountry/flags/kr.png new file mode 100755 index 0000000000..d4f2ed0797 Binary files /dev/null and b/plugins/UserCountry/flags/kr.png differ diff --git a/plugins/UserCountry/flags/kw.png b/plugins/UserCountry/flags/kw.png new file mode 100755 index 0000000000..6f417c39a5 Binary files /dev/null and b/plugins/UserCountry/flags/kw.png differ diff --git a/plugins/UserCountry/flags/kz.png b/plugins/UserCountry/flags/kz.png new file mode 100755 index 0000000000..888da17815 Binary files /dev/null and b/plugins/UserCountry/flags/kz.png differ diff --git a/plugins/UserCountry/flags/la.png b/plugins/UserCountry/flags/la.png new file mode 100755 index 0000000000..68e007eb24 Binary files /dev/null and b/plugins/UserCountry/flags/la.png differ diff --git a/plugins/UserCountry/flags/lb.png b/plugins/UserCountry/flags/lb.png new file mode 100755 index 0000000000..4ed12f8ce8 Binary files /dev/null and b/plugins/UserCountry/flags/lb.png differ diff --git a/plugins/UserCountry/flags/lc.png b/plugins/UserCountry/flags/lc.png new file mode 100755 index 0000000000..02ff0afb93 Binary files /dev/null and b/plugins/UserCountry/flags/lc.png differ diff --git a/plugins/UserCountry/flags/li.png b/plugins/UserCountry/flags/li.png new file mode 100755 index 0000000000..bc587ce7fb Binary files /dev/null and b/plugins/UserCountry/flags/li.png differ diff --git a/plugins/UserCountry/flags/lk.png b/plugins/UserCountry/flags/lk.png new file mode 100755 index 0000000000..73ed79e1e1 Binary files /dev/null and b/plugins/UserCountry/flags/lk.png differ diff --git a/plugins/UserCountry/flags/lr.png b/plugins/UserCountry/flags/lr.png new file mode 100755 index 0000000000..f1271bdb1a Binary files /dev/null and b/plugins/UserCountry/flags/lr.png differ diff --git a/plugins/UserCountry/flags/ls.png b/plugins/UserCountry/flags/ls.png new file mode 100755 index 0000000000..402fbcca54 Binary files /dev/null and b/plugins/UserCountry/flags/ls.png differ diff --git a/plugins/UserCountry/flags/lt.png b/plugins/UserCountry/flags/lt.png new file mode 100755 index 0000000000..b89ccca0c4 Binary files /dev/null and b/plugins/UserCountry/flags/lt.png differ diff --git a/plugins/UserCountry/flags/lu.png b/plugins/UserCountry/flags/lu.png new file mode 100755 index 0000000000..18ac3dd4ca Binary files /dev/null and b/plugins/UserCountry/flags/lu.png differ diff --git a/plugins/UserCountry/flags/lv.png b/plugins/UserCountry/flags/lv.png new file mode 100755 index 0000000000..f051b6d917 Binary files /dev/null and b/plugins/UserCountry/flags/lv.png differ diff --git a/plugins/UserCountry/flags/ly.png b/plugins/UserCountry/flags/ly.png new file mode 100755 index 0000000000..cdcab768eb Binary files /dev/null and b/plugins/UserCountry/flags/ly.png differ diff --git a/plugins/UserCountry/flags/ma.png b/plugins/UserCountry/flags/ma.png new file mode 100755 index 0000000000..9092c35a1e Binary files /dev/null and b/plugins/UserCountry/flags/ma.png differ diff --git a/plugins/UserCountry/flags/mc.png b/plugins/UserCountry/flags/mc.png new file mode 100755 index 0000000000..e59a0d1235 Binary files /dev/null and b/plugins/UserCountry/flags/mc.png differ diff --git a/plugins/UserCountry/flags/md.png b/plugins/UserCountry/flags/md.png new file mode 100755 index 0000000000..38c0770791 Binary files /dev/null and b/plugins/UserCountry/flags/md.png differ diff --git a/plugins/UserCountry/flags/mg.png b/plugins/UserCountry/flags/mg.png new file mode 100755 index 0000000000..e21e8cc76d Binary files /dev/null and b/plugins/UserCountry/flags/mg.png differ diff --git a/plugins/UserCountry/flags/mh.png b/plugins/UserCountry/flags/mh.png new file mode 100755 index 0000000000..e0d678d4e7 Binary files /dev/null and b/plugins/UserCountry/flags/mh.png differ diff --git a/plugins/UserCountry/flags/mk.png b/plugins/UserCountry/flags/mk.png new file mode 100755 index 0000000000..44204c9ab5 Binary files /dev/null and b/plugins/UserCountry/flags/mk.png differ diff --git a/plugins/UserCountry/flags/ml.png b/plugins/UserCountry/flags/ml.png new file mode 100755 index 0000000000..16eefa899e Binary files /dev/null and b/plugins/UserCountry/flags/ml.png differ diff --git a/plugins/UserCountry/flags/mm.png b/plugins/UserCountry/flags/mm.png new file mode 100755 index 0000000000..d466ce18e0 Binary files /dev/null and b/plugins/UserCountry/flags/mm.png differ diff --git a/plugins/UserCountry/flags/mn.png b/plugins/UserCountry/flags/mn.png new file mode 100755 index 0000000000..7bf6dc1029 Binary files /dev/null and b/plugins/UserCountry/flags/mn.png differ diff --git a/plugins/UserCountry/flags/mr.png b/plugins/UserCountry/flags/mr.png new file mode 100755 index 0000000000..ed19107951 Binary files /dev/null and b/plugins/UserCountry/flags/mr.png differ diff --git a/plugins/UserCountry/flags/mt.png b/plugins/UserCountry/flags/mt.png new file mode 100755 index 0000000000..161460167a Binary files /dev/null and b/plugins/UserCountry/flags/mt.png differ diff --git a/plugins/UserCountry/flags/mu.png b/plugins/UserCountry/flags/mu.png new file mode 100755 index 0000000000..97939ce837 Binary files /dev/null and b/plugins/UserCountry/flags/mu.png differ diff --git a/plugins/UserCountry/flags/mv.png b/plugins/UserCountry/flags/mv.png new file mode 100755 index 0000000000..61d2ed6d8a Binary files /dev/null and b/plugins/UserCountry/flags/mv.png differ diff --git a/plugins/UserCountry/flags/mw.png b/plugins/UserCountry/flags/mw.png new file mode 100755 index 0000000000..5447a47490 Binary files /dev/null and b/plugins/UserCountry/flags/mw.png differ diff --git a/plugins/UserCountry/flags/mx.png b/plugins/UserCountry/flags/mx.png new file mode 100755 index 0000000000..f584a82d50 Binary files /dev/null and b/plugins/UserCountry/flags/mx.png differ diff --git a/plugins/UserCountry/flags/my.png b/plugins/UserCountry/flags/my.png new file mode 100755 index 0000000000..9bfcbc2887 Binary files /dev/null and b/plugins/UserCountry/flags/my.png differ diff --git a/plugins/UserCountry/flags/mz.png b/plugins/UserCountry/flags/mz.png new file mode 100755 index 0000000000..372da92565 Binary files /dev/null and b/plugins/UserCountry/flags/mz.png differ diff --git a/plugins/UserCountry/flags/na.png b/plugins/UserCountry/flags/na.png new file mode 100755 index 0000000000..bbdef51eb5 Binary files /dev/null and b/plugins/UserCountry/flags/na.png differ diff --git a/plugins/UserCountry/flags/ne.png b/plugins/UserCountry/flags/ne.png new file mode 100755 index 0000000000..0d82e34f96 Binary files /dev/null and b/plugins/UserCountry/flags/ne.png differ diff --git a/plugins/UserCountry/flags/ng.png b/plugins/UserCountry/flags/ng.png new file mode 100755 index 0000000000..d92fbdf2a0 Binary files /dev/null and b/plugins/UserCountry/flags/ng.png differ diff --git a/plugins/UserCountry/flags/ni.png b/plugins/UserCountry/flags/ni.png new file mode 100755 index 0000000000..b658b73867 Binary files /dev/null and b/plugins/UserCountry/flags/ni.png differ diff --git a/plugins/UserCountry/flags/nl.png b/plugins/UserCountry/flags/nl.png new file mode 100755 index 0000000000..7fcf3389db Binary files /dev/null and b/plugins/UserCountry/flags/nl.png differ diff --git a/plugins/UserCountry/flags/no.png b/plugins/UserCountry/flags/no.png new file mode 100755 index 0000000000..33f46ec8b6 Binary files /dev/null and b/plugins/UserCountry/flags/no.png differ diff --git a/plugins/UserCountry/flags/np.png b/plugins/UserCountry/flags/np.png new file mode 100755 index 0000000000..9ddeb8c6cd Binary files /dev/null and b/plugins/UserCountry/flags/np.png differ diff --git a/plugins/UserCountry/flags/nr.png b/plugins/UserCountry/flags/nr.png new file mode 100755 index 0000000000..fabb453499 Binary files /dev/null and b/plugins/UserCountry/flags/nr.png differ diff --git a/plugins/UserCountry/flags/nu.png b/plugins/UserCountry/flags/nu.png new file mode 100755 index 0000000000..b44137ce44 Binary files /dev/null and b/plugins/UserCountry/flags/nu.png differ diff --git a/plugins/UserCountry/flags/nz.png b/plugins/UserCountry/flags/nz.png new file mode 100755 index 0000000000..20f3063a80 Binary files /dev/null and b/plugins/UserCountry/flags/nz.png differ diff --git a/plugins/UserCountry/flags/om.png b/plugins/UserCountry/flags/om.png new file mode 100755 index 0000000000..b07880d87f Binary files /dev/null and b/plugins/UserCountry/flags/om.png differ diff --git a/plugins/UserCountry/flags/pa.png b/plugins/UserCountry/flags/pa.png new file mode 100755 index 0000000000..c66b2b9629 Binary files /dev/null and b/plugins/UserCountry/flags/pa.png differ diff --git a/plugins/UserCountry/flags/pe.png b/plugins/UserCountry/flags/pe.png new file mode 100755 index 0000000000..e40902db5a Binary files /dev/null and b/plugins/UserCountry/flags/pe.png differ diff --git a/plugins/UserCountry/flags/pg.png b/plugins/UserCountry/flags/pg.png new file mode 100755 index 0000000000..beb54c478e Binary files /dev/null and b/plugins/UserCountry/flags/pg.png differ diff --git a/plugins/UserCountry/flags/ph.png b/plugins/UserCountry/flags/ph.png new file mode 100755 index 0000000000..0bc9521610 Binary files /dev/null and b/plugins/UserCountry/flags/ph.png differ diff --git a/plugins/UserCountry/flags/pk.png b/plugins/UserCountry/flags/pk.png new file mode 100755 index 0000000000..40e1642c38 Binary files /dev/null and b/plugins/UserCountry/flags/pk.png differ diff --git a/plugins/UserCountry/flags/pl.png b/plugins/UserCountry/flags/pl.png new file mode 100755 index 0000000000..55595d69fd Binary files /dev/null and b/plugins/UserCountry/flags/pl.png differ diff --git a/plugins/UserCountry/flags/po.png b/plugins/UserCountry/flags/po.png new file mode 100755 index 0000000000..55595d69fd Binary files /dev/null and b/plugins/UserCountry/flags/po.png differ diff --git a/plugins/UserCountry/flags/pt.png b/plugins/UserCountry/flags/pt.png new file mode 100755 index 0000000000..41bc74389f Binary files /dev/null and b/plugins/UserCountry/flags/pt.png differ diff --git a/plugins/UserCountry/flags/pw.png b/plugins/UserCountry/flags/pw.png new file mode 100755 index 0000000000..db73f34b51 Binary files /dev/null and b/plugins/UserCountry/flags/pw.png differ diff --git a/plugins/UserCountry/flags/py.png b/plugins/UserCountry/flags/py.png new file mode 100755 index 0000000000..5770973536 Binary files /dev/null and b/plugins/UserCountry/flags/py.png differ diff --git a/plugins/UserCountry/flags/qa.png b/plugins/UserCountry/flags/qa.png new file mode 100755 index 0000000000..dc6c83bd40 Binary files /dev/null and b/plugins/UserCountry/flags/qa.png differ diff --git a/plugins/UserCountry/flags/ro.png b/plugins/UserCountry/flags/ro.png new file mode 100755 index 0000000000..3bc7fc23b3 Binary files /dev/null and b/plugins/UserCountry/flags/ro.png differ diff --git a/plugins/UserCountry/flags/rs.png b/plugins/UserCountry/flags/rs.png new file mode 100755 index 0000000000..9176fbf73c Binary files /dev/null and b/plugins/UserCountry/flags/rs.png differ diff --git a/plugins/UserCountry/flags/ru.png b/plugins/UserCountry/flags/ru.png new file mode 100755 index 0000000000..9176fbf73c Binary files /dev/null and b/plugins/UserCountry/flags/ru.png differ diff --git a/plugins/UserCountry/flags/rw.png b/plugins/UserCountry/flags/rw.png new file mode 100755 index 0000000000..63f3eabd1b Binary files /dev/null and b/plugins/UserCountry/flags/rw.png differ diff --git a/plugins/UserCountry/flags/sa.png b/plugins/UserCountry/flags/sa.png new file mode 100755 index 0000000000..08d36aa091 Binary files /dev/null and b/plugins/UserCountry/flags/sa.png differ diff --git a/plugins/UserCountry/flags/sb.png b/plugins/UserCountry/flags/sb.png new file mode 100755 index 0000000000..33de8a94e9 Binary files /dev/null and b/plugins/UserCountry/flags/sb.png differ diff --git a/plugins/UserCountry/flags/sc.png b/plugins/UserCountry/flags/sc.png new file mode 100755 index 0000000000..da1c535b67 Binary files /dev/null and b/plugins/UserCountry/flags/sc.png differ diff --git a/plugins/UserCountry/flags/sd.png b/plugins/UserCountry/flags/sd.png new file mode 100755 index 0000000000..811b2bb402 Binary files /dev/null and b/plugins/UserCountry/flags/sd.png differ diff --git a/plugins/UserCountry/flags/se.png b/plugins/UserCountry/flags/se.png new file mode 100755 index 0000000000..829a73503e Binary files /dev/null and b/plugins/UserCountry/flags/se.png differ diff --git a/plugins/UserCountry/flags/sg.png b/plugins/UserCountry/flags/sg.png new file mode 100755 index 0000000000..94835461a9 Binary files /dev/null and b/plugins/UserCountry/flags/sg.png differ diff --git a/plugins/UserCountry/flags/si.png b/plugins/UserCountry/flags/si.png new file mode 100755 index 0000000000..9bbf8017dd Binary files /dev/null and b/plugins/UserCountry/flags/si.png differ diff --git a/plugins/UserCountry/flags/sk.png b/plugins/UserCountry/flags/sk.png new file mode 100755 index 0000000000..d1b3e65fe4 Binary files /dev/null and b/plugins/UserCountry/flags/sk.png differ diff --git a/plugins/UserCountry/flags/sl.png b/plugins/UserCountry/flags/sl.png new file mode 100755 index 0000000000..8e9ceecebf Binary files /dev/null and b/plugins/UserCountry/flags/sl.png differ diff --git a/plugins/UserCountry/flags/sm.png b/plugins/UserCountry/flags/sm.png new file mode 100755 index 0000000000..071b206ebb Binary files /dev/null and b/plugins/UserCountry/flags/sm.png differ diff --git a/plugins/UserCountry/flags/sn.png b/plugins/UserCountry/flags/sn.png new file mode 100755 index 0000000000..6d5755f409 Binary files /dev/null and b/plugins/UserCountry/flags/sn.png differ diff --git a/plugins/UserCountry/flags/so.png b/plugins/UserCountry/flags/so.png new file mode 100755 index 0000000000..82bcaf4dd5 Binary files /dev/null and b/plugins/UserCountry/flags/so.png differ diff --git a/plugins/UserCountry/flags/sr.png b/plugins/UserCountry/flags/sr.png new file mode 100755 index 0000000000..bc1f73936d Binary files /dev/null and b/plugins/UserCountry/flags/sr.png differ diff --git a/plugins/UserCountry/flags/st.png b/plugins/UserCountry/flags/st.png new file mode 100755 index 0000000000..64e2c4a77f Binary files /dev/null and b/plugins/UserCountry/flags/st.png differ diff --git a/plugins/UserCountry/flags/sv.png b/plugins/UserCountry/flags/sv.png new file mode 100755 index 0000000000..42a3d1c438 Binary files /dev/null and b/plugins/UserCountry/flags/sv.png differ diff --git a/plugins/UserCountry/flags/sy.png b/plugins/UserCountry/flags/sy.png new file mode 100755 index 0000000000..d7fd71a566 Binary files /dev/null and b/plugins/UserCountry/flags/sy.png differ diff --git a/plugins/UserCountry/flags/sz.png b/plugins/UserCountry/flags/sz.png new file mode 100755 index 0000000000..d21a6d72f9 Binary files /dev/null and b/plugins/UserCountry/flags/sz.png differ diff --git a/plugins/UserCountry/flags/td.png b/plugins/UserCountry/flags/td.png new file mode 100755 index 0000000000..72a9572148 Binary files /dev/null and b/plugins/UserCountry/flags/td.png differ diff --git a/plugins/UserCountry/flags/tg.png b/plugins/UserCountry/flags/tg.png new file mode 100755 index 0000000000..bb5a08a952 Binary files /dev/null and b/plugins/UserCountry/flags/tg.png differ diff --git a/plugins/UserCountry/flags/th.png b/plugins/UserCountry/flags/th.png new file mode 100755 index 0000000000..4e19b96f5f Binary files /dev/null and b/plugins/UserCountry/flags/th.png differ diff --git a/plugins/UserCountry/flags/tj.png b/plugins/UserCountry/flags/tj.png new file mode 100755 index 0000000000..7cc1a6a16c Binary files /dev/null and b/plugins/UserCountry/flags/tj.png differ diff --git a/plugins/UserCountry/flags/tm.png b/plugins/UserCountry/flags/tm.png new file mode 100755 index 0000000000..7b5ab2384b Binary files /dev/null and b/plugins/UserCountry/flags/tm.png differ diff --git a/plugins/UserCountry/flags/tn.png b/plugins/UserCountry/flags/tn.png new file mode 100755 index 0000000000..010562bf2d Binary files /dev/null and b/plugins/UserCountry/flags/tn.png differ diff --git a/plugins/UserCountry/flags/to.png b/plugins/UserCountry/flags/to.png new file mode 100755 index 0000000000..2580a89472 Binary files /dev/null and b/plugins/UserCountry/flags/to.png differ diff --git a/plugins/UserCountry/flags/tr.png b/plugins/UserCountry/flags/tr.png new file mode 100755 index 0000000000..b72f1d770c Binary files /dev/null and b/plugins/UserCountry/flags/tr.png differ diff --git a/plugins/UserCountry/flags/tt.png b/plugins/UserCountry/flags/tt.png new file mode 100755 index 0000000000..74ffb3016c Binary files /dev/null and b/plugins/UserCountry/flags/tt.png differ diff --git a/plugins/UserCountry/flags/tv.png b/plugins/UserCountry/flags/tv.png new file mode 100755 index 0000000000..4310483730 Binary files /dev/null and b/plugins/UserCountry/flags/tv.png differ diff --git a/plugins/UserCountry/flags/tw.png b/plugins/UserCountry/flags/tw.png new file mode 100755 index 0000000000..f1085b1081 Binary files /dev/null and b/plugins/UserCountry/flags/tw.png differ diff --git a/plugins/UserCountry/flags/tz.png b/plugins/UserCountry/flags/tz.png new file mode 100755 index 0000000000..97696c7c0b Binary files /dev/null and b/plugins/UserCountry/flags/tz.png differ diff --git a/plugins/UserCountry/flags/ua.png b/plugins/UserCountry/flags/ua.png new file mode 100755 index 0000000000..7554cda9b9 Binary files /dev/null and b/plugins/UserCountry/flags/ua.png differ diff --git a/plugins/UserCountry/flags/ug.png b/plugins/UserCountry/flags/ug.png new file mode 100755 index 0000000000..a4297bd2f9 Binary files /dev/null and b/plugins/UserCountry/flags/ug.png differ diff --git a/plugins/UserCountry/flags/uk.png b/plugins/UserCountry/flags/uk.png new file mode 100755 index 0000000000..bb6e8d1814 Binary files /dev/null and b/plugins/UserCountry/flags/uk.png differ diff --git a/plugins/UserCountry/flags/us.png b/plugins/UserCountry/flags/us.png new file mode 100755 index 0000000000..c305dc58c6 Binary files /dev/null and b/plugins/UserCountry/flags/us.png differ diff --git a/plugins/UserCountry/flags/uy.png b/plugins/UserCountry/flags/uy.png new file mode 100755 index 0000000000..8d8b7fc8a2 Binary files /dev/null and b/plugins/UserCountry/flags/uy.png differ diff --git a/plugins/UserCountry/flags/uz.png b/plugins/UserCountry/flags/uz.png new file mode 100755 index 0000000000..109b0a3f1f Binary files /dev/null and b/plugins/UserCountry/flags/uz.png differ diff --git a/plugins/UserCountry/flags/va.png b/plugins/UserCountry/flags/va.png new file mode 100755 index 0000000000..dacef2d4c6 Binary files /dev/null and b/plugins/UserCountry/flags/va.png differ diff --git a/plugins/UserCountry/flags/vc.png b/plugins/UserCountry/flags/vc.png new file mode 100755 index 0000000000..9c4008f6c5 Binary files /dev/null and b/plugins/UserCountry/flags/vc.png differ diff --git a/plugins/UserCountry/flags/ve.png b/plugins/UserCountry/flags/ve.png new file mode 100755 index 0000000000..58c9f4f7e8 Binary files /dev/null and b/plugins/UserCountry/flags/ve.png differ diff --git a/plugins/UserCountry/flags/vi.png b/plugins/UserCountry/flags/vi.png new file mode 100755 index 0000000000..d41e345751 Binary files /dev/null and b/plugins/UserCountry/flags/vi.png differ diff --git a/plugins/UserCountry/flags/vn.png b/plugins/UserCountry/flags/vn.png new file mode 100755 index 0000000000..7279723255 Binary files /dev/null and b/plugins/UserCountry/flags/vn.png differ diff --git a/plugins/UserCountry/flags/vu.png b/plugins/UserCountry/flags/vu.png new file mode 100755 index 0000000000..b2f5847733 Binary files /dev/null and b/plugins/UserCountry/flags/vu.png differ diff --git a/plugins/UserCountry/flags/ws.png b/plugins/UserCountry/flags/ws.png new file mode 100755 index 0000000000..4b5090da83 Binary files /dev/null and b/plugins/UserCountry/flags/ws.png differ diff --git a/plugins/UserCountry/flags/xx.png b/plugins/UserCountry/flags/xx.png new file mode 100755 index 0000000000..c322a28550 Binary files /dev/null and b/plugins/UserCountry/flags/xx.png differ diff --git a/plugins/UserCountry/flags/ye.png b/plugins/UserCountry/flags/ye.png new file mode 100755 index 0000000000..0cd596c253 Binary files /dev/null and b/plugins/UserCountry/flags/ye.png differ diff --git a/plugins/UserCountry/flags/yu.png b/plugins/UserCountry/flags/yu.png new file mode 100755 index 0000000000..a1eaa596bc Binary files /dev/null and b/plugins/UserCountry/flags/yu.png differ diff --git a/plugins/UserCountry/flags/za.png b/plugins/UserCountry/flags/za.png new file mode 100755 index 0000000000..c6ad99e5e7 Binary files /dev/null and b/plugins/UserCountry/flags/za.png differ diff --git a/plugins/UserCountry/flags/zm.png b/plugins/UserCountry/flags/zm.png new file mode 100755 index 0000000000..4c0afc55dd Binary files /dev/null and b/plugins/UserCountry/flags/zm.png differ diff --git a/plugins/UserCountry/flags/zr.png b/plugins/UserCountry/flags/zr.png new file mode 100755 index 0000000000..0a5dc58d2e Binary files /dev/null and b/plugins/UserCountry/flags/zr.png differ diff --git a/plugins/UserCountry/flags/zw.png b/plugins/UserCountry/flags/zw.png new file mode 100755 index 0000000000..516ac1b212 Binary files /dev/null and b/plugins/UserCountry/flags/zw.png differ diff --git a/plugins/UserSettings.php b/plugins/UserSettings.php index ee1d2f348f..4462abf312 100644 --- a/plugins/UserSettings.php +++ b/plugins/UserSettings.php @@ -203,4 +203,4 @@ function Piwik_UserSettings_keepStrlenGreater($value) return strlen($value) > 5; } -?> + diff --git a/tests/all_tests.php b/tests/all_tests.php index a8a7c64e15..da922b11e2 100755 --- a/tests/all_tests.php +++ b/tests/all_tests.php @@ -78,4 +78,4 @@ $test->run(new HtmlReporter()); echo $timer."
"; Piwik::printMemoryUsage(); -?> + diff --git a/tests/modules/Common.test.php b/tests/modules/Common.test.php index a6700c1463..bdb0bf414e 100755 --- a/tests/modules/Common.test.php +++ b/tests/modules/Common.test.php @@ -411,4 +411,4 @@ class Test_Piwik_Common extends UnitTestCase $this->assertEqual($result, $expectedResult); } } -?> + diff --git a/tests/modules/Date.test.php b/tests/modules/Date.test.php index 641910f4da..e72e9ed2bc 100644 --- a/tests/modules/Date.test.php +++ b/tests/modules/Date.test.php @@ -37,4 +37,4 @@ class Test_Piwik_Date extends UnitTestCase $this->assertEqual( strtotime(date("Y-m-d",time()-86400). " 00:00:00"), $date->get()); } } -?> + diff --git a/tests/modules/Period.test.php b/tests/modules/Period.test.php index c2cac3bd43..d3d53ddc6d 100644 --- a/tests/modules/Period.test.php +++ b/tests/modules/Period.test.php @@ -467,4 +467,4 @@ class Test_Piwik_Period extends UnitTestCase // $this->assertEqual( $week->toString(), $correct); } } -?> + diff --git a/tests/modules/Piwik.test.php b/tests/modules/Piwik.test.php index a33e4f9eaa..1c8f7be15d 100644 --- a/tests/modules/Piwik.test.php +++ b/tests/modules/Piwik.test.php @@ -50,4 +50,4 @@ class Test_Piwik extends UnitTestCase } } } -?> + diff --git a/tests/modules/SitesManager.test.php b/tests/modules/SitesManager.test.php index 11885337e4..10500806df 100755 --- a/tests/modules/SitesManager.test.php +++ b/tests/modules/SitesManager.test.php @@ -753,4 +753,4 @@ class Test_Piwik_SitesManager extends Test_Database } } -?> + diff --git a/tests/modules/TablePartitioning.test.php b/tests/modules/TablePartitioning.test.php index c8d23c3c74..f11b54a81a 100755 --- a/tests/modules/TablePartitioning.test.php +++ b/tests/modules/TablePartitioning.test.php @@ -130,4 +130,4 @@ class Test_Piwik_TablePartitioning extends Test_Database } } } -?> + diff --git a/tests/modules/blank.test.php b/tests/modules/blank.test.php index e106d54d8e..22b0745e13 100755 --- a/tests/modules/blank.test.php +++ b/tests/modules/blank.test.php @@ -40,4 +40,4 @@ class Test_Piwik_Blank extends UnitTestCase } } } -?> + -- cgit v1.2.3