Simple Download Monitor - Version 0.23

Version Description

  • Support for more detailed error messages which may help with setting up the plugin. The function is turned off by default, because it can be exploited to determine the existence or nonexistence of a given file.

  • There is a special option that allows you to setup your "files" directory outside of the WordPress tree. This is not recommended nor supported, if you want to use it, you are on your own - search the source code for basepath_modifier, understand it and then decide whether you want to use it.

Download this release

Release Info

Developer pepak.net
Plugin Icon 128x128 Simple Download Monitor
Version 0.23
Comparing to
See all releases

Code changes from version 0.22 to 0.23

Files changed (4) hide show
  1. lang/cs_CZ.mo +0 -0
  2. lang/cs_CZ.po +123 -86
  3. readme.txt +12 -1
  4. simple-download-monitor.php +38 -10
lang/cs_CZ.mo CHANGED
Binary file
lang/cs_CZ.po CHANGED
@@ -2,9 +2,9 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Simple Download Monitor v0.19\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2012-07-14 17:00+0100\n"
6
  "PO-Revision-Date: \n"
7
- "Last-Translator: Pepak <pepak@pepak.net>\n"
8
  "Language-Team: Pepak <pepak@pepak.net>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
@@ -16,330 +16,367 @@ msgstr ""
16
  "X-Poedit-Basepath: .\n"
17
  "X-Poedit-SearchPath-0: ..\n"
18
 
19
- #: ../simple-download-monitor.php:288
20
  msgid "Simple Download Monitor error"
21
  msgstr "Simple Download Monitor: chyba"
22
 
23
- #: ../simple-download-monitor.php:329
24
  #, php-format
25
  msgid "You have exceeded your download quota today. Please try again in %d hours and %d minutes."
26
  msgstr "Překročil jste svůj dnešní povolený počet downloadů. Zkuste to prosím znovu za %d hodin a %d minut."
27
 
28
- #: ../simple-download-monitor.php:369
 
29
  #, php-format
30
  msgid "Requested file <strong>%s</strong> not found."
31
  msgstr "Požadovaný soubor <strong>%s</strong> nebyl nalezen."
32
 
33
- #: ../simple-download-monitor.php:512
34
- #: ../simple-download-monitor.php:1004
 
 
 
 
 
 
 
 
 
 
35
  msgid "Simple Download Monitor options"
36
  msgstr "Simple Download Monitor - nastavení"
37
 
38
- #: ../simple-download-monitor.php:513
39
  msgid "Access rights"
40
  msgstr "Přístupová práva"
41
 
42
- #: ../simple-download-monitor.php:514
43
  msgid "You can set up user rights required to access various functions of Simple Download Monitor. Rights are assigned through capabilities (see <a href=\"http://codex.wordpress.org/Roles_and_Capabilities#Roles\">Roles and Capabilities</a> in WordPress Codex). Predefined values are <strong>read</strong> (\"any registered user\") for displaying stats, <strong>delete_users</strong> (\"administrator\") for reseting stats and <strong>manage_options</strong> (\"administrator\") for changing options."
44
  msgstr "Zde můžete nastavit uživatelská práva potřebná pro přístup k jednotlivým funkcím Simple Download Monitoru. Práva jsou definována prostřednictvím schopností (capabilities, viz <a href=\"http://codex.wordpress.org/Roles_and_Capabilities#Roles\">Roles and Capabilities</a> ve WordPress Codex). Výchozí hodnoty jsou <strong>read</strong> (\"každý registrovaný uživatel) pro zobrazení statistik, <strong>delete_users</strong> (\"administrátor\") pro mazání statistik a <strong>manage_options</strong> (\"administrátor\") pro změnu nastavení."
45
 
46
- #: ../simple-download-monitor.php:515
47
  msgid "Capability required for viewing download stats:"
48
  msgstr "Schopnost (capability) pro zobrazení statistik:"
49
 
50
- #: ../simple-download-monitor.php:517
51
  msgid "Capability required for reseting download stats:"
52
  msgstr "Schopnost (capability) pro smazání statistik:"
53
 
54
- #: ../simple-download-monitor.php:519
55
  msgid "Capability required for setting SDMON options:"
56
  msgstr "Schopnost (capability) pro nastavení:"
57
 
58
- #: ../simple-download-monitor.php:521
59
  msgid "Allowed directories"
60
  msgstr "Povolené adresáře"
61
 
62
- #: ../simple-download-monitor.php:522
63
  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."
64
  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."
65
 
66
- #: ../simple-download-monitor.php:523
67
  msgid "Default value is <code>files/</code>, which only allows download from /files directory (the leading <code>/</code> is implicit)."
68
  msgstr "Výchozí hodnota je <code>files/</code>, která dovolí stahovat pouze soubory z adresáře /files (úvodní <code>/</code> je dosazeno automaticky)."
69
 
70
- #: ../simple-download-monitor.php:525
71
  msgid "Allowed extensions"
72
  msgstr "Povolené přípony"
73
 
74
- #: ../simple-download-monitor.php:526
75
  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."
76
  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."
77
 
78
- #: ../simple-download-monitor.php:527
79
  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)."
80
  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)."
81
 
82
- #: ../simple-download-monitor.php:529
83
  msgid "Inline files"
84
  msgstr "Soubory pro inline zobrazení"
85
 
86
- #: ../simple-download-monitor.php:530
87
  msgid "Files whose names match this regular expression will be displayed inline (within a HTML page) rather than downloaded."
88
  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."
89
 
90
- #: ../simple-download-monitor.php:531
91
  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."
92
  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."
93
 
94
- #: ../simple-download-monitor.php:532
95
  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."
96
  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ě."
97
 
98
- #: ../simple-download-monitor.php:533
99
  msgid "Also note that this plugin uses PCRE-compatible regular expressions, NOT the better-known POSIX-compatible regular expressions. As a result, a valid regular expression must be at least three characters long - separator twice, and at least one character for a meaningful r.e."
100
  msgstr "Dále upozorňuji, že plugin používá PCRE-kompatibilní regulární výrazy a ne známější POSIX-kompatibilní. Z tohoto důvodu je vyžadováno, aby regulární výraz byl aspoň tři znaky dlouhý - dva znaky na dva výskyty oddělovače a aspoň jeden znak pro smysluplný r.e."
101
 
102
- #: ../simple-download-monitor.php:535
103
  msgid "Store detailed logs?"
104
  msgstr "Ukládat detailní záznamy?"
105
 
106
- #: ../simple-download-monitor.php:536
107
  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."
108
  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."
109
 
110
- #: ../simple-download-monitor.php:537
111
  msgid "Use detailed statistics."
112
  msgstr "Používat detailní statistiky"
113
 
114
- #: ../simple-download-monitor.php:538
115
  msgid "Ignored users"
116
  msgstr "Ignorovaní uživatelé"
117
 
118
- #: ../simple-download-monitor.php:539
119
  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."
120
  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."
121
 
122
- #: ../simple-download-monitor.php:541
123
  msgid "Ignore quick re-downloads"
124
  msgstr "Ignorovat rychlé opakované downloady"
125
 
126
- #: ../simple-download-monitor.php:542
127
  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."
128
  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í."
129
 
130
- #: ../simple-download-monitor.php:543
131
  msgid "seconds"
132
  msgstr "sekund"
133
 
134
- #: ../simple-download-monitor.php:544
135
  msgid "Limit number of downloads per IP address"
136
  msgstr "Omezit počet downloadů z jedné IP adresy"
137
 
138
- #: ../simple-download-monitor.php:545
139
  msgid "Limit the number of files an IP address can download per day. The default value of zero means 'no limits' - an IP address can download as many files as it likes. Note that various download managers can initiate several downloads for each file, so make sure the limit is high enough not to interfere with the normal usage of your site. Also, please understand that this is NOT a perfect solution: One IP address can be shared by multiple users, and one user can easily use more than one IP address."
140
  msgstr "Omezit počet souborů, které může jedna IP adresa stáhnout za jeden den. Výchozí hodnota nula značí \"bez omezení\" - IP adresa může stáhnout libovolné množství souborů. Pozor, různé download managery mohou spustit pro jeden soubor několik stahování najednou; ujistěte se, že je limit dost velký na to, aby bránil v běžném používání vašich stránek. Také si prosím uvědomte, že toto NENÍ dokonalé řešení: Jednu IP adresu může sdílet mnoho uživatelů, a naopak jeden uživatel může mít mnoho IP adres."
141
 
142
- #: ../simple-download-monitor.php:546
143
  msgid "Users listed in the <strong>Ignored users</strong> section above can always download an unlimited number of files."
144
  msgstr "Uživatelé uvedení v sekci <strong>Ignorovaní uživatelé</strong> výše mohou stahovat neomezený počet souborů."
145
 
146
- #: ../simple-download-monitor.php:547
147
  msgid "Visitors:"
148
  msgstr "Návštěvníci:"
149
 
150
- #: ../simple-download-monitor.php:548
151
  msgid "Registered users:"
152
  msgstr "Registrovaní uživatelé"
153
 
154
- #: ../simple-download-monitor.php:549
155
  msgid "Error message:"
156
  msgstr "Chybová zpráva:"
157
 
158
- #: ../simple-download-monitor.php:551
159
  #, php-format
160
  msgid "(The first <code>%d</code> will be replaced by number of hours, the second one by number of minutes.)"
161
  msgstr "(První <code>%d</code> bude nahrazeno počtem hodin, druhé počtem minut.)"
162
 
163
- #: ../simple-download-monitor.php:552
 
 
 
 
 
 
 
 
 
 
 
 
164
  msgid "Use an intermediate Download page"
165
  msgstr "Zobrazovat uživateli stránku informující o downloadu"
166
 
167
- #: ../simple-download-monitor.php:553
168
  msgid "Before sending the actual requested file, display an intermediate download page which tells the user that the download is about to start."
169
  msgstr "Před odesláním vyžádaného souboru bude zobrazena stránka, která uživatele informuje o tom, že jeho download co nevidět začne."
170
 
171
- #: ../simple-download-monitor.php:554
172
  msgid "Use the intermediate download page."
173
  msgstr "Zobrazovat informační stránku."
174
 
175
- #: ../simple-download-monitor.php:555
176
  msgid "Path to your download page:"
177
  msgstr "Cesta k informační stránce:"
178
 
179
- #: ../simple-download-monitor.php:556
180
  #, php-format
181
  msgid "You can use <strong>%s</strong> to use a demo page provided with the plugin."
182
  msgstr "Můžete zde vyplnit <strong>%s</strong> - tím použijete demonstrační stránku dodávanou s pluginem."
183
 
184
- #: ../simple-download-monitor.php:557
185
  msgid "This functionality was suggested and for the most part programmed by <a href=\"http://matbra.com\">Matheus Bratfisch</a>, I (Pepak) just cleaned it up and added it to the plugin's distribution."
186
  msgstr "Tuto funkci navrhl a z větší části naprogramoval <a href=\"http://matbra.com\">Matheus Bratfisch</a>, já (Pepak) jsem ji pouze učesal a přidal do distribučního archívu pluginu."
187
 
188
- #: ../simple-download-monitor.php:559
189
- #: ../simple-download-monitor.php:875
 
 
 
 
 
 
 
 
 
 
 
 
190
  msgid "Update settings"
191
  msgstr "Uložit nastavení"
192
 
193
- #: ../simple-download-monitor.php:684
194
  msgid "First"
195
  msgstr "První"
196
 
197
- #: ../simple-download-monitor.php:685
198
  msgid "Previous"
199
  msgstr "Předchozí"
200
 
201
- #: ../simple-download-monitor.php:692
202
  msgid "Next"
203
  msgstr "Další"
204
 
205
- #: ../simple-download-monitor.php:693
206
  msgid "Last"
207
  msgstr "Poslední"
208
 
209
- #: ../simple-download-monitor.php:813
210
- #: ../simple-download-monitor.php:903
211
- #: ../simple-download-monitor.php:1004
212
- #: ../simple-download-monitor.php:1005
213
  msgid "Simple Download Monitor"
214
  msgstr "Simple Download Monitor"
215
 
216
- #: ../simple-download-monitor.php:814
217
  msgid "Nonexistent downloads"
218
  msgstr "Neexistující soubory"
219
 
220
- #: ../simple-download-monitor.php:814
221
  msgid "All downloads"
222
  msgstr "Všechny downloady"
223
 
224
- #: ../simple-download-monitor.php:815
225
  msgid "Show all downloads"
226
  msgstr "Zobrazit všechny soubory"
227
 
228
- #: ../simple-download-monitor.php:815
229
  msgid "Show nonexistent downloads"
230
  msgstr "Zobrazit neexistující soubory"
231
 
232
- #: ../simple-download-monitor.php:831
233
  msgid "Filename"
234
  msgstr "Název souboru"
235
 
236
- #: ../simple-download-monitor.php:832
237
  msgid "Download count"
238
  msgstr "Počet stažení"
239
 
240
- #: ../simple-download-monitor.php:833
241
  msgid "Last date"
242
  msgstr "Poslední datum"
243
 
244
- #: ../simple-download-monitor.php:834
245
  msgid "Hide from sidebar"
246
  msgstr "Skrýt z postranního panelu"
247
 
248
- #: ../simple-download-monitor.php:835
249
  msgid "Reset to zero"
250
  msgstr "Vynulovat"
251
 
252
- #: ../simple-download-monitor.php:860
253
  msgid "Hidden"
254
  msgstr "Skrytý"
255
 
256
- #: ../simple-download-monitor.php:865
257
  msgid "Reset"
258
  msgstr "Vynulovat"
259
 
260
- #: ../simple-download-monitor.php:876
261
  msgid "Reset checked statistics"
262
  msgstr "Vymazat označené statistiky"
263
 
264
- #: ../simple-download-monitor.php:877
265
  msgid "Reset all statistics"
266
  msgstr "Vymazat všechny statistiky"
267
 
268
- #: ../simple-download-monitor.php:877
269
- #: ../simple-download-monitor.php:974
270
  msgid "Yes, I am sure"
271
  msgstr "Ano, chci to udělat"
272
 
273
- #: ../simple-download-monitor.php:904
274
  #, php-format
275
  msgid "Detailed data for <strong>%s</strong>:"
276
  msgstr "Detailní data pro <strong>%s</strong>:"
277
 
278
- #: ../simple-download-monitor.php:905
279
  #, php-format
280
  msgid "Total number of downloads: <strong>%d</strong>."
281
  msgstr "Celkový počet stažení: <strong>%d</strong>."
282
 
283
- #: ../simple-download-monitor.php:922
284
  msgid "Date"
285
  msgstr "Datum"
286
 
287
- #: ../simple-download-monitor.php:923
288
  msgid "Country"
289
  msgstr "Země"
290
 
291
- #: ../simple-download-monitor.php:924
292
  msgid "IP address"
293
  msgstr "IP adresa"
294
 
295
- #: ../simple-download-monitor.php:925
296
  msgid "Referer"
297
  msgstr "Referer"
298
 
299
- #: ../simple-download-monitor.php:926
300
  msgid "Username"
301
  msgstr "Uživatel"
302
 
303
- #: ../simple-download-monitor.php:963
304
  msgid "Delete this statistic"
305
  msgstr "Vymazat tuto statistiku"
306
 
307
- #: ../simple-download-monitor.php:971
308
  msgid "Delete checked statistics"
309
  msgstr "Vymazat označené statistiky"
310
 
311
- #: ../simple-download-monitor.php:974
312
  msgid "Delete all statistics"
313
  msgstr "Vymazat všechny statistiky"
314
 
315
- #: ../simple-download-monitor.php:978
316
  msgid "Return to full list."
317
  msgstr "Návrat do úplného seznamu"
318
 
319
- #: ../simple-download-monitor.php:1019
320
  msgid "Allows you to display the most popular downloads in the sidebar."
321
  msgstr "Dovoluje zobrazit v postranním panelu seznam nejoblíbenějších souborů."
322
 
323
- #: ../simple-download-monitor.php:1064
324
  msgid "Popular files"
325
  msgstr "Oblíbené soubory"
326
 
327
- #: ../simple-download-monitor.php:1070
328
  msgid "Title:"
329
  msgstr "Zobrazovaný název:"
330
 
331
- #: ../simple-download-monitor.php:1074
332
  msgid "Number of files to show:"
333
  msgstr "Počet zobrazených souborů:"
334
 
335
- #: ../simple-download-monitor.php:1077
336
  msgid "Only show filenames which match this LIKE condition:"
337
  msgstr "Zobrazovat pouze soubory, které vyhovují této LIKE podmínce:"
338
 
339
- #: ../simple-download-monitor.php:1079
340
  msgid "Empty string matches all filenames and is useful for most usage scenarios. You would only use a non-empty value if you wanted to create multiple SDMon widgets, each showing a different list of files: only filenames which match the given string in a LIKE condition of a SQL query will be shown. The most common values would be something like <code>files/documents/%</code> (meaning \"The filename must begin with <code>files/documents/</code>\") or <code>%.mp3</code> (meaning \"The filename must end with <code>.mp3</code>\") - the percentage symbol <code>%</code> means \"anything\", the underscore symbol <code>_</code> means \"Any one character\"."
341
  msgstr "Prázdný řetězec neomezuje seznam souborů a je vhodný pro nejběžnější typy použití. Neprázdnou hodnotu použijte, pokud chcete zobrazit několik nezávislých widgetů, kde každý bude zobrazovat jiný seznam souborů - pak budou zobrazeny jen ty soubory, jejichž názvy vyhoví podmínce. Typické hodnoty vypadají jako <code>files/dokumenty/%</code> (\"Jméno souboru musí začínat <code>files/dokumenty/</code>\") nebo <code>%.mp3</code> (\"Jméno souboru musí končit <code>.mp3</code>\") - symbol procenta <code>%</code> značí \"cokoliv\", symbol podtržítka <code>_</code> značí \"právě jeden libovolný znak\"."
342
 
 
 
343
  #~ msgid "<h2>Simple Download Monitor error</h2>"
344
  #~ msgstr "<h2>Simple Download Monitor - chyba</h2>"
345
  #~ msgid "Reset this statistic"
2
  msgstr ""
3
  "Project-Id-Version: Simple Download Monitor v0.19\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2012-08-25 13:27+0100\n"
6
  "PO-Revision-Date: \n"
7
+ "Last-Translator: \n"
8
  "Language-Team: Pepak <pepak@pepak.net>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
16
  "X-Poedit-Basepath: .\n"
17
  "X-Poedit-SearchPath-0: ..\n"
18
 
19
+ #: ../simple-download-monitor.php:290
20
  msgid "Simple Download Monitor error"
21
  msgstr "Simple Download Monitor: chyba"
22
 
23
+ #: ../simple-download-monitor.php:334
24
  #, php-format
25
  msgid "You have exceeded your download quota today. Please try again in %d hours and %d minutes."
26
  msgstr "Překročil jste svůj dnešní povolený počet downloadů. Zkuste to prosím znovu za %d hodin a %d minut."
27
 
28
+ #: ../simple-download-monitor.php:374
29
+ #: ../simple-download-monitor.php:383
30
  #, php-format
31
  msgid "Requested file <strong>%s</strong> not found."
32
  msgstr "Požadovaný soubor <strong>%s</strong> nebyl nalezen."
33
 
34
+ #: ../simple-download-monitor.php:378
35
+ #, php-format
36
+ msgid "Requested file <strong>%s</strong> has an invalid path."
37
+ msgstr "Požadovaný soubor <strong>%s</strong> má neplatný adresář."
38
+
39
+ #: ../simple-download-monitor.php:380
40
+ #, php-format
41
+ msgid "Requested file <strong>%s</strong> has an invalid extension."
42
+ msgstr "Požadovaný soubor <strong>%s</strong> má neplatnou příponu."
43
+
44
+ #: ../simple-download-monitor.php:533
45
+ #: ../simple-download-monitor.php:1032
46
  msgid "Simple Download Monitor options"
47
  msgstr "Simple Download Monitor - nastavení"
48
 
49
+ #: ../simple-download-monitor.php:534
50
  msgid "Access rights"
51
  msgstr "Přístupová práva"
52
 
53
+ #: ../simple-download-monitor.php:535
54
  msgid "You can set up user rights required to access various functions of Simple Download Monitor. Rights are assigned through capabilities (see <a href=\"http://codex.wordpress.org/Roles_and_Capabilities#Roles\">Roles and Capabilities</a> in WordPress Codex). Predefined values are <strong>read</strong> (\"any registered user\") for displaying stats, <strong>delete_users</strong> (\"administrator\") for reseting stats and <strong>manage_options</strong> (\"administrator\") for changing options."
55
  msgstr "Zde můžete nastavit uživatelská práva potřebná pro přístup k jednotlivým funkcím Simple Download Monitoru. Práva jsou definována prostřednictvím schopností (capabilities, viz <a href=\"http://codex.wordpress.org/Roles_and_Capabilities#Roles\">Roles and Capabilities</a> ve WordPress Codex). Výchozí hodnoty jsou <strong>read</strong> (\"každý registrovaný uživatel) pro zobrazení statistik, <strong>delete_users</strong> (\"administrátor\") pro mazání statistik a <strong>manage_options</strong> (\"administrátor\") pro změnu nastavení."
56
 
57
+ #: ../simple-download-monitor.php:536
58
  msgid "Capability required for viewing download stats:"
59
  msgstr "Schopnost (capability) pro zobrazení statistik:"
60
 
61
+ #: ../simple-download-monitor.php:538
62
  msgid "Capability required for reseting download stats:"
63
  msgstr "Schopnost (capability) pro smazání statistik:"
64
 
65
+ #: ../simple-download-monitor.php:540
66
  msgid "Capability required for setting SDMON options:"
67
  msgstr "Schopnost (capability) pro nastavení:"
68
 
69
+ #: ../simple-download-monitor.php:542
70
  msgid "Allowed directories"
71
  msgstr "Povolené adresáře"
72
 
73
+ #: ../simple-download-monitor.php:543
74
  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."
75
  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."
76
 
77
+ #: ../simple-download-monitor.php:544
78
  msgid "Default value is <code>files/</code>, which only allows download from /files directory (the leading <code>/</code> is implicit)."
79
  msgstr "Výchozí hodnota je <code>files/</code>, která dovolí stahovat pouze soubory z adresáře /files (úvodní <code>/</code> je dosazeno automaticky)."
80
 
81
+ #: ../simple-download-monitor.php:546
82
  msgid "Allowed extensions"
83
  msgstr "Povolené přípony"
84
 
85
+ #: ../simple-download-monitor.php:547
86
  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."
87
  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."
88
 
89
+ #: ../simple-download-monitor.php:548
90
  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)."
91
  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)."
92
 
93
+ #: ../simple-download-monitor.php:550
94
  msgid "Inline files"
95
  msgstr "Soubory pro inline zobrazení"
96
 
97
+ #: ../simple-download-monitor.php:551
98
  msgid "Files whose names match this regular expression will be displayed inline (within a HTML page) rather than downloaded."
99
  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."
100
 
101
+ #: ../simple-download-monitor.php:552
102
  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."
103
  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."
104
 
105
+ #: ../simple-download-monitor.php:553
106
  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."
107
  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ě."
108
 
109
+ #: ../simple-download-monitor.php:554
110
  msgid "Also note that this plugin uses PCRE-compatible regular expressions, NOT the better-known POSIX-compatible regular expressions. As a result, a valid regular expression must be at least three characters long - separator twice, and at least one character for a meaningful r.e."
111
  msgstr "Dále upozorňuji, že plugin používá PCRE-kompatibilní regulární výrazy a ne známější POSIX-kompatibilní. Z tohoto důvodu je vyžadováno, aby regulární výraz byl aspoň tři znaky dlouhý - dva znaky na dva výskyty oddělovače a aspoň jeden znak pro smysluplný r.e."
112
 
113
+ #: ../simple-download-monitor.php:556
114
  msgid "Store detailed logs?"
115
  msgstr "Ukládat detailní záznamy?"
116
 
117
+ #: ../simple-download-monitor.php:557
118
  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."
119
  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."
120
 
121
+ #: ../simple-download-monitor.php:558
122
  msgid "Use detailed statistics."
123
  msgstr "Používat detailní statistiky"
124
 
125
+ #: ../simple-download-monitor.php:559
126
  msgid "Ignored users"
127
  msgstr "Ignorovaní uživatelé"
128
 
129
+ #: ../simple-download-monitor.php:560
130
  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."
131
  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."
132
 
133
+ #: ../simple-download-monitor.php:562
134
  msgid "Ignore quick re-downloads"
135
  msgstr "Ignorovat rychlé opakované downloady"
136
 
137
+ #: ../simple-download-monitor.php:563
138
  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."
139
  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í."
140
 
141
+ #: ../simple-download-monitor.php:564
142
  msgid "seconds"
143
  msgstr "sekund"
144
 
145
+ #: ../simple-download-monitor.php:565
146
  msgid "Limit number of downloads per IP address"
147
  msgstr "Omezit počet downloadů z jedné IP adresy"
148
 
149
+ #: ../simple-download-monitor.php:566
150
  msgid "Limit the number of files an IP address can download per day. The default value of zero means 'no limits' - an IP address can download as many files as it likes. Note that various download managers can initiate several downloads for each file, so make sure the limit is high enough not to interfere with the normal usage of your site. Also, please understand that this is NOT a perfect solution: One IP address can be shared by multiple users, and one user can easily use more than one IP address."
151
  msgstr "Omezit počet souborů, které může jedna IP adresa stáhnout za jeden den. Výchozí hodnota nula značí \"bez omezení\" - IP adresa může stáhnout libovolné množství souborů. Pozor, různé download managery mohou spustit pro jeden soubor několik stahování najednou; ujistěte se, že je limit dost velký na to, aby bránil v běžném používání vašich stránek. Také si prosím uvědomte, že toto NENÍ dokonalé řešení: Jednu IP adresu může sdílet mnoho uživatelů, a naopak jeden uživatel může mít mnoho IP adres."
152
 
153
+ #: ../simple-download-monitor.php:567
154
  msgid "Users listed in the <strong>Ignored users</strong> section above can always download an unlimited number of files."
155
  msgstr "Uživatelé uvedení v sekci <strong>Ignorovaní uživatelé</strong> výše mohou stahovat neomezený počet souborů."
156
 
157
+ #: ../simple-download-monitor.php:568
158
  msgid "Visitors:"
159
  msgstr "Návštěvníci:"
160
 
161
+ #: ../simple-download-monitor.php:569
162
  msgid "Registered users:"
163
  msgstr "Registrovaní uživatelé"
164
 
165
+ #: ../simple-download-monitor.php:570
166
  msgid "Error message:"
167
  msgstr "Chybová zpráva:"
168
 
169
+ #: ../simple-download-monitor.php:572
170
  #, php-format
171
  msgid "(The first <code>%d</code> will be replaced by number of hours, the second one by number of minutes.)"
172
  msgstr "(První <code>%d</code> bude nahrazeno počtem hodin, druhé počtem minut.)"
173
 
174
+ #: ../simple-download-monitor.php:573
175
+ msgid "Use more detailed error messages"
176
+ msgstr "Detailní chybové zprávy"
177
+
178
+ #: ../simple-download-monitor.php:574
179
+ msgid "In case a link doesn't pass the security checks, display a more detailed error message than just \"file not found\". This is useful for the initial setting up, but can be used to exploit the security of your site (e.g. discovering whether a file exists). I recommend unchecking this option as soon as you get SDMon working."
180
+ msgstr "Pokud odkaz neprojde bezpečnostními kontrolami, zobrazí se detailnější chybová zpráva než jen \"soubor nenalezen\". To se může hodit v průběhu prvotního nastavování pluginu, ale může být zneužito útočníkem k získání citlivých informací (např. jestli soubor existuje nebo neexistuje). Doporučuji tuto volbu odškrtnout hned poté, co se vám podaří SDMon úspěšně rozběhnout."
181
+
182
+ #: ../simple-download-monitor.php:575
183
+ msgid "Use more detailed error messages."
184
+ msgstr "Používat detailní chybové zprávy."
185
+
186
+ #: ../simple-download-monitor.php:576
187
  msgid "Use an intermediate Download page"
188
  msgstr "Zobrazovat uživateli stránku informující o downloadu"
189
 
190
+ #: ../simple-download-monitor.php:577
191
  msgid "Before sending the actual requested file, display an intermediate download page which tells the user that the download is about to start."
192
  msgstr "Před odesláním vyžádaného souboru bude zobrazena stránka, která uživatele informuje o tom, že jeho download co nevidět začne."
193
 
194
+ #: ../simple-download-monitor.php:578
195
  msgid "Use the intermediate download page."
196
  msgstr "Zobrazovat informační stránku."
197
 
198
+ #: ../simple-download-monitor.php:579
199
  msgid "Path to your download page:"
200
  msgstr "Cesta k informační stránce:"
201
 
202
+ #: ../simple-download-monitor.php:580
203
  #, php-format
204
  msgid "You can use <strong>%s</strong> to use a demo page provided with the plugin."
205
  msgstr "Můžete zde vyplnit <strong>%s</strong> - tím použijete demonstrační stránku dodávanou s pluginem."
206
 
207
+ #: ../simple-download-monitor.php:581
208
  msgid "This functionality was suggested and for the most part programmed by <a href=\"http://matbra.com\">Matheus Bratfisch</a>, I (Pepak) just cleaned it up and added it to the plugin's distribution."
209
  msgstr "Tuto funkci navrhl a z větší části naprogramoval <a href=\"http://matbra.com\">Matheus Bratfisch</a>, já (Pepak) jsem ji pouze učesal a přidal do distribučního archívu pluginu."
210
 
211
+ #: ../simple-download-monitor.php:582
212
+ msgid "Basepath modifier"
213
+ msgstr "Modifikátor k základní cestě"
214
+
215
+ #: ../simple-download-monitor.php:583
216
+ msgid "Note: Keep this option empty unless you know what you are doing. DO NOT ASK! The use of this option is not supported."
217
+ msgstr "Pozn.: Nechte toto nastavení prázdné, pokud nevíte, co děláte. NEPTEJTE SE MĚ! Toto nastavení není podporované."
218
+
219
+ #: ../simple-download-monitor.php:584
220
+ msgid "You can provide a modifier which, applied to WordPress' ABSPATH, gets you to the base directory from which relative links to files start. This way you can store files outside of the WordPress directory tree, by using something like <code>../private_dir/</code> (the ending slash is required). Note that this option is incompatible with some functionality and is not supported - if you want to use it, search the plugin's source code for <code>basepath_modifier</code>, understand how it is used and then act accordingly."
221
+ msgstr "Zde můžete uvést modifikátor, který, připojený za ABSPATH, vás dostane do výchozího adresáře, ke kterému se vztahují relativní cesty ke stahovaným souborům. Takto můžete ukládat soubory mimo adresářový strom WordPressu - použijte něco jako <code>../private_dir/</code> (závěrečné lomítko je povinné). Upozorňuji, že toto nastavení není kompatibilní s některými jinými a není podporované - pokud ho chcete použít, najděte si ve zdrojovém kódu pluginu všechny výskyty <code>basepath_modifier</code>, porozumějte jim a teprve pak něco nastavujte."
222
+
223
+ #: ../simple-download-monitor.php:587
224
+ #: ../simple-download-monitor.php:903
225
  msgid "Update settings"
226
  msgstr "Uložit nastavení"
227
 
228
+ #: ../simple-download-monitor.php:712
229
  msgid "First"
230
  msgstr "První"
231
 
232
+ #: ../simple-download-monitor.php:713
233
  msgid "Previous"
234
  msgstr "Předchozí"
235
 
236
+ #: ../simple-download-monitor.php:720
237
  msgid "Next"
238
  msgstr "Další"
239
 
240
+ #: ../simple-download-monitor.php:721
241
  msgid "Last"
242
  msgstr "Poslední"
243
 
244
+ #: ../simple-download-monitor.php:841
245
+ #: ../simple-download-monitor.php:931
246
+ #: ../simple-download-monitor.php:1032
247
+ #: ../simple-download-monitor.php:1033
248
  msgid "Simple Download Monitor"
249
  msgstr "Simple Download Monitor"
250
 
251
+ #: ../simple-download-monitor.php:842
252
  msgid "Nonexistent downloads"
253
  msgstr "Neexistující soubory"
254
 
255
+ #: ../simple-download-monitor.php:842
256
  msgid "All downloads"
257
  msgstr "Všechny downloady"
258
 
259
+ #: ../simple-download-monitor.php:843
260
  msgid "Show all downloads"
261
  msgstr "Zobrazit všechny soubory"
262
 
263
+ #: ../simple-download-monitor.php:843
264
  msgid "Show nonexistent downloads"
265
  msgstr "Zobrazit neexistující soubory"
266
 
267
+ #: ../simple-download-monitor.php:859
268
  msgid "Filename"
269
  msgstr "Název souboru"
270
 
271
+ #: ../simple-download-monitor.php:860
272
  msgid "Download count"
273
  msgstr "Počet stažení"
274
 
275
+ #: ../simple-download-monitor.php:861
276
  msgid "Last date"
277
  msgstr "Poslední datum"
278
 
279
+ #: ../simple-download-monitor.php:862
280
  msgid "Hide from sidebar"
281
  msgstr "Skrýt z postranního panelu"
282
 
283
+ #: ../simple-download-monitor.php:863
284
  msgid "Reset to zero"
285
  msgstr "Vynulovat"
286
 
287
+ #: ../simple-download-monitor.php:888
288
  msgid "Hidden"
289
  msgstr "Skrytý"
290
 
291
+ #: ../simple-download-monitor.php:893
292
  msgid "Reset"
293
  msgstr "Vynulovat"
294
 
295
+ #: ../simple-download-monitor.php:904
296
  msgid "Reset checked statistics"
297
  msgstr "Vymazat označené statistiky"
298
 
299
+ #: ../simple-download-monitor.php:905
300
  msgid "Reset all statistics"
301
  msgstr "Vymazat všechny statistiky"
302
 
303
+ #: ../simple-download-monitor.php:905
304
+ #: ../simple-download-monitor.php:1002
305
  msgid "Yes, I am sure"
306
  msgstr "Ano, chci to udělat"
307
 
308
+ #: ../simple-download-monitor.php:932
309
  #, php-format
310
  msgid "Detailed data for <strong>%s</strong>:"
311
  msgstr "Detailní data pro <strong>%s</strong>:"
312
 
313
+ #: ../simple-download-monitor.php:933
314
  #, php-format
315
  msgid "Total number of downloads: <strong>%d</strong>."
316
  msgstr "Celkový počet stažení: <strong>%d</strong>."
317
 
318
+ #: ../simple-download-monitor.php:950
319
  msgid "Date"
320
  msgstr "Datum"
321
 
322
+ #: ../simple-download-monitor.php:951
323
  msgid "Country"
324
  msgstr "Země"
325
 
326
+ #: ../simple-download-monitor.php:952
327
  msgid "IP address"
328
  msgstr "IP adresa"
329
 
330
+ #: ../simple-download-monitor.php:953
331
  msgid "Referer"
332
  msgstr "Referer"
333
 
334
+ #: ../simple-download-monitor.php:954
335
  msgid "Username"
336
  msgstr "Uživatel"
337
 
338
+ #: ../simple-download-monitor.php:991
339
  msgid "Delete this statistic"
340
  msgstr "Vymazat tuto statistiku"
341
 
342
+ #: ../simple-download-monitor.php:999
343
  msgid "Delete checked statistics"
344
  msgstr "Vymazat označené statistiky"
345
 
346
+ #: ../simple-download-monitor.php:1002
347
  msgid "Delete all statistics"
348
  msgstr "Vymazat všechny statistiky"
349
 
350
+ #: ../simple-download-monitor.php:1006
351
  msgid "Return to full list."
352
  msgstr "Návrat do úplného seznamu"
353
 
354
+ #: ../simple-download-monitor.php:1047
355
  msgid "Allows you to display the most popular downloads in the sidebar."
356
  msgstr "Dovoluje zobrazit v postranním panelu seznam nejoblíbenějších souborů."
357
 
358
+ #: ../simple-download-monitor.php:1092
359
  msgid "Popular files"
360
  msgstr "Oblíbené soubory"
361
 
362
+ #: ../simple-download-monitor.php:1098
363
  msgid "Title:"
364
  msgstr "Zobrazovaný název:"
365
 
366
+ #: ../simple-download-monitor.php:1102
367
  msgid "Number of files to show:"
368
  msgstr "Počet zobrazených souborů:"
369
 
370
+ #: ../simple-download-monitor.php:1105
371
  msgid "Only show filenames which match this LIKE condition:"
372
  msgstr "Zobrazovat pouze soubory, které vyhovují této LIKE podmínce:"
373
 
374
+ #: ../simple-download-monitor.php:1107
375
  msgid "Empty string matches all filenames and is useful for most usage scenarios. You would only use a non-empty value if you wanted to create multiple SDMon widgets, each showing a different list of files: only filenames which match the given string in a LIKE condition of a SQL query will be shown. The most common values would be something like <code>files/documents/%</code> (meaning \"The filename must begin with <code>files/documents/</code>\") or <code>%.mp3</code> (meaning \"The filename must end with <code>.mp3</code>\") - the percentage symbol <code>%</code> means \"anything\", the underscore symbol <code>_</code> means \"Any one character\"."
376
  msgstr "Prázdný řetězec neomezuje seznam souborů a je vhodný pro nejběžnější typy použití. Neprázdnou hodnotu použijte, pokud chcete zobrazit několik nezávislých widgetů, kde každý bude zobrazovat jiný seznam souborů - pak budou zobrazeny jen ty soubory, jejichž názvy vyhoví podmínce. Typické hodnoty vypadají jako <code>files/dokumenty/%</code> (\"Jméno souboru musí začínat <code>files/dokumenty/</code>\") nebo <code>%.mp3</code> (\"Jméno souboru musí končit <code>.mp3</code>\") - symbol procenta <code>%</code> značí \"cokoliv\", symbol podtržítka <code>_</code> značí \"právě jeden libovolný znak\"."
377
 
378
+ #~ msgid "Requested file <strong>%s</strong> is not valid."
379
+ #~ msgstr "Požadovaný soubor <strong>%s</strong> není platný."
380
  #~ msgid "<h2>Simple Download Monitor error</h2>"
381
  #~ msgstr "<h2>Simple Download Monitor - chyba</h2>"
382
  #~ msgid "Reset this statistic"
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=paypa
4
  Tags: files, counter, count, tracking, download monitor, monitor, downloads, download
5
  Requires at least: 2.8.0
6
  Tested up to: 3.4.1
7
- Stable tag: 0.22
8
 
9
  Count the number of downloads without having to maintain a comprehensive download page.
10
 
@@ -118,6 +118,17 @@ http://www.pepak.net/wordpress/simple-download-monitor-plugin/#comment-4729
118
 
119
  == Changelog ==
120
 
 
 
 
 
 
 
 
 
 
 
 
121
  = 0.22 =
122
 
123
  * Matheus Bratfisch (http://matbra.com) suggested and implemented an intermediate
4
  Tags: files, counter, count, tracking, download monitor, monitor, downloads, download
5
  Requires at least: 2.8.0
6
  Tested up to: 3.4.1
7
+ Stable tag: 0.23
8
 
9
  Count the number of downloads without having to maintain a comprehensive download page.
10
 
118
 
119
  == Changelog ==
120
 
121
+ = 0.23 =
122
+
123
+ * Support for more detailed error messages which may help with setting up the
124
+ plugin. The function is turned off by default, because it can be exploited
125
+ to determine the existence or nonexistence of a given file.
126
+
127
+ * There is a special option that allows you to setup your "files" directory
128
+ outside of the WordPress tree. This is not recommended nor supported, if you
129
+ want to use it, you are on your own - search the source code for
130
+ `basepath_modifier`, understand it and then decide whether you want to use it.
131
+
132
  = 0.22 =
133
 
134
  * Matheus Bratfisch (http://matbra.com) suggested and implemented an intermediate
simple-download-monitor.php CHANGED
@@ -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.22
8
  Author: Pepak | contributors: matheusbrat (http://matbra.com)
9
  Author URI: http://www.pepak.net
10
  */
@@ -105,6 +105,8 @@ if (!class_exists('SimpleDownloadMonitor'))
105
  add_option(self::PREFIX . 'error_download_limit', '');
106
  add_option(self::PREFIX . 'download_page', plugin_dir_path(__FILE__) . '/download-example.php');
107
  add_option(self::PREFIX . 'show_download_page', '0');
 
 
108
  }
109
 
110
  public function table_downloads()
@@ -301,14 +303,17 @@ if (!class_exists('SimpleDownloadMonitor'))
301
  $downloads = $this->table_downloads();
302
  $ip_addr = $_SERVER['REMOTE_ADDR'];
303
  // Normalize the filename
304
- $fullfilename = realpath(ABSPATH . '/' . $filename);
305
- $relfilename = substr($fullfilename, strlen(ABSPATH));
 
306
  $relfilename = strtr($relfilename, '\\', '/');
307
  $exists = (file_exists($fullfilename) AND !is_dir($fullfilename)) ? 1 : 0;
308
  // Make sure it is a valid request
309
  $dirregexp = self::PREG_DELIMITER . '^' . get_option(self::PREFIX . 'directories') . self::PREG_DELIMITER;
310
  $extregexp = self::PREG_DELIMITER . '\\.' . get_option(self::PREFIX . 'extensions') . '$' . self::PREG_DELIMITER;
311
- $valid = (preg_match($dirregexp, $relfilename) AND preg_match($extregexp, $relfilename)) ? 1 : 0;
 
 
312
  // Get user information and decide if this user should be ignored
313
  get_currentuserinfo();
314
  $userid = $user_ID ? $user_ID : null;
@@ -365,8 +370,18 @@ if (!class_exists('SimpleDownloadMonitor'))
365
  }
366
  // If the file exists and is valid, download it
367
  // Make sure the file is available for download
368
- if (!$exists OR !$valid)
369
  $this->ErrorMessage(404, sprintf(__("Requested file <strong>%s</strong> not found."), htmlspecialchars($filename)), 'Not found');
 
 
 
 
 
 
 
 
 
 
370
  // Generate proper headers
371
  $mimetype = '';
372
  if (function_exists('finfo_open') AND defined('FILEINFO_MIME_TYPE'))
@@ -460,6 +475,8 @@ if (!class_exists('SimpleDownloadMonitor'))
460
  $error_download_limit = strval($_POST[self::PREFIX . 'error_download_limit']);
461
  $show_download_page = intval($_POST[self::PREFIX . 'show_download_page']);
462
  $download_page = strval($_POST[self::PREFIX . 'download_page']);
 
 
463
  // Remove slashes if necessary
464
  if (get_magic_quotes_gpc())
465
  {
@@ -488,6 +505,8 @@ if (!class_exists('SimpleDownloadMonitor'))
488
  if (file_exists($download_page))
489
  update_option(self::PREFIX . 'download_page', $download_page);
490
  update_option(self::PREFIX . 'show_download_page', $show_download_page);
 
 
491
 
492
  }
493
  // Load options from the database
@@ -504,7 +523,9 @@ if (!class_exists('SimpleDownloadMonitor'))
504
  $downloads_per_day_registered = get_option(self::PREFIX . 'max_downloads_per_ip_and_day_registered');
505
  $error_download_limit = get_option(self::PREFIX . 'error_download_limit');
506
  $download_page = get_option(self::PREFIX . 'download_page');
507
- $show_download_page = get_option(self::PREFIX . 'show_download_page');
 
 
508
  // Build the form
509
  ?>
510
  <div class="wrap">
@@ -521,23 +542,23 @@ if (!class_exists('SimpleDownloadMonitor'))
521
  <h3><?php echo __('Allowed directories', self::GETTEXT_REALM); ?></h3>
522
  <p><?php echo __("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.", self::GETTEXT_REALM); ?></p>
523
  <p><?php echo __("Default value is <code>files/</code>, which only allows download from /files directory (the leading <code>/</code> is implicit).", self::GETTEXT_REALM); ?></p>
524
- <p><input type="text" name="<?php echo self::PREFIX; ?>directories" value="<?php echo esc_attr($directories); ?>" /></p>
525
  <h3><?php echo __('Allowed extensions', self::GETTEXT_REALM); ?></h3>
526
  <p><?php echo __('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.', self::GETTEXT_REALM); ?></p>
527
  <p><?php echo __("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).", self::GETTEXT_REALM); ?></p>
528
- <p><input type="text" name="<?php echo self::PREFIX; ?>extensions" value="<?php echo esc_attr($extensions); ?>" /></p>
529
  <h3><?php echo __('Inline files', self::GETTEXT_REALM); ?></h3>
530
  <p><?php echo __('Files whose names match this regular expression will be displayed inline (within a HTML page) rather than downloaded.', self::GETTEXT_REALM); ?></p>
531
  <p><?php echo __("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.", self::GETTEXT_REALM); ?></p>
532
  <p><?php echo __('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.', self::GETTEXT_REALM); ?></p>
533
  <p><?php echo __('Also note that this plugin uses PCRE-compatible regular expressions, NOT the better-known POSIX-compatible regular expressions. As a result, a valid regular expression must be at least three characters long - separator twice, and at least one character for a meaningful r.e.', self::GETTEXT_REALM); ?></p>
534
- <p><input type="text" name="<?php echo self::PREFIX; ?>inline" value="<?php echo esc_attr($inline); ?>" /></p>
535
  <h3><?php echo __("Store detailed logs?", self::GETTEXT_REALM); ?></h3>
536
  <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>
537
  <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>
538
  <h3><?php echo __("Ignored users", self::GETTEXT_REALM); ?></h3>
539
  <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>
540
- <p><input type="text" name="<?php echo self::PREFIX; ?>ignored_users" value="<?php echo esc_attr($ignored_users); ?>" /></p>
541
  <h3><?php echo __("Ignore quick re-downloads", self::GETTEXT_REALM); ?></h3>
542
  <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>
543
  <p><input type="text" name="<?php echo self::PREFIX; ?>group_within" value="<?php echo esc_attr($group_within); ?>" /> <?php echo __('seconds', self::GETTEXT_REALM); ?></p>
@@ -549,12 +570,19 @@ if (!class_exists('SimpleDownloadMonitor'))
549
  <p><?php echo __("Error message:", self::GETTEXT_REALM); ?></p>
550
  <p><textarea name="<?php echo self::PREFIX; ?>error_download_limit" rows="4" cols="64"><?php echo htmlspecialchars($error_download_limit); ?></textarea></p>
551
  <p><?php echo __("(The first <code>%d</code> will be replaced by number of hours, the second one by number of minutes.)", self::GETTEXT_REALM); ?>
 
 
 
552
  <h3><?php echo __("Use an intermediate Download page", self::GETTEXT_REALM); ?></h3>
553
  <p><?php echo __("Before sending the actual requested file, display an intermediate download page which tells the user that the download is about to start.", self::GETTEXT_REALM); ?></p>
554
  <p><label for="<?php echo self::PREFIX; ?>show_download_page"><input type="checkbox" name="<?php echo self::PREFIX; ?>show_download_page" value="1" <?php if ($show_download_page) echo 'checked="checked" '; ?>/> <?php echo __('Use the intermediate download page.', self::GETTEXT_REALM); ?></label></p>
555
  <p><?php echo __("Path to your download page:", self::GETTEXT_REALM); ?><input type="text" name="<?php echo self::PREFIX; ?>download_page" value="<?php echo esc_attr($download_page); ?>" size="80" /></p>
556
  <p><?php printf(__("You can use <strong>%s</strong> to use a demo page provided with the plugin.", self::GETTEXT_REALM), htmlspecialchars($this->plugin_dir . '/download-example.php')); ?></p>
557
  <p><?php echo __("This functionality was suggested and for the most part programmed by <a href=\"http://matbra.com\">Matheus Bratfisch</a>, I (Pepak) just cleaned it up and added it to the plugin's distribution.", self::GETTEXT_REALM); ?></p>
 
 
 
 
558
  <p>&nbsp;</p>
559
  <div class="submit"><input type="submit" name="SimpleDownloadMonitor_Submit" value="<?php echo __("Update settings", self::GETTEXT_REALM) ?>" /></div>
560
  </form>
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.23
8
  Author: Pepak | contributors: matheusbrat (http://matbra.com)
9
  Author URI: http://www.pepak.net
10
  */
105
  add_option(self::PREFIX . 'error_download_limit', '');
106
  add_option(self::PREFIX . 'download_page', plugin_dir_path(__FILE__) . '/download-example.php');
107
  add_option(self::PREFIX . 'show_download_page', '0');
108
+ add_option(self::PREFIX . 'detailed_errors', '0');
109
+ add_option(self::PREFIX . 'basepath_modifier', '');
110
  }
111
 
112
  public function table_downloads()
303
  $downloads = $this->table_downloads();
304
  $ip_addr = $_SERVER['REMOTE_ADDR'];
305
  // Normalize the filename
306
+ $basepath = realpath(ABSPATH . get_option(self::PREFIX . 'basepath_modifier')) . '/';
307
+ $fullfilename = realpath($basepath . $filename);
308
+ $relfilename = substr($fullfilename, strlen($basepath));
309
  $relfilename = strtr($relfilename, '\\', '/');
310
  $exists = (file_exists($fullfilename) AND !is_dir($fullfilename)) ? 1 : 0;
311
  // Make sure it is a valid request
312
  $dirregexp = self::PREG_DELIMITER . '^' . get_option(self::PREFIX . 'directories') . self::PREG_DELIMITER;
313
  $extregexp = self::PREG_DELIMITER . '\\.' . get_option(self::PREFIX . 'extensions') . '$' . self::PREG_DELIMITER;
314
+ $valid_dir = preg_match($dirregexp, $relfilename);
315
+ $valid_ext = preg_match($extregexp, $relfilename);
316
+ $valid = ($valid_dir AND $valid_ext) ? 1 : 0;
317
  // Get user information and decide if this user should be ignored
318
  get_currentuserinfo();
319
  $userid = $user_ID ? $user_ID : null;
370
  }
371
  // If the file exists and is valid, download it
372
  // Make sure the file is available for download
373
+ if (!$exists)
374
  $this->ErrorMessage(404, sprintf(__("Requested file <strong>%s</strong> not found."), htmlspecialchars($filename)), 'Not found');
375
+ if (intval(get_option(self::PREFIX . 'detailed_errors')))
376
+ {
377
+ if (!$valid_dir)
378
+ $this->ErrorMessage(404, sprintf(__("Requested file <strong>%s</strong> has an invalid path."), htmlspecialchars($filename)), 'Not valid');
379
+ if (!$valid_ext)
380
+ $this->ErrorMessage(404, sprintf(__("Requested file <strong>%s</strong> has an invalid extension."), htmlspecialchars($filename)), 'Not valid');
381
+ }
382
+ if (!$valid)
383
+ $this->ErrorMessage(404, sprintf(__("Requested file <strong>%s</strong> not found."), htmlspecialchars($filename)), 'Not found');
384
+
385
  // Generate proper headers
386
  $mimetype = '';
387
  if (function_exists('finfo_open') AND defined('FILEINFO_MIME_TYPE'))
475
  $error_download_limit = strval($_POST[self::PREFIX . 'error_download_limit']);
476
  $show_download_page = intval($_POST[self::PREFIX . 'show_download_page']);
477
  $download_page = strval($_POST[self::PREFIX . 'download_page']);
478
+ $basepath_modifier = strval($_POST[self::PREFIX . 'basepath_modifier']);
479
+ $detailed_errors = intval($_POST[self::PREFIX . 'detailed_errors']);
480
  // Remove slashes if necessary
481
  if (get_magic_quotes_gpc())
482
  {
505
  if (file_exists($download_page))
506
  update_option(self::PREFIX . 'download_page', $download_page);
507
  update_option(self::PREFIX . 'show_download_page', $show_download_page);
508
+ update_option(self::PREFIX . 'basepath_modifier', $basepath_modifier);
509
+ update_option(self::PREFIX . 'detailed_errors', $detailed_errors);
510
 
511
  }
512
  // Load options from the database
523
  $downloads_per_day_registered = get_option(self::PREFIX . 'max_downloads_per_ip_and_day_registered');
524
  $error_download_limit = get_option(self::PREFIX . 'error_download_limit');
525
  $download_page = get_option(self::PREFIX . 'download_page');
526
+ $show_download_page = intval(get_option(self::PREFIX . 'show_download_page'));
527
+ $basepath_modifier = get_option(self::PREFIX . 'basepath_modifier');
528
+ $detailed_errors = intval(get_option(self::PREFIX . 'detailed_errors'));
529
  // Build the form
530
  ?>
531
  <div class="wrap">
542
  <h3><?php echo __('Allowed directories', self::GETTEXT_REALM); ?></h3>
543
  <p><?php echo __("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.", self::GETTEXT_REALM); ?></p>
544
  <p><?php echo __("Default value is <code>files/</code>, which only allows download from /files directory (the leading <code>/</code> is implicit).", self::GETTEXT_REALM); ?></p>
545
+ <p><input type="text" name="<?php echo self::PREFIX; ?>directories" value="<?php echo esc_attr($directories); ?>" size="80" /></p>
546
  <h3><?php echo __('Allowed extensions', self::GETTEXT_REALM); ?></h3>
547
  <p><?php echo __('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.', self::GETTEXT_REALM); ?></p>
548
  <p><?php echo __("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).", self::GETTEXT_REALM); ?></p>
549
+ <p><input type="text" name="<?php echo self::PREFIX; ?>extensions" value="<?php echo esc_attr($extensions); ?>" size="80" /></p>
550
  <h3><?php echo __('Inline files', self::GETTEXT_REALM); ?></h3>
551
  <p><?php echo __('Files whose names match this regular expression will be displayed inline (within a HTML page) rather than downloaded.', self::GETTEXT_REALM); ?></p>
552
  <p><?php echo __("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.", self::GETTEXT_REALM); ?></p>
553
  <p><?php echo __('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.', self::GETTEXT_REALM); ?></p>
554
  <p><?php echo __('Also note that this plugin uses PCRE-compatible regular expressions, NOT the better-known POSIX-compatible regular expressions. As a result, a valid regular expression must be at least three characters long - separator twice, and at least one character for a meaningful r.e.', self::GETTEXT_REALM); ?></p>
555
+ <p><input type="text" name="<?php echo self::PREFIX; ?>inline" value="<?php echo esc_attr($inline); ?>" size="80" /></p>
556
  <h3><?php echo __("Store detailed logs?", self::GETTEXT_REALM); ?></h3>
557
  <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>
558
  <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>
559
  <h3><?php echo __("Ignored users", self::GETTEXT_REALM); ?></h3>
560
  <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>
561
+ <p><input type="text" name="<?php echo self::PREFIX; ?>ignored_users" value="<?php echo esc_attr($ignored_users); ?>" size="80" /></p>
562
  <h3><?php echo __("Ignore quick re-downloads", self::GETTEXT_REALM); ?></h3>
563
  <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>
564
  <p><input type="text" name="<?php echo self::PREFIX; ?>group_within" value="<?php echo esc_attr($group_within); ?>" /> <?php echo __('seconds', self::GETTEXT_REALM); ?></p>
570
  <p><?php echo __("Error message:", self::GETTEXT_REALM); ?></p>
571
  <p><textarea name="<?php echo self::PREFIX; ?>error_download_limit" rows="4" cols="64"><?php echo htmlspecialchars($error_download_limit); ?></textarea></p>
572
  <p><?php echo __("(The first <code>%d</code> will be replaced by number of hours, the second one by number of minutes.)", self::GETTEXT_REALM); ?>
573
+ <h3><?php echo __("Use more detailed error messages", self::GETTEXT_REALM); ?></h3>
574
+ <p><?php echo __("In case a link doesn't pass the security checks, display a more detailed error message than just \"file not found\". This is useful for the initial setting up, but can be used to exploit the security of your site (e.g. discovering whether a file exists). I recommend unchecking this option as soon as you get SDMon working.", self::GETTEXT_REALM); ?></p>
575
+ <p><label for="<?php echo self::PREFIX; ?>detailed_errors"><input type="checkbox" name="<?php echo self::PREFIX; ?>detailed_errors" value="1" <?php if ($detailed_errors) echo 'checked="checked" '; ?>/> <?php echo __('Use more detailed error messages.', self::GETTEXT_REALM); ?></label></p>
576
  <h3><?php echo __("Use an intermediate Download page", self::GETTEXT_REALM); ?></h3>
577
  <p><?php echo __("Before sending the actual requested file, display an intermediate download page which tells the user that the download is about to start.", self::GETTEXT_REALM); ?></p>
578
  <p><label for="<?php echo self::PREFIX; ?>show_download_page"><input type="checkbox" name="<?php echo self::PREFIX; ?>show_download_page" value="1" <?php if ($show_download_page) echo 'checked="checked" '; ?>/> <?php echo __('Use the intermediate download page.', self::GETTEXT_REALM); ?></label></p>
579
  <p><?php echo __("Path to your download page:", self::GETTEXT_REALM); ?><input type="text" name="<?php echo self::PREFIX; ?>download_page" value="<?php echo esc_attr($download_page); ?>" size="80" /></p>
580
  <p><?php printf(__("You can use <strong>%s</strong> to use a demo page provided with the plugin.", self::GETTEXT_REALM), htmlspecialchars($this->plugin_dir . '/download-example.php')); ?></p>
581
  <p><?php echo __("This functionality was suggested and for the most part programmed by <a href=\"http://matbra.com\">Matheus Bratfisch</a>, I (Pepak) just cleaned it up and added it to the plugin's distribution.", self::GETTEXT_REALM); ?></p>
582
+ <h3><?php echo __('Basepath modifier', self::GETTEXT_REALM); ?></h3>
583
+ <p><strong><?php echo __("Note: Keep this option empty unless you know what you are doing. DO NOT ASK! The use of this option is not supported.", self::GETTEXT_REALM); ?></strong></p>
584
+ <p><?php echo __("You can provide a modifier which, applied to WordPress' ABSPATH, gets you to the base directory from which relative links to files start. This way you can store files outside of the WordPress directory tree, by using something like <code>../private_dir/</code> (the ending slash is required). Note that this option is incompatible with some functionality and is not supported - if you want to use it, search the plugin's source code for <code>basepath_modifier</code>, understand how it is used and then act accordingly.", self::GETTEXT_REALM); ?></p>
585
+ <p><input type="text" name="<?php echo self::PREFIX; ?>basepath_modifier" value="<?php echo esc_attr($basepath_modifier); ?>" size="80" /></p>
586
  <p>&nbsp;</p>
587
  <div class="submit"><input type="submit" name="SimpleDownloadMonitor_Submit" value="<?php echo __("Update settings", self::GETTEXT_REALM) ?>" /></div>
588
  </form>