Version Description
- Support for country-flagging of each download. This feature requires that my plugin Ip-to-Country ( http://wordpress.org/extend/plugins/ip-to-country/ ) is installed and set-up.
I am still undecided if it is better to assign countries when a download occurs or leave it until a list of downloads is displayed. I can see benefits and drawbacks for both solutions. At the moment the plugin leaves country-assignment until the list is displayed, but I am interested in hearing your thoughts about this decision.
This function is only supported with PHP5.
New setting for "ignored users". Downloads made by users whose names are listed (in pipe-separated list) in configuration will not be monitored. It is useful for admins who want to test that their download links work, but don't want to record their tests as "downloads".
Ability to ignore downloads if someone requests one file from one IP address several times within a short time interval. There is an option that let's admin specify how long this interval is (in seconds), and if multiple downloads of the same file from the same IP address happen within so many seconds of each other, only the first one gets recorded. This is useful for download accelerators which try to download one file in several pieces, with longer time intervals also for redownloads (e.g. download fails the first time so the user tries again).
Release Info
Developer | pepak.net |
Plugin | Simple Download Monitor |
Version | 0.12 |
Comparing to | |
See all releases |
Code changes from version 0.11 to 0.12
- flags/_readme.txt +9 -0
- flags/ad.png +0 -0
- flags/ae.png +0 -0
- flags/af.png +0 -0
- flags/ag.png +0 -0
- flags/ai.png +0 -0
- flags/al.png +0 -0
- flags/am.png +0 -0
- flags/an.png +0 -0
- flags/ao.png +0 -0
- flags/ar.png +0 -0
- flags/as.png +0 -0
- flags/at.png +0 -0
- flags/au.png +0 -0
- flags/aw.png +0 -0
- flags/ax.png +0 -0
- flags/az.png +0 -0
- flags/ba.png +0 -0
- flags/bb.png +0 -0
- flags/bd.png +0 -0
- flags/be.png +0 -0
- flags/bf.png +0 -0
- flags/bg.png +0 -0
- flags/bh.png +0 -0
- flags/bi.png +0 -0
- flags/bj.png +0 -0
- flags/bm.png +0 -0
- flags/bn.png +0 -0
- flags/bo.png +0 -0
- flags/br.png +0 -0
- flags/bs.png +0 -0
- flags/bt.png +0 -0
- flags/bv.png +0 -0
- flags/bw.png +0 -0
- flags/by.png +0 -0
- flags/bz.png +0 -0
- flags/ca.png +0 -0
- flags/catalonia.png +0 -0
- flags/cc.png +0 -0
- flags/cd.png +0 -0
- flags/cf.png +0 -0
- flags/cg.png +0 -0
- flags/ch.png +0 -0
- flags/ci.png +0 -0
- flags/ck.png +0 -0
- flags/cl.png +0 -0
- flags/cm.png +0 -0
- flags/cn.png +0 -0
- flags/co.png +0 -0
- flags/cr.png +0 -0
- flags/cs.png +0 -0
- flags/cu.png +0 -0
- flags/cv.png +0 -0
- flags/cx.png +0 -0
- flags/cy.png +0 -0
- flags/cz.png +0 -0
- flags/de.png +0 -0
- flags/dj.png +0 -0
- flags/dk.png +0 -0
- flags/dm.png +0 -0
- flags/do.png +0 -0
- flags/dz.png +0 -0
- flags/ec.png +0 -0
- flags/ee.png +0 -0
- flags/eg.png +0 -0
- flags/eh.png +0 -0
- flags/england.png +0 -0
- flags/er.png +0 -0
- flags/es.png +0 -0
- flags/et.png +0 -0
- flags/europeanunion.png +0 -0
- flags/fam.png +0 -0
- flags/fi.png +0 -0
- flags/fj.png +0 -0
- flags/fk.png +0 -0
- flags/fm.png +0 -0
- flags/fo.png +0 -0
- flags/fr.png +0 -0
- flags/ga.png +0 -0
- flags/gb.png +0 -0
- flags/gd.png +0 -0
- flags/ge.png +0 -0
- flags/gf.png +0 -0
- flags/gh.png +0 -0
- flags/gi.png +0 -0
- flags/gl.png +0 -0
- flags/gm.png +0 -0
- flags/gn.png +0 -0
- flags/gp.png +0 -0
- flags/gq.png +0 -0
- flags/gr.png +0 -0
- flags/gs.png +0 -0
- flags/gt.png +0 -0
- flags/gu.png +0 -0
- flags/gw.png +0 -0
- flags/gy.png +0 -0
- flags/hk.png +0 -0
- flags/hm.png +0 -0
- flags/hn.png +0 -0
- flags/hr.png +0 -0
- flags/ht.png +0 -0
- flags/hu.png +0 -0
- flags/id.png +0 -0
- flags/ie.png +0 -0
- flags/il.png +0 -0
- flags/in.png +0 -0
- flags/io.png +0 -0
- flags/iq.png +0 -0
- flags/ir.png +0 -0
- flags/is.png +0 -0
- flags/it.png +0 -0
- flags/jm.png +0 -0
- flags/jo.png +0 -0
- flags/jp.png +0 -0
- flags/ke.png +0 -0
- flags/kg.png +0 -0
- flags/kh.png +0 -0
- flags/ki.png +0 -0
- flags/km.png +0 -0
- flags/kn.png +0 -0
- flags/kp.png +0 -0
- flags/kr.png +0 -0
- flags/kw.png +0 -0
- flags/ky.png +0 -0
- flags/kz.png +0 -0
- flags/la.png +0 -0
- flags/lb.png +0 -0
- flags/lc.png +0 -0
- flags/li.png +0 -0
- flags/lk.png +0 -0
- flags/lr.png +0 -0
- flags/ls.png +0 -0
- flags/lt.png +0 -0
- flags/lu.png +0 -0
- flags/lv.png +0 -0
- flags/ly.png +0 -0
- flags/ma.png +0 -0
- flags/mc.png +0 -0
- flags/md.png +0 -0
- flags/me.png +0 -0
- flags/mg.png +0 -0
- flags/mh.png +0 -0
- flags/mk.png +0 -0
- flags/ml.png +0 -0
- flags/mm.png +0 -0
- flags/mn.png +0 -0
- flags/mo.png +0 -0
- flags/mp.png +0 -0
- flags/mq.png +0 -0
- flags/mr.png +0 -0
- flags/ms.png +0 -0
- flags/mt.png +0 -0
- flags/mu.png +0 -0
- flags/mv.png +0 -0
- flags/mw.png +0 -0
- flags/mx.png +0 -0
- flags/my.png +0 -0
- flags/mz.png +0 -0
- flags/na.png +0 -0
- flags/nc.png +0 -0
- flags/ne.png +0 -0
- flags/nf.png +0 -0
- flags/ng.png +0 -0
- flags/ni.png +0 -0
- flags/nl.png +0 -0
- flags/no.png +0 -0
- flags/np.png +0 -0
- flags/nr.png +0 -0
- flags/nu.png +0 -0
- flags/nz.png +0 -0
- flags/om.png +0 -0
- flags/pa.png +0 -0
- flags/pe.png +0 -0
- flags/pf.png +0 -0
- flags/pg.png +0 -0
- flags/ph.png +0 -0
- flags/pk.png +0 -0
- flags/pl.png +0 -0
- flags/pm.png +0 -0
- flags/pn.png +0 -0
- flags/pr.png +0 -0
- flags/ps.png +0 -0
- flags/pt.png +0 -0
- flags/pw.png +0 -0
- flags/py.png +0 -0
- flags/qa.png +0 -0
- flags/re.png +0 -0
- flags/ro.png +0 -0
- flags/rs.png +0 -0
- flags/ru.png +0 -0
- flags/rw.png +0 -0
- flags/sa.png +0 -0
- flags/sb.png +0 -0
- flags/sc.png +0 -0
- flags/scotland.png +0 -0
- flags/sd.png +0 -0
- flags/se.png +0 -0
- flags/sg.png +0 -0
- flags/sh.png +0 -0
- flags/si.png +0 -0
- flags/sj.png +0 -0
- flags/sk.png +0 -0
- flags/sl.png +0 -0
- flags/sm.png +0 -0
- flags/sn.png +0 -0
- flags/so.png +0 -0
- flags/sr.png +0 -0
- flags/st.png +0 -0
- flags/sv.png +0 -0
- flags/sy.png +0 -0
- flags/sz.png +0 -0
- flags/tc.png +0 -0
- flags/td.png +0 -0
- flags/tf.png +0 -0
- flags/tg.png +0 -0
- flags/th.png +0 -0
- flags/tj.png +0 -0
- flags/tk.png +0 -0
- flags/tl.png +0 -0
- flags/tm.png +0 -0
- flags/tn.png +0 -0
- flags/to.png +0 -0
- flags/tr.png +0 -0
- flags/tt.png +0 -0
- flags/tv.png +0 -0
- flags/tw.png +0 -0
- flags/tz.png +0 -0
- flags/ua.png +0 -0
- flags/ug.png +0 -0
- flags/um.png +0 -0
- flags/us.png +0 -0
- flags/uy.png +0 -0
- flags/uz.png +0 -0
- flags/va.png +0 -0
- flags/vc.png +0 -0
- flags/ve.png +0 -0
- flags/vg.png +0 -0
- flags/vi.png +0 -0
- flags/vn.png +0 -0
- flags/vu.png +0 -0
- flags/wales.png +0 -0
- flags/wf.png +0 -0
- flags/ws.png +0 -0
- flags/ye.png +0 -0
- flags/yt.png +0 -0
- flags/za.png +0 -0
- flags/zm.png +0 -0
- flags/zw.png +0 -0
- lang/cs_CZ.mo +0 -0
- lang/cs_CZ.po +96 -178
- readme.txt +30 -1
- screenshot-1.png +0 -0
- screenshot-3.png +0 -0
- sdmon.css +0 -10
- simple-download-monitor.php +73 -29
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Flag icons - http://www.famfamfam.com
|
2 |
+
|
3 |
+
These icons are public domain, and as such are free for any use (attribution appreciated but not required).
|
4 |
+
|
5 |
+
Note that these flags are named using the ISO3166-1 alpha-2 country codes where appropriate. A list of codes can be found at http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
|
6 |
+
|
7 |
+
If you find these icons useful, please donate via paypal to mjames@gmail.com (or click the donate button available at http://www.famfamfam.com/lab/icons/silk)
|
8 |
+
|
9 |
+
Contact: mjames@gmail.com
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -2,7 +2,7 @@ msgid ""
|
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: Simple Download Monitor v0.04\n"
|
4 |
"Report-Msgid-Bugs-To: \n"
|
5 |
-
"POT-Creation-Date:
|
6 |
"PO-Revision-Date: \n"
|
7 |
"Last-Translator: Pepak <pepak@pepak.net>\n"
|
8 |
"Language-Team: Pepak <pepak@pepak.net>\n"
|
@@ -13,274 +13,192 @@ msgstr ""
|
|
13 |
"X-Poedit-Country: CZECH REPUBLIC\n"
|
14 |
"X-Poedit-SourceCharset: utf-8\n"
|
15 |
"X-Poedit-KeywordsList: _e;__\n"
|
16 |
-
"X-Poedit-Basepath:
|
17 |
"X-Poedit-SearchPath-0: ..\n"
|
18 |
|
19 |
-
#: ../
|
20 |
-
#: ../
|
21 |
-
#: ../tags/0.06/simple-download-monitor.php:226
|
22 |
-
#: ../tags/0.06/simple-download-monitor.php:498
|
23 |
-
#: ../tags/0.07/simple-download-monitor.php:236
|
24 |
-
#: ../tags/0.07/simple-download-monitor.php:513
|
25 |
-
#: ../trunk/simple-download-monitor.php:237
|
26 |
-
#: ../trunk/simple-download-monitor.php:636
|
27 |
msgid "Simple Download Monitor options"
|
28 |
msgstr "Simple Download Monitor - nastavení"
|
29 |
|
30 |
-
#: ../
|
31 |
-
#: ../tags/0.06/simple-download-monitor.php:227
|
32 |
-
#: ../tags/0.07/simple-download-monitor.php:237
|
33 |
-
#: ../trunk/simple-download-monitor.php:238
|
34 |
msgid "Allowed directories"
|
35 |
msgstr "Povolené adresáře"
|
36 |
|
37 |
-
#: ../
|
38 |
-
#: ../tags/0.06/simple-download-monitor.php:228
|
39 |
-
#: ../tags/0.07/simple-download-monitor.php:238
|
40 |
-
#: ../trunk/simple-download-monitor.php:239
|
41 |
msgid "Only requested files whose full names (relative to document root) start with this regular expression will be processed. It is strongly recommended to place all downloadable files (and ONLY downloadable files) into a designated directory and then placing that directory's name followed by a slash here. It is possible to use the power of PREG to allow multiple directories, but make sure there are ONLY files which you are comfortable with malicious users downloading. Do not EVER allow directories which contain PHP files here! That could lead to disclosure of sensitive data, including username and password used to connect to WordPress database."
|
42 |
msgstr "Zpracovávány budou pouze soubory, jejichž plná jména (relativní vůči kořenovému adresáři webu) začínají tímto regulárním výrazem. Silně doporučuji umístit všechny stažitelné soubory (a JENOM stažitelné soubory) do jednoho určeného adresáře a vepsat sem název tohoto adresáře zakončený lomítkem. Lze také využít všech možností, které dává PREG, pro povolení více adresářů, ale dejte si pozor, ať v nich jsou JEDINĚ soubory, u kterých vám nevadí, když si je stáhne útočník. NIKDY do těchto adresářů neukládejte žádné PHP soubory! To by mohlo vést k zveřejnění citlivých dat, včetně uživatelského jména a hesla pro připojení k databázi."
|
43 |
|
44 |
-
#: ../
|
45 |
-
#: ../tags/0.06/simple-download-monitor.php:229
|
46 |
-
#: ../tags/0.07/simple-download-monitor.php:239
|
47 |
-
#: ../trunk/simple-download-monitor.php:240
|
48 |
msgid "Default value is <code>files/</code>, which only allows download from /files directory (the leading <code>/</code> is implicit)."
|
49 |
msgstr "Výchozí hodnota je <code>files/</code>, která dovolí stahovat pouze soubory z adresáře /files (úvodní <code>/</code> je dosazeno automaticky)."
|
50 |
|
51 |
-
#: ../
|
52 |
-
#: ../tags/0.06/simple-download-monitor.php:231
|
53 |
-
#: ../tags/0.07/simple-download-monitor.php:241
|
54 |
-
#: ../trunk/simple-download-monitor.php:242
|
55 |
msgid "Allowed extensions"
|
56 |
msgstr "Povolené přípony"
|
57 |
|
58 |
-
#: ../
|
59 |
-
#: ../tags/0.06/simple-download-monitor.php:232
|
60 |
-
#: ../tags/0.07/simple-download-monitor.php:242
|
61 |
-
#: ../trunk/simple-download-monitor.php:243
|
62 |
msgid "Only files with extensions matching this regular expressions will be processed. This is another important security value. Make sure you only add extensions which are safe for malicious users to have, e.g. archives and possibly images. Do NOT use any expression that could allow a user to download PHP files, even if you think it safe given the Allowed Directories option above."
|
63 |
msgstr "Zpracovávány budou pouze soubory, jejichž přípony odpovídají tomuto regulárnímu výrazu. Jde o další důležitý bezpečnostní prvek. Dejte si pozor, ať jsou zde uvedeny pouze takové přípony, které nemohou být zneužity útočníky, tzn. komprimované archívy a případně obrázky. NEPOUŽÍVEJTE výrazy, které by mohly uživateli dovolit download PHP souborů, ani kdyby tyto soubory vylučovalo nastavení \"Povolené adresáře\" výše."
|
64 |
|
65 |
-
#: ../
|
66 |
-
#: ../tags/0.06/simple-download-monitor.php:233
|
67 |
-
#: ../tags/0.07/simple-download-monitor.php:243
|
68 |
-
#: ../trunk/simple-download-monitor.php:244
|
69 |
msgid "Default value is <code>zip|rar|7z</code> which only allows download of files ending with <code>.zip</code>, <code>.rar</code> and <code>.7z</code> (the leading <code>.</code> is implicit)."
|
70 |
msgstr "Výchozí hodnota je <code>zip|rar|7z</code>, která povolí pouze stahování souborů s příponou <code>.zip</code>, <code>.rar</code> a <code>.7z</code> (úvodní <code>.</code> je dosazena automaticky)."
|
71 |
|
72 |
-
#: ../
|
73 |
-
|
74 |
-
|
75 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
76 |
msgid "Store detailed logs?"
|
77 |
msgstr "Ukládat detailní záznamy?"
|
78 |
|
79 |
-
#: ../
|
80 |
-
#: ../tags/0.06/simple-download-monitor.php:236
|
81 |
-
#: ../tags/0.07/simple-download-monitor.php:251
|
82 |
-
#: ../trunk/simple-download-monitor.php:252
|
83 |
msgid "If detailed logs are allowed, various information (including exact time of download, user's IP address, referrer etc.) is stored. This can fill your database quickly if you have only a little space or a lot of popular downloads. Otherwise just the total numbers of downloads are stored, consuming significantly less space."
|
84 |
msgstr "Pokud je tato volba zapnuta, ukládají se detailní informace (jako přesný čas, IP adresa uživatele nebo referer) o každém downloadu. To může rychle zahltit databázi, pokud máte jen málo prostoru nebo populární downloady. Normálně se ukládá jen celkový počet stažení, který zabírá podstatně méně místa."
|
85 |
|
86 |
-
#: ../
|
87 |
-
#: ../tags/0.06/simple-download-monitor.php:237
|
88 |
-
#: ../tags/0.07/simple-download-monitor.php:252
|
89 |
-
#: ../trunk/simple-download-monitor.php:253
|
90 |
msgid "Use detailed statistics."
|
91 |
msgstr "Používat detailní statistiky"
|
92 |
|
93 |
-
#: ../
|
94 |
-
|
95 |
-
|
96 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
97 |
msgid "Update settings"
|
98 |
msgstr "Uložit nastavení"
|
99 |
|
100 |
-
#: ../
|
101 |
-
#: ../tags/0.06/simple-download-monitor.php:343
|
102 |
-
#: ../tags/0.07/simple-download-monitor.php:358
|
103 |
-
#: ../trunk/simple-download-monitor.php:374
|
104 |
msgid "First"
|
105 |
msgstr "První"
|
106 |
|
107 |
-
#: ../
|
108 |
-
#: ../tags/0.06/simple-download-monitor.php:344
|
109 |
-
#: ../tags/0.07/simple-download-monitor.php:359
|
110 |
-
#: ../trunk/simple-download-monitor.php:375
|
111 |
msgid "Previous"
|
112 |
msgstr "Předchozí"
|
113 |
|
114 |
-
#: ../
|
115 |
-
#: ../tags/0.06/simple-download-monitor.php:349
|
116 |
-
#: ../tags/0.07/simple-download-monitor.php:364
|
117 |
-
#: ../trunk/simple-download-monitor.php:380
|
118 |
msgid "Next"
|
119 |
msgstr "Další"
|
120 |
|
121 |
-
#: ../
|
122 |
-
#: ../tags/0.06/simple-download-monitor.php:350
|
123 |
-
#: ../tags/0.07/simple-download-monitor.php:365
|
124 |
-
#: ../trunk/simple-download-monitor.php:381
|
125 |
msgid "Last"
|
126 |
msgstr "Poslední"
|
127 |
|
128 |
-
#: ../
|
129 |
-
#: ../
|
130 |
-
#: ../
|
131 |
-
#: ../
|
132 |
-
#: ../tags/0.06/simple-download-monitor.php:365
|
133 |
-
#: ../tags/0.06/simple-download-monitor.php:430
|
134 |
-
#: ../tags/0.06/simple-download-monitor.php:498
|
135 |
-
#: ../tags/0.06/simple-download-monitor.php:499
|
136 |
-
#: ../tags/0.07/simple-download-monitor.php:380
|
137 |
-
#: ../tags/0.07/simple-download-monitor.php:445
|
138 |
-
#: ../tags/0.07/simple-download-monitor.php:513
|
139 |
-
#: ../tags/0.07/simple-download-monitor.php:514
|
140 |
-
#: ../trunk/simple-download-monitor.php:478
|
141 |
-
#: ../trunk/simple-download-monitor.php:555
|
142 |
-
#: ../trunk/simple-download-monitor.php:636
|
143 |
-
#: ../trunk/simple-download-monitor.php:637
|
144 |
msgid "Simple Download Monitor"
|
145 |
msgstr "Simple Download Monitor"
|
146 |
|
147 |
-
#: ../
|
148 |
-
#: ../tags/0.06/simple-download-monitor.php:366
|
149 |
-
#: ../tags/0.07/simple-download-monitor.php:381
|
150 |
-
#: ../trunk/simple-download-monitor.php:479
|
151 |
msgid "Nonexistent downloads"
|
152 |
msgstr "Neexistující soubory"
|
153 |
|
154 |
-
#: ../
|
155 |
-
#: ../tags/0.06/simple-download-monitor.php:366
|
156 |
-
#: ../tags/0.07/simple-download-monitor.php:381
|
157 |
-
#: ../trunk/simple-download-monitor.php:479
|
158 |
msgid "All downloads"
|
159 |
msgstr "Všechny downloady"
|
160 |
|
161 |
-
#: ../
|
162 |
-
#: ../tags/0.06/simple-download-monitor.php:367
|
163 |
-
#: ../tags/0.07/simple-download-monitor.php:382
|
164 |
-
#: ../trunk/simple-download-monitor.php:480
|
165 |
msgid "Show all downloads"
|
166 |
msgstr "Zobrazit všechny soubory"
|
167 |
|
168 |
-
#: ../
|
169 |
-
#: ../tags/0.06/simple-download-monitor.php:367
|
170 |
-
#: ../tags/0.07/simple-download-monitor.php:382
|
171 |
-
#: ../trunk/simple-download-monitor.php:480
|
172 |
msgid "Show nonexistent downloads"
|
173 |
msgstr "Zobrazit neexistující soubory"
|
174 |
|
175 |
-
#: ../
|
176 |
-
#: ../tags/0.06/simple-download-monitor.php:378
|
177 |
-
#: ../tags/0.07/simple-download-monitor.php:393
|
178 |
-
#: ../trunk/simple-download-monitor.php:495
|
179 |
msgid "Filename"
|
180 |
msgstr "Název souboru"
|
181 |
|
182 |
-
#: ../
|
183 |
-
#: ../tags/0.06/simple-download-monitor.php:379
|
184 |
-
#: ../tags/0.07/simple-download-monitor.php:394
|
185 |
-
#: ../trunk/simple-download-monitor.php:496
|
186 |
msgid "Download count"
|
187 |
msgstr "Počet stažení"
|
188 |
|
189 |
-
#: ../
|
190 |
-
#: ../tags/0.06/simple-download-monitor.php:380
|
191 |
-
#: ../tags/0.07/simple-download-monitor.php:395
|
192 |
-
#: ../trunk/simple-download-monitor.php:497
|
193 |
msgid "Last date"
|
194 |
msgstr "Poslední datum"
|
195 |
|
196 |
-
#: ../
|
197 |
-
#: ../
|
198 |
-
|
199 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
200 |
#, php-format
|
201 |
msgid "Detailed data for <strong>%s</strong>:"
|
202 |
msgstr "Detailní data pro <strong>%s</strong>:"
|
203 |
|
204 |
-
#: ../
|
205 |
-
#: ../tags/0.06/simple-download-monitor.php:432
|
206 |
-
#: ../tags/0.07/simple-download-monitor.php:447
|
207 |
-
#: ../trunk/simple-download-monitor.php:557
|
208 |
#, php-format
|
209 |
msgid "Total number of downloads: <strong>%d</strong>."
|
210 |
msgstr "Celkový počet stažení: <strong>%d</strong>."
|
211 |
|
212 |
-
#: ../
|
213 |
-
#: ../tags/0.06/simple-download-monitor.php:444
|
214 |
-
#: ../tags/0.07/simple-download-monitor.php:459
|
215 |
-
#: ../trunk/simple-download-monitor.php:573
|
216 |
msgid "Date"
|
217 |
msgstr "Datum"
|
218 |
|
219 |
-
#: ../
|
220 |
-
|
221 |
-
|
222 |
-
|
|
|
223 |
msgid "IP address"
|
224 |
msgstr "IP adresa"
|
225 |
|
226 |
-
#: ../
|
227 |
-
#: ../tags/0.06/simple-download-monitor.php:446
|
228 |
-
#: ../tags/0.07/simple-download-monitor.php:461
|
229 |
-
#: ../trunk/simple-download-monitor.php:575
|
230 |
msgid "Referer"
|
231 |
msgstr "Referer"
|
232 |
|
233 |
-
#: ../
|
234 |
-
#: ../tags/0.06/simple-download-monitor.php:447
|
235 |
-
#: ../tags/0.07/simple-download-monitor.php:462
|
236 |
-
#: ../trunk/simple-download-monitor.php:576
|
237 |
msgid "Username"
|
238 |
msgstr "Uživatel"
|
239 |
|
240 |
-
#: ../
|
241 |
-
#: ../tags/0.06/simple-download-monitor.php:476
|
242 |
-
#: ../tags/0.07/simple-download-monitor.php:491
|
243 |
-
#: ../trunk/simple-download-monitor.php:614
|
244 |
msgid "Return to full list."
|
245 |
msgstr "Návrat do úplného seznamu"
|
246 |
|
247 |
-
#: ../tags/0.07/simple-download-monitor.php:245
|
248 |
-
#: ../trunk/simple-download-monitor.php:246
|
249 |
-
msgid "Inline files"
|
250 |
-
msgstr "Soubory pro inline zobrazení"
|
251 |
-
|
252 |
-
#: ../tags/0.07/simple-download-monitor.php:246
|
253 |
-
#: ../trunk/simple-download-monitor.php:247
|
254 |
-
msgid "Files whose names match this regular expression will be displayed inline (within a HTML page) rather than downloaded."
|
255 |
-
msgstr "Soubory, které vyhovují tomuto regulárnímu výrazu, budou zobrazeny inline (jako objekt - např. obrázek nebo video - uvnitř HTML stránky) místo aby se stahovaly."
|
256 |
-
|
257 |
-
#: ../tags/0.07/simple-download-monitor.php:247
|
258 |
-
#: ../trunk/simple-download-monitor.php:248
|
259 |
-
msgid "By default, this value is empty - no files will appear inline, all will be downloaded. You may want to place something like <code>\\.(jpe?g|gif|png|swf)$</code> here to make images and Flash videos appear inline."
|
260 |
-
msgstr "Výchozí hodnotou je prázdný řetězec - všechny soubory se budou stahovat, žádný nebude zobrazen inline. Vepište sem něco jako <code>\\.(jpe?g|gif|png|swf)$</code> pro zobrazování obrázků a Flashů inline."
|
261 |
-
|
262 |
-
#: ../tags/0.07/simple-download-monitor.php:248
|
263 |
-
#: ../trunk/simple-download-monitor.php:249
|
264 |
-
msgid "Note: Unlike the options above, nothing is implied in this regular expression. You <em>must</em> use an explicit <code>\\.</code> to denote \"start of extension\", you <em>must</em> use an explicit <code>$</code> to mark \"end of filename\", etc."
|
265 |
-
msgstr "Pozn.: Narozdíl od nastavení uvedených výše se do tohoto regulárního výrazu nic nedoplňuje. Pokud chcete vyznačit \"začátek přípony\", <em>musíte</em> sem napsat <code>\\.</code>; pokud chcete vyznačit \"konec názvu souboru\", <em>musíte</em> sem napsat <code>$</code>, a podobně."
|
266 |
-
|
267 |
-
#: ../trunk/simple-download-monitor.php:520
|
268 |
-
#: ../trunk/simple-download-monitor.php:599
|
269 |
-
msgid "Delete"
|
270 |
-
msgstr "Smazat"
|
271 |
-
|
272 |
-
#: ../trunk/simple-download-monitor.php:528
|
273 |
-
#: ../trunk/simple-download-monitor.php:607
|
274 |
-
msgid "Delete Checked"
|
275 |
-
msgstr "Smazat vybrané"
|
276 |
-
|
277 |
-
#: ../trunk/simple-download-monitor.php:529
|
278 |
-
#: ../trunk/simple-download-monitor.php:610
|
279 |
-
msgid "Delete All"
|
280 |
-
msgstr "Smazat všechny"
|
281 |
-
|
282 |
-
#: ../trunk/simple-download-monitor.php:529
|
283 |
-
#: ../trunk/simple-download-monitor.php:610
|
284 |
-
msgid "Yes, I am sure"
|
285 |
-
msgstr "Ano, chci to udělat"
|
286 |
-
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: Simple Download Monitor v0.04\n"
|
4 |
"Report-Msgid-Bugs-To: \n"
|
5 |
+
"POT-Creation-Date: 2010-03-27 14:03+0100\n"
|
6 |
"PO-Revision-Date: \n"
|
7 |
"Last-Translator: Pepak <pepak@pepak.net>\n"
|
8 |
"Language-Team: Pepak <pepak@pepak.net>\n"
|
13 |
"X-Poedit-Country: CZECH REPUBLIC\n"
|
14 |
"X-Poedit-SourceCharset: utf-8\n"
|
15 |
"X-Poedit-KeywordsList: _e;__\n"
|
16 |
+
"X-Poedit-Basepath: .\n"
|
17 |
"X-Poedit-SearchPath-0: ..\n"
|
18 |
|
19 |
+
#: ../simple-download-monitor.php:406
|
20 |
+
#: ../simple-download-monitor.php:822
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
msgid "Simple Download Monitor options"
|
22 |
msgstr "Simple Download Monitor - nastavení"
|
23 |
|
24 |
+
#: ../simple-download-monitor.php:407
|
|
|
|
|
|
|
25 |
msgid "Allowed directories"
|
26 |
msgstr "Povolené adresáře"
|
27 |
|
28 |
+
#: ../simple-download-monitor.php:408
|
|
|
|
|
|
|
29 |
msgid "Only requested files whose full names (relative to document root) start with this regular expression will be processed. It is strongly recommended to place all downloadable files (and ONLY downloadable files) into a designated directory and then placing that directory's name followed by a slash here. It is possible to use the power of PREG to allow multiple directories, but make sure there are ONLY files which you are comfortable with malicious users downloading. Do not EVER allow directories which contain PHP files here! That could lead to disclosure of sensitive data, including username and password used to connect to WordPress database."
|
30 |
msgstr "Zpracovávány budou pouze soubory, jejichž plná jména (relativní vůči kořenovému adresáři webu) začínají tímto regulárním výrazem. Silně doporučuji umístit všechny stažitelné soubory (a JENOM stažitelné soubory) do jednoho určeného adresáře a vepsat sem název tohoto adresáře zakončený lomítkem. Lze také využít všech možností, které dává PREG, pro povolení více adresářů, ale dejte si pozor, ať v nich jsou JEDINĚ soubory, u kterých vám nevadí, když si je stáhne útočník. NIKDY do těchto adresářů neukládejte žádné PHP soubory! To by mohlo vést k zveřejnění citlivých dat, včetně uživatelského jména a hesla pro připojení k databázi."
|
31 |
|
32 |
+
#: ../simple-download-monitor.php:409
|
|
|
|
|
|
|
33 |
msgid "Default value is <code>files/</code>, which only allows download from /files directory (the leading <code>/</code> is implicit)."
|
34 |
msgstr "Výchozí hodnota je <code>files/</code>, která dovolí stahovat pouze soubory z adresáře /files (úvodní <code>/</code> je dosazeno automaticky)."
|
35 |
|
36 |
+
#: ../simple-download-monitor.php:411
|
|
|
|
|
|
|
37 |
msgid "Allowed extensions"
|
38 |
msgstr "Povolené přípony"
|
39 |
|
40 |
+
#: ../simple-download-monitor.php:412
|
|
|
|
|
|
|
41 |
msgid "Only files with extensions matching this regular expressions will be processed. This is another important security value. Make sure you only add extensions which are safe for malicious users to have, e.g. archives and possibly images. Do NOT use any expression that could allow a user to download PHP files, even if you think it safe given the Allowed Directories option above."
|
42 |
msgstr "Zpracovávány budou pouze soubory, jejichž přípony odpovídají tomuto regulárnímu výrazu. Jde o další důležitý bezpečnostní prvek. Dejte si pozor, ať jsou zde uvedeny pouze takové přípony, které nemohou být zneužity útočníky, tzn. komprimované archívy a případně obrázky. NEPOUŽÍVEJTE výrazy, které by mohly uživateli dovolit download PHP souborů, ani kdyby tyto soubory vylučovalo nastavení \"Povolené adresáře\" výše."
|
43 |
|
44 |
+
#: ../simple-download-monitor.php:413
|
|
|
|
|
|
|
45 |
msgid "Default value is <code>zip|rar|7z</code> which only allows download of files ending with <code>.zip</code>, <code>.rar</code> and <code>.7z</code> (the leading <code>.</code> is implicit)."
|
46 |
msgstr "Výchozí hodnota je <code>zip|rar|7z</code>, která povolí pouze stahování souborů s příponou <code>.zip</code>, <code>.rar</code> a <code>.7z</code> (úvodní <code>.</code> je dosazena automaticky)."
|
47 |
|
48 |
+
#: ../simple-download-monitor.php:415
|
49 |
+
msgid "Inline files"
|
50 |
+
msgstr "Soubory pro inline zobrazení"
|
51 |
+
|
52 |
+
#: ../simple-download-monitor.php:416
|
53 |
+
msgid "Files whose names match this regular expression will be displayed inline (within a HTML page) rather than downloaded."
|
54 |
+
msgstr "Soubory, které vyhovují tomuto regulárnímu výrazu, budou zobrazeny inline (jako objekt - např. obrázek nebo video - uvnitř HTML stránky) místo aby se stahovaly."
|
55 |
+
|
56 |
+
#: ../simple-download-monitor.php:417
|
57 |
+
msgid "By default, this value is empty - no files will appear inline, all will be downloaded. You may want to place something like <code>\\.(jpe?g|gif|png|swf)$</code> here to make images and Flash videos appear inline."
|
58 |
+
msgstr "Výchozí hodnotou je prázdný řetězec - všechny soubory se budou stahovat, žádný nebude zobrazen inline. Vepište sem něco jako <code>\\.(jpe?g|gif|png|swf)$</code> pro zobrazování obrázků a Flashů inline."
|
59 |
+
|
60 |
+
#: ../simple-download-monitor.php:418
|
61 |
+
msgid "Note: Unlike the options above, nothing is implied in this regular expression. You <em>must</em> use an explicit <code>\\.</code> to denote \"start of extension\", you <em>must</em> use an explicit <code>$</code> to mark \"end of filename\", etc."
|
62 |
+
msgstr "Pozn.: Narozdíl od nastavení uvedených výše se do tohoto regulárního výrazu nic nedoplňuje. Pokud chcete vyznačit \"začátek přípony\", <em>musíte</em> sem napsat <code>\\.</code>; pokud chcete vyznačit \"konec názvu souboru\", <em>musíte</em> sem napsat <code>$</code>, a podobně."
|
63 |
+
|
64 |
+
#: ../simple-download-monitor.php:420
|
65 |
msgid "Store detailed logs?"
|
66 |
msgstr "Ukládat detailní záznamy?"
|
67 |
|
68 |
+
#: ../simple-download-monitor.php:421
|
|
|
|
|
|
|
69 |
msgid "If detailed logs are allowed, various information (including exact time of download, user's IP address, referrer etc.) is stored. This can fill your database quickly if you have only a little space or a lot of popular downloads. Otherwise just the total numbers of downloads are stored, consuming significantly less space."
|
70 |
msgstr "Pokud je tato volba zapnuta, ukládají se detailní informace (jako přesný čas, IP adresa uživatele nebo referer) o každém downloadu. To může rychle zahltit databázi, pokud máte jen málo prostoru nebo populární downloady. Normálně se ukládá jen celkový počet stažení, který zabírá podstatně méně místa."
|
71 |
|
72 |
+
#: ../simple-download-monitor.php:422
|
|
|
|
|
|
|
73 |
msgid "Use detailed statistics."
|
74 |
msgstr "Používat detailní statistiky"
|
75 |
|
76 |
+
#: ../simple-download-monitor.php:423
|
77 |
+
msgid "Ignored users"
|
78 |
+
msgstr "Ignorovaní uživatelé"
|
79 |
+
|
80 |
+
#: ../simple-download-monitor.php:424
|
81 |
+
msgid "List of users whose downloads are not monitored. Separate multiple users with pipe character <code>|</code>. It is useful to prevent administrator damaging the statistics by testing that downloads work."
|
82 |
+
msgstr "Seznam uživatelů, jejichž downloady nejsou sledovány. Uživatelská jména oddělujte znakem roury <code>|</code>. Funkce se hodí pro administrátory, kteří chtějí ověřovat funkčnost odkazů, ale nepřejí si, aby se jejich testy zaznamenávaly do statistik."
|
83 |
+
|
84 |
+
#: ../simple-download-monitor.php:426
|
85 |
+
msgid "Ignore quick re-downloads"
|
86 |
+
msgstr "Ignorovat rychlé opakované downloady"
|
87 |
+
|
88 |
+
#: ../simple-download-monitor.php:427
|
89 |
+
msgid "If one IP address requests the same download several times within a given time interval, only the first time will be recorded. If a zero or a negative value is entered, all downloads will get recorded regardless of how quickly they occur after each other."
|
90 |
+
msgstr "Pokud se jedna IP adresa pokusí stáhnout jeden soubor několikrát po sobě v daném časovém intervalu, zaznamená se do statistik jen první pokus. Pokud je rozpětí stanoveno na nula nebo záporné číslo, budou se zaznamenávat všechny downloady, bez ohledu na to, jak rychle po sobě následují."
|
91 |
+
|
92 |
+
#: ../simple-download-monitor.php:428
|
93 |
+
msgid "seconds"
|
94 |
+
msgstr "sekund"
|
95 |
+
|
96 |
+
#: ../simple-download-monitor.php:429
|
97 |
msgid "Update settings"
|
98 |
msgstr "Uložit nastavení"
|
99 |
|
100 |
+
#: ../simple-download-monitor.php:549
|
|
|
|
|
|
|
101 |
msgid "First"
|
102 |
msgstr "První"
|
103 |
|
104 |
+
#: ../simple-download-monitor.php:550
|
|
|
|
|
|
|
105 |
msgid "Previous"
|
106 |
msgstr "Předchozí"
|
107 |
|
108 |
+
#: ../simple-download-monitor.php:555
|
|
|
|
|
|
|
109 |
msgid "Next"
|
110 |
msgstr "Další"
|
111 |
|
112 |
+
#: ../simple-download-monitor.php:556
|
|
|
|
|
|
|
113 |
msgid "Last"
|
114 |
msgstr "Poslední"
|
115 |
|
116 |
+
#: ../simple-download-monitor.php:653
|
117 |
+
#: ../simple-download-monitor.php:730
|
118 |
+
#: ../simple-download-monitor.php:822
|
119 |
+
#: ../simple-download-monitor.php:823
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
msgid "Simple Download Monitor"
|
121 |
msgstr "Simple Download Monitor"
|
122 |
|
123 |
+
#: ../simple-download-monitor.php:654
|
|
|
|
|
|
|
124 |
msgid "Nonexistent downloads"
|
125 |
msgstr "Neexistující soubory"
|
126 |
|
127 |
+
#: ../simple-download-monitor.php:654
|
|
|
|
|
|
|
128 |
msgid "All downloads"
|
129 |
msgstr "Všechny downloady"
|
130 |
|
131 |
+
#: ../simple-download-monitor.php:655
|
|
|
|
|
|
|
132 |
msgid "Show all downloads"
|
133 |
msgstr "Zobrazit všechny soubory"
|
134 |
|
135 |
+
#: ../simple-download-monitor.php:655
|
|
|
|
|
|
|
136 |
msgid "Show nonexistent downloads"
|
137 |
msgstr "Zobrazit neexistující soubory"
|
138 |
|
139 |
+
#: ../simple-download-monitor.php:670
|
|
|
|
|
|
|
140 |
msgid "Filename"
|
141 |
msgstr "Název souboru"
|
142 |
|
143 |
+
#: ../simple-download-monitor.php:671
|
|
|
|
|
|
|
144 |
msgid "Download count"
|
145 |
msgstr "Počet stažení"
|
146 |
|
147 |
+
#: ../simple-download-monitor.php:672
|
|
|
|
|
|
|
148 |
msgid "Last date"
|
149 |
msgstr "Poslední datum"
|
150 |
|
151 |
+
#: ../simple-download-monitor.php:695
|
152 |
+
#: ../simple-download-monitor.php:785
|
153 |
+
msgid "Delete"
|
154 |
+
msgstr "Smazat"
|
155 |
+
|
156 |
+
#: ../simple-download-monitor.php:703
|
157 |
+
#: ../simple-download-monitor.php:793
|
158 |
+
msgid "Delete Checked"
|
159 |
+
msgstr "Smazat vybrané"
|
160 |
+
|
161 |
+
#: ../simple-download-monitor.php:704
|
162 |
+
#: ../simple-download-monitor.php:796
|
163 |
+
msgid "Delete All"
|
164 |
+
msgstr "Smazat všechny"
|
165 |
+
|
166 |
+
#: ../simple-download-monitor.php:704
|
167 |
+
#: ../simple-download-monitor.php:796
|
168 |
+
msgid "Yes, I am sure"
|
169 |
+
msgstr "Ano, chci to udělat"
|
170 |
+
|
171 |
+
#: ../simple-download-monitor.php:731
|
172 |
#, php-format
|
173 |
msgid "Detailed data for <strong>%s</strong>:"
|
174 |
msgstr "Detailní data pro <strong>%s</strong>:"
|
175 |
|
176 |
+
#: ../simple-download-monitor.php:732
|
|
|
|
|
|
|
177 |
#, php-format
|
178 |
msgid "Total number of downloads: <strong>%d</strong>."
|
179 |
msgstr "Celkový počet stažení: <strong>%d</strong>."
|
180 |
|
181 |
+
#: ../simple-download-monitor.php:749
|
|
|
|
|
|
|
182 |
msgid "Date"
|
183 |
msgstr "Datum"
|
184 |
|
185 |
+
#: ../simple-download-monitor.php:750
|
186 |
+
msgid "Country"
|
187 |
+
msgstr "Země"
|
188 |
+
|
189 |
+
#: ../simple-download-monitor.php:751
|
190 |
msgid "IP address"
|
191 |
msgstr "IP adresa"
|
192 |
|
193 |
+
#: ../simple-download-monitor.php:752
|
|
|
|
|
|
|
194 |
msgid "Referer"
|
195 |
msgstr "Referer"
|
196 |
|
197 |
+
#: ../simple-download-monitor.php:753
|
|
|
|
|
|
|
198 |
msgid "Username"
|
199 |
msgstr "Uživatel"
|
200 |
|
201 |
+
#: ../simple-download-monitor.php:800
|
|
|
|
|
|
|
202 |
msgid "Return to full list."
|
203 |
msgstr "Návrat do úplného seznamu"
|
204 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -4,7 +4,7 @@ Donate link:
|
|
4 |
Tags: files, counter, count, tracking, download monitor, monitor, downloads, download
|
5 |
Requires at least: 2.8.0
|
6 |
Tested up to: 2.9.1
|
7 |
-
Stable tag: 0.
|
8 |
|
9 |
Count the number of downloads without having to maintain a comprehensive download page.
|
10 |
|
@@ -102,6 +102,35 @@ will fix any errors that are reported to me.
|
|
102 |
|
103 |
== Changelog ==
|
104 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
= 0.11 =
|
106 |
|
107 |
* Automatic upgrade of the plugin fails because of the nested ZIP
|
4 |
Tags: files, counter, count, tracking, download monitor, monitor, downloads, download
|
5 |
Requires at least: 2.8.0
|
6 |
Tested up to: 2.9.1
|
7 |
+
Stable tag: 0.12
|
8 |
|
9 |
Count the number of downloads without having to maintain a comprehensive download page.
|
10 |
|
102 |
|
103 |
== Changelog ==
|
104 |
|
105 |
+
= 0.12 =
|
106 |
+
|
107 |
+
* Support for country-flagging of each download. This feature requires
|
108 |
+
that my plugin Ip-to-Country ( http://wordpress.org/extend/plugins/ip-to-country/ )
|
109 |
+
is installed and set-up.
|
110 |
+
|
111 |
+
I am still undecided if it is better to assign countries when a download
|
112 |
+
occurs or leave it until a list of downloads is displayed. I can see
|
113 |
+
benefits and drawbacks for both solutions. At the moment the plugin
|
114 |
+
leaves country-assignment until the list is displayed, but I am interested
|
115 |
+
in hearing your thoughts about this decision.
|
116 |
+
|
117 |
+
This function is only supported with PHP5.
|
118 |
+
|
119 |
+
* New setting for "ignored users". Downloads made by users whose names are
|
120 |
+
listed (in pipe-separated list) in configuration will not be monitored.
|
121 |
+
It is useful for admins who want to test that their download links work,
|
122 |
+
but don't want to record their tests as "downloads".
|
123 |
+
|
124 |
+
* Ability to ignore downloads if someone requests one file from one IP address
|
125 |
+
several times within a short time interval. There is an option that let's
|
126 |
+
admin specify how long this interval is (in seconds), and if multiple downloads
|
127 |
+
of the same file from the same IP address happen within so many seconds of
|
128 |
+
each other, only the first one gets recorded. This is useful for download
|
129 |
+
accelerators which try to download one file in several pieces, with longer
|
130 |
+
time intervals also for redownloads (e.g. download fails the first time so
|
131 |
+
the user tries again).
|
132 |
+
|
133 |
+
|
134 |
= 0.11 =
|
135 |
|
136 |
* Automatic upgrade of the plugin fails because of the nested ZIP
|
Binary file
|
Binary file
|
@@ -1,10 +0,0 @@
|
|
1 |
-
#sdmon .sdmon-rownum { width: 3ex; text-align: right; }
|
2 |
-
#sdmon .sdmon-filename { }
|
3 |
-
#sdmon .sdmon-count { text-align: right; }
|
4 |
-
#sdmon .sdmon-date { width: 24ex; text-align: center; }
|
5 |
-
#sdmon .sdmon-nonex { width: 5ex; text-align: center; }
|
6 |
-
#sdmon .sdmon-ipaddr { }
|
7 |
-
#sdmon .sdmon-referer { }
|
8 |
-
#sdmon .sdmon-username { }
|
9 |
-
#sdmon th {text-align: center; }
|
10 |
-
#sdmon th, #sdmon td { padding-left: 1ex; padding-right: 1ex; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -4,7 +4,7 @@
|
|
4 |
Plugin Name: Simple Download Monitor
|
5 |
Plugin URI: http://www.pepak.net/wordpress/simple-download-monitor-plugin
|
6 |
Description: Count the number of downloads without having to maintain a comprehensive download page.
|
7 |
-
Version: 0.
|
8 |
Author: Pepak
|
9 |
Author URI: http://www.pepak.net
|
10 |
*/
|
@@ -31,7 +31,7 @@ if (!class_exists('SimpleDownloadMonitor'))
|
|
31 |
class SimpleDownloadMonitor
|
32 |
{
|
33 |
|
34 |
-
const VERSION = '0.
|
35 |
const PREFIX = 'sdmon_';
|
36 |
const PREG_DELIMITER = '`';
|
37 |
const GET_PARAM = 'sdmon';
|
@@ -92,6 +92,8 @@ if (!class_exists('SimpleDownloadMonitor'))
|
|
92 |
add_option(self::PREFIX . 'extensions', 'zip|rar|7z');
|
93 |
add_option(self::PREFIX . 'detailed', '0');
|
94 |
add_option(self::PREFIX . 'inline', '');
|
|
|
|
|
95 |
}
|
96 |
|
97 |
protected function table_downloads()
|
@@ -259,37 +261,55 @@ if (!class_exists('SimpleDownloadMonitor'))
|
|
259 |
public function Download($filename)
|
260 |
{
|
261 |
global $wpdb, $user_login, $user_ID;
|
|
|
|
|
|
|
|
|
262 |
// Normalize the filename
|
263 |
$fullfilename = realpath(ABSPATH . '/' . $filename);
|
264 |
$relfilename = substr($fullfilename, strlen(ABSPATH));
|
265 |
$relfilename = strtr($relfilename, '\\', '/');
|
266 |
$exists = (file_exists($fullfilename) AND !is_dir($fullfilename)) ? 1 : 0;
|
267 |
-
//
|
268 |
-
|
269 |
-
$
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
}
|
275 |
-
else
|
276 |
-
{
|
277 |
-
$sql = "INSERT INTO ${downloads} (filename, download_count, last_date, file_exists) VALUES (%s, 1, NOW(), %d)";
|
278 |
-
$wpdb->query($wpdb->prepare($sql, $filename, $exists));
|
279 |
-
$id = $wpdb->insert_id;
|
280 |
-
}
|
281 |
-
// If details are requested, store them as well
|
282 |
-
if (intval(get_option(self::PREFIX . 'detailed')))
|
283 |
{
|
284 |
-
|
285 |
-
$
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
293 |
}
|
294 |
// Make sure the file is available for download
|
295 |
if (!$exists)
|
@@ -352,12 +372,15 @@ if (!class_exists('SimpleDownloadMonitor'))
|
|
352 |
$extensions = strval($_POST[self::PREFIX . 'extensions']);
|
353 |
$detailed = intval($_POST[self::PREFIX . 'detailed']);
|
354 |
$inline = strval($_POST[self::PREFIX . 'inline']);
|
|
|
|
|
355 |
// Remove slashes if necessary
|
356 |
if (get_magic_quotes_gpc())
|
357 |
{
|
358 |
$directories = stripslashes($directories);
|
359 |
$extensions = stripslashes($extensions);
|
360 |
$inline = stripslashes($inline);
|
|
|
361 |
}
|
362 |
// Escape the delimiter
|
363 |
list($directories, $extensions) = str_replace(self::PREG_DELIMITER, '\\'.self::PREG_DELIMITER, array($directories, $extensions));
|
@@ -366,12 +389,16 @@ if (!class_exists('SimpleDownloadMonitor'))
|
|
366 |
update_option(self::PREFIX . 'extensions', $extensions);
|
367 |
update_option(self::PREFIX . 'detailed', $detailed);
|
368 |
update_option(self::PREFIX . 'inline', $inline);
|
|
|
|
|
369 |
}
|
370 |
// Load options from the database
|
371 |
$directories = get_option(self::PREFIX . 'directories');
|
372 |
$extensions = get_option(self::PREFIX . 'extensions');
|
373 |
$detailed = get_option(self::PREFIX . 'detailed');
|
374 |
$inline = get_option(self::PREFIX . 'inline');
|
|
|
|
|
375 |
// Build the form
|
376 |
?>
|
377 |
<div class="wrap">
|
@@ -393,6 +420,12 @@ if (!class_exists('SimpleDownloadMonitor'))
|
|
393 |
<h3><?php echo __("Store detailed logs?", self::GETTEXT_REALM); ?></h3>
|
394 |
<p><?php echo __("If detailed logs are allowed, various information (including exact time of download, user's IP address, referrer etc.) is stored. This can fill your database quickly if you have only a little space or a lot of popular downloads. Otherwise just the total numbers of downloads are stored, consuming significantly less space.", self::GETTEXT_REALM); ?></p>
|
395 |
<p><label for="<?php echo self::PREFIX; ?>detailed"><input type="checkbox" name="<?php echo self::PREFIX; ?>detailed" value="1" <?php if ($detailed) echo 'checked="checked" '; ?>/> <?php echo __('Use detailed statistics.', self::GETTEXT_REALM); ?></label></p>
|
|
|
|
|
|
|
|
|
|
|
|
|
396 |
<div class="submit"><input type="submit" name="SimpleDownloadMonitor_Submit" value="<?php echo __("Update settings", self::GETTEXT_REALM) ?>" /></div>
|
397 |
</form>
|
398 |
</div><?php
|
@@ -705,6 +738,7 @@ if (!class_exists('SimpleDownloadMonitor'))
|
|
705 |
<col class="sdmon-rownum" align="right" width="32" />
|
706 |
<col class="sdmon-date" align="center" />
|
707 |
<col class="sdmon-ipaddr" />
|
|
|
708 |
<col class="sdmon-referer" />
|
709 |
<col class="sdmon-username" />
|
710 |
<col class="sdmon-tools" />
|
@@ -713,6 +747,7 @@ if (!class_exists('SimpleDownloadMonitor'))
|
|
713 |
<tr>
|
714 |
<th> </th>
|
715 |
<th><a href="<?php echo $this->GetUrlForList(array_merge($options, array('order' => self::ORDER_DATE ))); ?>"><?php echo __("Date", self::GETTEXT_REALM); ?></a></th>
|
|
|
716 |
<th><a href="<?php echo $this->GetUrlForList(array_merge($options, array('order' => self::ORDER_IP ))); ?>"><?php echo __("IP address", self::GETTEXT_REALM); ?></a></th>
|
717 |
<th><a href="<?php echo $this->GetUrlForList(array_merge($options, array('order' => self::ORDER_REFERER))); ?>"><?php echo __("Referer", self::GETTEXT_REALM); ?></a></th>
|
718 |
<th><a href="<?php echo $this->GetUrlForList(array_merge($options, array('order' => self::ORDER_USER ))); ?>"><?php echo __("Username", self::GETTEXT_REALM); ?></a></th>
|
@@ -724,17 +759,26 @@ if (!class_exists('SimpleDownloadMonitor'))
|
|
724 |
$where = $this->GetDetailWhere($flags);
|
725 |
$orderby = $this->GetDetailOrderBy($order);
|
726 |
$limit = $this->GetLimit($from);
|
727 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
728 |
$totalcount = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM ${table_details} WHERE download=%d ${where}", $download));
|
729 |
$results = $wpdb->get_results($wpdb->prepare($sql, $download), ARRAY_N);
|
730 |
$rownum = intval($options['from']);
|
731 |
foreach ($results as $row) {
|
732 |
$rownum++;
|
733 |
-
list($id, $date, $ip, $referer, $userid, $username) = $row;
|
|
|
|
|
734 |
?>
|
735 |
<tr>
|
736 |
<td><?php echo $rownum; ?>.</td>
|
737 |
<td><?php echo mysql2date('Y-m-d h:i:s', $date, TRUE); ?></td>
|
|
|
738 |
<td><?php echo htmlspecialchars($ip); ?></td>
|
739 |
<td><?php echo htmlspecialchars($referer); ?></td>
|
740 |
<td><?php echo htmlspecialchars($username); ?></td>
|
4 |
Plugin Name: Simple Download Monitor
|
5 |
Plugin URI: http://www.pepak.net/wordpress/simple-download-monitor-plugin
|
6 |
Description: Count the number of downloads without having to maintain a comprehensive download page.
|
7 |
+
Version: 0.12
|
8 |
Author: Pepak
|
9 |
Author URI: http://www.pepak.net
|
10 |
*/
|
31 |
class SimpleDownloadMonitor
|
32 |
{
|
33 |
|
34 |
+
const VERSION = '0.12';
|
35 |
const PREFIX = 'sdmon_';
|
36 |
const PREG_DELIMITER = '`';
|
37 |
const GET_PARAM = 'sdmon';
|
92 |
add_option(self::PREFIX . 'extensions', 'zip|rar|7z');
|
93 |
add_option(self::PREFIX . 'detailed', '0');
|
94 |
add_option(self::PREFIX . 'inline', '');
|
95 |
+
add_option(self::PREFIX . 'ignored_users', '');
|
96 |
+
add_option(self::PREFIX . 'group_within', '0');
|
97 |
}
|
98 |
|
99 |
protected function table_downloads()
|
261 |
public function Download($filename)
|
262 |
{
|
263 |
global $wpdb, $user_login, $user_ID;
|
264 |
+
$store_details = intval(get_option(self::PREFIX . 'detailed'));
|
265 |
+
$details = $this->table_details();
|
266 |
+
$downloads = $this->table_downloads();
|
267 |
+
$ip_addr = $_SERVER['REMOTE_ADDR'];
|
268 |
// Normalize the filename
|
269 |
$fullfilename = realpath(ABSPATH . '/' . $filename);
|
270 |
$relfilename = substr($fullfilename, strlen(ABSPATH));
|
271 |
$relfilename = strtr($relfilename, '\\', '/');
|
272 |
$exists = (file_exists($fullfilename) AND !is_dir($fullfilename)) ? 1 : 0;
|
273 |
+
// Get user information and decide if this user should be ignored
|
274 |
+
get_currentuserinfo();
|
275 |
+
$userid = $user_ID ? $user_ID : null;
|
276 |
+
$username = $user_login ? $user_login : null;
|
277 |
+
$ignored_users = get_option(self::PREFIX . 'ignored_users');
|
278 |
+
$monitor = empty($username) || empty($ignored_users) || (!in_array($username, explode('|', $ignored_users)));
|
279 |
+
if ($monitor)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
280 |
{
|
281 |
+
// Store uncorrected request name to database for security/mistake review
|
282 |
+
$id = $wpdb->get_var($wpdb->prepare("SELECT id FROM ${downloads} WHERE filename=%s", $filename));
|
283 |
+
if ($id)
|
284 |
+
{
|
285 |
+
// Ignore quick downloads by the same user
|
286 |
+
if ($store_details && (($group_within = intval(get_option(self::PREFIX . 'group_within'))) > 0))
|
287 |
+
{
|
288 |
+
$grouped_id = $wpdb->get_var($wpdb->prepare("SELECT MIN(id) FROM ${details} WHERE download=%d AND (download_date > DATE_ADD(NOW(), INTERVAL -%d SECOND)) AND ip=%s", $id, $group_within, $ip_addr));
|
289 |
+
if (intval($grouped_id) > 0)
|
290 |
+
$monitor = FALSE;
|
291 |
+
}
|
292 |
+
if ($monitor)
|
293 |
+
{
|
294 |
+
$sql = "UPDATE ${downloads} SET download_count=download_count+1, last_date=NOW(), file_exists=%d WHERE id=%d";
|
295 |
+
$wpdb->query($wpdb->prepare($sql, $exists, $id));
|
296 |
+
}
|
297 |
+
}
|
298 |
+
else
|
299 |
+
{
|
300 |
+
$sql = "INSERT INTO ${downloads} (filename, download_count, last_date, file_exists) VALUES (%s, 1, NOW(), %d)";
|
301 |
+
$wpdb->query($wpdb->prepare($sql, $filename, $exists));
|
302 |
+
$id = $wpdb->insert_id;
|
303 |
+
}
|
304 |
+
// If details are requested, store them as well
|
305 |
+
if ($monitor && $store_details)
|
306 |
+
{
|
307 |
+
$sql = "INSERT INTO ${details} (download, download_date, ip, referer, username, userid) VALUES (%d, NOW(), %s, %s, %s, %d)";
|
308 |
+
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null;
|
309 |
+
if (!$username AND isset($_COOKIE['comment_author_'.COOKIEHASH]))
|
310 |
+
$username = utf8_encode($_COOKIE['comment_author_'.COOKIEHASH]);
|
311 |
+
$wpdb->query($wpdb->prepare($sql, $id, $ip_addr, $referer, $username, $userid));
|
312 |
+
}
|
313 |
}
|
314 |
// Make sure the file is available for download
|
315 |
if (!$exists)
|
372 |
$extensions = strval($_POST[self::PREFIX . 'extensions']);
|
373 |
$detailed = intval($_POST[self::PREFIX . 'detailed']);
|
374 |
$inline = strval($_POST[self::PREFIX . 'inline']);
|
375 |
+
$ignored_users = strval($_POST[self::PREFIX . 'ignored_users']);
|
376 |
+
$group_within = intval($_POST[self::PREFIX . 'group_within']);
|
377 |
// Remove slashes if necessary
|
378 |
if (get_magic_quotes_gpc())
|
379 |
{
|
380 |
$directories = stripslashes($directories);
|
381 |
$extensions = stripslashes($extensions);
|
382 |
$inline = stripslashes($inline);
|
383 |
+
$ignored_users = stripslashes($ignored_users);
|
384 |
}
|
385 |
// Escape the delimiter
|
386 |
list($directories, $extensions) = str_replace(self::PREG_DELIMITER, '\\'.self::PREG_DELIMITER, array($directories, $extensions));
|
389 |
update_option(self::PREFIX . 'extensions', $extensions);
|
390 |
update_option(self::PREFIX . 'detailed', $detailed);
|
391 |
update_option(self::PREFIX . 'inline', $inline);
|
392 |
+
update_option(self::PREFIX . 'ignored_users', $ignored_users);
|
393 |
+
update_option(self::PREFIX . 'group_within', $group_within);
|
394 |
}
|
395 |
// Load options from the database
|
396 |
$directories = get_option(self::PREFIX . 'directories');
|
397 |
$extensions = get_option(self::PREFIX . 'extensions');
|
398 |
$detailed = get_option(self::PREFIX . 'detailed');
|
399 |
$inline = get_option(self::PREFIX . 'inline');
|
400 |
+
$ignored_users = get_option(self::PREFIX . 'ignored_users');
|
401 |
+
$group_within = intval(get_option(self::PREFIX . 'group_within'));
|
402 |
// Build the form
|
403 |
?>
|
404 |
<div class="wrap">
|
420 |
<h3><?php echo __("Store detailed logs?", self::GETTEXT_REALM); ?></h3>
|
421 |
<p><?php echo __("If detailed logs are allowed, various information (including exact time of download, user's IP address, referrer etc.) is stored. This can fill your database quickly if you have only a little space or a lot of popular downloads. Otherwise just the total numbers of downloads are stored, consuming significantly less space.", self::GETTEXT_REALM); ?></p>
|
422 |
<p><label for="<?php echo self::PREFIX; ?>detailed"><input type="checkbox" name="<?php echo self::PREFIX; ?>detailed" value="1" <?php if ($detailed) echo 'checked="checked" '; ?>/> <?php echo __('Use detailed statistics.', self::GETTEXT_REALM); ?></label></p>
|
423 |
+
<h3><?php echo __("Ignored users", self::GETTEXT_REALM); ?></h3>
|
424 |
+
<p><?php echo __("List of users whose downloads are not monitored. Separate multiple users with pipe character <code>|</code>. It is useful to prevent administrator damaging the statistics by testing that downloads work.", self::GETTEXT_REALM); ?></p>
|
425 |
+
<p><input type="text" name="<?php echo self::PREFIX; ?>ignored_users" value="<?php echo attribute_escape($ignored_users); ?>" /></p>
|
426 |
+
<h3><?php echo __("Ignore quick re-downloads", self::GETTEXT_REALM); ?></h3>
|
427 |
+
<p><?php echo __("If one IP address requests the same download several times within a given time interval, only the first time will be recorded. If a zero or a negative value is entered, all downloads will get recorded regardless of how quickly they occur after each other.", self::GETTEXT_REALM); ?></p>
|
428 |
+
<p><input type="text" name="<?php echo self::PREFIX; ?>group_within" value="<?php echo attribute_escape($group_within); ?>" /> <?php echo __('seconds', self::GETTEXT_REALM); ?></p>
|
429 |
<div class="submit"><input type="submit" name="SimpleDownloadMonitor_Submit" value="<?php echo __("Update settings", self::GETTEXT_REALM) ?>" /></div>
|
430 |
</form>
|
431 |
</div><?php
|
738 |
<col class="sdmon-rownum" align="right" width="32" />
|
739 |
<col class="sdmon-date" align="center" />
|
740 |
<col class="sdmon-ipaddr" />
|
741 |
+
<col class="sdmon-country" />
|
742 |
<col class="sdmon-referer" />
|
743 |
<col class="sdmon-username" />
|
744 |
<col class="sdmon-tools" />
|
747 |
<tr>
|
748 |
<th> </th>
|
749 |
<th><a href="<?php echo $this->GetUrlForList(array_merge($options, array('order' => self::ORDER_DATE ))); ?>"><?php echo __("Date", self::GETTEXT_REALM); ?></a></th>
|
750 |
+
<th><?php echo __("Country", self::GETTEXT_REALM); ?></th>
|
751 |
<th><a href="<?php echo $this->GetUrlForList(array_merge($options, array('order' => self::ORDER_IP ))); ?>"><?php echo __("IP address", self::GETTEXT_REALM); ?></a></th>
|
752 |
<th><a href="<?php echo $this->GetUrlForList(array_merge($options, array('order' => self::ORDER_REFERER))); ?>"><?php echo __("Referer", self::GETTEXT_REALM); ?></a></th>
|
753 |
<th><a href="<?php echo $this->GetUrlForList(array_merge($options, array('order' => self::ORDER_USER ))); ?>"><?php echo __("Username", self::GETTEXT_REALM); ?></a></th>
|
759 |
$where = $this->GetDetailWhere($flags);
|
760 |
$orderby = $this->GetDetailOrderBy($order);
|
761 |
$limit = $this->GetLimit($from);
|
762 |
+
if (class_exists('PepakIpToCountry'))
|
763 |
+
{
|
764 |
+
$ip_loc = PepakIpToCountry::Subselect("INET_ATON(${table_details}.ip)", 'iso_code2');
|
765 |
+
}
|
766 |
+
else
|
767 |
+
$ip_loc = 'NULL';
|
768 |
+
$sql = "SELECT id, download_date, ip, referer, userid, username, ${ip_loc} iso_code2 FROM ${table_details} WHERE download=%d ${where} ${orderby} ${limit}";
|
769 |
$totalcount = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM ${table_details} WHERE download=%d ${where}", $download));
|
770 |
$results = $wpdb->get_results($wpdb->prepare($sql, $download), ARRAY_N);
|
771 |
$rownum = intval($options['from']);
|
772 |
foreach ($results as $row) {
|
773 |
$rownum++;
|
774 |
+
list($id, $date, $ip, $referer, $userid, $username, $country) = $row;
|
775 |
+
$country = strtolower($country);
|
776 |
+
$country_flag = ($country && file_exists($this->plugin_dir.'/flags/'.$country.'.png')) ? $this->plugin_url.'/flags/'.$country.'.png' : '';
|
777 |
?>
|
778 |
<tr>
|
779 |
<td><?php echo $rownum; ?>.</td>
|
780 |
<td><?php echo mysql2date('Y-m-d h:i:s', $date, TRUE); ?></td>
|
781 |
+
<td><?php echo ($country_flag) ? '<img src="'.htmlspecialchars($country_flag).'" alt="'.$country.'" title="'.$country.'"/>' : $country; ?></td>
|
782 |
<td><?php echo htmlspecialchars($ip); ?></td>
|
783 |
<td><?php echo htmlspecialchars($referer); ?></td>
|
784 |
<td><?php echo htmlspecialchars($username); ?></td>
|