r71514 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r71513‎ | r71514 | r71515 >
Date:21:52, 23 August 2010
Author:awjrichards
Status:deferred
Tags:
Comment:
Updated contribution insertion to also insert all related custom data; made detection of 'donor comment' custom field more generic
Modified paths:
  • /civicrm/trunk/sites/all/modules/devel/README_devel_node_access.txt (modified) (history)
  • /civicrm/trunk/sites/all/modules/devel/devel.info (modified) (history)
  • /civicrm/trunk/sites/all/modules/devel/devel.install (modified) (history)
  • /civicrm/trunk/sites/all/modules/devel/devel.module (modified) (history)
  • /civicrm/trunk/sites/all/modules/devel/devel_generate.drush.inc (modified) (history)
  • /civicrm/trunk/sites/all/modules/devel/devel_generate.inc (modified) (history)
  • /civicrm/trunk/sites/all/modules/devel/devel_generate.info (modified) (history)
  • /civicrm/trunk/sites/all/modules/devel/devel_generate.module (modified) (history)
  • /civicrm/trunk/sites/all/modules/devel/devel_node_access.info (modified) (history)
  • /civicrm/trunk/sites/all/modules/devel/devel_node_access.install (modified) (history)
  • /civicrm/trunk/sites/all/modules/devel/devel_node_access.module (modified) (history)
  • /civicrm/trunk/sites/all/modules/devel/krumo/class.krumo.php (modified) (history)
  • /civicrm/trunk/sites/all/modules/devel/krumo/krumo.ini (modified) (history)
  • /civicrm/trunk/sites/all/modules/devel/performance/README.txt (modified) (history)
  • /civicrm/trunk/sites/all/modules/devel/performance/performance.info (modified) (history)
  • /civicrm/trunk/sites/all/modules/devel/performance/performance.install (modified) (history)
  • /civicrm/trunk/sites/all/modules/devel/performance/performance.module (modified) (history)
  • /civicrm/trunk/sites/all/modules/devel/translations/devel.pot (modified) (history)
  • /civicrm/trunk/sites/all/modules/devel/translations/hu.po (modified) (history)
  • /civicrm/trunk/sites/all/modules/queue2civicrm/queue2civicrm.module (modified) (history)

Diff [purge]

Index: civicrm/trunk/sites/all/modules/devel/devel_node_access.info
@@ -4,9 +4,9 @@
55 package = Development
66 core = 6.x
77
8 -; Information added by drupal.org packaging script on 2009-08-19
9 -version = "6.x-1.17"
 8+; Information added by drupal.org packaging script on 2010-08-04
 9+version = "6.x-1.21"
1010 core = "6.x"
1111 project = "devel"
12 -datestamp = "1250713853"
 12+datestamp = "1280961078"
1313
Index: civicrm/trunk/sites/all/modules/devel/README_devel_node_access.txt
@@ -15,8 +15,14 @@
1616
1717 Provides a block which shows all node_access entries for the nodes
1818 shown on a given page. This gives developers a quick check to see
19 -that grants are provided as they should be. This block auto-enables to the footer region. You may move it as desired.
 19+that grants are provided as they should be. This block auto-enables
 20+to the footer region. You may move it as desired. If you enable DBA
 21+Debug Mode on the Devel Settings page, you will get more information.
2022
 23+Provides a second block that shows and explains the CRUD access rights
 24+of the 10 most recently active users. This block is disabled by default
 25+because it has a huge overhead.
 26+
2127 If Views module is installed, allows browsing of nodes by realm,
2228 including those nodes not in the node_access table (NULL realm).
2329
@@ -35,7 +41,9 @@
3642 of grants. I personally use node_access only for view grants so I'm
3743 not sure exactly what else it should show.
3844
39 -AUTHOR
40 -======
 45+STAFF
 46+=====
4147
42 -Dave Cohen AKA yogadex on drupal.org
 48+Original author: Dave Cohen AKA yogadex on drupal.org
 49+Current maintainer: Hans Salvisberg AKA salvis on drupal.org
 50+
Index: civicrm/trunk/sites/all/modules/devel/translations/devel.pot
@@ -1,32 +1,31 @@
2 -# $Id: devel.pot,v 1.2.2.1 2008/12/21 15:20:01 hass Exp $
 2+# $Id: devel.pot,v 1.2.2.3 2009/09/05 01:43:19 salvis Exp $
33 #
44 # LANGUAGE translation of Drupal (general)
55 # Copyright YEAR NAME <EMAIL@ADDRESS>
66 # Generated from files:
7 -# devel_generate.inc,v 1.14.2.9 2008/11/14 14:35:01 weitzman
8 -# devel_generate_batch.inc,v 1.1.2.4 2008/11/07 20:37:51 weitzman
9 -# devel.module,v 1.258.2.40 2008/12/16 23:51:58 weitzman
10 -# devel_generate.module,v 1.11.2.6 2008/09/18 17:00:28 weitzman
11 -# devel_node_access.module,v 1.15.2.10 2008/11/07 00:48:27 salvis
12 -# performance.module,v 1.2.2.3 2008/10/21 17:15:40 kbahey
 7+# devel_generate.inc,v 1.14.2.14 2009/06/09 03:22:39 weitzman
 8+# devel_generate_batch.inc,v 1.1.2.5 2009/02/02 21:00:52 drewish
 9+# devel.module,v 1.258.2.55 2009/08/19 20:16:09 weitzman
 10+# devel_generate.module,v 1.11.2.13 2009/07/03 00:30:31 weitzman
 11+# devel_node_access.module,v 1.15.2.16 2009/09/05 00:52:09 salvis
 12+# performance.module,v 1.2.2.26 2009/08/10 15:32:04 kbahey
1313 # devel_node_access.info,v 1.7.2.1 2008/05/17 03:49:30 weitzman
1414 # devel_themer.module: n/a
15 -# macro.module,v 1.4.2.2 2008/06/13 03:11:21 weitzman
16 -# devel.install,v 1.24.2.5 2008/12/14 06:25:21 dww
 15+# devel.install,v 1.24.2.7 2009/07/30 19:38:48 weitzman
1716 # devel.info,v 1.5.2.1 2008/06/13 03:25:20 weitzman
1817 # devel_generate.info,v 1.5.2.1 2008/05/17 03:49:30 weitzman
1918 # devel_themer.info,v 1.3.2.1 2008/09/23 03:13:50 weitzman
20 -# macro.info,v 1.4 2008/01/15 04:02:28 weitzman
2119 # performance.info,v 1.2 2008/10/20 20:29:18 kbahey
2220 # devel_themer.install: n/a
2321 # generate-og-users.php,v 1.3 2006/06/11 00:43:25 killes
2422 # generate-og2list-mail.php,v 1.4 2006/06/27 21:51:29 killes
 23+# performance.install,v 1.1.4.8 2009/08/07 15:49:07 kbahey
2524 #
2625 #, fuzzy
2726 msgid ""
2827 msgstr ""
2928 "Project-Id-Version: PROJECT VERSION\n"
30 -"POT-Creation-Date: 2008-12-21 15:48+0100\n"
 29+"POT-Creation-Date: 2009-09-05 03:40+0200\n"
3130 "PO-Revision-Date: YYYY-mm-DD HH:MM+ZZZZ\n"
3231 "Last-Translator: NAME <EMAIL@ADDRESS>\n"
3332 "Language-Team: LANGUAGE <EMAIL@ADDRESS>\n"
@@ -39,34 +38,44 @@
4039 msgid "Users deleted."
4140 msgstr ""
4241
43 -#: devel_generate.inc:32
 42+#: devel_generate.inc:37
4443 msgid "!num_users created."
4544 msgstr ""
4645
47 -#: devel_generate.inc:181
 46+#: devel_generate.inc:187
4847 msgid "Deleted taxonomy."
4948 msgstr ""
5049
51 -#: devel_generate.inc:186
 50+#: devel_generate.inc:192
5251 msgid "Created the following new vocabularies: !vocs"
5352 msgstr ""
5453
55 -#: devel_generate.inc:191
 54+#: devel_generate.inc:197
5655 msgid "Created the following new terms: !terms"
5756 msgstr ""
5857
59 -#: devel_generate.inc:32
 58+#: devel_generate.inc:253
 59+msgid ". This type contains CCK fields which will only be populated by fields that implement the content_generate hook."
 60+msgstr ""
 61+
 62+#: devel_generate.inc:37
6063 msgid "1 user"
6164 msgid_plural "@count users"
6265 msgstr[0] ""
6366 msgstr[1] ""
6467
65 -#: devel_generate.inc:58
 68+#: devel_generate.inc:63
6669 msgid "1 node created."
6770 msgid_plural "@count nodes created"
6871 msgstr[0] ""
6972 msgstr[1] ""
7073
 74+#: devel_generate.inc:431
 75+msgid "Deleted one post"
 76+msgid_plural "Deleted @count posts"
 77+msgstr[0] ""
 78+msgstr[1] ""
 79+
7180 #: devel_generate_batch.inc:31
7281 msgid "Generating Content"
7382 msgstr ""
@@ -103,381 +112,393 @@
104113 msgid "Enable Theme developer"
105114 msgstr ""
106115
107 -#: devel.module:297
 116+#: devel.module:304
108117 msgid "Invalid file path"
109118 msgstr ""
110119
111 -#: devel.module:469;508;153
 120+#: devel.module:365
 121+msgid "The theme registry is being rebuilt on every request. Remember to <a href=\"!url\">turn off</a> this feature on production websites."
 122+msgstr ""
 123+
 124+#: devel.module:508;549;153
112125 msgid "Switch user"
113126 msgstr ""
114127
115 -#: devel.module:471;498
 128+#: devel.module:510;537
116129 msgid "Execute PHP"
117130 msgstr ""
118131
119 -#: devel.module:477
 132+#: devel.module:516
120133 msgid "Number of users to display in the list"
121134 msgstr ""
122135
123 -#: devel.module:539
 136+#: devel.module:582
124137 msgid "This user can switch back."
125138 msgstr ""
126139
127 -#: devel.module:546
 140+#: devel.module:595
128141 msgid "Caution: this user will be unable switch back."
129142 msgstr ""
130143
131 -#: devel.module:561
 144+#: devel.module:611
132145 msgid "Enter username"
133146 msgstr ""
134147
135 -#: devel.module:568
 148+#: devel.module:618
136149 msgid "Switch"
137150 msgstr ""
138151
139 -#: devel.module:578
 152+#: devel.module:628
140153 msgid "Enter function name for api lookup"
141154 msgstr ""
142155
143 -#: devel.module:585;1179
 156+#: devel.module:635;1238
144157 msgid "Submit"
145158 msgstr ""
146159
147 -#: devel.module:599
 160+#: devel.module:649
148161 msgid "Username not found"
149162 msgstr ""
150163
151 -#: devel.module:878
 164+#: devel.module:930
152165 msgid "Query log"
153166 msgstr ""
154167
155 -#: devel.module:880
 168+#: devel.module:932
156169 msgid "Collect query info. If disabled, no query log functionality will work."
157170 msgstr ""
158171
159 -#: devel.module:882
 172+#: devel.module:934
160173 msgid "You must disable or upgrade the php Zend Optimizer extension in order to enable this feature. The minimum required version is 3.2.8. Earlier versions of Zend Optimizer are <a href=\"!url\">horribly buggy and segfault your Apache</a> ... "
161174 msgstr ""
162175
163 -#: devel.module:885
 176+#: devel.module:937
164177 msgid "Collect query info"
165178 msgstr ""
166179
167 -#: devel.module:892
 180+#: devel.module:944
168181 msgid "Display query log"
169182 msgstr ""
170183
171 -#: devel.module:894
 184+#: devel.module:946
172185 msgid "Display a log of the database queries needed to generate the current page, and the execution time for each. Also, queries which are repeated during a single page view are summed in the # column, and printed in red since they are candidates for caching."
173186 msgstr ""
174187
175 -#: devel.module:896
 188+#: devel.module:948
176189 msgid "Sort query log"
177190 msgstr ""
178191
179 -#: devel.module:898
 192+#: devel.module:950
180193 msgid "by source"
181194 msgstr ""
182195
183 -#: devel.module:898
 196+#: devel.module:950
184197 msgid "by duration"
185198 msgstr ""
186199
187 -#: devel.module:899
 200+#: devel.module:951
188201 msgid "The query table can be sorted in the order that the queries were executed or by descending duration."
189202 msgstr ""
190203
191 -#: devel.module:902
 204+#: devel.module:954
192205 msgid "Slow query highlighting"
193206 msgstr ""
194207
195 -#: devel.module:906
 208+#: devel.module:958
196209 msgid "Enter an integer in milliseconds. Any query which takes longer than this many milliseconds will be highlighted in the query log. This indicates a possibly inefficient query, or a candidate for caching."
197210 msgstr ""
198211
199 -#: devel.module:909
 212+#: devel.module:961
200213 msgid "Store executed queries"
201214 msgstr ""
202215
203 -#: devel.module:911
 216+#: devel.module:963
204217 msgid "Store statistics about executed queries. See the devel_x tables."
205218 msgstr ""
206219
207 -#: devel.module:913
 220+#: devel.module:965
208221 msgid "Sampling interval"
209222 msgstr ""
210223
211 -#: devel.module:916
 224+#: devel.module:968
212225 msgid "If storing query statistics, only store every nth page view. 1 means every page view, 2 every second, and so on."
213226 msgstr ""
214227
215 -#: devel.module:919
 228+#: devel.module:971
216229 msgid "API Site"
217230 msgstr ""
218231
219 -#: devel.module:921
 232+#: devel.module:973
220233 msgid "The base URL for your developer documentation links. You might change this if you run <a href=\"!url\">api.module</a> locally."
221234 msgstr ""
222235
223 -#: devel.module:923
 236+#: devel.module:975
224237 msgid "Display page timer"
225238 msgstr ""
226239
227 -#: devel.module:925
 240+#: devel.module:977
228241 msgid "Display page execution time in the query log box."
229242 msgstr ""
230243
231 -#: devel.module:928
 244+#: devel.module:980
232245 msgid "Display memory usage"
233246 msgstr ""
234247
235 -#: devel.module:930
 248+#: devel.module:982
236249 msgid "Display how much memory is used to generate the current page. This will show memory usage when devel_init() is called and when devel_exit() is called. PHP must have been compiled with the <em>--enable-memory-limit</em> configuration option for this feature to work."
237250 msgstr ""
238251
239 -#: devel.module:933
 252+#: devel.module:985
240253 msgid "Display redirection page"
241254 msgstr ""
242255
243 -#: devel.module:935
 256+#: devel.module:987
244257 msgid "When a module executes drupal_goto(), the query log and other developer information is lost. Enabling this setting presents an intermediate page to developers so that the log can be examined before continuing to the destination page."
245258 msgstr ""
246259
247 -#: devel.module:938
 260+#: devel.module:990
248261 msgid "Display form element keys and weights"
249262 msgstr ""
250263
251 -#: devel.module:940
 264+#: devel.module:992
252265 msgid "Form element names are needed for performing themeing or altering a form. Their weights determine the position of the element. Enabling this setting will show these keys and weights beside each form item."
253266 msgstr ""
254267
255 -#: devel.module:943
 268+#: devel.module:995
256269 msgid "Error handler"
257270 msgstr ""
258271
259 -#: devel.module:945
 272+#: devel.module:997
260273 msgid "None"
261274 msgstr ""
262275
263 -#: devel.module:945
 276+#: devel.module:997
264277 msgid "Standard drupal"
265278 msgstr ""
266279
267 -#: devel.module:946
 280+#: devel.module:998
268281 msgid "Choose an error handler for your site. <em>Backtrace</em> prints nice debug information when an error is noticed, and you !choose. <strong>Backtrace requires the <a href=\"!krumo\">krumo library</a></strong>. <em>None</em> is a good option when stepping through the site in your debugger."
269282 msgstr ""
270283
271 -#: devel.module:946
 284+#: devel.module:998
272285 msgid "choose to show errors on screen"
273286 msgstr ""
274287
275 -#: devel.module:949
 288+#: devel.module:1001
276289 msgid "Backtrace"
277290 msgstr ""
278291
279 -#: devel.module:955
280 -msgid "Krumo skin"
 292+#: devel.module:1007
 293+msgid "Krumo display"
281294 msgstr ""
282295
283 -#: devel.module:956
284 -msgid "Select a skin for your debug messages"
 296+#: devel.module:1008
 297+msgid "Select a skin for your debug messages or select <em>disabled</em> to display object and array output in standard PHP format."
285298 msgstr ""
286299
287 -#: devel.module:966
 300+#: devel.module:1018
288301 msgid "Default"
289302 msgstr ""
290303
291 -#: devel.module:967
 304+#: devel.module:1019
292305 msgid "Log only"
293306 msgstr ""
294307
295 -#: devel.module:970
 308+#: devel.module:1022
296309 msgid "Other (!library)"
297310 msgstr ""
298311
299 -#: devel.module:974
 312+#: devel.module:1026
300313 msgid "SMTP library"
301314 msgstr ""
302315
303 -#: devel.module:1000
 316+#: devel.module:1033
 317+msgid "Rebuild the theme registry on every page load"
 318+msgstr ""
 319+
 320+#: devel.module:1034
 321+msgid "While creating new templates and theme_ overrides the theme registry needs to be rebuilt."
 322+msgstr ""
 323+
 324+#: devel.module:1059
304325 msgid "PHP code to execute"
305326 msgstr ""
306327
307 -#: devel.module:1001
 328+#: devel.module:1060
308329 msgid "Enter some code. Do not use <code>&lt;?php ?&gt;</code> tags."
309330 msgstr ""
310331
311 -#: devel.module:1003
 332+#: devel.module:1062
312333 msgid "Execute"
313334 msgstr ""
314335
315 -#: devel.module:1023
 336+#: devel.module:1082
316337 msgid "The menu router has been rebuilt."
317338 msgstr ""
318339
319 -#: devel.module:1038
 340+#: devel.module:1097
320341 msgid "Uninstall and then install the selected modules. <code>hook_uninstall()</code> and <code>hook_install()</code> will be executed and the schema version number will be set to the most recent update number. You may have to manually clear out any existing tables first if the module doesn't implement <code>hook_uninstall()</code>."
321342 msgstr ""
322343
323 -#: devel.module:1041
 344+#: devel.module:1100
324345 msgid "Reinstall"
325346 msgstr ""
326347
327 -#: devel.module:1045
 348+#: devel.module:1104
328349 msgid "Warning - will delete your module tables and variables."
329350 msgstr ""
330351
331 -#: devel.module:1064
 352+#: devel.module:1123
332353 msgid "Uninstalled and installed the %name module."
333354 msgstr ""
334355
335 -#: devel.module:1087;1143
 356+#: devel.module:1146;1202
336357 msgid "Name"
337358 msgstr ""
338359
339 -#: devel.module:1088;1144
 360+#: devel.module:1147;1203
340361 msgid "Value"
341362 msgstr ""
342363
343 -#: devel.module:1089;1145
 364+#: devel.module:1148;1204
344365 msgid "Length"
345366 msgstr ""
346367
347 -#: devel.module:1090;1146
 368+#: devel.module:1149;1205
348369 msgid "Operations"
349370 msgstr ""
350371
351 -#: devel.module:1118
 372+#: devel.module:1177
352373 msgid "edit"
353374 msgstr ""
354375
355 -#: devel.module:1123
 376+#: devel.module:1182
356377 msgid "Delete"
357378 msgstr ""
358379
359 -#: devel.module:1168
 380+#: devel.module:1227
360381 msgid "Old value"
361382 msgstr ""
362383
363 -#: devel.module:1174;1186
 384+#: devel.module:1233;1245
364385 msgid "New value"
365386 msgstr ""
366387
367 -#: devel.module:1187
 388+#: devel.module:1246
368389 msgid "Sorry, complex variable types may not be edited yet. Use the <em>Execute PHP</em> block and the <a href=\"@variable-set-doc\">variable_set()</a> function."
369390 msgstr ""
370391
371 -#: devel.module:1196
 392+#: devel.module:1255
372393 msgid "Saved new value for %name."
373394 msgstr ""
374395
375 -#: devel.module:1206
 396+#: devel.module:1265
376397 msgid "Session name"
377398 msgstr ""
378399
379 -#: devel.module:1206
 400+#: devel.module:1265
380401 msgid "Session ID"
381402 msgstr ""
382403
383 -#: devel.module:1303
 404+#: devel.module:1362
384405 msgid "Display of !type !obj"
385406 msgstr ""
386407
387 -#: devel.module:1375
 408+#: devel.module:1434
388409 msgid "{empty}"
389410 msgstr ""
390411
391 -#: devel.module:1389
 412+#: devel.module:1448
392413 msgid "TRUE"
393414 msgstr ""
394415
395 -#: devel.module:1389
 416+#: devel.module:1448
396417 msgid "FALSE"
397418 msgstr ""
398419
399 -#: devel.module:1518
 420+#: devel.module:1630
400421 msgid "The file could not be written."
401422 msgstr ""
402423
403 -#: devel.module:1682
 424+#: devel.module:1794
404425 msgid "Total (ms)"
405426 msgstr ""
406427
407 -#: devel.module:1683
 428+#: devel.module:1795
408429 msgid "Average (ms)"
409430 msgstr ""
410431
411 -#: devel.module:1684
 432+#: devel.module:1796
412433 msgid "Std deviation (ms)"
413434 msgstr ""
414435
415 -#: devel.module:1685
 436+#: devel.module:1797
416437 msgid "Count"
417438 msgstr ""
418439
419 -#: devel.module:1686
 440+#: devel.module:1798
420441 msgid "Function"
421442 msgstr ""
422443
423 -#: devel.module:1687
 444+#: devel.module:1799
424445 msgid "Query"
425446 msgstr ""
426447
427 -#: devel.module:1710
 448+#: devel.module:1822
428449 msgid "Delete collected query statistics"
429450 msgstr ""
430451
431 -#: devel.module:1718
 452+#: devel.module:1830
432453 msgid "Stored query statistics deleted."
433454 msgstr ""
434455
435 -#: devel.module:453
 456+#: devel.module:492
436457 msgid "php"
437458 msgstr ""
438459
439 -#: devel.module:453
 460+#: devel.module:492
440461 msgid "%message in %file on line %line."
441462 msgstr ""
442463
443 -#: devel.module:1662;0
 464+#: devel.module:1774
444465 msgid "devel"
445466 msgstr ""
446467
447 -#: devel.module:1662
 468+#: devel.module:1774
448469 msgid "Mail sent:<br />Id: %mail_id<br />To: %to<br />From: %from<br />Language: %lang<br />Subject: %subject<br />Body: %body<br /><br />Additional headers: <br />!header"
449470 msgstr ""
450471
451 -#: devel.module:1157
 472+#: devel.module:1216
452473 msgid "One variable deleted."
453474 msgid_plural "@count variables deleted."
454475 msgstr[0] ""
455476 msgstr[1] ""
456477
457 -#: devel.module:1381
 478+#: devel.module:1440
458479 msgid "1 character"
459480 msgid_plural "@count characters"
460481 msgstr[0] ""
461482 msgstr[1] ""
462483
463 -#: devel.module:1386
 484+#: devel.module:1445
464485 msgid "1 element"
465486 msgid_plural "@count elements"
466487 msgstr[0] ""
467488 msgstr[1] ""
468489
469 -#: devel.module:461
 490+#: devel.module:500
470491 msgid "access devel information"
471492 msgstr ""
472493
473 -#: devel.module:461
 494+#: devel.module:500
474495 msgid "execute php code"
475496 msgstr ""
476497
477 -#: devel.module:461
 498+#: devel.module:500
478499 msgid "switch users"
479500 msgstr ""
480501
481 -#: devel.module:461
 502+#: devel.module:500
482503 msgid "display source code"
483504 msgstr ""
484505
@@ -605,11 +626,11 @@
606627 msgid "Delete all users (except user id 1) before generating new users."
607628 msgstr ""
608629
609 -#: devel_generate.module:62;123
 630+#: devel_generate.module:62;108
610631 msgid "Now"
611632 msgstr ""
612633
613 -#: devel_generate.module:64;125
 634+#: devel_generate.module:64;110
614635 msgid "ago"
615636 msgstr ""
616637
@@ -621,83 +642,83 @@
622643 msgid "User ages will be distributed randomly from the current time, back to the selected time."
623644 msgstr ""
624645
625 -#: devel_generate.module:76;172;216
 646+#: devel_generate.module:76;163;207
626647 msgid "Do it!"
627648 msgstr ""
628649
629650 #: devel_generate.module:92
630 -msgid ". This type contains CCK fields which will only be populated by fields that implement the content_generate hook."
631 -msgstr ""
632 -
633 -#: devel_generate.module:107
634651 msgid "Which node types do you want to create?"
635652 msgstr ""
636653
637 -#: devel_generate.module:113
 654+#: devel_generate.module:98
638655 msgid "<strong>Delete all content</strong> in these node types before generating new content."
639656 msgstr ""
640657
641 -#: devel_generate.module:118
 658+#: devel_generate.module:103
642659 msgid "How many nodes would you like to generate?"
643660 msgstr ""
644661
645 -#: devel_generate.module:129
 662+#: devel_generate.module:114
646663 msgid "How far back in time should the nodes be dated?"
647664 msgstr ""
648665
649 -#: devel_generate.module:130
 666+#: devel_generate.module:115
650667 msgid "Node creation dates will be distributed randomly from the current time, back to the selected time."
651668 msgstr ""
652669
653 -#: devel_generate.module:137
654 -msgid "How many comments per node would you like to generate?"
 670+#: devel_generate.module:122
 671+msgid "Maximum number of generated comments per node"
655672 msgstr ""
656673
657 -#: devel_generate.module:138
 674+#: devel_generate.module:123
658675 msgid "You must also enable comments for the node types you are generating."
659676 msgstr ""
660677
661 -#: devel_generate.module:145
 678+#: devel_generate.module:130
662679 msgid "Max word length of titles"
663680 msgstr ""
664681
665 -#: devel_generate.module:152
 682+#: devel_generate.module:137
666683 msgid "Requires upload.module"
667684 msgstr ""
668685
669 -#: devel_generate.module:153
 686+#: devel_generate.module:138
670687 msgid "Add an upload to each node"
671688 msgstr ""
672689
673 -#: devel_generate.module:158
 690+#: devel_generate.module:143
674691 msgid "Requires taxonomy.module"
675692 msgstr ""
676693
677 -#: devel_generate.module:160
 694+#: devel_generate.module:145
678695 msgid "Add taxonomy terms to each node."
679696 msgstr ""
680697
681 -#: devel_generate.module:166
 698+#: devel_generate.module:151
682699 msgid "Requires path.module"
683700 msgstr ""
684701
685 -#: devel_generate.module:167
 702+#: devel_generate.module:152
686703 msgid "Add an url alias for each node."
687704 msgstr ""
688705
689 -#: devel_generate.module:193
 706+#: devel_generate.module:157
 707+msgid "Generate node view statistics (node_counter table)."
 708+msgstr ""
 709+
 710+#: devel_generate.module:184
690711 msgid "How many vocabularies would you like to generate?"
691712 msgstr ""
692713
693 -#: devel_generate.module:199
 714+#: devel_generate.module:190
694715 msgid "How many terms would you like to generate?"
695716 msgstr ""
696717
697 -#: devel_generate.module:205
 718+#: devel_generate.module:196
698719 msgid "Max word length of term/vocab names"
699720 msgstr ""
700721
701 -#: devel_generate.module:211
 722+#: devel_generate.module:202
702723 msgid "Delete existing terms and vocabularies before generating new content."
703724 msgstr ""
704725
@@ -733,10 +754,6 @@
734755 msgid "Generate a given number of vocabularies and terms. Optionally delete current categories."
735756 msgstr ""
736757
737 -#: devel_generate.module:0
738 -msgid "devel_generate"
739 -msgstr ""
740 -
741758 #: devel_node_access.module:24
742759 msgid "Development helper for node_access table"
743760 msgstr ""
@@ -761,7 +778,7 @@
762779 msgid "The second block provided by this module shows the entries in the node_access table for any nodes shown on the current page. You can enable the debug mode on the !settings_page to display much more information, but this can cause considerable overhead. Because the tables shown are wide, it is recommended to enable the blocks in the page footer rather than a sidebar."
763780 msgstr ""
764781
765 -#: devel_node_access.module:32 performance/performance.module:337;446
 782+#: devel_node_access.module:32 performance/performance.module:317;426
766783 msgid "settings page"
767784 msgstr ""
768785
@@ -773,27 +790,23 @@
774791 msgid "summary page"
775792 msgstr ""
776793
777 -#: devel_node_access.module:37
778 -msgid ""
779 -msgstr ""
780 -
781 -#: devel_node_access.module:78
 794+#: devel_node_access.module:77
782795 msgid "Devel Node Access debug mode"
783796 msgstr ""
784797
785 -#: devel_node_access.module:80
 798+#: devel_node_access.module:79
786799 msgid "Debug mode verifies the grants in the node_access table against those that would be set by running !Rebuild_permissions, and displays them all; this can cause considerable overhead."
787800 msgstr ""
788801
789 -#: devel_node_access.module:98
 802+#: devel_node_access.module:97
790803 msgid "Access Granted to All Nodes (All Users)"
791804 msgstr ""
792805
793 -#: devel_node_access.module:99
 806+#: devel_node_access.module:98
794807 msgid "Your node_access table contains entries that may be granting all users access to all nodes. Depending on which access control module(s) you use, you may want to delete these entries. If you are not using an access control module, you should probably leave these entries as is."
795808 msgstr ""
796809
797 -#: devel_node_access.module:100;127;145;163;230;254
 810+#: devel_node_access.module:99;132;150;168;235;262
798811 msgid "realm"
799812 msgstr ""
800813
@@ -806,390 +819,438 @@
807820 msgstr ""
808821
809822 #: devel_node_access.module:113
 823+msgid "This issue may be masked by the one above, so look into the former first."
 824+msgstr ""
 825+
 826+#: devel_node_access.module:118
810827 msgid "All Nodes Represented"
811828 msgstr ""
812829
813 -#: devel_node_access.module:114
 830+#: devel_node_access.module:119
814831 msgid "All nodes are represented in the node_access table."
815832 msgstr ""
816833
817 -#: devel_node_access.module:125
 834+#: devel_node_access.module:130
818835 msgid "Access Granted to All Nodes (Some Users)"
819836 msgstr ""
820837
821 -#: devel_node_access.module:126
 838+#: devel_node_access.module:131
822839 msgid "Your node_access table contains entries that may be granting some users access to all nodes. This may be perfectly normal, depending on which access control module(s) you use."
823840 msgstr ""
824841
825 -#: devel_node_access.module:141
 842+#: devel_node_access.module:146
826843 msgid "Access Granted to Some Nodes"
827844 msgstr ""
828845
829 -#: devel_node_access.module:143
 846+#: devel_node_access.module:148
830847 msgid "The following realms appear to grant all users access to some specific nodes. This may be perfectly normal, if some of your content is available to the public."
831848 msgstr ""
832849
833 -#: devel_node_access.module:145
 850+#: devel_node_access.module:150
834851 msgid "public nodes"
835852 msgstr ""
836853
837 -#: devel_node_access.module:146
 854+#: devel_node_access.module:151
838855 msgid "Public Nodes"
839856 msgstr ""
840857
841 -#: devel_node_access.module:161
 858+#: devel_node_access.module:166
842859 msgid "Summary by Realm"
843860 msgstr ""
844861
845 -#: devel_node_access.module:162
 862+#: devel_node_access.module:167
846863 msgid "The following realms grant limited access to some specific nodes."
847864 msgstr ""
848865
849 -#: devel_node_access.module:163
 866+#: devel_node_access.module:168
850867 msgid "private nodes"
851868 msgstr ""
852869
853 -#: devel_node_access.module:164
 870+#: devel_node_access.module:169
854871 msgid "Protected Nodes"
855872 msgstr ""
856873
857 -#: devel_node_access.module:207
 874+#: devel_node_access.module:212
858875 msgid "Devel Node Access"
859876 msgstr ""
860877
861 -#: devel_node_access.module:210
 878+#: devel_node_access.module:215
862879 msgid "Devel Node Access by User"
863880 msgstr ""
864881
865 -#: devel_node_access.module:230;254
 882+#: devel_node_access.module:235;262
866883 msgid "node"
867884 msgstr ""
868885
869 -#: devel_node_access.module:230;254
 886+#: devel_node_access.module:235;262
870887 msgid "gid"
871888 msgstr ""
872889
873 -#: (duplicate) devel_node_access.module:230;254;441;396
 890+#: devel_node_access.module:235;262;465
874891 msgid "view"
875892 msgstr ""
876893
877 -#: devel_node_access.module:230;254;441
 894+#: devel_node_access.module:235;262;465
878895 msgid "update"
879896 msgstr ""
880897
881 -#: devel_node_access.module:230;254;441
 898+#: devel_node_access.module:235;262;465
882899 msgid "delete"
883900 msgstr ""
884901
885 -#: devel_node_access.module:230;254
 902+#: devel_node_access.module:235;262
886903 msgid "explained"
887904 msgstr ""
888905
889 -#: devel_node_access.module:247;422
 906+#: devel_node_access.module:253
 907+msgid "default"
 908+msgstr ""
 909+
 910+#: devel_node_access.module:253
 911+msgid "Default grant supplied by core in the absence of any other non-empty grants, in !na."
 912+msgstr ""
 913+
 914+#: devel_node_access.module:254
890915 msgid "ok"
891916 msgstr ""
892917
893 -#: devel_node_access.module:247
 918+#: devel_node_access.module:254
894919 msgid "Highest priority grant, in !na."
895920 msgstr ""
896921
897 -#: devel_node_access.module:248
 922+#: devel_node_access.module:255
 923+msgid "unexpected"
 924+msgstr ""
 925+
 926+#: devel_node_access.module:255
 927+msgid "The 0/0/all/... grant applies to all nodes and all users -- usually it should not be present if any node access module is active!"
 928+msgstr ""
 929+
 930+#: devel_node_access.module:256
898931 msgid "ignored"
899932 msgstr ""
900933
901 -#: devel_node_access.module:248
 934+#: devel_node_access.module:256
902935 msgid "Lower priority grant, not in !na and thus ignored."
903936 msgstr ""
904937
905 -#: devel_node_access.module:249
 938+#: devel_node_access.module:257
906939 msgid "empty"
907940 msgstr ""
908941
909 -#: devel_node_access.module:249
910 -msgid "Does not grant any access, but could block lower priority grants."
 942+#: devel_node_access.module:257
 943+msgid "Does not grant any access, but could block lower priority grants; not in !na."
911944 msgstr ""
912945
913 -#: devel_node_access.module:250
 946+#: devel_node_access.module:258
914947 msgid "missing"
915948 msgstr ""
916949
917 -#: devel_node_access.module:250
918 -msgid "Should be in !na but isn't; run Rebuild Permissions to fix this!"
 950+#: devel_node_access.module:258
 951+msgid "Should be in !na but isn't!"
919952 msgstr ""
920953
921 -#: devel_node_access.module:251
 954+#: devel_node_access.module:259
922955 msgid "illegitimate"
923956 msgstr ""
924957
925 -#: devel_node_access.module:251
 958+#: devel_node_access.module:259
926959 msgid "Should NOT be in !na because of lower priority!"
927960 msgstr ""
928961
929 -#: devel_node_access.module:252
 962+#: devel_node_access.module:260
930963 msgid "alien"
931964 msgstr ""
932965
933 -#: devel_node_access.module:252
 966+#: devel_node_access.module:260
934967 msgid "Should NOT be in !na because of unknown origin!"
935968 msgstr ""
936969
937 -#: devel_node_access.module:254
 970+#: devel_node_access.module:262
938971 msgid "prio"
939972 msgstr ""
940973
941 -#: devel_node_access.module:254
 974+#: devel_node_access.module:262
942975 msgid "status"
943976 msgstr ""
944977
945 -#: devel_node_access.module:369
 978+#: devel_node_access.module:397
946979 msgid "This entry grants access to this node to this user."
947980 msgstr ""
948981
949 -#: devel_node_access.module:390
950 -msgid "This user has the %administer_nodes permission and thus full access to all nodes."
 982+#: devel_node_access.module:417
 983+msgid "You have errors in your !na table! You may be able to fix these for now by running !Rebuild_permissions, but this is likely to destroy the evidence and make it impossible to identify the underlying issues. If you don't fix those, the errors will probably come back again. <br /> DON'T do this just yet if you intend to ask for help with this situation."
951984 msgstr ""
952985
953 -#: devel_node_access.module:396
954 -msgid "This user is granted %view access to node %nid !by_what"
 986+#: devel_node_access.module:425
 987+msgid "These are the grants returned by hook_node_grants() for this user."
955988 msgstr ""
956989
957 -#: devel_node_access.module:406
958 -msgid "by the %module module itself."
 990+#: devel_node_access.module:425
 991+msgid "!username can use the following grants (if they are present above): !list"
959992 msgstr ""
960993
961 -#: devel_node_access.module:422
962 -msgid "by one or more of the following grants (if they are present above with status '!ok'): !list"
 994+#: devel_node_access.module:436
 995+msgid "!username has the following access"
963996 msgstr ""
964997
965 -#: devel_node_access.module:425
966 -msgid "as author of the node."
 998+#: devel_node_access.module:442
 999+msgid "%op: "
9671000 msgstr ""
9681001
969 -#: devel_node_access.module:433
 1002+#: devel_node_access.module:444
 1003+msgid "to node !nid:"
 1004+msgstr ""
 1005+
 1006+#: devel_node_access.module:457
9701007 msgid "node_access entries for nodes shown on this page"
9711008 msgstr ""
9721009
973 -#: devel_node_access.module:441
 1010+#: devel_node_access.module:465
9741011 msgid "username"
9751012 msgstr ""
9761013
977 -#: devel_node_access.module:458
 1014+#: devel_node_access.module:465
 1015+msgid "Create nodes of the '@Node_type' type."
 1016+msgstr ""
 1017+
 1018+#: devel_node_access.module:465
 1019+msgid "create"
 1020+msgstr ""
 1021+
 1022+#: devel_node_access.module:483
 1023+msgid "(This table lists the most-recently active users. Hover your mouse over each result to see the reason for allowing or denying access.)"
 1024+msgstr ""
 1025+
 1026+#: devel_node_access.module:484
9781027 msgid "Access permissions by user"
9791028 msgstr ""
9801029
981 -#: devel_node_access.module:500
982 -msgid "yes"
 1030+#: devel_node_access.module:508
 1031+msgid "Unable to load the node &ndash; this should never happen!"
9831032 msgstr ""
9841033
985 -#: devel_node_access.module:503
986 -msgid "no"
 1034+#: devel_node_access.module:533
 1035+msgid "NO"
9871036 msgstr ""
9881037
989 -#: (duplicate) devel_node_access.module:80
990 -msgid "Rebuild permissions"
 1038+#: devel_node_access.module:534
 1039+msgid "YES"
9911040 msgstr ""
9921041
993 -#: (duplicate) devel_node_access.module:390
994 -msgid "administer nodes"
 1042+#: devel_node_access.module:539
 1043+msgid "!NO: input format"
9951044 msgstr ""
9961045
997 -#: devel_node_access.module:48
998 -msgid "Node_access summary"
 1046+#: devel_node_access.module:540
 1047+msgid "!NO: This user is not allowed to use the input format '!format' (!fid)."
9991048 msgstr ""
10001049
1001 -#: devel_node_access.module:56 devel_node_access.info:0
1002 -msgid "Devel node access"
 1050+#: devel_node_access.module:548
 1051+msgid "!YES: administer nodes"
10031052 msgstr ""
10041053
1005 -#: devel_node_access.module:57
1006 -msgid "Helper pages and blocks to assist Drupal developers and admins with node_access. The devel blocks can be managed via the Blocks (admin/build/block) page."
 1054+#: devel_node_access.module:549
 1055+msgid "!YES: This user has the '!administer_nodes' permission and may do everything with nodes."
10071056 msgstr ""
10081057
1009 -#: devel_node_access.module:0
1010 -msgid "devel_node_access"
 1058+#: devel_node_access.module:550
 1059+msgid "administer nodes"
10111060 msgstr ""
10121061
1013 -#: devel_themer.module:85
1014 -msgid "Display theme log"
 1062+#: devel_node_access.module:556
 1063+msgid "!NO: access content"
10151064 msgstr ""
10161065
1017 -#: devel_themer.module:87
1018 -msgid "Display the list of theme templates and theme functions which could have been be used for a given page. The one that was actually used is bolded. This is the same data as the represented in the popup, but all calls are listed in chronological order and can alternately be sorted by time."
 1066+#: devel_node_access.module:557
 1067+msgid "!NO: This user does not have the '!access_content' permission and is denied doing anything with content."
10191068 msgstr ""
10201069
1021 -#: devel_themer.module:518
1022 -msgid "Themer info"
 1070+#: devel_node_access.module:558
 1071+msgid "access content"
10231072 msgstr ""
10241073
1025 -#: devel_themer.module:519
1026 -msgid "loading"
 1074+#: devel_node_access.module:574
 1075+msgid "!YES: by the module"
10271076 msgstr ""
10281077
1029 -#: devel_themer.module:520
1030 -msgid "Parents: "
 1078+#: devel_node_access.module:575
 1079+msgid "!YES: The '@module' module (which defines the '@content_type' content type) allows this, probably based no some permission."
10311080 msgstr ""
10321081
1033 -#: devel_themer.module:521
1034 -msgid "Function called: "
 1082+#: devel_node_access.module:580
 1083+msgid "!NO: by the module"
10351084 msgstr ""
10361085
1037 -#: devel_themer.module:522
1038 -msgid "Template called: "
 1086+#: devel_node_access.module:581
 1087+msgid "!NO: The '@module' module (which defines the '@content_type' content type) denies this."
10391088 msgstr ""
10401089
1041 -#: devel_themer.module:523
1042 -msgid "Candidate template files: "
 1090+#: devel_node_access.module:589
 1091+msgid "!YES: node access"
10431092 msgstr ""
10441093
1045 -#: devel_themer.module:524
1046 -msgid "Preprocess functions: "
 1094+#: devel_node_access.module:590
 1095+msgid "!YES: Node access allows this."
10471096 msgstr ""
10481097
1049 -#: devel_themer.module:525
1050 -msgid "Candidate function names: "
 1098+#: devel_node_access.module:595
 1099+msgid "!NO: node access"
10511100 msgstr ""
10521101
1053 -#: devel_themer.module:526
1054 -msgid "link to Drupal API documentation"
 1102+#: devel_node_access.module:596
 1103+msgid "!NO: Node access denies this."
10551104 msgstr ""
10561105
1057 -#: devel_themer.module:527
1058 -msgid "link to source code"
 1106+#: devel_node_access.module:603
 1107+msgid "!YES: own node"
10591108 msgstr ""
10601109
1061 -#: devel_themer.module:528
1062 -msgid "Function Arguments"
 1110+#: devel_node_access.module:604
 1111+msgid "!YES: The user may view his/her own node."
10631112 msgstr ""
10641113
1065 -#: devel_themer.module:529
1066 -msgid "Template Variables"
 1114+#: devel_node_access.module:608
 1115+msgid "!NO: no reason"
10671116 msgstr ""
10681117
1069 -#: devel_themer.module:530
1070 -msgid "File used: "
 1118+#: devel_node_access.module:609
 1119+msgid "!NO: None of the checks resulted in allowing this, so it's denied."
10711120 msgstr ""
10721121
1073 -#: devel_themer.module:531
1074 -msgid "Duration: "
 1122+#: devel_node_access.module:610
 1123+msgid "Node access was not checked because the node is not published."
10751124 msgstr ""
10761125
1077 -#: devel_themer.module:538
1078 -msgid "Drupal Themer Information"
 1126+#: devel_node_access.module:611
 1127+msgid "Is a permission missing?"
10791128 msgstr ""
10801129
1081 -#: devel_themer.module:539
1082 -msgid "Click on any element to see information about the Drupal theme function or template that created it."
 1130+#: (duplicate) devel_node_access.module:79
 1131+msgid "Rebuild permissions"
10831132 msgstr ""
10841133
1085 -#: devel_themer.module:10
1086 -msgid "Theme Developer"
 1134+#: devel_node_access.module:15
 1135+msgid "view devel_node_access information"
10871136 msgstr ""
10881137
1089 -#: devel_themer.module:11
1090 -msgid "Display or hide the textual template log"
 1138+#: devel_node_access.module:47
 1139+msgid "Node_access summary"
10911140 msgstr ""
10921141
1093 -#: devel_themer.module:18
1094 -msgid "Devel Themer Enable"
 1142+#: devel_node_access.module:55 devel_node_access.info:0
 1143+msgid "Devel node access"
10951144 msgstr ""
10961145
1097 -#: devel_themer.module:25
1098 -msgid "Theme Development Enable"
 1146+#: devel_node_access.module:56
 1147+msgid "Helper pages and blocks to assist Drupal developers and admins with node_access. The devel blocks can be managed via the Blocks (admin/build/block) page."
10991148 msgstr ""
11001149
1101 -#: devel_themer.module:32
1102 -msgid "Theme Development AJAX variables"
 1150+#: devel_themer.module:79
 1151+msgid "Devel Themer module %action."
11031152 msgstr ""
11041153
1105 -#: devel_themer.module:0
1106 -msgid "devel_themer"
 1154+#: devel_themer.module:85
 1155+msgid "Display theme log"
11071156 msgstr ""
11081157
1109 -#: macro.module:15
1110 -msgid "Todo: Add help text."
 1158+#: devel_themer.module:87
 1159+msgid "Display the list of theme templates and theme functions which could have been be used for a given page. The one that was actually used is bolded. This is the same data as the represented in the popup, but all calls are listed in chronological order and can alternately be sorted by time."
11111160 msgstr ""
11121161
1113 -#: macro.module:17
1114 -msgid "This output can be saved to the profile`s .macro file, to be automatically played back upon completed install or used on an import on another site."
 1162+#: devel_themer.module:529
 1163+msgid "Themer info"
11151164 msgstr ""
11161165
1117 -#: macro.module:19
1118 -msgid "Insert recorded macro here to be played into your site. All referenced modules needs to be enabled."
 1166+#: devel_themer.module:530
 1167+msgid "loading"
11191168 msgstr ""
11201169
1121 -#: macro.module:21
1122 -msgid "Configuration settings for the drupal macro engine."
 1170+#: devel_themer.module:531
 1171+msgid "Parents: "
11231172 msgstr ""
11241173
1125 -#: macro.module:54
1126 -msgid "Configure"
 1174+#: devel_themer.module:532
 1175+msgid "Function called: "
11271176 msgstr ""
11281177
1129 -#: macro.module:173
1130 -msgid "play macro"
 1178+#: devel_themer.module:533
 1179+msgid "Template called: "
11311180 msgstr ""
11321181
1133 -#: macro.module:197
1134 -msgid "Macro settings"
 1182+#: devel_themer.module:534
 1183+msgid "Candidate template files: "
11351184 msgstr ""
11361185
1137 -#: macro.module:202
1138 -msgid "Enable macro recording"
 1186+#: devel_themer.module:535
 1187+msgid "Preprocess functions: "
11391188 msgstr ""
11401189
1141 -#: macro.module:204
1142 -msgid "Set whether the macro engine will record form submissions."
 1190+#: devel_themer.module:536
 1191+msgid "Candidate function names: "
11431192 msgstr ""
11441193
1145 -#: macro.module:208
1146 -msgid "Delete recorded macro"
 1194+#: devel_themer.module:537
 1195+msgid "link to Drupal API documentation"
11471196 msgstr ""
11481197
1149 -#: macro.module:210
1150 -msgid "Set whether to clear previously recorded macro."
 1198+#: devel_themer.module:538
 1199+msgid "link to source code"
11511200 msgstr ""
11521201
1153 -#: macro.module:236
1154 -msgid "An error has occured with macro #%macro_number , form_id %form_id. Please check the errors displayed for more details."
 1202+#: devel_themer.module:539
 1203+msgid "Function Arguments"
11551204 msgstr ""
11561205
1157 -#: macro.module:67
1158 -msgid "administer macro settings"
 1206+#: devel_themer.module:540
 1207+msgid "Template Variables"
11591208 msgstr ""
11601209
1161 -#: macro.module:67
1162 -msgid "macro access"
 1210+#: devel_themer.module:541
 1211+msgid "File used: "
11631212 msgstr ""
11641213
1165 -#: macro.module:32
1166 -msgid "Macro engine"
 1214+#: devel_themer.module:542
 1215+msgid "Duration: "
11671216 msgstr ""
11681217
1169 -#: macro.module:33
1170 -msgid "Configure the Drupal macro engine. Export recorded macros or import previously recorded macros."
 1218+#: devel_themer.module:549
 1219+msgid "Drupal Themer Information"
11711220 msgstr ""
11721221
1173 -#: macro.module:40
1174 -msgid "Export"
 1222+#: devel_themer.module:550
 1223+msgid "Click on any element to see information about the Drupal theme function or template that created it."
11751224 msgstr ""
11761225
1177 -#: macro.module:47
1178 -msgid "Import"
 1226+#: devel_themer.module:10
 1227+msgid "Theme Developer"
11791228 msgstr ""
11801229
1181 -#: macro.module:0
1182 -msgid "macro"
 1230+#: devel_themer.module:11
 1231+msgid "Display or hide the textual template log"
11831232 msgstr ""
11841233
1185 -#: devel.install:88
 1234+#: devel_themer.module:18
 1235+msgid "Devel Themer Enable"
 1236+msgstr ""
 1237+
 1238+#: devel_themer.module:25
 1239+msgid "Theme Development Enable"
 1240+msgstr ""
 1241+
 1242+#: devel_themer.module:32
 1243+msgid "Theme Development AJAX variables"
 1244+msgstr ""
 1245+
 1246+#: devel.install:93
11861247 msgid "Disabled query logging since devel module is disabled."
11871248 msgstr ""
11881249
1189 -#: (duplicate) devel.install:40 devel.info:0 devel_generate.info:0 devel_node_access.info:0 devel_themer.info:0 macro.info:0 performance/performance.info:0
 1250+#: (duplicate) devel.install:45 devel.info:0 devel_generate.info:0 devel_node_access.info:0 devel_themer.info:0 performance/performance.info:0
11901251 msgid "Development"
11911252 msgstr ""
11921253
1193 -#: (duplicate) devel.install:40
 1254+#: (duplicate) devel.install:45
11941255 msgid "Development links."
11951256 msgstr ""
11961257
@@ -1229,14 +1290,6 @@
12301291 msgid "Essential theme API information for theme developers"
12311292 msgstr ""
12321293
1233 -#: macro.info:0
1234 -msgid "Macro"
1235 -msgstr ""
1236 -
1237 -#: macro.info:0
1238 -msgid "Allows administrators to record and playback form submissions."
1239 -msgstr ""
1240 -
12411294 #: generate/generate-og-users.php:48
12421295 msgid "Assigned %n users to group %t."
12431296 msgstr ""
@@ -1245,287 +1298,299 @@
12461299 msgid "Y/m/d - G:i"
12471300 msgstr ""
12481301
1249 -#: performance/performance.module:13 performance/performance.info:0
1250 -msgid "Performance Logging"
1251 -msgstr ""
1252 -
1253 -#: performance/performance.module:14
1254 -msgid "Logs performance data: page generation times and memory usage."
1255 -msgstr ""
1256 -
1257 -#: performance/performance.module:21
1258 -msgid "Clear APC"
1259 -msgstr ""
1260 -
1261 -#: performance/performance.module:22
1262 -msgid "Clears performance statistics collected in APC."
1263 -msgstr ""
1264 -
1265 -#: performance/performance.module:29
1266 -msgid "Performance Logs: Summary"
1267 -msgstr ""
1268 -
1269 -#: performance/performance.module:30
1270 -msgid "View summary performance logs: page generation times and memory usage."
1271 -msgstr ""
1272 -
1273 -#: performance/performance.module:35
1274 -msgid "Performance Logs: Details"
1275 -msgstr ""
1276 -
1277 -#: performance/performance.module:36
1278 -msgid "View detailed, per page, performance logs: page generation times and memory usage."
1279 -msgstr ""
1280 -
1281 -#: performance/performance.module:45
 1302+#: performance/performance.module:50
12821303 msgid "Disabled"
12831304 msgstr ""
12841305
1285 -#: performance/performance.module:46
 1306+#: performance/performance.module:51
12861307 msgid "Enabled"
12871308 msgstr ""
12881309
1289 -#: performance/performance.module:50
 1310+#: performance/performance.module:55
12901311 msgid "APC is enabled. It is reasonably safe to enable summary logging on live sites."
12911312 msgstr ""
12921313
1293 -#: performance/performance.module:53
 1314+#: performance/performance.module:58
12941315 msgid "APC is not enabled. It is <strong>not</strong> safe to enable summary logging to the database on live sites."
12951316 msgstr ""
12961317
1297 -#: performance/performance.module:58
 1318+#: performance/performance.module:63
12981319 msgid "Logging mode"
12991320 msgstr ""
13001321
1301 -#: performance/performance.module:64
 1322+#: performance/performance.module:69
13021323 msgid "Detailed logging"
13031324 msgstr ""
13041325
1305 -#: performance/performance.module:67
 1326+#: performance/performance.module:72
13061327 msgid "Log memory usage and page generation times for every page. This logging mode is <strong>not</strong> suitable for large sites, as it can degrade performance severly. It is intended for use by developers, or on a test copy of the site."
13071328 msgstr ""
13081329
1309 -#: performance/performance.module:72
 1330+#: performance/performance.module:77
13101331 msgid "Summary logging (DB)"
13111332 msgstr ""
13121333
1313 -#: performance/performance.module:75
 1334+#: performance/performance.module:80
13141335 msgid "Log summary data, such as average and maximum page generation times and memory usage to the database. This logging mode is <strong>not</strong> suitable for most live sites."
13151336 msgstr ""
13161337
1317 -#: performance/performance.module:85
 1338+#: performance/performance.module:90
13181339 msgid "Summary logging (APC)"
13191340 msgstr ""
13201341
1321 -#: performance/performance.module:89
 1342+#: performance/performance.module:94
13221343 msgid "Log summary data, such as average and maximum page generation times and memory usage to APC, if installed. The summary will be stored in APC memory, and hence there is no load on the database. This logging to APC is suitable for most live sites, unless the number of unique page accesses is excessively high."
13231344 msgstr ""
13241345
1325 -#: performance/performance.module:94
 1346+#: performance/performance.module:99
13261347 msgid "Other"
13271348 msgstr ""
13281349
1329 -#: performance/performance.module:100
1330 -msgid "Show titles instead of URLs"
1331 -msgstr ""
1332 -
1333 -#: performance/performance.module:103
1334 -msgid "URLs only"
1335 -msgstr ""
1336 -
1337 -#: performance/performance.module:104
1338 -msgid "URLs and Titles as hyperlinks"
1339 -msgstr ""
1340 -
13411350 #: performance/performance.module:106
1342 -msgid "In the reports, show path titles hyperlinked to the URLs, or just the path URLs."
1343 -msgstr ""
1344 -
1345 -#: performance/performance.module:112
13461351 msgid "Database Query timing and count"
13471352 msgstr ""
13481353
1349 -#: performance/performance.module:115
 1354+#: performance/performance.module:109
13501355 msgid "Log database query timing and query count for each page. This is useful to know if the bottleneck is in excessive database query counts, or the time required to execute those queries is high. Enabling this will incurr some memory overhead as query times and the actual query strings are cached in memory as arrays for each page, hence skewing the overall page memory reported. Please note that this settings is enabled or disabled in the settings of the devel module."
13511356 msgstr ""
13521357
1353 -#: performance/performance.module:120
 1358+#: performance/performance.module:114
13541359 msgid "Accesses threshold"
13551360 msgstr ""
13561361
1357 -#: performance/performance.module:123
 1362+#: performance/performance.module:117
13581363 msgid "When displaying the summary report and using APC, only pages with the number of accesses larger than the specified threshold will be shown. Also, when cron runs, pages with that number of accesses or less will be removed, so as not to overflow APC's shared memory. This is useful on a live site with a high volume of hits. On a development site, you probably want this set to 0, so you can see all pages."
13591364 msgstr ""
13601365
1361 -#: performance/performance.module:141
1362 -msgid "Performance detailed logging is !link. This can cause severe issues on live sites."
 1366+#: performance/performance.module:167;455
 1367+msgid "Yes"
13631368 msgstr ""
13641369
1365 -#: performance/performance.module:141;148
1366 -msgid "enabled"
 1370+#: performance/performance.module:167;455
 1371+msgid "No"
13671372 msgstr ""
13681373
1369 -#: performance/performance.module:148
1370 -msgid "Query timing and count logging is !link. This can cause memory size per page to be larger than normal."
1371 -msgstr ""
1372 -
1373 -#: performance/performance.module:155
1374 -msgid "APC has been configured for !size, which is less than the recommended 48 MB of memory. If you encounter errors when viewing the summary report, then try to increase that limit for APC."
1375 -msgstr ""
1376 -
1377 -#: performance/performance.module:337
 1374+#: performance/performance.module:317
13781375 msgid "Summary performance log is not enabled. Go to the !link to enable it."
13791376 msgstr ""
13801377
1381 -#: performance/performance.module:342;452
 1378+#: performance/performance.module:322;432
13821379 msgid "Path"
13831380 msgstr ""
13841381
1385 -#: performance/performance.module:343
 1382+#: performance/performance.module:323
13861383 msgid "Last access"
13871384 msgstr ""
13881385
1389 -#: performance/performance.module:344
 1386+#: performance/performance.module:324
13901387 msgid "# accesses"
13911388 msgstr ""
13921389
1393 -#: performance/performance.module:345
 1390+#: performance/performance.module:325
13941391 msgid "Max Memory (MB)"
13951392 msgstr ""
13961393
1397 -#: performance/performance.module:346
 1394+#: performance/performance.module:326
13981395 msgid "Avg Memory (MB)"
13991396 msgstr ""
14001397
1401 -#: performance/performance.module:347
 1398+#: performance/performance.module:327
14021399 msgid "Milliseconds (Max)"
14031400 msgstr ""
14041401
1405 -#: performance/performance.module:348
 1402+#: performance/performance.module:328
14061403 msgid "Milliseconds (Avg)"
14071404 msgstr ""
14081405
1409 -#: performance/performance.module:351
 1406+#: performance/performance.module:331
14101407 msgid "Query Millisecs (Max)"
14111408 msgstr ""
14121409
1413 -#: performance/performance.module:352
 1410+#: performance/performance.module:332
14141411 msgid "Query Millisecs (Avg)"
14151412 msgstr ""
14161413
1417 -#: performance/performance.module:353
 1414+#: performance/performance.module:333
14181415 msgid "Query Count (Max)"
14191416 msgstr ""
14201417
1421 -#: performance/performance.module:354
 1418+#: performance/performance.module:334
14221419 msgid "Query Count (Avg)"
14231420 msgstr ""
14241421
1425 -#: performance/performance.module:410
 1422+#: performance/performance.module:390
14261423 msgid "No statistics available yet."
14271424 msgstr ""
14281425
1429 -#: performance/performance.module:415
 1426+#: performance/performance.module:395
14301427 msgid "Showing !shown paths with more than !threshold accesses, out of !total total paths."
14311428 msgstr ""
14321429
1433 -#: performance/performance.module:419
 1430+#: performance/performance.module:399
14341431 msgid "Showing all !total paths."
14351432 msgstr ""
14361433
1437 -#: performance/performance.module:432
 1434+#: performance/performance.module:412
14381435 msgid "Average memory per page: !mb_avg MB"
14391436 msgstr ""
14401437
1441 -#: performance/performance.module:433
 1438+#: performance/performance.module:413
14421439 msgid "Average milliseconds per page: !ms_avg"
14431440 msgstr ""
14441441
1445 -#: performance/performance.module:434
 1442+#: performance/performance.module:414
14461443 msgid "Total number of page accesses: !accesses"
14471444 msgstr ""
14481445
1449 -#: performance/performance.module:435
 1446+#: performance/performance.module:415
14501447 msgid "First access: !access."
14511448 msgstr ""
14521449
1453 -#: performance/performance.module:436
 1450+#: performance/performance.module:416
14541451 msgid "Last access: !access."
14551452 msgstr ""
14561453
1457 -#: performance/performance.module:446
 1454+#: performance/performance.module:426
14581455 msgid "Detail performance log is not enabled. Go to the !link to enable it."
14591456 msgstr ""
14601457
1461 -#: performance/performance.module:450
 1458+#: performance/performance.module:430
14621459 msgid "#"
14631460 msgstr ""
14641461
1465 -#: performance/performance.module:451
 1462+#: performance/performance.module:431
14661463 msgid "Date"
14671464 msgstr ""
14681465
1469 -#: performance/performance.module:453
 1466+#: performance/performance.module:433
14701467 msgid "Memory (MB)"
14711468 msgstr ""
14721469
1473 -#: performance/performance.module:454
 1470+#: performance/performance.module:434
14741471 msgid "Milliseconds (Total)"
14751472 msgstr ""
14761473
1477 -#: performance/performance.module:455
 1474+#: performance/performance.module:435
14781475 msgid "Anonymous?"
14791476 msgstr ""
14801477
1481 -#: performance/performance.module:459
 1478+#: performance/performance.module:439
14821479 msgid "# Queries"
14831480 msgstr ""
14841481
1485 -#: performance/performance.module:460
 1482+#: performance/performance.module:440
14861483 msgid "Query Milliseconds"
14871484 msgstr ""
14881485
1489 -#: performance/performance.module:475
1490 -msgid "Yes"
1491 -msgstr ""
1492 -
1493 -#: performance/performance.module:475
1494 -msgid "No"
1495 -msgstr ""
1496 -
1497 -#: performance/performance.module:486
 1486+#: performance/performance.module:466
14981487 msgid "No log messages available."
14991488 msgstr ""
15001489
1501 -#: performance/performance.module:525
 1490+#: performance/performance.module:515
15021491 msgid "Confirm APC clear"
15031492 msgstr ""
15041493
1505 -#: performance/performance.module:529
 1494+#: performance/performance.module:519
15061495 msgid "Are you sure you want to clear the APC statistics for this site?"
15071496 msgstr ""
15081497
1509 -#: performance/performance.module:531
 1498+#: performance/performance.module:521
15101499 msgid "This will clear all the collected performance statistics stored in APC. This action cannot be undone."
15111500 msgstr ""
15121501
1513 -#: performance/performance.module:532
 1502+#: performance/performance.module:522
15141503 msgid "Clear"
15151504 msgstr ""
15161505
1517 -#: performance/performance.module:533
 1506+#: performance/performance.module:523
15181507 msgid "Cancel"
15191508 msgstr ""
15201509
1521 -#: performance/performance.module:549
 1510+#: performance/performance.module:528
 1511+msgid "APC is not enabled. Nothing to do ..."
 1512+msgstr ""
 1513+
 1514+#: performance/performance.module:545
15221515 msgid "Performance statistics collected in APC has been cleared."
15231516 msgstr ""
15241517
1525 -#: performance/performance.module:0
1526 -msgid "performance"
 1518+#: performance/performance.module:578
 1519+msgid "Performance logging is not enabled"
15271520 msgstr ""
15281521
 1522+#: performance/performance.module:16
 1523+msgid "Performance logging"
 1524+msgstr ""
 1525+
 1526+#: performance/performance.module:17
 1527+msgid "Logs performance data: page generation times and memory usage."
 1528+msgstr ""
 1529+
 1530+#: performance/performance.module:24
 1531+msgid "Clear APC"
 1532+msgstr ""
 1533+
 1534+#: performance/performance.module:25
 1535+msgid "Clears performance statistics collected in APC."
 1536+msgstr ""
 1537+
 1538+#: performance/performance.module:32
 1539+msgid "Performance Logs: Summary"
 1540+msgstr ""
 1541+
 1542+#: performance/performance.module:33
 1543+msgid "View summary performance logs: page generation times and memory usage."
 1544+msgstr ""
 1545+
 1546+#: performance/performance.module:39
 1547+msgid "Performance Logs: Details"
 1548+msgstr ""
 1549+
 1550+#: performance/performance.module:40
 1551+msgid "View detailed, per page, performance logs: page generation times and memory usage."
 1552+msgstr ""
 1553+
 1554+#: performance/performance.install:73
 1555+msgid "Performance logging details"
 1556+msgstr ""
 1557+
 1558+#: performance/performance.install:76
 1559+msgid "Performance detailed logging is !link. This can cause severe issues on live sites."
 1560+msgstr ""
 1561+
 1562+#: performance/performance.install:76;88
 1563+msgid "enabled"
 1564+msgstr ""
 1565+
 1566+#: performance/performance.install:85
 1567+msgid "Performance logging query"
 1568+msgstr ""
 1569+
 1570+#: performance/performance.install:88
 1571+msgid "Query timing and count logging is !link. This can cause memory size per page to be larger than normal."
 1572+msgstr ""
 1573+
 1574+#: performance/performance.install:95
 1575+msgid "Performance logging APC"
 1576+msgstr ""
 1577+
 1578+#: performance/performance.install:98
 1579+msgid "Performance logging on live web sites works best if APC is enabled."
 1580+msgstr ""
 1581+
 1582+#: performance/performance.install:105
 1583+msgid "Performance logging APC memory size"
 1584+msgstr ""
 1585+
 1586+#: performance/performance.install:108
 1587+msgid "APC has been configured for !size, which is less than the recommended 48 MB of memory. If you encounter errors when viewing the summary report, then try to increase that limit for APC."
 1588+msgstr ""
 1589+
15291590 #: performance/performance.info:0
 1591+msgid "Performance Logging"
 1592+msgstr ""
 1593+
 1594+#: performance/performance.info:0
15301595 msgid "Logs detailed and/or summary page generation time and memory consumption for page requests."
15311596 msgstr ""
15321597
Index: civicrm/trunk/sites/all/modules/devel/translations/hu.po
@@ -1,67 +1,1533 @@
2 -# Hungarian translation of Drupal devel.module
3 -# Copyright Weblabor Team <info [at] weblabor.hu>
 2+# Hungarian translation of Devel (6.x-1.18)
 3+# Copyright (c) 2009 by the Hungarian translation team
44 #
55 msgid ""
66 msgstr ""
7 -"Project-Id-Version: 1.28\n"
8 -"POT-Creation-Date: 2004-03-06 14:27+0100\n"
9 -"PO-Revision-Date: 2003-03-06 14:44+0100\n"
10 -"Last-Translator: Weblabor Team <info [at] weblabor.hu>\n"
11 -"Language-Team: hu\n"
 7+"Project-Id-Version: Devel (6.x-1.18)\n"
 8+"POT-Creation-Date: 2009-12-02 19:21+0000\n"
 9+"PO-Revision-Date: 2009-12-02 15:18+0000\n"
 10+"Language-Team: Hungarian\n"
1211 "MIME-Version: 1.0\n"
1312 "Content-Type: text/plain; charset=utf-8\n"
1413 "Content-Transfer-Encoding: 8bit\n"
15 -"Plural-Forms: nplurals=2; plural=n != 1;\n"
 14+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
1615
17 -#: devel.module:56
 16+msgid "delete"
 17+msgstr "törlés"
 18+msgid "Delete"
 19+msgstr "Törlés"
 20+msgid "Submit"
 21+msgstr "Beküldés"
 22+msgid "Operations"
 23+msgstr "Műveletek"
 24+msgid "Value"
 25+msgstr "Érték"
 26+msgid "Development"
 27+msgstr "Fejlesztés"
 28+msgid "yes"
 29+msgstr "igen"
 30+msgid "Cancel"
 31+msgstr "Mégsem"
 32+msgid "Disabled"
 33+msgstr "Tiltott"
 34+msgid "Enabled"
 35+msgstr "Engedélyezett"
 36+msgid "Yes"
 37+msgstr "Igen"
 38+msgid "No"
 39+msgstr "Nem"
 40+msgid "view"
 41+msgstr "megtekintés"
 42+msgid "Date"
 43+msgstr "Dátum"
 44+msgid "None"
 45+msgstr "Nincs"
 46+msgid "default"
 47+msgstr "alapértelmezés"
 48+msgid "No log messages available."
 49+msgstr "Nincs egyetlen rögzített esemény sem."
 50+msgid "Name"
 51+msgstr "Név"
 52+msgid "edit"
 53+msgstr "szerkesztés"
 54+msgid ""
 55+msgstr "-"
 56+msgid "username"
 57+msgstr "felhasználói név"
 58+msgid "Default"
 59+msgstr "Alapértelmezés"
 60+msgid "Length"
 61+msgstr "Hossz"
 62+msgid "Path"
 63+msgstr "Útvonal"
 64+msgid "#"
 65+msgstr "#"
 66+msgid "status"
 67+msgstr "állapot"
 68+msgid "no"
 69+msgstr "nem"
 70+msgid "Adjust module settings for devel module"
 71+msgstr "A <em>Devel</em> modul beállításai"
 72+msgid ""
 73+"Clear the database cache tables which store page, menu, node, and "
 74+"variable caches."
 75+msgstr ""
 76+"Az adatbázis oldal, menü, tartalom és változó gyorstárakat "
 77+"tartalmazó tábláinak ürítése."
 78+msgid ""
 79+"View a list of currently defined user functions with documentation "
 80+"links"
 81+msgstr ""
 82+"Lista a jelenlegi felhasználói függvényekről dokumentációs "
 83+"hivatkozásokkal."
 84+msgid "Re-run hook_install() for a given module"
 85+msgstr "hook_install() újrafuttatása egy megadott modulon"
 86+msgid "Resets all menu items to their default settings"
 87+msgstr ""
 88+"Minden menüelem visszaállítása az alapértelmezés szerinti "
 89+"értékre"
 90+msgid "Edit and delete site variables"
 91+msgstr "Oldal változóinak szerkesztése és törlése"
 92+msgid "List the contents of $_SESSION"
 93+msgstr "$_SESSION tartalmának listázása"
 94+msgid "php"
 95+msgstr "php"
 96+msgid "Session ID"
 97+msgstr "Munkamenet azonosító"
 98+msgid "Last access"
 99+msgstr "Utolsó aktivitás"
 100+msgid "Count"
 101+msgstr "Mennyiség"
 102+msgid "node"
 103+msgstr "tartalom"
 104+msgid "Now"
 105+msgstr "Most"
 106+msgid "Other"
 107+msgstr "Egyéb"
 108+msgid "access content"
 109+msgstr "tartalmak hozzáférése"
 110+msgid "Function"
 111+msgstr "Függvény"
 112+msgid "create"
 113+msgstr "létrehozás"
 114+msgid "Database queries"
 115+msgstr "Adatbázis lekérdezések"
 116+msgid "Switch"
 117+msgstr "Váltás"
 118+msgid "ago"
 119+msgstr "óta"
 120+msgid "Clear"
 121+msgstr "Törlés"
 122+msgid "update"
 123+msgstr "frissítés"
 124+msgid "Query"
 125+msgstr "Lekérdezés"
 126+msgid "NO"
 127+msgstr "NEM"
 128+msgid "YES"
 129+msgstr "IGEN"
 130+msgid "Do it!"
 131+msgstr "Gyerünk!"
 132+msgid "missing"
 133+msgstr "hiányzó"
 134+msgid "loading"
 135+msgstr "betöltés"
 136+msgid "Dev load"
 137+msgstr "Fejlesztő betöltés"
 138+msgid "Enter username"
 139+msgstr "Felhasználónév megadása"
 140+msgid "Username not found"
 141+msgstr "Nincs ilyen felhasználó"
 142+msgid "administer nodes"
 143+msgstr "tartalmak adminisztrációja"
 144+msgid "TRUE"
 145+msgstr "IGAZ"
 146+msgid "FALSE"
 147+msgstr "HAMIS"
 148+msgid "Users deleted."
 149+msgstr "A felhasználók törölve lettek."
 150+msgid "!num_users created."
 151+msgstr "!num_users létrejött."
 152+msgid "%num nodes created."
 153+msgstr "%num tartalom létre lett hozva."
 154+msgid "%num comments created."
 155+msgstr "%num hozzászólás jött létre."
 156+msgid "Deleted taxonomy."
 157+msgstr "Törölt taxonómiák."
 158+msgid "Created the following new vocabularies: !vocs"
 159+msgstr "A következő szótárak jöttek létre: !vocs"
 160+msgid "Created the following new terms: !terms"
 161+msgstr "A következő kifejezések jöttek létre: !terms"
 162+msgid "1 user"
 163+msgid_plural "@count users"
 164+msgstr[0] "1 felhasználó"
 165+msgstr[1] "@count felhasználó"
 166+msgid ""
 167+"This is a list of defined user functions that generated this current "
 168+"request lifecycle. Click on a function name to view its documention."
 169+msgstr ""
 170+"Ez egy - a jelenlegi lekérdezés életciklusában létrehozott - "
 171+"lista a felhasználói függvényekről. A függvény nevére "
 172+"kattintva tekinthető meg annak dokumentációja."
 173+msgid ""
 174+"Clicking a module's reinstall button will simulate "
 175+"uninstalling/installing a module. <code>hook_uninstall()</code> and "
 176+"<code>hook_install()</code> will be executed and the schema version "
 177+"number will be set to the most recent update number. You may have to "
 178+"manually clear out any existing tables first if the module doesn't "
 179+"implement <code>hook_uninstall()</code>."
 180+msgstr ""
 181+"Egy modul újratelepítés gombjára történő kattintás a modul "
 182+"eltávolítását és telepítését szimulálja. A "
 183+"<code>hook_uninstall()</code> és a <code>hook_install()</code> lesz "
 184+"végrehajtva, valamint a séma változatszáma a legutolsó "
 185+"frissítésére lesz beállítva. Először manuálisan kell törölni "
 186+"a meglévő táblákat, ha a modulban nincs megvalósítva a "
 187+"<code>hook_uninstall()</code> hurok."
 188+msgid "Here are the contents of your <code>$_SESSION</code> variable."
 189+msgstr "A <code>$_SESSION</code> változó tartalma."
 190+msgid ""
 191+"This is a list of the variables and their values currently stored in "
 192+"variables table and the <code>$conf</code> array of your settings.php "
 193+"file. These variables are usually accessed with <a "
 194+"href=\"@variable-get-doc\">variable_get()</a> and <a "
 195+"href=\"@variable-set-doc\">variable_set()</a>. Variables that are too "
 196+"long can slow down your pages."
 197+msgstr ""
 198+"Ez egy lista a jelenleg a változó táblában tárolt változókról "
 199+"és értékeikről, valamint a settings.php fájl <code>$conf</code> "
 200+"tömbjéről. Ezek a változók általában elérhetőek a <a "
 201+"href=\"@variable-get-doc\">variable_get()</a> és a <a "
 202+"href=\"@variable-set-doc\">variable_set()</a> függvényekkel. A túl "
 203+"hosszú változók lassíthatják az oldalt."
 204+msgid "Empty cache"
 205+msgstr "Gyorstár ürítése"
 206+msgid "Rebuild node_comment_statistics table"
 207+msgstr "A node_comment_statistics tábla újraépítése"
 208+msgid "Empty database queries"
 209+msgstr "Üres adatbázis lekérdezések"
 210+msgid "function reference"
 211+msgstr "függvény referencia"
 212+msgid "Reinstall modules"
 213+msgstr "Modulok újratelepítése"
 214+msgid "Reset menus"
 215+msgstr "Menük visszaállítása"
 216+msgid "Variable editor"
 217+msgstr "Változó szerkesztő"
 218+msgid "Session viewer"
 219+msgstr "Munkafolyamat nézőke"
 220+msgid "Switch user"
 221+msgstr "Felhasználóváltás"
 222+msgid "Devel"
 223+msgstr "Devel"
 224+msgid "Dev render"
 225+msgstr "Fejlesztő megjelenítés"
 226+msgid "Dev queries"
 227+msgstr "Dev lekérdezések"
 228+msgid "Dev items"
 229+msgstr "Dev elemek"
 230+msgid "Execute PHP"
 231+msgstr "PHP futtatása"
 232+msgid "Number of users to display in the list"
 233+msgstr "A listában megjelenített felhasználók száma"
 234+msgid "devel"
 235+msgstr "fejlesztő"
 236+msgid "Execute functions scheduled for cron runs."
 237+msgstr ""
 238+"Időzített feladatok futtatásakor tervezett műveletek "
 239+"végrehajtása."
 240+msgid "Execute php"
 241+msgstr "PHP futtatása"
 242+msgid "This user can switch back."
 243+msgstr "Ez a felhasználó vissza tud váltani."
 244+msgid "Caution: this user will be unable to switch back."
 245+msgstr "Vigyázat: ez a felhasználó nem fog tudni visszaváltani."
 246+msgid ""
 247+"<p>The user is being redirected to <a "
 248+"href=\"@destination\">@destination</a>.</p>"
 249+msgstr ""
 250+"<p>A felhasználó át lett irányítva ide: <a "
 251+"href=\"@destination\">@destination</a>.</p>"
 252+msgid ""
 253+" Queries taking longer than %threshold ms and queries executed more "
 254+"than once, are <span class=\"marker\">highlighted</span>."
 255+msgstr ""
 256+" %threshold ezredmásodpercnél hosszabb lekérdezések, és az "
 257+"egynél többször végrehajtott lekérdezések <span "
 258+"class=\"marker\">kiemelve</span> jelennek meg."
 259+msgid "Memory used at %type: %value MB"
 260+msgstr "%type memóriahasználata: %value MB"
18261 msgid "Query log"
19 -msgstr "SQL napló"
20 -
21 -#: devel.module:116
22 -msgid "Development helper functions"
23 -msgstr "Fejlesztést segítő eszközök"
24 -
25 -#: devel.module:123
26 -msgid "Display Page Timer"
27 -msgstr "Oldal idémérő megjelenítése"
28 -
29 -#: devel.module:123 ;124
30 -# msgid "Disabled"
31 -# msgstr ""
32 -
33 -#: devel.module:123 ;124
34 -# msgid "Enabled"
35 -# msgstr ""
36 -
37 -#: devel.module:123
38 -msgid "Display page execution time in the query log box."
39 -msgstr "Az oldal előállításához szükséges idő megjelenítése."
40 -
41 -#: devel.module:124
 262+msgstr "Lekérdezésnapló"
 263+msgid "Collect query info. If disabled, no query log functionality will work."
 264+msgstr ""
 265+"Lekérdezési információk gyűjtése. Tiltott állapotban a "
 266+"lekérdezések nem lesznek naplózva."
 267+msgid ""
 268+"You must disable or upgrade the php Zend Optimizer extension in order "
 269+"to enable this feature. The minimum required version is 3.2.8. Earlier "
 270+"versions of Zend Optimizer are <a href=\"!url\">horribly buggy and "
 271+"segfault your Apache</a> ... "
 272+msgstr ""
 273+"A modul engedélyezéséhez a <em>Zend Optimizer</em> PHP "
 274+"kiterjesztést le kell tiltani, vagy frissíteni kell azt. A "
 275+"szükséges változat legalább 3.2.8-as. A <em>Zend Optimizer</em> "
 276+"korábbi változatai <a href=\"!url\">nagyon hibásak és "
 277+"szegmentálási hibát okoznak az <em>Apache</em> "
 278+"webkiszolgálóban</a>. "
 279+msgid "Collect query info"
 280+msgstr "Lekérdezési információk gyűjtése"
42281 msgid "Display query log"
43 -msgstr "SQL napló megjelenítése"
44 -
45 -#: devel.module:124
 282+msgstr "Lekérdezésnapló megjelenítése"
46283 msgid ""
47 -"Display a log of the database queries needed to generate the current page, "
48 -"the and the execution time for each. Also, a queries which are repeated "
49 -"during a single page view are summed in the # column, and printed in red "
50 -"since they are candidates for caching."
 284+"Display a log of the database queries needed to generate the current "
 285+"page, and the execution time for each. Also, queries which are "
 286+"repeated during a single page view are summed in the # column, and "
 287+"printed in red since they are candidates for caching."
51288 msgstr ""
52 -"Az oldal előállításához szükséges adatbázis lekérdezések naplóját jeleníti "
53 -"meg azok futási idejével. Ismétlődő lekérdezések piros színben jelennek meg, "
54 -"hiszen éppen ezek azok, amelyek gyorsítótárazásra a legjobb jelöltek."
55 -
56 -#: devel.module:125
 289+"Megjelenít egy naplót az aktuális oldal létrehozásához "
 290+"szükséges adatbázis lekérdezésekről és azok végrehajtási "
 291+"idejejéről. Az oldal megtekintése folyamán megismételt "
 292+"lekérdezések a # oszlopban vannak összegezve, és vörössel ki "
 293+"vannak emelve, mivel ezek potenciálisan a gyorstárba kerülhetnek."
 294+msgid "Sort query log"
 295+msgstr "Lekérdezésnapló rendezése"
 296+msgid "by source"
 297+msgstr "végrehajtás szerint"
 298+msgid "by duration"
 299+msgstr "időtartam szerint"
57300 msgid ""
58 -"Enter an integer in milliseconds. Any query which takes longer than this "
59 -"many milliseconds will be highlighted in the query log. This indicates a "
60 -"possibliy inefficient query, or a candidate for caching."
 301+"The query table can be sorted in the order that the queries were "
 302+"executed or by descending duration."
61303 msgstr ""
62 -"Adj meg egy egész számot. Bármely lekérdezés, mely ennyi milliszekundumnál "
63 -"hosszabban fut kiemelt lesz az SQL naplóban. Ezek általában rossz "
64 -"hatékonyságú parancsok vagy gyorsítótárazható lekérdezések."
65 -
66 -#: devel.module:130
 304+"A lekérdezési tábla rendezhető a lekérdezés végrehajtási "
 305+"sorrendje vagy csökkenő sorrendben az időtartama szerint."
 306+msgid "Slow query highlighting"
 307+msgstr "Lassú lekérdezések kiemelése"
 308+msgid ""
 309+"Enter an integer in milliseconds. Any query which takes longer than "
 310+"this many milliseconds will be highlighted in the query log. This "
 311+"indicates a possibly inefficient query, or a candidate for caching."
 312+msgstr ""
 313+"Egy egész számot kell megadni ezredmásodpercnek. Minden "
 314+"lekérdezés, ami ennél tovább tart, ki lesz emelve a lekérdezések "
 315+"naplójában. A kiemelés egy nem megfelelő lekérdezés, vagy egy "
 316+"lehetséges gyorstárazás jele lehet."
 317+msgid "Store executed queries"
 318+msgstr "Végrehajtott lekérdezések tárolása"
 319+msgid ""
 320+"Store statistics about executed queries. See the devel_x tables. This "
 321+"feature is currently only available for the MySQL database backend."
 322+msgstr ""
 323+"Statisztika tárolása a végrehajtott lekérdezésekről a {devel_x} "
 324+"táblákban. Ez a lehetőség csak MySQL adatbáziskezelő esetén "
 325+"elérhető."
 326+msgid "Sampling interval"
 327+msgstr "Mintavételi időköz"
 328+msgid ""
 329+"If storing query statistics, only store every nth page view. 1 means "
 330+"every page view, 2 every second, and so on."
 331+msgstr ""
 332+"A lekérdezések statisztikáinak tárolásakor csak minden X. "
 333+"oldalmegtekintés lesz tárolva. Az 1 minden oldalmegtekintést "
 334+"jelent, a 2 minden másodikat, stb..."
 335+msgid "Display page timer"
 336+msgstr "Oldalidőzítő megjelenítése"
 337+msgid "Display page execution time in the query log box."
 338+msgstr ""
 339+"Oldal létrehozási idejének megjelenítése a lekérdezésnapló "
 340+"dobozában."
 341+msgid "Display memory usage"
 342+msgstr "Memóriahasználat megjelenítése"
 343+msgid ""
 344+"Display how much memory is used to generate the current page. This "
 345+"will show memory usage when devel_init() is called and when "
 346+"devel_exit() is called. PHP must have been compiled with the "
 347+"<em>--enable-memory-limit</em> configuration option for this feature "
 348+"to work."
 349+msgstr ""
 350+"Az aktuális oldal létrehozásához szükséges memória "
 351+"megjelenítése. Megmutatja a memóriahasználatot a devel_init() és "
 352+"a devel_exit() meghívásakor. Ennek a lehetőségnek a "
 353+"használatához a PHP-t az <em>--enable-memory-limit</em> "
 354+"konfigurációs lehetőséggel kell lefordítani."
 355+msgid "Display redirection page"
 356+msgstr "Átirányított oldalak megjelenítése"
 357+msgid ""
 358+"When a module executes drupal_goto(), the query log and other "
 359+"developer information is lost. Enabling this setting presents an "
 360+"intermediate page to developers so that the log can be examined before "
 361+"continuing to the destination page."
 362+msgstr ""
 363+"Amikor egy modul a drupal_goto() függvényt használja, a "
 364+"lekérdezések naplója és a többi fejlesztői információ "
 365+"elveszik. A beállítás engedélyezése egy közbeeső oldalt "
 366+"jelenít meg a fejlesztőknek, ahol meg lehet vizsgálni a naplót a "
 367+"cél oldal megjelenítése előtt."
 368+msgid "Display form element keys and weights"
 369+msgstr "Űrlapelemek kulcsainak és súlyainak megjelenítése"
 370+msgid ""
 371+"Form element names are needed for performing themeing or altering a "
 372+"form. Their weights determine the position of the element. Enabling "
 373+"this setting will show these keys and weights beside each form item."
 374+msgstr ""
 375+"Az űrlapelemek neveire sminkelésnél vagy egy űrlap "
 376+"módosításánál van szükség. A súly az elem helyét határozza "
 377+"meg. Ez a beállítás ezeket a kulcsokat és súlyokat jeleníti meg "
 378+"minden elem mellett."
 379+msgid "Error handler"
 380+msgstr "Hibakezelő"
 381+msgid "Standard drupal"
 382+msgstr "Szabványos Drupal"
 383+msgid "Backtrace"
 384+msgstr "Backtrace"
 385+msgid "Log only"
 386+msgstr "Csak naplózás"
 387+msgid "Other (!library)"
 388+msgstr "Más (!library)"
 389+msgid "SMTP library"
 390+msgstr "SMTP könyvtár"
 391+msgid "PHP code to execute"
 392+msgstr "Futtatandó PHP kód"
 393+msgid "Enter some code. Do not use <code>&lt;?php ?&gt;</code> tags."
 394+msgstr ""
 395+"Kód megadása. A <code>&lt;?php ?&gt;</code> jelölést nem szabad "
 396+"használni."
 397+msgid "Execute"
 398+msgstr "Végrehajt"
 399+msgid ""
 400+"Are you sure you want to reset all menu items to their default "
 401+"settings?"
 402+msgstr ""
 403+"Biztos, hogy visszaállítható minden menüelem az alapértelmezés "
 404+"szerinti beállításra?"
 405+msgid "Any custom additions or changes to the menu will be lost."
 406+msgstr "A menü minden egyéni beállítása és módosítása el fog veszni."
 407+msgid "Reset all"
 408+msgstr "Összes visszaállítása"
 409+msgid "Primary links"
 410+msgstr "Elsődleges hivatkozások"
 411+msgid "The menu items have been reset to their default settings."
 412+msgstr ""
 413+"A menüelemek alapértelmezés szerinti beállításai vissza lettek "
 414+"állítva."
 415+msgid "Reinstall @name module"
 416+msgstr "@name modul újratelepítése"
 417+msgid "Warning - will delete your module tables and variables."
 418+msgstr "Figyelmeztetés - törli a modul tábláit és változóit."
 419+msgid "Reinstalled the %name module."
 420+msgstr "%name modul újra lett telepítve."
 421+msgid "Old value"
 422+msgstr "Régi érték"
 423+msgid "New value"
 424+msgstr "Új érték"
 425+msgid ""
 426+"Sorry, complex variable types may not be edited yet. Use the "
 427+"<em>Execute PHP</em> block and the <a "
 428+"href=\"@variable-set-doc\">variable_set()</a> function."
 429+msgstr ""
 430+"Sajnos összetett változótípusokat még nem lehet szerkeszteni. A "
 431+"<em>PHP futtatása</em> blokkban a <a "
 432+"href=\"@variable-set-doc\">variable_set()</a> függvény használható "
 433+"erre a célra."
 434+msgid "Saved new value for %name"
 435+msgstr "%name új értékének mentése megtörtént"
 436+msgid "Session name"
 437+msgstr "Munkamenetnév"
 438+msgid " Page execution time was %time ms."
 439+msgstr " Az oldal létrehozásának ideje %time ms volt."
 440+msgid ""
 441+"Mail sent:<br />Key: %mailkey<br />To: %to<br />From: %from<br "
 442+"/>Subject: %subject<br />Body: %body<br /><br />Additional headers: "
 443+"!header"
 444+msgstr ""
 445+"Elküldött levél: <br />Kulcs: %mailkey<br />Címzett: %to<br "
 446+"/>Feladó: %from<br />Tárgy: %subject<br />Törzs: %body<br /><br "
 447+"/>További fejlécek: !header"
 448+msgid "Total (ms)"
 449+msgstr "Összes (ms)"
 450+msgid "Average (ms)"
 451+msgstr "Átlag (ms)"
 452+msgid "Std deviation (ms)"
 453+msgstr "Szokásos eltérés (ms)"
 454+msgid "Delete collected query statistics"
 455+msgstr "Összegyűjtött lekérdezési statisztikák törlése"
 456+msgid "Stored query statistics deleted."
 457+msgstr "A tárolt lekérdezési statisztikák törölve lettek."
 458+msgid "one variable deleted"
 459+msgid_plural "@count variables deleted"
 460+msgstr[0] "egy változó törölve lett"
 461+msgstr[1] "@count változó törölve lett"
67462 msgid "access devel information"
68 -msgstr "elérés: fejlesztői információk"
 463+msgstr "hozzáférés a fejlesztő információihoz"
 464+msgid "execute php code"
 465+msgstr "php kód futtatása"
 466+msgid "switch users"
 467+msgstr "felhasználóváltás"
 468+msgid "Generate users"
 469+msgstr "Felhasználók létrehozása"
 470+msgid "Generate a given number of users. Optionally delete current users."
 471+msgstr ""
 472+"Megadott számú felhasználó létrehozása. Lehetséges a létező "
 473+"felhasználók törlése is."
 474+msgid "Generate content"
 475+msgstr "Tartalom létrehozása"
 476+msgid ""
 477+"Generate a given number of nodes and comments. Optionally delete "
 478+"current items."
 479+msgstr ""
 480+"Megadott számú tartalom és hozzászólás létrehozása. "
 481+"Lehetséges a meglévő elemek törlése is."
 482+msgid "Generate categories"
 483+msgstr "Kategóriák létrehozása"
 484+msgid ""
 485+"Generate a given number of vocabularies and terms. Optionally delete "
 486+"current categories."
 487+msgstr ""
 488+"Megadott számú szótár és kifejezés létrehozása. Lehetséges a "
 489+"meglévő kategóriák törlése is."
 490+msgid "How many users would you like to generate?"
 491+msgstr "Létrehozandó felhasználók száma"
 492+msgid "Delete all users but user 1 before generating new users."
 493+msgstr ""
 494+"Az 1-es kivételével az összes felhasználó törlése az újak "
 495+"létrehozása előtt."
 496+msgid ""
 497+". <strong>Warning</strong>. This type contains CCK fields which won't "
 498+"be populated. See !url"
 499+msgstr ""
 500+". <strong>Figyelmeztetés</strong>. Ez a típus olyan CCK mezőket "
 501+"tartalmaz, melyeket nem lehet feltölteni. Lásd: !url"
 502+msgid "this CCK issue."
 503+msgstr "ez CCK probléma."
 504+msgid "Which node types do you want to create?"
 505+msgstr "Milyen tartalomtípusok legyenek létrehozva?"
 506+msgid ""
 507+"<strong>Delete existing content</strong> before generating new "
 508+"content."
 509+msgstr ""
 510+"<strong>Meglévő tartalmak törlése</strong> az újak létrehozása "
 511+"előtt."
 512+msgid "How many nodes would you like to generate?"
 513+msgstr "Létrehozandó tartalmak száma"
 514+msgid "How many comments would you like to generate?"
 515+msgstr "Hány hozzászólás legyen létrehozva?"
 516+msgid "Max word length of titles"
 517+msgstr "Címben szereplő szavak legnagyobb hossza"
 518+msgid "How many vocabularies would you like to generate?"
 519+msgstr "Létrehozandó szótárak száma"
 520+msgid "How many terms would you like to generate?"
 521+msgstr "Létrehozandó kifejezések száma"
 522+msgid "Max word length of term/vocab names"
 523+msgstr "Kifejezésekben/szótárakban szereplő szavak legnagyobb hossza"
 524+msgid "Delete existing terms and vocabularies before generating new content."
 525+msgstr ""
 526+"Meglévő kifejezések és szótárak törlése az újak létrehozása "
 527+"előtt."
 528+msgid "Development helper for node_access table"
 529+msgstr "Fejlesztői segítség a node_access táblához"
 530+msgid ""
 531+"This module helps in site development. Specifically, when an access "
 532+"control module is used to limit access to some or all nodes, this "
 533+"module provides some feedback showing the node_access table in the "
 534+"database."
 535+msgstr ""
 536+"Ez a modul az oldal fejlesztésében segít. Különösképp amikor "
 537+"egy hozzáférés vezérlő modult használunk arra, hogy korlátozzuk "
 538+"a hozzáféréseket néhány, vagy minden tartalomnál. Ez a modul "
 539+"visszajelzéseket ad, megmutatva az adatbázis node_access "
 540+"tábláját."
 541+msgid ""
 542+"The node_access table is one method Drupal provides to hide content "
 543+"from some users while displaying it to others. By default, Drupal "
 544+"shows all nodes to all users. There are a number of optional modules "
 545+"which may be installed to hide content from some users."
 546+msgstr ""
 547+"A node_access tábla egy módszer, amit a Drupal nyújt a tartalmak "
 548+"elrejtéséhez egyes felhasználók elől, míg azok másoknak "
 549+"megjelennek. Alapértelmezés szerint a Drupal minden tartalmat "
 550+"megjelenít minden felhasználónak. A tartalmak néhány "
 551+"felhasználó előli elrejtéséhez több lehetséges modult is lehet "
 552+"telepíteni."
 553+msgid ""
 554+"If you have not installed any of these modules, you really have no "
 555+"need for the devel_node_access module. This module is intended for "
 556+"use during development, so that developers and admins can confirm that "
 557+"the node_access table is working as expected. You probably do not "
 558+"want this module enabled on a production site."
 559+msgstr ""
 560+"Ha egyik ilyen modul sincs telepítve, akkor igazából nincs "
 561+"szükség a devel_node_access modulra. Ez a modul a fejlesztés során "
 562+"történő használatra van szánva, hogy a fejlesztők és az "
 563+"adminisztrátorok meggyőződhessenek arról, hogy a node_access "
 564+"tábla megfelelően működik. Egy éles webhelyen valószínűleg "
 565+"nincs szükség az engedélyezésére."
 566+msgid ""
 567+"This module provides two blocks. One called Devel Node Access by User "
 568+"is visible when a single node is shown on a page. This block shows "
 569+"which users can view, update or delete the node shown. Note that this "
 570+"block uses an inefficient algorithm to produce its output. You should "
 571+"only enable this block on sites with very few user accounts."
 572+msgstr ""
 573+"Ez a modul két blokkot biztosít. A <em>Devel</em> "
 574+"tartalomhozzáférés felhasználónként akkor látható amikor egy "
 575+"oldalon egy tartalom jelenik meg. Ez a blokk megmutatja, hogy mely "
 576+"felhasználók tekinthetik meg, módosíthatják vagy törölhetik a "
 577+"megjelenített tartalmat. Meg kell jegyezni, hogy ez a blokk egy nem "
 578+"túl hatékony algoritmust használ a kimenet előállítására. Csak "
 579+"olyan oldalon érdemes használni ahol kevés felhasználó van."
 580+msgid "node_access summary"
 581+msgstr "node_access összefoglaló"
 582+msgid "Access Granted to All Nodes (All Users)"
 583+msgstr ""
 584+"A hozzáférés engedélyezett minden tartalomhoz (minden "
 585+"felhasználó)"
 586+msgid ""
 587+"Your node_access table contains entries that may be granting all users "
 588+"access to all nodes. Depending on which access control module(s) you "
 589+"use, you may want to delete these entries. If you are not using an "
 590+"access control module, you should probably leave these entries as is."
 591+msgstr ""
 592+"A node_access tábla olyan bejegyzéseket tartalmaz, ami alapján "
 593+"minden felhasználó hozzáférhet az összes tartalomhoz. A használt "
 594+"hozzáférés vezérlő moduloktól függően ezeket a bejegyzéseket "
 595+"érdemes törölni. Ha nincs használatban hozzáférés vezérlő "
 596+"modul, akkor valószínűleg így lehet hagyni."
 597+msgid "realm"
 598+msgstr "tartomány"
 599+msgid "Legacy Nodes"
 600+msgstr "Örökölt tartalmak"
 601+msgid ""
 602+"You have !num nodes in your node table which are not represented in "
 603+"your node_access table. If you have an access control module "
 604+"installed, these nodes may be hidden from all users. This could be "
 605+"caused by publishing nodes before enabling the access control module. "
 606+"If this is the case, manually updating each node should add it to the "
 607+"node_access table and fix the problem."
 608+msgstr ""
 609+"!num olyan tartalom van a node táblában, ami nem szerepel a "
 610+"node_access táblában. Ha van telepített hozzáférés vezérlő "
 611+"modul, akkor ezek a tartalmak valószínűleg el vannak rejtve a "
 612+"felhasználók elől. Ezt az okozhatja, hogy a tartalom a "
 613+"hozzáférés vezérlő modul engedélyezése előtt lett "
 614+"közzétéve. Ebben az esetben a tartalmak manuális módosítása "
 615+"hozzáadja a node_access táblához, amivel megoldja ezt a "
 616+"problémát."
 617+msgid "All Nodes Represented"
 618+msgstr "Minden tartalom szerepel"
 619+msgid "All nodes are represented in the node_access table."
 620+msgstr "Minden tartalom szerepel a node_access táblában."
 621+msgid "Access Granted to All Nodes (Some Users)"
 622+msgstr ""
 623+"A hozzáférés engedélyezve lett minden tartalomhoz (néhány "
 624+"felhasználónak)"
 625+msgid ""
 626+"Your node_access table contains entries that may be granting some "
 627+"users access to all nodes. This may be perfectly normal, depending on "
 628+"which access control module(s) you use."
 629+msgstr ""
 630+"A node_access tábla olyan bejegyzéseket tartalmaz, ami alapján "
 631+"néhány felhasználó hozzáférhet az összes tartalomhoz. Ez "
 632+"teljesen normális lehet, függően a használt hozzáférés "
 633+"vezérlő moduloktól."
 634+msgid "Access Granted to Some Nodes"
 635+msgstr "A hozzáférés engedélyezve lett néhány tartalomhoz"
 636+msgid ""
 637+"The following realms appear to grant all users access to some specific "
 638+"nodes. This may be perfectly normal, if some of your content is "
 639+"available to the public."
 640+msgstr ""
 641+"A következő tartomány úgy tűnik, hogy néhány meghatározott "
 642+"tartalomhoz teljes felhasználói hozzáférést biztosít. Ez "
 643+"teljesen normális, ha a tartalom egy része nyilvánosan elérhető."
 644+msgid "public nodes"
 645+msgstr "nyilvános tartalmak"
 646+msgid "Public Nodes"
 647+msgstr "Nyilvános tartalmak"
 648+msgid "Summary by Realm"
 649+msgstr "Összegzés tartomány szerint"
 650+msgid "The following realms grant limited access to some specific nodes."
 651+msgstr ""
 652+"A következő tartomány korlátozott hozzáférést biztosít "
 653+"néhány meghatározott tartalomhoz."
 654+msgid "private nodes"
 655+msgstr "Privát tartalmak"
 656+msgid "Protected Nodes"
 657+msgstr "Védett tartalmak"
 658+msgid "Devel Node Access debug mode"
 659+msgstr "<em>Devel Node Access</em> hibakereső mód"
 660+msgid ""
 661+"Debug mode verifies the grants in the node_access table against those "
 662+"that would be set by running !Rebuild_permissions, and displays them "
 663+"all; this can cause considerable overhead."
 664+msgstr ""
 665+"A hibakereső mód ellenőrzi a node_access táblában szereplő "
 666+"jogokat azokkal szemben, amik a !Rebuild_permissions futtatásakor "
 667+"kerülnek beállításra, és megjeleníti azokat. Tekintélyes "
 668+"többletterhelést okoz."
 669+msgid "Devel Node Access"
 670+msgstr "Devel Node Access"
 671+msgid "Devel Node Access by User"
 672+msgstr "Devel Node Access felhasználónként"
 673+msgid "gid"
 674+msgstr "gid"
 675+msgid "explained"
 676+msgstr "magyarázat"
 677+msgid "ok"
 678+msgstr "rendben"
 679+msgid "Highest priority grant, in !na."
 680+msgstr "Legfontosabb, ebben: !na."
 681+msgid "ignored"
 682+msgstr "mellőzött"
 683+msgid "Lower priority grant, not in !na and thus ignored."
 684+msgstr "Kevésbé fontos, nincs !na értékben, ezért nincs figyelembevéve."
 685+msgid "empty"
 686+msgstr "üres"
 687+msgid "illegitimate"
 688+msgstr "jogtalan"
 689+msgid "Should NOT be in !na because of lower priority!"
 690+msgstr "Az alacsonyabb prioritás miatt NEM kell ebben lennie: !na"
 691+msgid "alien"
 692+msgstr "idegen"
 693+msgid "Should NOT be in !na because of unknown origin!"
 694+msgstr "Az ismeretlen származás miatt NEM kell ebben lennie: !na."
 695+msgid "prio"
 696+msgstr "prio"
 697+msgid "This entry grants access to this node to this user."
 698+msgstr ""
 699+"Ez a bejegyzés hozzéférést biztosít ehhez a tartalomhoz, ennek a "
 700+"felhasználónak."
 701+msgid ""
 702+"This user has the %administer_nodes permission and thus full access to "
 703+"all nodes."
 704+msgstr ""
 705+"Ez a felhasználó %administer_nodes jogosultsággal rendelkezik, "
 706+"ezért teljes hozzáférése van minden tartalomhoz."
 707+msgid "This user is granted %view access to node %nid !by_what"
 708+msgstr ""
 709+"Ez a felhasználó %view hozzáférési jogosultsággal rendelkezik a "
 710+"%nid tartalomhoz !by_what"
 711+msgid "by the %module module itself."
 712+msgstr "<em>%module</em> modul maga biztosítja."
 713+msgid "as author of the node."
 714+msgstr "mint a tartalom szerzője."
 715+msgid "node_access entries for nodes shown on this page"
 716+msgstr "node_access bejegyzések az oldalon látható tartalmakhoz"
 717+msgid "Access permissions by user"
 718+msgstr "Hozzáférési jogosultságok felhasználónként"
 719+msgid "Node Access: realm"
 720+msgstr "<em>Node Access</em>: tartomány"
 721+msgid "Node Access Realm"
 722+msgstr "<em>Node Access</em> tartomány"
 723+msgid "Node Access: Realm"
 724+msgstr "<em>Node Access</em>: Tartomány"
 725+msgid "Disabled query logging since devel module is disabled."
 726+msgstr ""
 727+"Lekérdezések naplózásának tiltása, amíg a <em>Devel</em> modul "
 728+"tiltott."
 729+msgid "Various blocks, pages, and functions for developers."
 730+msgstr "Különböző blokkok, oldalak és lehetőségek fejlesztőknek."
 731+msgid "Generator"
 732+msgstr "Generator"
 733+msgid "Generate dummy users, nodes, and taxonomy terms."
 734+msgstr ""
 735+"Ál-felhasználók, -tartalmak, és -taxonómia kifejezések "
 736+"létrehozása."
 737+msgid "Developer block and page illustrating relevant node_access records."
 738+msgstr ""
 739+"Fejlesztői blokk és oldal a lényeges node_access rekordok "
 740+"ábrázolásához."
 741+msgid "Assigned %n users to group %t."
 742+msgstr "%n felhasználó hozzá lett rendelve a %t csoporthoz."
 743+msgid "Y/m/d - G:i"
 744+msgstr "Y. m. d - G:i"
 745+msgid "Performance Logging"
 746+msgstr "Performance Logging"
 747+msgid "Logs performance data: page generation times and memory usage."
 748+msgstr ""
 749+"Teljesítmény adatokat naplóz: oldallétrehozási idők és "
 750+"memóriahasználat."
 751+msgid "Clear APC"
 752+msgstr "APC kiürítése"
 753+msgid "Clears performance statistics collected in APC."
 754+msgstr "Az APC-ben összegyűjtött teljesítménystatisztikák törlése."
 755+msgid "Performance Logs: Summary"
 756+msgstr "Teljesítménynapló összegzés"
 757+msgid "View summary performance logs: page generation times and memory usage."
 758+msgstr ""
 759+"Összegző teljesítménynaplók megtekintése: oldallétrehozási "
 760+"idők és memóriahasználat."
 761+msgid "Performance Logs: Details"
 762+msgstr "Teljesítménynapló részletek"
 763+msgid ""
 764+"View detailed, per page, performance logs: page generation times and "
 765+"memory usage."
 766+msgstr ""
 767+"Részletes, oldalankénti teljesítménynaplók megtekintése: "
 768+"oldallétrehozási idők és memóriahasználat."
 769+msgid ""
 770+"APC is enabled. It is reasonably safe to enable summary logging on "
 771+"live sites."
 772+msgstr ""
 773+"Az APC engedélyezve van. Az összegző naplózás engedélyezése "
 774+"éles webhelyeken biztonságos."
 775+msgid ""
 776+"APC is not enabled. It is <strong>not</strong> safe to enable summary "
 777+"logging to the database on live sites."
 778+msgstr ""
 779+"Az APC nem engedélyezett. Az összegző naplózás engedélyezése "
 780+"éles webhelyeken <strong>nem</strong> bizonságos."
 781+msgid "Logging mode"
 782+msgstr "Naplózási mód"
 783+msgid "Detailed logging"
 784+msgstr "Részletes naplózás"
 785+msgid ""
 786+"Log memory usage and page generation times for every page. This "
 787+"logging mode is <strong>not</strong> suitable for large sites, as it "
 788+"can degrade performance severly. It is intended for use by developers, "
 789+"or on a test copy of the site."
 790+msgstr ""
 791+"Memórihasználat és oldallétrehozási idők naplózása minden "
 792+"oldalon. Ez a naplózási mód nagyméretű oldalakhoz "
 793+"<strong>nem</strong> megfelelő, mivel komoly teljesítményromlást "
 794+"okoz. Fejlesztői, vagy a webhely egy tesztmásolatán történő "
 795+"használatra van szánva."
 796+msgid "Summary logging (DB)"
 797+msgstr "Összegző naplózás (DB)"
 798+msgid ""
 799+"Log summary data, such as average and maximum page generation times "
 800+"and memory usage to the database. This logging mode is "
 801+"<strong>not</strong> suitable for most live sites."
 802+msgstr ""
 803+"Összegző adatok naplózása, mint az átlagos és legnagyobb "
 804+"oldallétrehozási idők, valamint az adatbázis memóriahasználata. "
 805+"Ez a naplózási mód a legtöbb éles webhely számára "
 806+"<strong>nem</strong> ajánlott."
 807+msgid "Summary logging (APC)"
 808+msgstr "Összegző naplózás (APC)"
 809+msgid ""
 810+"Log summary data, such as average and maximum page generation times "
 811+"and memory usage to APC, if installed. The summary will be stored in "
 812+"APC memory, and hence there is no load on the database. This logging "
 813+"to APC is suitable for most live sites, unless the number of unique "
 814+"page accesses is excessively high."
 815+msgstr ""
 816+"Összegző adatok naplózása az APC-vel (ha telepítve van), mint az "
 817+"átlagos és legnagyobb oldallétrehozási idők valamint a "
 818+"memóriahasználat. Az összegzés az APC memóriában lesz tárolva, "
 819+"ezért nem terheli az adatbázist. Az APC-vel történő naplózás a "
 820+"legtöbb éles webhely számára megfelelő, kivéve, ha az egyedi "
 821+"oldallekérések száma szélsőségesen magas."
 822+msgid "Database Query timing and count"
 823+msgstr "Adatbázislekérdezés időmérő és számláló"
 824+msgid ""
 825+"Log database timing and count for each page. This is useful to know if "
 826+"the bottleneck is in excessive database query counts, or the time "
 827+"required to execute those queries is high. Please note that this will "
 828+"automatically be enabled and disabled in the settings of the devel "
 829+"module. Also note that enabling this will incurr some memory overhead "
 830+"as query times and the actual query strings are cached in memory as "
 831+"arrays."
 832+msgstr ""
 833+"Adatbázis időzítő és számláló naplózása minden oldalon. "
 834+"Hasznos, ha meg akarjuk tudni, hogy a szűk keresztmetszet az "
 835+"adatbázis lekérdezések nagy száma, vagy pedig a lekérdezésekre "
 836+"fordított idő nagysága. Meg kell jegyezni, hogy ez automatikusan "
 837+"engedélyezve, vagy tiltva lesz a <em>Devel</em> modul "
 838+"beállításaiban. Továbbá, az engedélyezés memória "
 839+"többletfelhasználással jár a lekérdezések alatt és a "
 840+"lekérdezések karaktersorozatai tömbként kerülnek gyorstárazásra "
 841+"a memóriában."
 842+msgid "Accesses threshold"
 843+msgstr "Hozzáférések küszöbértéke"
 844+msgid ""
 845+"When displaying the summary report and using APC, only pages with the "
 846+"number of accesses larger than the specified threshold will be shown. "
 847+"Also, when cron runs, pages with that number of accesses or less will "
 848+"be removed, so as not to overflow APC's shared memory. This is useful "
 849+"on a live site with a high volume of hits. On a development site, you "
 850+"probably want this set to 0, so you can see all pages."
 851+msgstr ""
 852+"Az összegző jelentés megtekintésekor és az APC használatakor "
 853+"csak azok az oldalak lesznek mutatva, melyek hozzáféréseinek száma "
 854+"nagyobb mint a megadott küszöbérték. Továbbá, az időzített "
 855+"feladatok végrehajtásakor az evvel azonos, vagy ennél kisebb "
 856+"számú hozzáféréssel rendelkező oldalak törölve lesznek, hogy "
 857+"az APC megosztott memóriája ne töltődjön túl. Hasznos a sok "
 858+"találattal rendelkező éles webhelyeken. Fejlesztői oldalon "
 859+"érdemes 0-ra állítani, hogy minden oldal megjelenjen."
 860+msgid "# accesses"
 861+msgstr "# hozzáférés"
 862+msgid "Max Memory (MB)"
 863+msgstr "Max memória (MB)"
 864+msgid "Avg Memory (MB)"
 865+msgstr "Átlag memória (MB)"
 866+msgid "Milliseconds (Max)"
 867+msgstr "Ezredmásodperc (Max)"
 868+msgid "Milliseconds (Avg)"
 869+msgstr "Ezredmásodperc (Átlag)"
 870+msgid "Query Millisecs (Max)"
 871+msgstr "Lekérdezés ezredmásodperc (Max)"
 872+msgid "Query Millisecs (Avg)"
 873+msgstr "Lekérdezés ezredmásodperc (Átlag)"
 874+msgid "Query Count (Max)"
 875+msgstr "Lekérdezés szám (Max)"
 876+msgid "Query Count (Avg)"
 877+msgstr "Lekérdezésszám (Átlag)"
 878+msgid "No statistics available yet."
 879+msgstr "Még nincs elérhető statisztika."
 880+msgid ""
 881+"Showing !shown paths with more than !threshold accesses, out of !total "
 882+"total paths."
 883+msgstr ""
 884+"!shown elérési út megmutatása, több mint !threshold "
 885+"hozzáféréssel, a !total elérési útból."
 886+msgid "Showing all !total paths."
 887+msgstr "!total elérési utat jelenít meg."
 888+msgid "Average memory per page: !mb_avg MB"
 889+msgstr "Átlagos memóriahasználat oldalanként: !mb_avg MB"
 890+msgid "Average milliseconds per page: !ms_avg"
 891+msgstr "Átlag futásidő oldalanként: !ms_avg ms"
 892+msgid "Total number of page accesses: !accesses"
 893+msgstr "Összes oldalletöltés: !accesses"
 894+msgid "First access: !access."
 895+msgstr "Első hozzáférés: !access."
 896+msgid "Last access: !access."
 897+msgstr "Utolsó hozzáférés: !access."
 898+msgid "Memory (MB)"
 899+msgstr "Memória (MB)"
 900+msgid "Milliseconds (Total)"
 901+msgstr "Ezredmásodpercek (összesen)"
 902+msgid "Anonymous?"
 903+msgstr "Anonymous?"
 904+msgid "# Queries"
 905+msgstr "# Lekérdezés"
 906+msgid "Query Milliseconds"
 907+msgstr "Lekérdezés időtartama ezredmásodpercekben"
 908+msgid "Confirm APC clear"
 909+msgstr "APC kiürítésének jóváhagyása"
 910+msgid "Are you sure you want to clear the APC statistics for this site?"
 911+msgstr "Biztosan törölhető ennek a webhelynek az APC statisztikája?"
 912+msgid ""
 913+"This will clear all the collected performance statistics stored in "
 914+"APC. This action cannot be undone."
 915+msgstr ""
 916+"Az összes APC gyorstárban tárolt teljesítménystatisztikát "
 917+"törli. Ez a művelet nem vonható vissza."
 918+msgid "Performance statistics collected in APC has been cleared."
 919+msgstr ""
 920+"Az APC által összegyűjtött teljesítménystatisztikák törölve "
 921+"lettek."
 922+msgid ""
 923+"Logs detailed and/or summary page generation time and memory "
 924+"consumption for page requests."
 925+msgstr ""
 926+"Részletes és/vagy összegző oldallétrehozási idő és "
 927+"memóriafelhasználás naplózása minden oldalbetöltésnél."
 928+msgid "The menu router has been rebuilt."
 929+msgstr "Az útvonalirányító újraépítése megtörtént."
 930+msgid "1 node created."
 931+msgid_plural "@count nodes created"
 932+msgstr[0] "1 tartalom létre lett hozva."
 933+msgstr[1] "@count tartalom létre lett hozva."
 934+msgid "Deleted one post"
 935+msgid_plural "Deleted @count posts"
 936+msgstr[0] "Egy beküldés törölve lett"
 937+msgstr[1] "@count beküldés törölve lett"
 938+msgid "Generating Content"
 939+msgstr "Tartalom létrehozása"
 940+msgid "Finished @num_nids nodes created successfully."
 941+msgstr "@num_nids tartalom sikeresen létre lett hozva."
 942+msgid "Finished with an error."
 943+msgstr "Hibával fejeződött be."
 944+msgid "Disable Theme developer"
 945+msgstr "Sminkfejlesztő tiltása"
 946+msgid "Enable Theme developer"
 947+msgstr "Sminkfejlesztő engedélyezése"
 948+msgid "Invalid file path"
 949+msgstr "Érvénytelen elérési út"
 950+msgid ""
 951+"The theme registry is being rebuilt on every request. Remember to <a "
 952+"href=\"!url\">turn off</a> this feature on production websites."
 953+msgstr ""
 954+"A smink gyorstár minden lekérésnél újra van építve. Éles "
 955+"oldalakon <a href=\"!url\">ki kell kapcsolni</a> ezt a lehetőséget."
 956+msgid "Caution: this user will be unable switch back."
 957+msgstr "Figyelem: ez a felhasználó nem képes visszaváltani."
 958+msgid "Enter function name for api lookup"
 959+msgstr "Függvénynév megadása az API-ban való kereséshez"
 960+msgid "Store statistics about executed queries. See the devel_x tables."
 961+msgstr ""
 962+"Statisztikákat tárol a végrehajtott lekérdezésekről. Lásd a "
 963+"devel_x táblákat."
 964+msgid "API Site"
 965+msgstr "API webhely"
 966+msgid ""
 967+"The base URL for your developer documentation links. You might change "
 968+"this if you run <a href=\"!url\">api.module</a> locally."
 969+msgstr ""
 970+"Fejlesztői dokumentáció oldalának webcíme. Megváltoztatható az "
 971+"<a href=\"!url\">api.module</a> helyi használatakor."
 972+msgid "Krumo display"
 973+msgstr "<em>Krumo</em> képernyő"
 974+msgid ""
 975+"Select a skin for your debug messages or select <em>disabled</em> to "
 976+"display object and array output in standard PHP format."
 977+msgstr ""
 978+"Smink kiválasztása a hibakeresési üzenetekhez, vagy "
 979+"<em>tiltás</em> az objektumok és tömbök megjelenítése standard "
 980+"PHP formátumban történő megjelenítéséhez."
 981+msgid "Rebuild the theme registry on every page load"
 982+msgstr "Smink gyorstár újraépítése minden oldalbetöltésnél"
 983+msgid ""
 984+"While creating new templates and theme_ overrides the theme registry "
 985+"needs to be rebuilt."
 986+msgstr ""
 987+"Új sablonok és theme_ felülírások létrehozásakor szükséges a "
 988+"smink gyorstár újraépítése."
 989+msgid ""
 990+"Uninstall and then install the selected modules. "
 991+"<code>hook_uninstall()</code> and <code>hook_install()</code> will be "
 992+"executed and the schema version number will be set to the most recent "
 993+"update number. You may have to manually clear out any existing tables "
 994+"first if the module doesn't implement <code>hook_uninstall()</code>."
 995+msgstr ""
 996+"A kiválasztott modulok törlése, majd telepítése. A "
 997+"<code>hook_uninstall()</code> és a <code>hook_install()</code> lesz "
 998+"végrehajtva és a séma változatszáma a legfrissebb frissítés "
 999+"szerint lesz beállítva. Először manuálisan törölni kell a "
 1000+"meglévő táblákat, ha a modulban nincs megvalósítva a "
 1001+"<code>hook_uninstall()</code> hurok."
 1002+msgid "Reinstall"
 1003+msgstr "Újratelepítés"
 1004+msgid "Uninstalled and installed the %name module."
 1005+msgstr "%name modul eltávolítása majd újratelepítése megtörtént."
 1006+msgid "Saved new value for %name."
 1007+msgstr "%name új értéke el lett mentve."
 1008+msgid "Display of !type !obj"
 1009+msgstr "!type !obj megjelenítése"
 1010+msgid "{empty}"
 1011+msgstr "{üres}"
 1012+msgid "The file could not be written."
 1013+msgstr "A fájl nem írható."
 1014+msgid "%message in %file on line %line."
 1015+msgstr "%message - %file - %line. sor."
 1016+msgid ""
 1017+"Mail sent:<br />Id: %mail_id<br />To: %to<br />From: %from<br "
 1018+"/>Language: %lang<br />Subject: %subject<br />Body: %body<br /><br "
 1019+"/>Additional headers: <br />!header"
 1020+msgstr ""
 1021+"Elküldött levél: <br />Azonosító: %mail_id<br />Címzett: %to<br "
 1022+"/>Feladó: %from<br />Nyelv: %lang<br />Tárgy: %subject<br />Törzs: "
 1023+"%body<br /><br />További fejlécek: <br />!header"
 1024+msgid "One variable deleted."
 1025+msgid_plural "@count variables deleted."
 1026+msgstr[0] "Egy változó törölve lett."
 1027+msgstr[1] "@count változó törölve lett."
 1028+msgid "1 character"
 1029+msgid_plural "@count characters"
 1030+msgstr[0] "1 karakter"
 1031+msgstr[1] "@count karakter"
 1032+msgid "1 element"
 1033+msgid_plural "@count elements"
 1034+msgstr[0] "1 elem"
 1035+msgstr[1] "@count elem"
 1036+msgid "display source code"
 1037+msgstr "forráskód megjelenítése"
 1038+msgid ""
 1039+"Clear the CSS cache and all database cache tables which store page, "
 1040+"node, theme and variable caches."
 1041+msgstr ""
 1042+"Az összes oldal, tartalom, smink és változó gyorstárat "
 1043+"tartalmazó adatbázis gyorstár és a CSS gyorstár kiürítése."
 1044+msgid "Function reference"
 1045+msgstr "Függvényreferencia"
 1046+msgid ""
 1047+"View a list of currently defined user functions with documentation "
 1048+"links."
 1049+msgstr ""
 1050+"Lista a jelenlegi felhasználói függvényekről dokumentációs "
 1051+"hivatkozásokkal."
 1052+msgid "Run hook_uninstall() and then hook_install() for a given module."
 1053+msgstr ""
 1054+"Az adott modul hook_uninstall() majd a hook_install() függvényének "
 1055+"futtatása."
 1056+msgid "foo"
 1057+msgstr "blabla"
 1058+msgid ""
 1059+"Quickly enable or disable theme developer module. Useful for removing "
 1060+"HTML cruft added by that module."
 1061+msgstr ""
 1062+"Sminkfejlesztő modul gyors engedélyezése és tiltása. A modul "
 1063+"által hozzáadott zavaró HTML kódok eltávolításához "
 1064+"használható."
 1065+msgid "Display the PHP code of any file in your Drupal installation"
 1066+msgstr ""
 1067+"A Drupal telepítésben található bármely fájl PHP kódjának "
 1068+"megjelenítése."
 1069+msgid "Rebuild menus"
 1070+msgstr "Menük újraépítése"
 1071+msgid ""
 1072+"Rebuild menu based on hook_menu() and revert any custom changes. All "
 1073+"menu items return to their default settings."
 1074+msgstr ""
 1075+"Menü újraépítése a hook_menu() alapján és az egyéni "
 1076+"módosítások törlése. Minden menüelem visszakapja az "
 1077+"alapértelmezés szerinti beállításait."
 1078+msgid "Edit and delete site variables."
 1079+msgstr "Oldal változóinak törlése és szerkesztése."
 1080+msgid "PHPinfo()"
 1081+msgstr "PHPinfo()"
 1082+msgid "View your server's PHP configuration"
 1083+msgstr "A kiszolgáló PHP beállításainak megtekintése"
 1084+msgid "Execute PHP Code"
 1085+msgstr "PHP kód futtatása"
 1086+msgid "Execute some PHP code"
 1087+msgstr "PHP kód futtatása"
 1088+msgid "Theme registry"
 1089+msgstr "Smink gyorstár"
 1090+msgid "View a list of available theme functions across the whole site."
 1091+msgstr ""
 1092+"A webhelyen rendelkezésre álló összes sminkfüggvény listájának "
 1093+"megtekintése."
 1094+msgid "Hook_elements()"
 1095+msgstr "Hook_elements()"
 1096+msgid "View the active form/render elements for this site."
 1097+msgstr "A webhely aktív űrlap/környezet elemeinek megtekintése."
 1098+msgid "List the contents of $_SESSION."
 1099+msgstr "$_SESSION tartalmának listázása."
 1100+msgid "Devel settings"
 1101+msgstr "Fejlesztő beállításai"
 1102+msgid "Delete all users (except user id 1) before generating new users."
 1103+msgstr ""
 1104+"Az összes felhasználó törlése (az 1-es kivételével) az újak "
 1105+"létrehozása előtt."
 1106+msgid "How old should user accounts be?"
 1107+msgstr "Mikortól jöhetnek létre a felhasználói profilok"
 1108+msgid ""
 1109+"User ages will be distributed randomly from the current time, back to "
 1110+"the selected time."
 1111+msgstr ""
 1112+"A felhasználók csatlakozási ideje véletlenszerűen lesz elosztva "
 1113+"az aktuális időpont és a kiválasztott időtartam között."
 1114+msgid ""
 1115+". This type contains CCK fields which will only be populated by fields "
 1116+"that implement the content_generate hook."
 1117+msgstr ""
 1118+". Ez a típus olyan CCK mezőket tartalmaz, melyek csak akkor "
 1119+"tölthetőek fel, ha megvalósítják a content_generate hurkot."
 1120+msgid ""
 1121+"<strong>Delete all content</strong> in these node types before "
 1122+"generating new content."
 1123+msgstr ""
 1124+"<strong>Minden tartalom törlése</strong> ebből a típusból az új "
 1125+"tartalmak létrehozása előtt."
 1126+msgid "How far back in time should the nodes be dated?"
 1127+msgstr "Mikortól jöhetnek létre a tartalmak"
 1128+msgid ""
 1129+"Node creation dates will be distributed randomly from the current "
 1130+"time, back to the selected time."
 1131+msgstr ""
 1132+"A tartalmak létrehozási dátuma véletlenszerűen lesz elosztva az "
 1133+"aktuális, és a kiválasztott időpont között."
 1134+msgid "Maximum number of generated comments per node"
 1135+msgstr ""
 1136+"A létrehozott hozzászólások számának felső határa "
 1137+"tartalmanként"
 1138+msgid "You must also enable comments for the node types you are generating."
 1139+msgstr ""
 1140+"Engedélyezni kell a hozzászólásokat a létrehozni kívánt "
 1141+"tartalomtípusoknál."
 1142+msgid "Requires upload.module"
 1143+msgstr "<em>Upload</em> modult igényel"
 1144+msgid "Add an upload to each node"
 1145+msgstr "Feltöltés hozzáadása minden tartalomhoz"
 1146+msgid "Requires taxonomy.module"
 1147+msgstr "<em>Taxonomy</em> modult igényel"
 1148+msgid "Add taxonomy terms to each node."
 1149+msgstr "Taxonómia kifejezések hozzáadása minden tartalomhoz"
 1150+msgid "Requires path.module"
 1151+msgstr "<em>Path</em> modult igényel"
 1152+msgid "Add an url alias for each node."
 1153+msgstr "Webcímálnév hozzáadása minden tartalomhoz"
 1154+msgid "Generate node view statistics (node_counter table)."
 1155+msgstr ""
 1156+"Tartalom megtekintési statisztikák létrehozása (node_counter "
 1157+"tábla)"
 1158+msgid "Generate items"
 1159+msgstr "Elemek létrehozása"
 1160+msgid "Populate your database with dummy items."
 1161+msgstr "Az adatbázis feltöltése ál-elemekkel."
 1162+msgid ""
 1163+"Default grant supplied by core in the absence of any other non-empty "
 1164+"grants, in !na."
 1165+msgstr ""
 1166+"Az alaprendszer által biztosított jogok bármilyen más, nem üres "
 1167+"jogok hiányában, itt: !na."
 1168+msgid ""
 1169+"Does not grant any access, but could block lower priority grants; not "
 1170+"in !na."
 1171+msgstr ""
 1172+"Nem biztosít hozzáférést, de blokkolhatja az alacsonyabb "
 1173+"prioritású jogokat. Nincs itt: !na."
 1174+msgid "Should be in !na but isn't!"
 1175+msgstr "Itt kellene lennie, de nincs: !na."
 1176+msgid "Node_access summary"
 1177+msgstr "Node_access összefoglaló"
 1178+msgid "Devel node access"
 1179+msgstr "<em>Devel</em> tartalomhozzáférés"
 1180+msgid ""
 1181+"Helper pages and blocks to assist Drupal developers and admins with "
 1182+"node_access. The devel blocks can be managed via the Blocks "
 1183+"(admin/build/block) page."
 1184+msgstr ""
 1185+"A Drupal fejlesztőket és adminisztrátorokat a node_access "
 1186+"használatában segítő oldalak és blokkok. A <em>Devel</em> "
 1187+"blokkokat a Blokkok (admin/build/block) oldalon lehet beállítani."
 1188+msgid "Devel Themer module %action."
 1189+msgstr "<em>Devel Themer</em> modul %action."
 1190+msgid "Display theme log"
 1191+msgstr "Sminknapló megjelenítése"
 1192+msgid ""
 1193+"Display the list of theme templates and theme functions which could "
 1194+"have been be used for a given page. The one that was actually used is "
 1195+"bolded. This is the same data as the represented in the popup, but all "
 1196+"calls are listed in chronological order and can alternately be sorted "
 1197+"by time."
 1198+msgstr ""
 1199+"Megjelenít egy listát azokról a sminksablonokról és "
 1200+"sminkfüggvényekről, melyek egy adott oldalon használatban "
 1201+"lehetnek. Az aktuálisan használt vastag betűvel van kiemelve. Ez "
 1202+"ugyanaz az adat, mint ami a felugró ablakban jelenik meg, de minden "
 1203+"hívás időrendben van listázva, és idő szerint rendezhető."
 1204+msgid "Themer info"
 1205+msgstr "Sminkinformáció"
 1206+msgid "Parents: "
 1207+msgstr "Szülők: "
 1208+msgid "Function called: "
 1209+msgstr "Hívott függvények: "
 1210+msgid "Template called: "
 1211+msgstr "Hívott sablonok: "
 1212+msgid "Candidate template files: "
 1213+msgstr "Lehetséges sablonfájlok: "
 1214+msgid "Preprocess functions: "
 1215+msgstr "Előfeldolgozó függvények: "
 1216+msgid "Candidate function names: "
 1217+msgstr "Lehetséges függvények nevei: "
 1218+msgid "link to Drupal API documentation"
 1219+msgstr "hivatkozás a Drupal API dokumentációra"
 1220+msgid "link to source code"
 1221+msgstr "hivatkozás a forráskódra"
 1222+msgid "Function Arguments"
 1223+msgstr "Függvényargumentumok"
 1224+msgid "Template Variables"
 1225+msgstr "Sablon változói"
 1226+msgid "File used: "
 1227+msgstr "Használt fájl: "
 1228+msgid "Duration: "
 1229+msgstr "Időtartam: "
 1230+msgid "Drupal Themer Information"
 1231+msgstr "<em>Drupal Themer</em> információ"
 1232+msgid ""
 1233+"Click on any element to see information about the Drupal theme "
 1234+"function or template that created it."
 1235+msgstr ""
 1236+"Bármelyik elemre kattintva információ jeleníthető meg az elemet "
 1237+"létrehozó Drupal sminkfüggvényről vagy sablonról."
 1238+msgid "Theme Developer"
 1239+msgstr "Sminkfejlesztő"
 1240+msgid "Display or hide the textual template log"
 1241+msgstr "Szöveges sablonnapló megjelenítése vagy elrejtése"
 1242+msgid "Devel Themer Enable"
 1243+msgstr "<em>Devel Themer</em> engedélyezése"
 1244+msgid "Theme Development Enable"
 1245+msgstr "Sminkfejlesztés engedélyezése"
 1246+msgid "Theme Development AJAX variables"
 1247+msgstr "Sminkfejlesztés AJAX változók"
 1248+msgid "Development links."
 1249+msgstr "Fejlesztési hivatkozások."
 1250+msgid "Zend Optimizer"
 1251+msgstr "Zend Optimizer"
 1252+msgid ""
 1253+"You must disable the Zend Optimizer php extension in order to enable "
 1254+"this module. Zend Optimizer is <a href=\"!url\">horribly buggy and "
 1255+"segfaults your Apache</a>."
 1256+msgstr ""
 1257+"A modul engedélyezéséhez a <em>Zend Optimizer</em> PHP "
 1258+"kiterjesztést le kell tiltani. A <em>Zend Optimizer</em> <a "
 1259+"href=\"!url\">szörnyű szegmentálási hibákat okoz az Apache "
 1260+"webkiszolgálóban</a>."
 1261+msgid "Devel generate"
 1262+msgstr "Devel generate"
 1263+msgid "Theme developer"
 1264+msgstr "Sminkfejlesztő"
 1265+msgid "Essential theme API information for theme developers"
 1266+msgstr "Alapvető smink API információk sminkfejlesztőknek"
 1267+msgid ""
 1268+"Log database query timing and query count for each page. This is "
 1269+"useful to know if the bottleneck is in excessive database query "
 1270+"counts, or the time required to execute those queries is high. "
 1271+"Enabling this will incurr some memory overhead as query times and the "
 1272+"actual query strings are cached in memory as arrays for each page, "
 1273+"hence skewing the overall page memory reported. Please note that this "
 1274+"settings is enabled or disabled in the settings of the devel module."
 1275+msgstr ""
 1276+"Adatbázis lekérdezés időzítő és lekérdezés számláló "
 1277+"naplózása minden oldalon. Hasznos, ha meg akarjuk tudni, hogy a "
 1278+"szűk keresztmetszet az adatbázis lekérdezések nagy száma, vagy "
 1279+"pedig a lekérdezésekre fordított idő nagysága. Az engedélyezés "
 1280+"memória többletfelhasználással jár a lekérdezések alatt, "
 1281+"illetve a lekérdezések karaktersorozatai tömbként kerülnek "
 1282+"gyorstárazásra a memóriában, ezért az oldalról jelentett teljes "
 1283+"memóriafelhasználás értéke torzíthat. Ezt a lehetőséget a "
 1284+"<em>Devel</em> modul beállításainál lehet engedélyezni vagy "
 1285+"tiltani."
 1286+msgid "APC is not enabled. Nothing to do ..."
 1287+msgstr "Az APC nincs bekapcsolva. Nincs teendő ..."
 1288+msgid "Performance logging is not enabled"
 1289+msgstr "A teljesítmény naplózása nincs engedélyezve"
 1290+msgid "Performance logging"
 1291+msgstr "Teljesítmény naplózása"
 1292+msgid "Performance logging details"
 1293+msgstr "Teljesítménynaplózás részletei"
 1294+msgid "Performance logging query"
 1295+msgstr "Teljesítménynaplózás lekérdezések"
 1296+msgid "Performance logging APC"
 1297+msgstr "Teljesítménynaplózás APC"
 1298+msgid "Performance logging on live web sites works best if APC is enabled."
 1299+msgstr ""
 1300+"A teljesítménynaplózás éles webhelyeken jobban működik, ha az "
 1301+"APC engedélyezve van."
 1302+msgid "Performance logging APC memory size"
 1303+msgstr "Teljesítménynaplózás APC memóriamérete"
 1304+msgid ""
 1305+"APC has been configured for !size, which is less than the recommended "
 1306+"48 MB of memory. If you encounter errors when viewing the summary "
 1307+"report, then try to increase that limit for APC."
 1308+msgstr ""
 1309+"Az APC beállításaiban !size szerepel, ami kisebb, mint a javasolt "
 1310+"48MB. Ha az összegző jelentés megtekintésekor hibák történnek, "
 1311+"akkor meg kell növelni az APC méretét."
 1312+msgid ""
 1313+"This issue may be masked by the one above, so look into the former "
 1314+"first."
 1315+msgstr ""
 1316+"Ezt a probléma egy fentebb lévő következménye is lehet, tehát "
 1317+"először a korábbit kell vizsgálni."
 1318+msgid "unexpected"
 1319+msgstr "váratlan"
 1320+msgid ""
 1321+"The 0/0/all/... grant applies to all nodes and all users -- usually it "
 1322+"should not be present if any node access module is active!"
 1323+msgstr ""
 1324+"A 0/0/all/... jog minden tartalomra és felhasználóra alkalmazva "
 1325+"van. Ennek általában nem kellene megjelennie, ha egy "
 1326+"tartalomhozzáférési modul használatban van."
 1327+msgid ""
 1328+"You have errors in your !na table! You may be able to fix these for "
 1329+"now by running !Rebuild_permissions, but this is likely to destroy the "
 1330+"evidence and make it impossible to identify the underlying issues. If "
 1331+"you don't fix those, the errors will probably come back again. <br /> "
 1332+"DON'T do this just yet if you intend to ask for help with this "
 1333+"situation."
 1334+msgstr ""
 1335+"!na táblában hibák vannak! Lehet, hogy most ki lehet javítani a "
 1336+"!Rebuild_permissions futtatásával, de ez valószínűleg "
 1337+"megsemmisíti a bizonyítékot és lehetetlenné teszi az alapvető "
 1338+"probléma azonosítását. Ha nincs kijavítva, akkor a hibák "
 1339+"valószínűleg újból jelentkeznek. <br /> További "
 1340+"segítségkérés előtt NEM érdemes javítani a hibákat."
 1341+msgid ""
 1342+"by one or more of the following grants (if they are present above): "
 1343+"!list"
 1344+msgstr ""
 1345+"a következő egy vagy több jog által (ha feljebb jelen vannak): "
 1346+"!list"
 1347+msgid ""
 1348+"Choose an error handler for your site. <em>Backtrace</em> prints nice "
 1349+"debug information when an error is noticed, and you <a "
 1350+"href=\"@choose\">choose to show errors on screen</a>. "
 1351+"<strong>Backtrace requires the <a href=\"@krumo\">krumo "
 1352+"library</a></strong>. <em>None</em> is a good option when stepping "
 1353+"through the site in your debugger."
 1354+msgstr ""
 1355+"Az oldal hibakezelőjének kiválasztása. A <em>Backtrace</em> hiba "
 1356+"észlelésénél szép kimenetet ad és <a "
 1357+"href=\"@choose\">kiválasztható a hibák képernyőre írása</a>. A "
 1358+"<strong><em>Backtrace</em> használatához szükséges a <a "
 1359+"href=\"@krumo\"><em>Krumo</em> könyvtár</a></strong>. A „Nincs” "
 1360+"egy jó választás saját hibakereső használatakor."
 1361+msgid ""
 1362+"Helper functions, pages, and blocks to assist Drupal developers. The "
 1363+"devel blocks can be managed via the <a href=\"!block\">block "
 1364+"administration</a> page."
 1365+msgstr ""
 1366+"Drupal fejlesztőket segítő funkciók, oldalak és blokkok. A "
 1367+"<em>Devel</em> blokkokat a <a href=\"!block\">blokk "
 1368+"adminisztrációs</a> oldalon lehet beállítani."
 1369+msgid ""
 1370+"The second block provided by this module shows the entries in the "
 1371+"node_access table for any nodes shown on the current page. You can "
 1372+"enable the debug mode on the <a href=\"@settings_page\">settings "
 1373+"page</a> to display much more information, but this can cause "
 1374+"considerable overhead. Because the tables shown are wide, it is "
 1375+"recommended to enable the blocks in the page footer rather than a "
 1376+"sidebar."
 1377+msgstr ""
 1378+"A modul által biztosított második blokk a node_acess táblának "
 1379+"bármely, az aktuális oldalon megjelenő tartalomra vonatkozó "
 1380+"bejegyzését mutatja meg. Több információ megjelenítéséhez "
 1381+"lehetőség van a hibakereső mód engedélyezésére a <a "
 1382+"href=\"@settings_page\">beállítások oldalon</a>, de ez tekintélyes "
 1383+"többletterhelést okoz. Mivel a táblák megjelenítése széles, "
 1384+"javasolt a blokkot az oldalsávok helyett a láblécben "
 1385+"megjeleníteni."
 1386+msgid ""
 1387+"This module also provides a <a href=\"@summary_page\">summary page</a> "
 1388+"which shows general information about your node_access table. If you "
 1389+"have installed the Views module, you may browse node_access by realm."
 1390+msgstr ""
 1391+"Ez a modul biztosít még egy <a href=\"@summary_page\">összefoglaló "
 1392+"oldalt</a>, ahol általános információk találhatóak a node_access "
 1393+"tábláról. Ha a <em>Views</em> modul telepítve van, akkor a "
 1394+"node_access tábla tartományok szerint is böngészhető."
 1395+msgid ""
 1396+"For per-user access permissions enable the second DNA <a "
 1397+"href=\"@block\">block</a>."
 1398+msgstr ""
 1399+"A felhasználók szerinti hozzáférési jogosultságokhoz "
 1400+"engedélyezni kell a második DNA <a href=\"@block\">blokkot</a>."
 1401+msgid "To see more details enable <a href=\"@debug_mode\">debug mode</a>."
 1402+msgstr ""
 1403+"További részletek megtekintéséhez engedélyezni kell a <a "
 1404+"href=\"@debug_mode\">hibakereső módot</a>."
 1405+msgid ""
 1406+"!username has the %administer_nodes permission and thus full access to "
 1407+"all nodes."
 1408+msgstr ""
 1409+"!username %administer_nodes jogosultsággal rendelkezik, így teljes "
 1410+"hozzáférése van minden tartalomhoz."
 1411+msgid "These are the grants returned by hook_node_grants() for this user."
 1412+msgstr ""
 1413+"A hook_node_grants() ezeket a jogokat adta vissza ennek a "
 1414+"felhasználónak."
 1415+msgid "!username can use these grants (if they are present above): !list"
 1416+msgstr ""
 1417+"!username ezeket a jogokat használhatja (ha fentebb megjelennek): "
 1418+"!list"
 1419+msgid "!username has the following access"
 1420+msgstr "!username felhasználónak a következő hozzáférése van"
 1421+msgid "%op:"
 1422+msgstr "%op:"
 1423+msgid "to node !nid:"
 1424+msgstr "!nid tartalomhoz:"
 1425+msgid "Create nodes of the '@Node_type' type."
 1426+msgstr "„@Node_type” típusú tartalmak létrehozása."
 1427+msgid ""
 1428+"(This table lists the most-recently active users. Hover your mouse "
 1429+"over each result to see the reason for allowing or denying access.)"
 1430+msgstr ""
 1431+"(Ez a tábla a legutóbbi aktív felhasználókat listázza ki. Az "
 1432+"egeret az eredmények fölé mozgatva megtekinthető a hozzéférés "
 1433+"engedélyezésének vagy tiltásának oka.)"
 1434+msgid "Unable to load the node &ndash; this should never happen!"
 1435+msgstr "Nem lehet betölteni a tartalmat &ndash;! Ez sosem történhet meg!"
 1436+msgid "!NO: input format"
 1437+msgstr "!NO: beviteli forma"
 1438+msgid ""
 1439+"!NO: This user is not allowed to use the input format '!format' "
 1440+"(!fid)."
 1441+msgstr ""
 1442+"!NO: ez a felhasználó nem használhatja a „!format” (!fid) "
 1443+"beviteli formát."
 1444+msgid "!YES: administer nodes"
 1445+msgstr "!YES: tartalmak adminisztrációja"
 1446+msgid ""
 1447+"!YES: This user has the '!administer_nodes' permission and may do "
 1448+"everything with nodes."
 1449+msgstr ""
 1450+"!YES: ez a felhasználó „!administer_nodes” jogosultsággal "
 1451+"rendelkezik és mindent megtehet a tartalmakkal."
 1452+msgid "!NO: access content"
 1453+msgstr "!NO: tartalom elérése"
 1454+msgid ""
 1455+"!NO: This user does not have the '!access_content' permission and is "
 1456+"denied doing anything with content."
 1457+msgstr ""
 1458+"!NO: ez a felhasználó nem rendelkezik „!access_content” joggal, "
 1459+"ezért tiltott, hogy bármit is tegyen a tartalommal."
 1460+msgid "!YES: by the module"
 1461+msgstr "!YES: a modul által"
 1462+msgid ""
 1463+"!YES: The '@module' module (which defines the '@content_type' content "
 1464+"type) allows this, probably based on some permission."
 1465+msgstr ""
 1466+"!YES: a „@module” modul (ami meghatározza a „@content_type” "
 1467+"tartalomtípust) engedélyezi, valószínűleg egyéb engedélyek "
 1468+"alapján."
 1469+msgid "!NO: by the module"
 1470+msgstr "!NO: a modul által"
 1471+msgid ""
 1472+"!NO: The '@module' module (which defines the '@content_type' content "
 1473+"type) denies this."
 1474+msgstr ""
 1475+"!NO: a @module modul (ami meghatározza a „@content_type” "
 1476+"tartalomtípust) tiltja."
 1477+msgid "!YES: node access"
 1478+msgstr "!YES: Node access"
 1479+msgid "!YES: Node access allows this."
 1480+msgstr "!YES: Node access engedélyezi."
 1481+msgid "!NO: node access"
 1482+msgstr "!NO: node access"
 1483+msgid "!NO: Node access denies this."
 1484+msgstr "!NO: a Node access tiltja."
 1485+msgid "!YES: own node"
 1486+msgstr "!YES: saját tartalom"
 1487+msgid "!YES: The user may view his/her own node."
 1488+msgstr "!YES: a felhasználó megtekintheti a saját tartalmát."
 1489+msgid "!NO: no reason"
 1490+msgstr "!NO: nincs ok."
 1491+msgid "!NO: None of the checks resulted in allowing this, so it's denied."
 1492+msgstr "!NO: Az ellenőrzések egyike sem engedélyezi, tehát tiltott."
 1493+msgid "Node access was not checked because the node is not published."
 1494+msgstr ""
 1495+"A tartalom hozzáférése nem volt ellenőrizve, mert a tartalom "
 1496+"rejtett."
 1497+msgid "This is most likely due to a missing permission."
 1498+msgstr "Ez általában egy hiányzó jogosultság miatt következik be."
 1499+msgid "view devel_node_access information"
 1500+msgstr "devel_node_access információinak megtekintése"
 1501+msgid ""
 1502+"Summary performance log is not enabled. Go to the <a "
 1503+"href=\"@link\">settings page</a> to enable it."
 1504+msgstr ""
 1505+"Az összegző teljesítménynaplózás nincs engedélyezve. A <a "
 1506+"href=\"@link\">beállítások oldalon</a> lehet engedélyezni."
 1507+msgid ""
 1508+"Detail performance log is not enabled. Go to the <a "
 1509+"href=\"@link\">settings page</a> to enable it."
 1510+msgstr ""
 1511+"A részletes teljesítménynaplózás nincs engedélyezve. A <a "
 1512+"href=\"@link\">beállítások oldalon</a> lehet engedélyezni."
 1513+msgid ""
 1514+"Performance detailed logging is <a href=\"@link\">enabled</a>. This "
 1515+"can cause severe issues on live sites."
 1516+msgstr ""
 1517+"Az összegző teljesítménynaplózás <a "
 1518+"href=\"@link\">engedélyezve</a> van. Éles webhelyeken komoly "
 1519+"problémákat okozhat."
 1520+msgid ""
 1521+"Query timing and count logging is <a href=\"@link\">enabled</a>. This "
 1522+"can cause memory size per page to be larger than normal."
 1523+msgstr ""
 1524+"A lekérdezés időzítő és a számláló naplózása <a "
 1525+"href=\"@link\">engedélyezve van</a>. Emiatt az oldalanként "
 1526+"felhasznált memória mérete nagyobb lehet a szokásosnál."
 1527+msgid ""
 1528+"Helper functions, pages, and blocks to assist Drupal developers. The "
 1529+"devel blocks can be managed via the <a href=\"@block\">block "
 1530+"administration</a> page."
 1531+msgstr ""
 1532+"Drupal fejlesztőket segítő funkciók, oldalak és blokkok. A "
 1533+"<em>Devel</em> blokkokat a <a href=\"!block\">blokk "
 1534+"adminisztrációs</a> oldalon lehet beállítani."
Index: civicrm/trunk/sites/all/modules/devel/devel_generate.inc
@@ -1,5 +1,5 @@
22 <?php
3 -// $Id: devel_generate.inc,v 1.14.2.14 2009/06/09 03:22:39 weitzman Exp $
 3+// $Id: devel_generate.inc,v 1.14.2.22 2010/07/21 15:12:58 weitzman Exp $
44 // If not in 'safe mode', increase the maximum execution time:
55 if (!ini_get('safe_mode')) {
66 set_time_limit(240);
@@ -32,7 +32,8 @@
3333 $pass = md5(user_password());
3434 $mail = $name .'@'. $url['host'];
3535 $now = time();
36 - db_query("INSERT INTO {users} (name, pass, mail, status, created, access) VALUES ('%s', '%s', '%s', %d, %d, %d)", $name, $pass, $mail, 1, $now, $now);
 36+ $created = ($age ? $now - $age : $now - 1);
 37+ $account = user_save(NULL, array('name' => $name, 'pass' => $pass, 'mail' => $mail, 'status' =>'1', 'created' => $created, 'access' => $now, 'devel_generate' => TRUE));
3738 }
3839 drupal_set_message(t('!num_users created.', array('!num_users' => format_plural($num, '1 user', '@count users'))));
3940 }
@@ -245,6 +246,8 @@
246247
247248 // Return an $options array of content types.
248249 function devel_generate_content_types() {
 250+ $options = array();
 251+
249252 if (module_exists('content')) {
250253 $types = content_types();
251254 foreach ($types as $type) {
@@ -355,12 +358,7 @@
356359 $sql = "SELECT tid FROM {term_data} WHERE vid = %d ORDER BY RAND()";
357360 $result = db_query_range($sql, $vocab->vid, 0, 5);
358361 while ($row = db_fetch_object($result)) {
359 - if ($vocab->tags) {
360 - $node->taxonomy['tags'][] = $row->tid;
361 - }
362 - else {
363 - $node->taxonomy[$row->tid] = $row->tid;
364 - }
 362+ $node->taxonomy[] = $row->tid;
365363 if (!$vocab->multiple) {
366364 break;
367365 }
@@ -391,12 +389,11 @@
392390 $file->description = 'b log.png was here';
393391 $file->filesize = $size;
394392 $file->weight = mt_rand(0,10);
 393+ $file->new = TRUE;
395394
396395 // If we made it this far it's safe to record this file in the database.
397396 db_query("INSERT INTO {files} (uid, filename, filepath, filemime, filesize, status, timestamp) VALUES (%d, '%s', '%s', '%s', %d, %d, %d)", $node->uid, $file->filename, $file->filepath, $file->filemime, $file->filesize, FILE_STATUS_TEMPORARY, time());
398397 $file->fid = db_last_insert_id('files', 'fid');
399 -
400 - $_SESSION['upload_files'][$file->fid] = $file;
401398 $node->files[$file->fid] = $file;
402399 }
403400
@@ -457,15 +454,18 @@
458455 // Insert new data:
459456 $node->type = array_rand($results['node_types']);
460457 module_load_include('inc', 'node', 'node.pages');
 458+ $type = node_get_types('type', $node->type);
461459 node_object_prepare($node);
462460 $users = $results['users'];
463461 $node->uid = $users[array_rand($users)];
464462
465463 $node->title = devel_create_greeking(mt_rand(1, $results['title_length']), TRUE);
466 - $node->body = "node ($node->type) - ". devel_create_content();
467 - $node->teaser = node_teaser($node->body);
468 - $node->filter = variable_get('filter_default_format', 1);
469 - $node->format = FILTER_FORMAT_DEFAULT;
 464+ if ($type->has_body) {
 465+ $node->body = "node ($node->type) - ". devel_create_content();
 466+ $node->teaser = node_teaser($node->body);
 467+ $node->filter = variable_get('filter_default_format', 1);
 468+ $node->format = FILTER_FORMAT_DEFAULT;
 469+ }
470470 $node->language = '';
471471 $node->revision = mt_rand(0,1);
472472 $node->promote = mt_rand(0, 1);
@@ -473,7 +473,6 @@
474474
475475 // A flag to let hook_nodeapi() implementations know that this is a generated node.
476476 $node->devel_generate = $results;
477 -
478477 // See devel_generate_nodeapi() for actions that happen before and after this save.
479478 node_save($node);
480479
@@ -482,7 +481,6 @@
483482 function devel_generate_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
484483 if (isset($node->devel_generate)) {
485484 $results = $node->devel_generate;
486 -
487485 switch ($op) {
488486 // Modules that want to affect generated nodes may implement hook_nodeapi('presave'). See OG module or CCK.
489487 // A few implementations live here because core doesn't do bulk node generation.
@@ -494,6 +492,10 @@
495493 if ($results['add_terms']) {
496494 devel_generate_add_terms($node);
497495 }
 496+ if (isset($results['add_language']) && variable_get('language_content_type_' . $node->type, 0)) {
 497+ $languages = array_keys($results['add_language']);
 498+ $node->language = $languages[array_rand($languages)];
 499+ }
498500 break;
499501 case 'insert':
500502 if ($results['max_comments']) {
Index: civicrm/trunk/sites/all/modules/devel/devel.module
@@ -1,5 +1,5 @@
22 <?php
3 -// $Id: devel.module,v 1.258.2.55 2009/08/19 20:16:09 weitzman Exp $
 3+// $Id: devel.module,v 1.258.2.75 2010/08/02 15:04:55 weitzman Exp $
44
55 // This module holds functions useful for Drupal development.
66 // Please contribute!
@@ -73,15 +73,6 @@
7474 'access arguments' => array('access devel information'),
7575 'menu_name' => 'devel',
7676 );
77 - $items['devel/devel_themer'] = array(
78 - 'title callback' => 'devel_menu_title_theme_developer',
79 - 'title arguments' => array(NULL),
80 - 'title' => 'foo',
81 - 'description' => 'Quickly enable or disable theme developer module. Useful for removing HTML cruft added by that module.',
82 - 'page callback' => 'devel_devel_themer_toggle',
83 - 'access arguments' => array('access devel information'),
84 - 'menu_name' => 'devel',
85 - );
8677 $items['devel/source'] = array(
8778 'title' => 'Display the PHP code of any file in your Drupal installation',
8879 'page callback' => 'devel_display_source',
@@ -120,13 +111,6 @@
121112 'access arguments' => array('execute php code'),
122113 'menu_name' => 'devel',
123114 );
124 - $items['devel/theme/registry'] = array(
125 - 'title' => 'Theme registry',
126 - 'description' => 'View a list of available theme functions across the whole site.',
127 - 'page callback' => 'devel_theme_registry',
128 - 'access arguments' => array('access devel information'),
129 - 'menu_name' => 'devel',
130 - );
131115 $items['devel/elements'] = array(
132116 'title' => 'Hook_elements()',
133117 'description' => 'View the active form/render elements for this site.',
@@ -158,14 +142,14 @@
159143 );
160144 $items['admin/settings/devel'] = array(
161145 'title' => 'Devel settings',
162 - 'description' => 'Helper functions, pages, and blocks to assist Drupal developers. The devel blocks can be managed via the !block page.', array('!block' => l(t('block administration'), 'admin/build/block')),
 146+ 'description' => 'Helper functions, pages, and blocks to assist Drupal developers. The devel blocks can be managed via the <a href="https://www.mediawiki.org/admin/build/block">block administration</a> page.',
163147 'page callback' => 'drupal_get_form',
164148 'page arguments' => array('devel_admin_settings'),
165149 'access arguments' => array('administer site configuration'),
166150 'menu_name' => 'devel',
167151 );
168 - $items['node/%node/devel/load'] = array(
169 - 'title' => 'Dev load',
 152+ $items['node/%node/devel'] = array(
 153+ 'title' => 'Devel',
170154 'page callback' => 'devel_load_object',
171155 'page arguments' => array(1, 'node'),
172156 'access callback' => 'user_access',
@@ -173,6 +157,15 @@
174158 'type' => MENU_LOCAL_TASK,
175159 'weight' => 100,
176160 );
 161+ $items['node/%node/devel/load'] = array(
 162+ 'title' => 'Dev load',
 163+ 'page callback' => 'devel_load_object',
 164+ 'page arguments' => array(1, 'node'),
 165+ 'access callback' => 'user_access',
 166+ 'access arguments' => array('access devel information'),
 167+ 'type' => MENU_DEFAULT_LOCAL_TASK,
 168+ 'weight' => 0,
 169+ );
177170 $items['node/%node/devel/render'] = array(
178171 'title' => 'Dev render',
179172 'page callback' => 'devel_render_object',
@@ -180,6 +173,15 @@
181174 'access callback' => 'user_access',
182175 'access arguments' => array('access devel information'),
183176 'type' => MENU_LOCAL_TASK,
 177+ 'weight' => 10,
 178+ );
 179+ $items['user/%user/devel'] = array(
 180+ 'title' => 'Devel',
 181+ 'page callback' => 'devel_load_object',
 182+ 'page arguments' => array(1, 'user'),
 183+ 'access callback' => 'user_access',
 184+ 'access arguments' => array('access devel information'),
 185+ 'type' => MENU_LOCAL_TASK,
184186 'weight' => 100,
185187 );
186188 $items['user/%user/devel/load'] = array(
@@ -188,8 +190,8 @@
189191 'page arguments' => array(1, 'user'),
190192 'access callback' => 'user_access',
191193 'access arguments' => array('access devel information'),
192 - 'type' => MENU_LOCAL_TASK,
193 - 'weight' => 100,
 194+ 'type' => MENU_DEFAULT_LOCAL_TASK,
 195+ 'weight' => 0,
194196 );
195197 $items['user/%user/devel/render'] = array(
196198 'title' => 'Dev render',
@@ -198,14 +200,21 @@
199201 'access callback' => 'user_access',
200202 'access arguments' => array('access devel information'),
201203 'type' => MENU_LOCAL_TASK,
202 - 'weight' => 100,
 204+ 'weight' => 10,
203205 );
 206+ $items['devel/theme/registry'] = array(
 207+ 'title' => 'Theme registry',
 208+ 'description' => 'View a list of available theme functions across the whole site.',
 209+ 'page callback' => 'devel_theme_registry',
 210+ 'access arguments' => array('access devel information'),
 211+ 'menu_name' => 'devel',
 212+ );
204213
205214 return $items;
206215 }
207216
208217 function devel_menu_need_destination() {
209 - return array('devel/cache/clear', 'devel/devel_themer', 'devel/reinstall', 'devel/menu/reset', 'admin/og/og', 'devel/variable', 'admin/reports/status/run-cron');
 218+ return array('devel/cache/clear', 'devel/reinstall', 'devel/menu/reset', 'admin/og/og', 'devel/variable', 'admin/reports/status/run-cron');
210219 }
211220
212221 /**
@@ -234,34 +243,6 @@
235244 return user_access('access devel information') && variable_get('devel_store_queries', 0);
236245 }
237246
238 -function devel_menu_title_theme_developer() {
239 - if (module_exists('devel_themer')) {
240 - return t('Disable Theme developer');
241 - }
242 - else {
243 - return t('Enable Theme developer');
244 - }
245 -}
246 -
247 -function devel_devel_themer_toggle() {
248 - if (module_exists('devel_themer')) {
249 - module_disable(array('devel_themer'));
250 - }
251 - else {
252 - // Sanity check in case the devel_themer schema is not installed.
253 - include_once('./includes/install.inc');
254 - if (drupal_get_schema_versions('devel_themer') == FALSE) {
255 - drupal_install_modules(array('devel_themer'));
256 - }
257 - else {
258 - module_enable(array('devel_themer'));
259 - }
260 - }
261 - drupal_rebuild_theme_registry();
262 - menu_rebuild();
263 - drupal_goto();
264 -}
265 -
266247 /**
267248 * Implementation of hook_theme()
268249 */
@@ -346,11 +327,19 @@
347328 devel_set_handler(variable_get('devel_error_handler', DEVEL_ERROR_HANDLER_STANDARD));
348329 // We want to include the class early so that anyone may call krumo() as needed. See http://krumo.sourceforge.net/
349330 has_krumo();
350 - // See http://www.firephp.org/
351 - $path = './'. drupal_get_path('module', 'devel') .'/FirePHPCore/lib/FirePHPCore/fb.php';
352 - if (file_exists($path)) {
353 - include_once $path;
 331+
 332+ // See http://www.firephp.org/.
 333+ // Support Libraries API - http://drupal.org/project/libraries
 334+ if (module_exists('libraries')) {
 335+ $path = libraries_get_path('FirePHPCore') . '/lib/FirePHPCore/';
354336 }
 337+ else {
 338+ $path = './'. drupal_get_path('module', 'devel') .'/FirePHPCore/lib/FirePHPCore/';
 339+ }
 340+ if (file_exists($path .'fb.php')) {
 341+ include_once $path .'fb.php';
 342+ include_once $path .'FirePHP.class.php';
 343+ }
355344 // Add CSS for query log if should be displayed.
356345 if (variable_get('devel_query_display', 0)) {
357346 drupal_add_css(drupal_get_path('module', 'devel') .'/devel.css');
@@ -402,7 +391,50 @@
403392 }
404393 }
405394
 395+/**
 396+ * Calls dfb() to output a backtrace.
 397+ */
 398+function dfbt($label) {
 399+ dfb($label, FirePHP::TRACE);
 400+}
406401
 402+/**
 403+ * Implements hook_watchdog().
 404+ */
 405+function devel_watchdog(array $log_entry) {
 406+ if (class_exists('FirePHP')) {
 407+ switch ($log_entry['severity']) {
 408+ case WATCHDOG_EMERG:
 409+ case WATCHDOG_ALERT:
 410+ case WATCHDOG_CRITICAL:
 411+ case WATCHDOG_ERROR:
 412+ $type = FirePHP::ERROR;
 413+ break;
 414+ case WATCHDOG_WARNING:
 415+ $type = FirePHP::WARN;
 416+ break;
 417+ case WATCHDOG_NOTICE:
 418+ case WATCHDOG_INFO:
 419+ $type = FirePHP::INFO;
 420+ break;
 421+ case WATCHDOG_DEBUG:
 422+ DEFAULT:
 423+ $type = FirePHP::LOG;
 424+ }
 425+ }
 426+ else {
 427+ $type = 'watchdog';
 428+ }
 429+ $watchdog = array(
 430+ 'type' => $log_entry['type'],
 431+ 'message' => decode_entities(strtr($log_entry['message'], (array)$log_entry['variables'])),
 432+ );
 433+ if (isset($log_entry['link'])) {
 434+ $watchdog['link'] = $log_entry['link'];
 435+ }
 436+ dfb($watchdog, $type);
 437+}
 438+
407439 function devel_set_handler($handler) {
408440 switch ($handler) {
409441 case DEVEL_ERROR_HANDLER_STANDARD:
@@ -507,7 +539,11 @@
508540 if ($op == 'list') {
509541 $blocks[0]['info'] = t('Switch user');
510542 // $blocks[1]['info'] = t('Devel');
511 - $blocks[2]['info'] = t('Execute PHP');
 543+ $blocks[2] = array(
 544+ 'info' => t('Execute PHP'),
 545+ 'visibility' => 0,
 546+ 'pages' => 'devel/php',
 547+ );
512548 return $blocks;
513549 }
514550 elseif ($op == 'configure' && $delta == 0) {
@@ -534,8 +570,7 @@
535571 break;
536572 case 2:
537573 if (user_access('execute php code')) {
538 - $block['subject'] = t('Execute PHP');
539 - $block['content'] = drupal_get_form('devel_execute_form');
 574+ $block['content'] = drupal_get_form('devel_execute_block_form');
540575 }
541576 break;
542577 }
@@ -545,7 +580,7 @@
546581
547582 function devel_block_switch_user() {
548583 $links = devel_switch_user_list();
549 - if (!empty($links)) {
 584+ if (!empty($links) || user_access('switch users')) {
550585 $block['subject'] = t('Switch user');
551586 $block['content'] = theme('links', $links);
552587 $block['content'] .= drupal_get_form('devel_switch_user_form');
@@ -641,7 +676,7 @@
642677 $version = $form_state['values']['version'];
643678 $function = $form_state['values']['function'];
644679 $api = variable_get('devel_api_url', 'api.drupal.org');
645 - $form_state['redirect'] = "http://$api/api/$version/function/$function";
 680+ $form_state['redirect'] = "http://$api/api/function/$function/$version";
646681 }
647682
648683 function devel_switch_user_form_validate($form, &$form_state) {
@@ -654,37 +689,6 @@
655690 $form_state['redirect'] = 'devel/switch/'. $form_state['values']['username'];
656691 }
657692
658 -
659 -/**
660 - * TODO: i switched params as per http://drupal.org/node/144132#form-alter but needs work still
661 - * Implementation of hook_form_alter().
662 - */
663 -function devel_form_alter(&$form, $form_state, $form_id, $key_in = NULL) {
664 - if (user_access('access devel information') && variable_get('devel_form_weights', 0)) {
665 - $children = element_children($form);
666 - if (empty($children)) {
667 - if (isset($form['#type']) && !in_array($form['#type'], array('value', 'hidden'))) {
668 - if (!isset($form['#title'])) {
669 - $form['#title'] = '';
670 - }
671 - $form['#title'] .= " (key=$key_in, weight=". (isset($form['#weight']) ? $form['#weight'] : 0) .')';
672 - }
673 - }
674 - else {
675 - foreach (element_children($form) as $key) {
676 - // We need to add the weight to fieldsets.
677 - if (element_children($form[$key])) { // Which are a container of others.
678 - if (!isset($form[$key]['#title'])) {
679 - $form[$key]['#title'] = '';
680 - }
681 - $form[$key]['#title'] .= " (key=$key, weight=". (isset($form[$key]['#weight']) ? $form[$key]['#weight'] : 0) .')';
682 - }
683 - devel_form_alter($form[$key], $form_state, $form_id, $key);
684 - }
685 - }
686 - }
687 -}
688 -
689693 function devel_exit($destination = NULL) {
690694 global $user;
691695
@@ -813,7 +817,7 @@
814818 $qids[$hash] = db_result(devel_db_query("SELECT qid FROM {devel_queries} WHERE hash = '%s'", $hash));
815819 if (!$qids[$hash]) {
816820 devel_db_query("INSERT INTO {devel_queries} (query, function, hash) VALUES ('%s', '%s', '%s')", $query, $function, $hash);
817 - db_last_insert_id('devel_queries', 'qid');
 821+ $qids[$hash] = db_last_insert_id('devel_queries', 'qid');
818822 }
819823 }
820824 $fields[] = "(%d, '%f')";
@@ -861,7 +865,7 @@
862866 sort($ufunctions);
863867 $api = variable_get('devel_api_url', 'api.drupal.org');
864868 foreach ($ufunctions as $function) {
865 - $links[] = l($function, "http://$api/api/$version/function/$function");
 869+ $links[] = l($function, "http://$api/api/function/$function/$version");
866870 }
867871 return theme('item_list', $links);
868872 }
@@ -986,22 +990,17 @@
987991 '#default_value' => variable_get('devel_redirect_page', 0),
988992 '#description' => t('When a module executes drupal_goto(), the query log and other developer information is lost. Enabling this setting presents an intermediate page to developers so that the log can be examined before continuing to the destination page.'),
989993 );
990 - $form['devel_form_weights'] = array('#type' => 'checkbox',
991 - '#title' => t('Display form element keys and weights'),
992 - '#default_value' => variable_get('devel_form_weights', 0),
993 - '#description' => t('Form element names are needed for performing themeing or altering a form. Their weights determine the position of the element. Enabling this setting will show these keys and weights beside each form item.'),
994 - );
995994 $form['devel_error_handler'] = array('#type' => 'radios',
996995 '#title' => t('Error handler'),
997996 '#default_value' => variable_get('devel_error_handler', DEVEL_ERROR_HANDLER_STANDARD),
998997 '#options' => array(DEVEL_ERROR_HANDLER_NONE => t('None'), DEVEL_ERROR_HANDLER_STANDARD => t('Standard drupal')),
999 - '#description' => t('Choose an error handler for your site. <em>Backtrace</em> prints nice debug information when an error is noticed, and you !choose. <strong>Backtrace requires the <a href="!krumo">krumo library</a></strong>. <em>None</em> is a good option when stepping through the site in your debugger.', array('!krumo' => url("http://krumo.sourceforge.net"), '!choose' => l(t('choose to show errors on screen'), 'admin/settings/error-reporting'))),
 998+ '#description' => t('Choose an error handler for your site. <em>Backtrace</em> prints nice debug information when an error is noticed, and you <a href="@choose">choose to show errors on screen</a>. <strong>Backtrace requires the <a href="@krumo">krumo library</a></strong>. <em>None</em> is a good option when stepping through the site in your debugger.', array('@krumo' => url('http://krumo.sourceforge.net'), '@choose' => url('admin/settings/error-reporting'))),
1000999 );
10011000 if (has_krumo()) {
10021001 $form['devel_error_handler']['#options'][DEVEL_ERROR_HANDLER_BACKTRACE] = t('Backtrace');
10031002 }
10041003
1005 - $options = drupal_map_assoc(array('default', 'blue', 'green', 'orange', 'schablon.com', 'disabled'));
 1004+ $options = drupal_map_assoc(array('default', 'blue', 'green', 'orange', 'white', 'disabled'));
10061005 $form['devel_krumo_skin'] = array(
10071006 '#type' => 'radios',
10081007 '#title' => t('Krumo display'),
@@ -1053,13 +1052,27 @@
10541053 /**
10551054 * Generates the execute block form.
10561055 */
 1056+function devel_execute_block_form() {
 1057+ $form['execute'] = array(
 1058+ '#type' => 'fieldset',
 1059+ '#title' => t('Execute PHP Code'),
 1060+ '#collapsible' => TRUE,
 1061+ '#collapsed' => (!isset($_POST['code'])),
 1062+ );
 1063+ $form['#submit'] = array('devel_execute_form_submit');
 1064+ return array_merge_recursive($form, devel_execute_form());
 1065+}
 1066+
 1067+/**
 1068+ * Generates the execute form.
 1069+ */
10571070 function devel_execute_form() {
1058 - $form['code'] = array(
 1071+ $form['execute']['code'] = array(
10591072 '#type' => 'textarea',
10601073 '#title' => t('PHP code to execute'),
1061 - '#description' => t('Enter some code. Do not use <code>&lt;?php ?&gt;</code> tags.')
 1074+ '#description' => t('Enter some code. Do not use <code>&lt;?php ?&gt;</code> tags.'),
10621075 );
1063 - $form['op'] = array('#type' => 'submit', '#value' => t('Execute'));
 1076+ $form['execute']['op'] = array('#type' => 'submit', '#value' => t('Execute'));
10641077 $form['#redirect'] = FALSE;
10651078 $form['#skip_duplicate_check'] = TRUE;
10661079 return $form;
@@ -1213,7 +1226,9 @@
12141227 function devel_variable_form_submit($form, &$form_state) {
12151228 $deletes = array_filter($form_state['values']['variables']);
12161229 array_walk($deletes, 'variable_del');
1217 - drupal_set_message(format_plural(count($deletes), 'One variable deleted.', '@count variables deleted.'));
 1230+ if (count($deletes)) {
 1231+ drupal_set_message(format_plural(count($deletes), 'One variable deleted.', '@count variables deleted.'));
 1232+ }
12181233 }
12191234
12201235 function devel_variable_edit($form_state, $name) {
@@ -1246,7 +1261,7 @@
12471262 '#value' => t('Sorry, complex variable types may not be edited yet. Use the <em>Execute PHP</em> block and the <a href="@variable-set-doc">variable_set()</a> function.', array('@variable-set-doc' => "http://$api/api/HEAD/function/variable_set"))
12481263 );
12491264 }
1250 - drupal_set_title($name);
 1265+ drupal_set_title(check_plain($name));
12511266 return $form;
12521267 }
12531268
@@ -1682,7 +1697,7 @@
16831698 // We do not want to krumo() strings and integers and such
16841699 if (merits_krumo($input)) {
16851700 if (user_access('access devel information')) {
1686 - return $return ? krumo_ob($input) : krumo($input);
 1701+ return $return ? (isset($name) ? $name .' => ' : '') . krumo_ob($input) : krumo($input);
16871702 }
16881703 }
16891704 else {
@@ -1847,9 +1862,7 @@
18481863 }
18491864
18501865 /**
1851 - * Update node_comment_statistics table for nodes with comments.
1852 - * TODO: if 2 comments have exact same timestamp, the function can get wrong uid and name fields.
1853 - * Handles when comment timestamps have been manually set in admin
 1866+ * Regenerate the data in node_comment_statistics table.
18541867 *
18551868 * @return void
18561869 **/
@@ -1858,51 +1871,10 @@
18591872 $sql = "DELETE FROM {node_comment_statistics}";
18601873 db_query($sql);
18611874
1862 - $sql = "INSERT INTO {node_comment_statistics} (nid, last_comment_timestamp, last_comment_name, last_comment_uid, comment_count) (select nid, c.timestamp, name, uid, comment_count FROM {comments} c INNER JOIN (SELECT MAX(timestamp) AS timestamp, COUNT(*) AS comment_count FROM {comments} WHERE status=%d GROUP BY nid) as c2 ON c.timestamp=c2.timestamp)";
 1875+ $sql = "INSERT INTO {node_comment_statistics} (nid, last_comment_timestamp, last_comment_name, last_comment_uid, comment_count) (select nid, c.timestamp, name, uid, comment_count FROM {comments} c INNER JOIN (SELECT MAX(timestamp) AS timestamp, COUNT(*) AS comment_count FROM {comments} WHERE status=%d GROUP BY nid) AS c2 ON c.nid = c2.nid AND c.timestamp=c2.timestamp)";
18631876 db_query($sql, COMMENT_PUBLISHED);
18641877
18651878 // Insert 0 count records into the node_comment_statistics for nodes that are missing. See comment_enable()
1866 - db_query_temporary("SELECT n.nid, n.changed, n.uid FROM {node} n LEFT JOIN {node_comment_statistics} c ON n.nid = c.nid WHERE c.comment_count IS NULL", 'missing_nids');
1867 - db_query("INSERT INTO {node_comment_statistics} (nid, last_comment_timestamp, last_comment_name, last_comment_uid, comment_count) SELECT n.nid, n.changed, NULL, n.uid, 0 FROM missing_nids n");
 1879+ db_query_temporary("SELECT n.nid, n.created, n.uid FROM {node} n LEFT JOIN {node_comment_statistics} c ON n.nid = c.nid WHERE c.comment_count IS NULL", 'missing_nids');
 1880+ db_query("INSERT INTO {node_comment_statistics} (nid, last_comment_timestamp, last_comment_name, last_comment_uid, comment_count) SELECT n.nid, n.created, NULL, n.uid, 0 FROM missing_nids n");
18681881 }
1869 -
1870 -/**
1871 - * Set sequences table to a sane state. Useful after a bulk import.
1872 - *
1873 - * @return void
1874 - **/
1875 -function sequence_reset($table, $column) {
1876 - $max = db_result(db_query("SELECT MAX($column) FROM {$table}"));
1877 - $max = ($max ? $max+1 : 2);
1878 - db_query("UPDATE {sequences} SET id = $max WHERE name='${table}_$column'");
1879 -}
1880 -
1881 -/**
1882 - * Enable or disable indexes for a given table. Useful during a bulk import.
1883 - *
1884 - * @return void
1885 - **/
1886 -function devel_table_keys($tables, $verb = 'ENABLE') {
1887 - foreach ($tables as $table) {
1888 - db_query("ALTER TABLE $table $verb KEYS");
1889 - }
1890 -}
1891 -
1892 -/**
1893 - * Save contents of an url to filesystem. Works for images.
1894 - *
1895 - * @return void
1896 - **/
1897 -function wget($url, $file) {
1898 - if (file_exists($file)) {
1899 - return;
1900 - }
1901 - print "get: $url\n";
1902 - $ch = curl_init($url);
1903 - $fp = fopen($file, "w");
1904 - curl_setopt($ch, CURLOPT_FILE, $fp);
1905 - curl_setopt($ch, CURLOPT_HEADER, 0);
1906 - curl_exec($ch);
1907 - curl_close($ch);
1908 - fclose($fp);
1909 -}
Index: civicrm/trunk/sites/all/modules/devel/devel.info
@@ -5,9 +5,9 @@
66 dependencies[] = menu
77 core = 6.x
88
9 -; Information added by drupal.org packaging script on 2009-08-19
10 -version = "6.x-1.17"
 9+; Information added by drupal.org packaging script on 2010-08-04
 10+version = "6.x-1.21"
1111 core = "6.x"
1212 project = "devel"
13 -datestamp = "1250713853"
 13+datestamp = "1280961078"
1414
Index: civicrm/trunk/sites/all/modules/devel/devel_node_access.install
@@ -1,6 +1,13 @@
22 <?php
3 -// $Id: devel_node_access.install,v 1.1.4.3 2008/10/07 03:29:57 salvis Exp $
 3+// $Id: devel_node_access.install,v 1.1.4.4 2009/09/05 00:52:09 salvis Exp $
44
 5+/**
 6+ * @file
 7+ * This module gives developers feedback as to what their
 8+ * node_access table contains, and which nodes are protected or
 9+ * visible to the public.
 10+ */
 11+
512 function devel_node_access_install() {
613 }
714
Index: civicrm/trunk/sites/all/modules/devel/devel_generate.module
@@ -1,5 +1,5 @@
22 <?php
3 -// $Id: devel_generate.module,v 1.11.2.13 2009/07/03 00:30:31 weitzman Exp $
 3+// $Id: devel_generate.module,v 1.11.2.15 2010/04/03 23:45:08 weitzman Exp $
44
55 require_once('devel_generate_batch.inc');
66
@@ -86,7 +86,12 @@
8787 function devel_generate_content_form() {
8888 require_once('devel_generate.inc');
8989 $options = devel_generate_content_types();
90 -
 90+
 91+ if (empty($options)) {
 92+ drupal_set_message(t('You do not have any content types that can be generated. <a href="@create-type">Go create a new content type</a> already!</a>', array('@create-type' => url('admin/content/types/add'))), 'error', FALSE);
 93+ return;
 94+ }
 95+
9196 $form['node_types'] = array(
9297 '#type' => 'checkboxes',
9398 '#title' => t('Which node types do you want to create?'),
@@ -158,6 +163,16 @@
159164 '#default_value' => TRUE,
160165 '#access' => module_exists('statistics'),
161166 );
 167+ if (module_exists('locale')) {
 168+ $form['add_language'] = array(
 169+ '#type' => 'select',
 170+ '#title' => t('Set language on nodes'),
 171+ '#multiple' => TRUE,
 172+ '#description' => t('Requires locale.module'),
 173+ '#options' => array_merge(array('' => t('Language neutral')), locale_language_list()),
 174+ '#default_value' => '',
 175+ );
 176+ }
162177 $form['submit'] = array(
163178 '#type' => 'submit',
164179 '#value' => t('Do it!'),
Index: civicrm/trunk/sites/all/modules/devel/krumo/class.krumo.php
@@ -1,1281 +1,1281 @@
2 -<?php
3 -/**
4 -* Krumo: Structured information display solution
5 -*
6 -* Krumo is a debugging tool (PHP4/PHP5), which displays structured information
7 -* about any PHP variable. It is a nice replacement for print_r() or var_dump()
8 -* which are used by a lot of PHP developers.
9 -*
10 -* @author Kaloyan K. Tsvetkov <kaloyan@kaloyan.info>
11 -* @license http://opensource.org/licenses/lgpl-license.php GNU Lesser General Public License Version 2.1
12 -*
13 -* @package Krumo
14 -* @version $Id: class.krumo.php,v 1.1.2.4 2009/02/11 04:01:01 weitzman Exp $
15 -*/
16 -
17 -//////////////////////////////////////////////////////////////////////////////
18 -
19 -/**
20 -* backward compatibility: the DIR_SEP constant isn't used anymore
21 -*/
22 -if(!defined('DIR_SEP')) {
23 - define('DIR_SEP', DIRECTORY_SEPARATOR);
24 - }
25 -/**
26 -* backward compatibility: the PATH_SEPARATOR constant is availble since 4.3.0RC2
27 -*/
28 -if (!defined('PATH_SEPARATOR')) {
29 - define('PATH_SEPARATOR', OS_WINDOWS ? ';' : ':');
30 - }
31 -
32 -// -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
33 -
34 -/**
35 -* Set the KRUMO_DIR constant up with the absolute path to Krumo files. If it is
36 -* not defined, include_path will be used. Set KRUMO_DIR only if any other module
37 -* or application has not already set it up.
38 -*/
39 -if (!defined('KRUMO_DIR')) {
40 - define('KRUMO_DIR', dirname(__FILE__) . DIRECTORY_SEPARATOR);
41 - }
42 -
43 -/**
44 -* This constant sets the maximum strings of strings that will be shown
45 -* as they are. Longer strings will be truncated with this length, and
46 -* their `full form` will be shown in a child node.
47 -*/
48 -if (!defined('KRUMO_TRUNCATE_LENGTH')) {
49 - define('KRUMO_TRUNCATE_LENGTH', 50);
50 - }
51 -
52 -//////////////////////////////////////////////////////////////////////////////
53 -
54 -/**
55 -* Krumo API
56 -*
57 -* This class stores the Krumo API for rendering and
58 -* displaying the structured information it is reporting
59 -*
60 -* @package Krumo
61 -*/
62 -Class krumo {
63 -
64 - /**
65 - * Return Krumo version
66 - *
67 - * @return string
68 - * @access public
69 - * @static
70 - */
71 - Function version() {
72 - return '0.2a';
73 - }
74 -
75 - // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
76 -
77 - /**
78 - * Prints a debug backtrace
79 - *
80 - * @access public
81 - * @static
82 - */
83 - Function backtrace() {
84 -
85 - // disabled ?
86 - //
87 - if (!krumo::_debug()) {
88 - return false;
89 - }
90 -
91 - // render it
92 - //
93 - return krumo::dump(debug_backtrace());
94 - }
95 -
96 - /**
97 - * Prints a list of all currently declared classes.
98 - *
99 - * @access public
100 - * @static
101 - */
102 - Function classes() {
103 -
104 - // disabled ?
105 - //
106 - if (!krumo::_debug()) {
107 - return false;
108 - }
109 -
110 - // render it
111 - //
112 - ?>
113 -<div class="krumo-title">
114 -This is a list of all currently declared classes.
115 -</div>
116 - <?php
117 - return krumo::dump(get_declared_classes());
118 - }
119 -
120 - /**
121 - * Prints a list of all currently declared interfaces (PHP5 only).
122 - *
123 - * @access public
124 - * @static
125 - */
126 - Function interfaces() {
127 -
128 - // disabled ?
129 - //
130 - if (!krumo::_debug()) {
131 - return false;
132 - }
133 -
134 - // render it
135 - //
136 - ?>
137 -<div class="krumo-title">
138 -This is a list of all currently declared interfaces.
139 -</div>
140 - <?php
141 - return krumo::dump(get_declared_interfaces());
142 - }
143 -
144 - /**
145 - * Prints a list of all currently included (or required) files.
146 - *
147 - * @access public
148 - * @static
149 - */
150 - Function includes() {
151 -
152 - // disabled ?
153 - //
154 - if (!krumo::_debug()) {
155 - return false;
156 - }
157 -
158 - // render it
159 - //
160 - ?>
161 -<div class="krumo-title">
162 -This is a list of all currently included (or required) files.
163 -</div>
164 - <?php
165 - return krumo::dump(get_included_files());
166 - }
167 -
168 - /**
169 - * Prints a list of all currently declared functions.
170 - *
171 - * @access public
172 - * @static
173 - */
174 - Function functions() {
175 -
176 - // disabled ?
177 - //
178 - if (!krumo::_debug()) {
179 - return false;
180 - }
181 -
182 - // render it
183 - //
184 - ?>
185 -<div class="krumo-title">
186 -This is a list of all currently declared functions.
187 -</div>
188 - <?php
189 - return krumo::dump(get_defined_functions());
190 - }
191 -
192 - /**
193 - * Prints a list of all currently declared constants.
194 - *
195 - * @access public
196 - * @static
197 - */
198 - Function defines() {
199 -
200 - // disabled ?
201 - //
202 - if (!krumo::_debug()) {
203 - return false;
204 - }
205 -
206 - // render it
207 - //
208 - ?>
209 -<div class="krumo-title">
210 -This is a list of all currently declared constants (defines).
211 -</div>
212 - <?php
213 - return krumo::dump(get_defined_constants());
214 - }
215 -
216 - /**
217 - * Prints a list of all currently loaded PHP extensions.
218 - *
219 - * @access public
220 - * @static
221 - */
222 - Function extensions() {
223 -
224 - // disabled ?
225 - //
226 - if (!krumo::_debug()) {
227 - return false;
228 - }
229 -
230 - // render it
231 - //
232 - ?>
233 -<div class="krumo-title">
234 -This is a list of all currently loaded PHP extensions.
235 -</div>
236 - <?php
237 - return krumo::dump(get_loaded_extensions());
238 - }
239 -
240 - /**
241 - * Prints a list of all HTTP request headers.
242 - *
243 - * @access public
244 - * @static
245 - */
246 - Function headers() {
247 -
248 - // disabled ?
249 - //
250 - if (!krumo::_debug()) {
251 - return false;
252 - }
253 -
254 - // render it
255 - //
256 - ?>
257 -<div class="krumo-title">
258 -This is a list of all HTTP request headers.
259 -</div>
260 - <?php
261 - return krumo::dump(getAllHeaders());
262 - }
263 -
264 - /**
265 - * Prints a list of the configuration settings read from <i>php.ini</i>
266 - *
267 - * @access public
268 - * @static
269 - */
270 - Function phpini() {
271 -
272 - // disabled ?
273 - //
274 - if (!krumo::_debug()) {
275 - return false;
276 - }
277 -
278 - // render it
279 - //
280 - ?>
281 -<div class="krumo-title">
282 -This is a list of the configuration settings read from <code><b><?php echo get_cfg_var('cfg_file_path');?></b></code>.
283 -</div>
284 - <?php
285 - return krumo::dump(parse_ini_file(get_cfg_var('cfg_file_path'), true));
286 - }
287 -
288 - /**
289 - * Prints a list of all your configuration settings.
290 - *
291 - * @access public
292 - * @static
293 - */
294 - Function conf() {
295 -
296 - // disabled ?
297 - //
298 - if (!krumo::_debug()) {
299 - return false;
300 - }
301 -
302 - // render it
303 - //
304 - ?>
305 -<div class="krumo-title">
306 -This is a list of all your configuration settings.
307 -</div>
308 - <?php
309 - return krumo::dump(ini_get_all());
310 - }
311 -
312 - /**
313 - * Prints a list of the specified directories under your <i>include_path</i> option.
314 - *
315 - * @access public
316 - * @static
317 - */
318 - Function path() {
319 -
320 - // disabled ?
321 - //
322 - if (!krumo::_debug()) {
323 - return false;
324 - }
325 -
326 - // render it
327 - //
328 - ?>
329 -<div class="krumo-title">
330 -This is a list of the specified directories under your <code><b>include_path</b></code> option.
331 -</div>
332 - <?php
333 - return krumo::dump(explode(PATH_SEPARATOR, ini_get('include_path')));
334 - }
335 -
336 - /**
337 - * Prints a list of all the values from the <i>$_REQUEST</i> array.
338 - *
339 - * @access public
340 - * @static
341 - */
342 - Function request() {
343 -
344 - // disabled ?
345 - //
346 - if (!krumo::_debug()) {
347 - return false;
348 - }
349 -
350 - // render it
351 - //
352 - ?>
353 -<div class="krumo-title">
354 -This is a list of all the values from the <code><b>$_REQUEST</b></code> array.
355 -</div>
356 - <?php
357 - return krumo::dump($_REQUEST);
358 - }
359 -
360 - /**
361 - * Prints a list of all the values from the <i>$_GET</i> array.
362 - *
363 - * @access public
364 - * @static
365 - */
366 - Function get() {
367 -
368 - // disabled ?
369 - //
370 - if (!krumo::_debug()) {
371 - return false;
372 - }
373 -
374 - // render it
375 - //
376 - ?>
377 -<div class="krumo-title">
378 -This is a list of all the values from the <code><b>$_GET</b></code> array.
379 -</div>
380 - <?php
381 - return krumo::dump($_GET);
382 - }
383 -
384 - /**
385 - * Prints a list of all the values from the <i>$_POST</i> array.
386 - *
387 - * @access public
388 - * @static
389 - */
390 - Function post() {
391 -
392 - // disabled ?
393 - //
394 - if (!krumo::_debug()) {
395 - return false;
396 - }
397 -
398 - // render it
399 - //
400 - ?>
401 -<div class="krumo-title">
402 -This is a list of all the values from the <code><b>$_POST</b></code> array.
403 -</div>
404 - <?php
405 - return krumo::dump($_POST);
406 - }
407 -
408 - /**
409 - * Prints a list of all the values from the <i>$_SERVER</i> array.
410 - *
411 - * @access public
412 - * @static
413 - */
414 - Function server() {
415 -
416 - // disabled ?
417 - //
418 - if (!krumo::_debug()) {
419 - return false;
420 - }
421 -
422 - // render it
423 - //
424 - ?>
425 -<div class="krumo-title">
426 -This is a list of all the values from the <code><b>$_SERVER</b></code> array.
427 -</div>
428 - <?php
429 - return krumo::dump($_SERVER);
430 - }
431 -
432 - /**
433 - * Prints a list of all the values from the <i>$_COOKIE</i> array.
434 - *
435 - * @access public
436 - * @static
437 - */
438 - Function cookie() {
439 -
440 - // disabled ?
441 - //
442 - if (!krumo::_debug()) {
443 - return false;
444 - }
445 -
446 - // render it
447 - //
448 - ?>
449 -<div class="krumo-title">
450 -This is a list of all the values from the <code><b>$_COOKIE</b></code> array.
451 -</div>
452 - <?php
453 - return krumo::dump($_COOKIE);
454 - }
455 -
456 - /**
457 - * Prints a list of all the values from the <i>$_ENV</i> array.
458 - *
459 - * @access public
460 - * @static
461 - */
462 - Function env() {
463 -
464 - // disabled ?
465 - //
466 - if (!krumo::_debug()) {
467 - return false;
468 - }
469 -
470 - // render it
471 - //
472 - ?>
473 -<div class="krumo-title">
474 -This is a list of all the values from the <code><b>$_ENV</b></code> array.
475 -</div>
476 - <?php
477 - return krumo::dump($_ENV);
478 - }
479 -
480 - /**
481 - * Prints a list of all the values from the <i>$_SESSION</i> array.
482 - *
483 - * @access public
484 - * @static
485 - */
486 - Function session() {
487 -
488 - // disabled ?
489 - //
490 - if (!krumo::_debug()) {
491 - return false;
492 - }
493 -
494 - // render it
495 - //
496 - ?>
497 -<div class="krumo-title">
498 -This is a list of all the values from the <code><b>$_SESSION</b></code> array.
499 -</div>
500 - <?php
501 - return krumo::dump($_SESSION);
502 - }
503 -
504 - /**
505 - * Prints a list of all the values from an INI file.
506 - *
507 - * @param string $ini_file
508 - *
509 - * @access public
510 - * @static
511 - */
512 - Function ini($ini_file) {
513 -
514 - // disabled ?
515 - //
516 - if (!krumo::_debug()) {
517 - return false;
518 - }
519 -
520 - // read it
521 - //
522 - if (!$_ = @parse_ini_file($ini_file, 1)) {
523 - return false;
524 - }
525 -
526 - // render it
527 - //
528 - ?>
529 -<div class="krumo-title">
530 -This is a list of all the values from the <code><b><?php echo realpath($ini_file) ? realpath($ini_file) : $ini_file;?></b></code> INI file.
531 -</div>
532 - <?php
533 - return krumo::dump($_);
534 - }
535 -
536 - // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
537 -
538 - /**
539 - * Dump information about a variable
540 - *
541 - * @param mixed $data,...
542 - * @access public
543 - * @static
544 - */
545 - Function dump($data) {
546 -
547 - // disabled ?
548 - //
549 - if (!krumo::_debug()) {
550 - return false;
551 - }
552 -
553 - // more arguments ?
554 - //
555 - if (func_num_args() > 1) {
556 - $_ = func_get_args();
557 - foreach($_ as $d) {
558 - krumo::dump($d);
559 - }
560 - return;
561 - }
562 -
563 - // the css ?
564 - //
565 - krumo::_css();
566 -
567 - // find caller
568 -
569 - // DEVEL: we added array_reverse() so the proper file+line number is found.
570 - $_ = array_reverse(debug_backtrace());
571 - while($d = array_pop($_)) {
572 - // DEVEL: changed if() condition below
573 - if ((strpos(@$d['file'], 'devel') === FALSE) && (strpos(@$d['file'], 'krumo') === FALSE) && @$d['class'] != 'krumo') {
574 - break;
575 - }
576 - }
577 -
578 - // the content
579 - //
580 - ?>
581 -<div class="krumo-root" dir="ltr">
582 - <ul class="krumo-node krumo-first">
583 - <?php echo krumo::_dump($data);?>
584 - <li class="krumo-footnote">
585 - <div class="krumo-version" style="white-space:nowrap;">
586 - <h6>Krumo version <?php echo krumo::version();?></h6> | <a
587 - href="http://krumo.sourceforge.net"
588 - target="_blank">http://krumo.sourceforge.net</a>
589 - </div>
590 -
591 - <?php if (@$d['file']) { ?>
592 - <span class="krumo-call" style="white-space:nowrap;">
593 - Called from <code><?php echo $d['file']?></code>,
594 - line <code><?php echo $d['line']?></code></span>
595 - <?php } ?>
596 - &nbsp;
597 - </li>
598 - </ul>
599 -</div>
600 -<?php
601 - // flee the hive
602 - //
603 - $_recursion_marker = krumo::_marker();
604 - if ($hive =& krumo::_hive($dummy)) {
605 - foreach($hive as $i=>$bee){
606 - if (is_object($bee)) {
607 - unset($hive[$i]->$_recursion_marker);
608 - } else {
609 - unset($hive[$i][$_recursion_marker]);
610 - }
611 - }
612 - }
613 -
614 - // PHP 4.x.x array reference bug...
615 - //
616 - if (is_array($data) && version_compare(PHP_VERSION, "5", "<")) {
617 - unset($GLOBALS[krumo::_marker()]);
618 - }
619 - }
620 -
621 - // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
622 -
623 - /**
624 - * Print the skin (CSS)
625 - *
626 - * @return boolean
627 - * @access private
628 - * @static
629 - */
630 - Function _css() {
631 -
632 - static $_css = false;
633 -
634 - // already set ?
635 - //
636 - if ($_css) {
637 - return true;
638 - }
639 -
640 - $css = '';
641 -
642 - // DEVEL: changed for Drupal variables system
643 - $skin = variable_get('devel_krumo_skin', 'orange');
644 -
645 - // custom selected skin ?
646 - //
647 - $_ = KRUMO_DIR . "skins/{$skin}/skin.css";
648 - if ($fp = @fopen($_, 'r', 1)) {
649 - $css = fread($fp, filesize($_));
650 - fclose($fp);
651 - }
652 -
653 - // defautl skin ?
654 - //
655 - if (!$css && ($skin != 'default')) {
656 - $skin = 'default';
657 - $_ = KRUMO_DIR . "skins/default/skin.css";
658 - $css = join('', @file($_));
659 - }
660 -
661 - // print ?
662 - //
663 - if ($_css = $css != '') {
664 -
665 - // fix the urls
666 - //
667 -
668 - // DEVEL: changed for Drupal path system.
669 - $css_url = url(drupal_get_path('module', 'devel')) . "/krumo/skins/{$skin}/";
670 -
671 - $css = preg_replace('~%url%~Uis', $css_url, $css);
672 -
673 - // the CSS
674 - //
675 - ?>
676 -<!-- Using Krumo Skin: <?php echo preg_replace('~^' . preg_quote(realpath(KRUMO_DIR) . DIRECTORY_SEPARATOR) . '~Uis', '', realpath($_));?> -->
677 -<style type="text/css">
678 -<!--/**/
679 -<?php echo $css?>
680 -
681 -/**/-->
682 -</style>
683 -<?php
684 - // the JS
685 - //
686 - ?>
687 -<script type="text/javascript">
688 -<!--//
689 -<?php echo join(file(KRUMO_DIR . "krumo.js"));?>
690 -
691 -//-->
692 -</script>
693 -<?php
694 - }
695 -
696 - return $_css;
697 - }
698 -
699 - // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
700 -
701 - /**
702 - * Enable Krumo
703 - *
704 - * @return boolean
705 - * @access public
706 - * @static
707 - */
708 - Function enable() {
709 - return true === krumo::_debug(true);
710 - }
711 -
712 - /**
713 - * Disable Krumo
714 - *
715 - * @return boolean
716 - * @access public
717 - * @static
718 - */
719 - Function disable() {
720 - return false === krumo::_debug(false);
721 - }
722 -
723 - /**
724 - * Get\Set Krumo state: whether it is enabled or disabled
725 - *
726 - * @param boolean $state
727 - * @return boolean
728 - * @access private
729 - * @static
730 - */
731 - Function _debug($state=null) {
732 -
733 - static $_ = true;
734 -
735 - // set
736 - //
737 - if (isset($state)) {
738 - $_ = (boolean) $state;
739 - }
740 -
741 - // get
742 - //
743 - return $_;
744 - }
745 -
746 - // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
747 -
748 - /**
749 - * Dump information about a variable
750 - *
751 - * @param mixed $data
752 - * @param string $name
753 - * @access private
754 - * @static
755 - */
756 - Function _dump(&$data, $name='...') {
757 -
758 - // object ?
759 - //
760 - if (is_object($data)) {
761 - return krumo::_object($data, $name);
762 - }
763 -
764 - // array ?
765 - //
766 - if (is_array($data)) {
767 -
768 - // PHP 4.x.x array reference bug...
769 - //
770 - if (version_compare(PHP_VERSION, "5", "<")) {
771 -
772 - // prepare the GLOBAL reference list...
773 - //
774 - if (!isset($GLOBALS[krumo::_marker()])) {
775 - $GLOBALS[krumo::_marker()] = array();
776 - }
777 - if (!is_array($GLOBALS[krumo::_marker()])) {
778 - $GLOBALS[krumo::_marker()] = (array) $GLOBALS[krumo::_marker()];
779 - }
780 -
781 - // extract ?
782 - //
783 - if (!empty($GLOBALS[krumo::_marker()])) {
784 - $d = array_shift($GLOBALS[krumo::_marker()]);
785 - if (is_array($d)) {
786 - $data = $d;
787 - }
788 - }
789 - }
790 -
791 - return krumo::_array($data, $name);
792 - }
793 -
794 - // resource ?
795 - //
796 - if (is_resource($data)) {
797 - return krumo::_resource($data, $name);
798 - }
799 -
800 - // scalar ?
801 - //
802 - if (is_string($data)) {
803 - return krumo::_string($data, $name);
804 - }
805 -
806 - if (is_float($data)) {
807 - return krumo::_float($data, $name);
808 - }
809 -
810 - if (is_integer($data)) {
811 - return krumo::_integer($data, $name);
812 - }
813 -
814 - if (is_bool($data)) {
815 - return krumo::_boolean($data, $name);
816 - }
817 -
818 - // null ?
819 - //
820 - if (is_null($data)) {
821 - return krumo::_null($name);
822 - }
823 - }
824 -
825 - // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
826 -
827 - /**
828 - * Render a dump for a NULL value
829 - *
830 - * @param string $name
831 - * @return string
832 - * @access private
833 - * @static
834 - */
835 - Function _null($name) {
836 -?>
837 -<li class="krumo-child">
838 - <div class="krumo-element"
839 - onMouseOver="krumo.over(this);"
840 - onMouseOut="krumo.out(this);">
841 -
842 - <a class="krumo-name"><?php echo $name;?></a>
843 - (<em class="krumo-type krumo-null">NULL</em>)
844 - </div>
845 -</li>
846 -<?php
847 - }
848 -
849 - // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
850 -
851 - /**
852 - * Return the marked used to stain arrays
853 - * and objects in order to detect recursions
854 - *
855 - * @return string
856 - * @access private
857 - * @static
858 - */
859 - Function _marker() {
860 -
861 - static $_recursion_marker;
862 - if (!isset($_recursion_marker)) {
863 - $_recursion_marker = uniqid('krumo');
864 - }
865 -
866 - return $_recursion_marker;
867 - }
868 -
869 - // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
870 -
871 - /**
872 - * Adds a variable to the hive of arrays and objects which
873 - * are tracked for whether they have recursive entries
874 - *
875 - * @param mixed &$bee either array or object, not a scallar vale
876 - * @return array all the bees
877 - *
878 - * @access private
879 - * @static
880 - */
881 - Function &_hive(&$bee) {
882 -
883 - static $_ = array();
884 -
885 - // new bee ?
886 - //
887 - if (!is_null($bee)) {
888 -
889 - // stain it
890 - //
891 - $_recursion_marker = krumo::_marker();
892 - (is_object($bee))
893 - ? @($bee->$_recursion_marker++)
894 - : @($bee[$_recursion_marker]++);
895 -
896 - $_[0][] =& $bee;
897 - }
898 -
899 - // return all bees
900 - //
901 - return $_[0];
902 - }
903 -
904 - // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
905 -
906 - /**
907 - * Render a dump for the properties of an array or objeect
908 - *
909 - * @param mixed &$data
910 - * @access private
911 - * @static
912 - */
913 - Function _vars(&$data) {
914 -
915 - $_is_object = is_object($data);
916 -
917 - // test for references in order to
918 - // prevent endless recursion loops
919 - //
920 - $_recursion_marker = krumo::_marker();
921 - $_r = ($_is_object)
922 - ? @$data->$_recursion_marker
923 - : @$data[$_recursion_marker] ;
924 - $_r = (integer) $_r;
925 -
926 - // recursion detected
927 - //
928 - if ($_r > 0) {
929 - return krumo::_recursion();
930 - }
931 -
932 - // stain it
933 - //
934 - krumo::_hive($data);
935 -
936 - // render it
937 - //
938 - ?>
939 -<div class="krumo-nest" style="display:none;">
940 - <ul class="krumo-node">
941 - <?php
942 -
943 - // keys ?
944 - //
945 - $keys = ($_is_object)
946 - ? array_keys(get_object_vars($data))
947 - : array_keys($data);
948 -
949 - // itterate
950 - //
951 - foreach($keys as $k) {
952 -
953 - // skip marker
954 - //
955 - if ($k === $_recursion_marker) {
956 - continue;
957 - }
958 -
959 - // get real value
960 - //
961 - if ($_is_object) {
962 - $v =& $data->$k;
963 - } else {
964 - $v =& $data[$k];
965 - }
966 -
967 - // PHP 4.x.x array reference bug...
968 - //
969 - if (is_array($data) && version_compare(PHP_VERSION, "5", "<")) {
970 - $GLOBALS[krumo::_marker()][] =& $v;
971 - }
972 -
973 - krumo::_dump($v,$k);
974 - } ?>
975 - </ul>
976 -</div>
977 -<?php
978 - }
979 -
980 - // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
981 -
982 - /**
983 - * Render a block that detected recursion
984 - *
985 - * @access private
986 - * @static
987 - */
988 - Function _recursion() {
989 -?>
990 -<div class="krumo-nest" style="display:none;">
991 - <ul class="krumo-node">
992 - <li class="krumo-child">
993 - <div class="krumo-element"
994 - onMouseOver="krumo.over(this);"
995 - onMouseOut="krumo.out(this);">
996 - <a class="krumo-name"><big>&#8734;</big></a>
997 - (<em class="krumo-type">Recursion</em>)
998 - </div>
999 -
1000 - </li>
1001 - </ul>
1002 -</div>
1003 -<?php
1004 - }
1005 -
1006 - // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
1007 -
1008 - /**
1009 - * Render a dump for an array
1010 - *
1011 - * @param mixed $data
1012 - * @param string $name
1013 - * @access private
1014 - * @static
1015 - */
1016 - Function _array(&$data, $name) {
1017 -?>
1018 -<li class="krumo-child">
1019 -
1020 - <div class="krumo-element<?php echo count($data) > 0 ? ' krumo-expand' : '';?>"
1021 - <?php if (count($data) > 0) {?> onClick="krumo.toggle(this);"<?php } ?>
1022 - onMouseOver="krumo.over(this);"
1023 - onMouseOut="krumo.out(this);">
1024 -
1025 - <a class="krumo-name"><?php echo $name;?></a>
1026 - (<em class="krumo-type">Array, <strong class="krumo-array-length"><?php echo
1027 - (count($data)==1)
1028 - ?("1 element")
1029 - :(count($data)." elements");
1030 - ?></strong></em>)
1031 -
1032 -
1033 - <?php
1034 - // callback ?
1035 - //
1036 - if (is_callable($data)) {
1037 - $_ = array_values($data);
1038 - ?>
1039 - <span class="krumo-callback"> |
1040 - (<em class="krumo-type">Callback</em>)
1041 - <strong class="krumo-string"><?php
1042 - echo htmlSpecialChars($_[0]);?>::<?php
1043 - echo htmlSpecialChars($_[1]);?>();</strong></span>
1044 - <?php
1045 - }
1046 - ?>
1047 -
1048 - </div>
1049 -
1050 - <?php if (count($data)) {
1051 - krumo::_vars($data);
1052 - } ?>
1053 -</li>
1054 -<?php
1055 - }
1056 -
1057 - // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
1058 -
1059 - /**
1060 - * Render a dump for an object
1061 - *
1062 - * @param mixed $data
1063 - * @param string $name
1064 - * @access private
1065 - * @static
1066 - */
1067 - Function _object(&$data, $name) {
1068 -?>
1069 -<li class="krumo-child">
1070 -
1071 - <div class="krumo-element<?php echo count($data) > 0 ? ' krumo-expand' : '';?>"
1072 - <?php if (count($data) > 0) {?> onClick="krumo.toggle(this);"<?php } ?>
1073 - onMouseOver="krumo.over(this);"
1074 - onMouseOut="krumo.out(this);">
1075 -
1076 - <a class="krumo-name"><?php echo $name;?></a>
1077 - (<em class="krumo-type">Object</em>)
1078 - <strong class="krumo-class"><?php echo get_class($data);?></strong>
1079 - </div>
1080 -
1081 - <?php if (count($data)) {
1082 - krumo::_vars($data);
1083 - } ?>
1084 -</li>
1085 -<?php
1086 - }
1087 -
1088 - // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
1089 -
1090 - /**
1091 - * Render a dump for a resource
1092 - *
1093 - * @param mixed $data
1094 - * @param string $name
1095 - * @access private
1096 - * @static
1097 - */
1098 - Function _resource($data, $name) {
1099 -?>
1100 -<li class="krumo-child">
1101 -
1102 - <div class="krumo-element"
1103 - onMouseOver="krumo.over(this);"
1104 - onMouseOut="krumo.out(this);">
1105 -
1106 - <a class="krumo-name"><?php echo $name;?></a>
1107 - (<em class="krumo-type">Resource</em>)
1108 - <strong class="krumo-resource"><?php echo get_resource_type($data);?></strong>
1109 - </div>
1110 -
1111 -</li>
1112 -<?php
1113 - }
1114 -
1115 - // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
1116 -
1117 - /**
1118 - * Render a dump for a boolean value
1119 - *
1120 - * @param mixed $data
1121 - * @param string $name
1122 - * @access private
1123 - * @static
1124 - */
1125 - Function _boolean($data, $name) {
1126 -?>
1127 -<li class="krumo-child">
1128 -
1129 - <div class="krumo-element"
1130 - onMouseOver="krumo.over(this);"
1131 - onMouseOut="krumo.out(this);">
1132 -
1133 - <a class="krumo-name"><?php echo $name;?></a>
1134 - (<em class="krumo-type">Boolean</em>)
1135 - <strong class="krumo-boolean"><?php echo $data?'TRUE':'FALSE'?></strong>
1136 - </div>
1137 -
1138 -</li>
1139 -<?php
1140 - }
1141 -
1142 - // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
1143 -
1144 - /**
1145 - * Render a dump for a integer value
1146 - *
1147 - * @param mixed $data
1148 - * @param string $name
1149 - * @access private
1150 - * @static
1151 - */
1152 - Function _integer($data, $name) {
1153 -?>
1154 -<li class="krumo-child">
1155 -
1156 - <div class="krumo-element"
1157 - onMouseOver="krumo.over(this);"
1158 - onMouseOut="krumo.out(this);">
1159 -
1160 - <a class="krumo-name"><?php echo $name;?></a>
1161 - (<em class="krumo-type">Integer</em>)
1162 - <strong class="krumo-integer"><?php echo $data;?></strong>
1163 - </div>
1164 -
1165 -</li>
1166 -<?php
1167 - }
1168 -
1169 - // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
1170 -
1171 - /**
1172 - * Render a dump for a float value
1173 - *
1174 - * @param mixed $data
1175 - * @param string $name
1176 - * @access private
1177 - * @static
1178 - */
1179 - Function _float($data, $name) {
1180 -?>
1181 -<li class="krumo-child">
1182 -
1183 - <div class="krumo-element"
1184 - onMouseOver="krumo.over(this);"
1185 - onMouseOut="krumo.out(this);">
1186 -
1187 - <a class="krumo-name"><?php echo $name;?></a>
1188 - (<em class="krumo-type">Float</em>)
1189 - <strong class="krumo-float"><?php echo $data;?></strong>
1190 - </div>
1191 -
1192 -</li>
1193 -<?php
1194 - }
1195 -
1196 - // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
1197 -
1198 - /**
1199 - * Render a dump for a string value
1200 - *
1201 - * @param mixed $data
1202 - * @param string $name
1203 - * @access private
1204 - * @static
1205 - */
1206 - Function _string($data, $name) {
1207 -
1208 - // extra ?
1209 - //
1210 - $_extra = false;
1211 - $_ = $data;
1212 - if (strLen($data) > KRUMO_TRUNCATE_LENGTH) {
1213 - $_ = substr($data, 0, KRUMO_TRUNCATE_LENGTH - 3) . '...';
1214 - $_extra = true;
1215 - }
1216 -?>
1217 -<li class="krumo-child">
1218 -
1219 - <div class="krumo-element<?php echo $_extra ? ' krumo-expand' : '';?>"
1220 - <?php if ($_extra) {?> onClick="krumo.toggle(this);"<?php } ?>
1221 - onMouseOver="krumo.over(this);"
1222 - onMouseOut="krumo.out(this);">
1223 -
1224 - <a class="krumo-name"><?php echo $name;?></a>
1225 - (<em class="krumo-type">String,
1226 - <strong class="krumo-string-length"><?php
1227 - echo strlen($data) ?> characters</strong> </em>)
1228 - <strong class="krumo-string"><?php echo htmlSpecialChars($_);?></strong>
1229 -
1230 - <?php
1231 - // callback ?
1232 - //
1233 - if (is_callable($data)) {
1234 - ?>
1235 - <span class="krumo-callback"> |
1236 - (<em class="krumo-type">Callback</em>)
1237 - <strong class="krumo-string"><?php echo htmlSpecialChars($_);?>();</strong></span>
1238 - <?php
1239 - }
1240 - ?>
1241 -
1242 - </div>
1243 -
1244 - <?php if ($_extra) { ?>
1245 - <div class="krumo-nest" style="display:none;">
1246 - <ul class="krumo-node">
1247 -
1248 - <li class="krumo-child">
1249 - <div class="krumo-preview"><?php echo htmlSpecialChars($data);?></div>
1250 - </li>
1251 -
1252 - </ul>
1253 - </div>
1254 - <?php } ?>
1255 -</li>
1256 -<?php
1257 - }
1258 -
1259 - // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
1260 -
1261 -//--end-of-class--
1262 -}
1263 -
1264 -//////////////////////////////////////////////////////////////////////////////
1265 -
1266 -/**
1267 -* Alias of {@link krumo::dump()}
1268 -*
1269 -* @param mixed $data,...
1270 -*
1271 -* @see krumo::dump()
1272 -*/
1273 -Function krumo() {
1274 - $_ = func_get_args();
1275 - return call_user_func_array(
1276 - array('krumo', 'dump'), $_
1277 - );
1278 - }
1279 -
1280 -//////////////////////////////////////////////////////////////////////////////
1281 -
1282 -?>
\ No newline at end of file
 2+<?php
 3+/**
 4+* Krumo: Structured information display solution
 5+*
 6+* Krumo is a debugging tool (PHP4/PHP5), which displays structured information
 7+* about any PHP variable. It is a nice replacement for print_r() or var_dump()
 8+* which are used by a lot of PHP developers.
 9+*
 10+* @author Kaloyan K. Tsvetkov <kaloyan@kaloyan.info>
 11+* @license http://opensource.org/licenses/lgpl-license.php GNU Lesser General Public License Version 2.1
 12+*
 13+* @package Krumo
 14+* @version $Id: class.krumo.php,v 1.1.2.5 2009/09/23 18:14:19 davereid Exp $
 15+*/
 16+
 17+//////////////////////////////////////////////////////////////////////////////
 18+
 19+/**
 20+* backward compatibility: the DIR_SEP constant isn't used anymore
 21+*/
 22+if(!defined('DIR_SEP')) {
 23+ define('DIR_SEP', DIRECTORY_SEPARATOR);
 24+ }
 25+/**
 26+* backward compatibility: the PATH_SEPARATOR constant is availble since 4.3.0RC2
 27+*/
 28+if (!defined('PATH_SEPARATOR')) {
 29+ define('PATH_SEPARATOR', OS_WINDOWS ? ';' : ':');
 30+ }
 31+
 32+// -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 33+
 34+/**
 35+* Set the KRUMO_DIR constant up with the absolute path to Krumo files. If it is
 36+* not defined, include_path will be used. Set KRUMO_DIR only if any other module
 37+* or application has not already set it up.
 38+*/
 39+if (!defined('KRUMO_DIR')) {
 40+ define('KRUMO_DIR', dirname(__FILE__) . DIRECTORY_SEPARATOR);
 41+ }
 42+
 43+/**
 44+* This constant sets the maximum strings of strings that will be shown
 45+* as they are. Longer strings will be truncated with this length, and
 46+* their `full form` will be shown in a child node.
 47+*/
 48+if (!defined('KRUMO_TRUNCATE_LENGTH')) {
 49+ define('KRUMO_TRUNCATE_LENGTH', 50);
 50+ }
 51+
 52+//////////////////////////////////////////////////////////////////////////////
 53+
 54+/**
 55+* Krumo API
 56+*
 57+* This class stores the Krumo API for rendering and
 58+* displaying the structured information it is reporting
 59+*
 60+* @package Krumo
 61+*/
 62+Class krumo {
 63+
 64+ /**
 65+ * Return Krumo version
 66+ *
 67+ * @return string
 68+ * @access public
 69+ * @static
 70+ */
 71+ Function version() {
 72+ return '0.2a';
 73+ }
 74+
 75+ // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 76+
 77+ /**
 78+ * Prints a debug backtrace
 79+ *
 80+ * @access public
 81+ * @static
 82+ */
 83+ Function backtrace() {
 84+
 85+ // disabled ?
 86+ //
 87+ if (!krumo::_debug()) {
 88+ return false;
 89+ }
 90+
 91+ // render it
 92+ //
 93+ return krumo::dump(debug_backtrace());
 94+ }
 95+
 96+ /**
 97+ * Prints a list of all currently declared classes.
 98+ *
 99+ * @access public
 100+ * @static
 101+ */
 102+ Function classes() {
 103+
 104+ // disabled ?
 105+ //
 106+ if (!krumo::_debug()) {
 107+ return false;
 108+ }
 109+
 110+ // render it
 111+ //
 112+ ?>
 113+<div class="krumo-title">
 114+This is a list of all currently declared classes.
 115+</div>
 116+ <?php
 117+ return krumo::dump(get_declared_classes());
 118+ }
 119+
 120+ /**
 121+ * Prints a list of all currently declared interfaces (PHP5 only).
 122+ *
 123+ * @access public
 124+ * @static
 125+ */
 126+ Function interfaces() {
 127+
 128+ // disabled ?
 129+ //
 130+ if (!krumo::_debug()) {
 131+ return false;
 132+ }
 133+
 134+ // render it
 135+ //
 136+ ?>
 137+<div class="krumo-title">
 138+This is a list of all currently declared interfaces.
 139+</div>
 140+ <?php
 141+ return krumo::dump(get_declared_interfaces());
 142+ }
 143+
 144+ /**
 145+ * Prints a list of all currently included (or required) files.
 146+ *
 147+ * @access public
 148+ * @static
 149+ */
 150+ Function includes() {
 151+
 152+ // disabled ?
 153+ //
 154+ if (!krumo::_debug()) {
 155+ return false;
 156+ }
 157+
 158+ // render it
 159+ //
 160+ ?>
 161+<div class="krumo-title">
 162+This is a list of all currently included (or required) files.
 163+</div>
 164+ <?php
 165+ return krumo::dump(get_included_files());
 166+ }
 167+
 168+ /**
 169+ * Prints a list of all currently declared functions.
 170+ *
 171+ * @access public
 172+ * @static
 173+ */
 174+ Function functions() {
 175+
 176+ // disabled ?
 177+ //
 178+ if (!krumo::_debug()) {
 179+ return false;
 180+ }
 181+
 182+ // render it
 183+ //
 184+ ?>
 185+<div class="krumo-title">
 186+This is a list of all currently declared functions.
 187+</div>
 188+ <?php
 189+ return krumo::dump(get_defined_functions());
 190+ }
 191+
 192+ /**
 193+ * Prints a list of all currently declared constants.
 194+ *
 195+ * @access public
 196+ * @static
 197+ */
 198+ Function defines() {
 199+
 200+ // disabled ?
 201+ //
 202+ if (!krumo::_debug()) {
 203+ return false;
 204+ }
 205+
 206+ // render it
 207+ //
 208+ ?>
 209+<div class="krumo-title">
 210+This is a list of all currently declared constants (defines).
 211+</div>
 212+ <?php
 213+ return krumo::dump(get_defined_constants());
 214+ }
 215+
 216+ /**
 217+ * Prints a list of all currently loaded PHP extensions.
 218+ *
 219+ * @access public
 220+ * @static
 221+ */
 222+ Function extensions() {
 223+
 224+ // disabled ?
 225+ //
 226+ if (!krumo::_debug()) {
 227+ return false;
 228+ }
 229+
 230+ // render it
 231+ //
 232+ ?>
 233+<div class="krumo-title">
 234+This is a list of all currently loaded PHP extensions.
 235+</div>
 236+ <?php
 237+ return krumo::dump(get_loaded_extensions());
 238+ }
 239+
 240+ /**
 241+ * Prints a list of all HTTP request headers.
 242+ *
 243+ * @access public
 244+ * @static
 245+ */
 246+ Function headers() {
 247+
 248+ // disabled ?
 249+ //
 250+ if (!krumo::_debug()) {
 251+ return false;
 252+ }
 253+
 254+ // render it
 255+ //
 256+ ?>
 257+<div class="krumo-title">
 258+This is a list of all HTTP request headers.
 259+</div>
 260+ <?php
 261+ return krumo::dump(getAllHeaders());
 262+ }
 263+
 264+ /**
 265+ * Prints a list of the configuration settings read from <i>php.ini</i>
 266+ *
 267+ * @access public
 268+ * @static
 269+ */
 270+ Function phpini() {
 271+
 272+ // disabled ?
 273+ //
 274+ if (!krumo::_debug()) {
 275+ return false;
 276+ }
 277+
 278+ // render it
 279+ //
 280+ ?>
 281+<div class="krumo-title">
 282+This is a list of the configuration settings read from <code><b><?php echo get_cfg_var('cfg_file_path');?></b></code>.
 283+</div>
 284+ <?php
 285+ return krumo::dump(parse_ini_file(get_cfg_var('cfg_file_path'), true));
 286+ }
 287+
 288+ /**
 289+ * Prints a list of all your configuration settings.
 290+ *
 291+ * @access public
 292+ * @static
 293+ */
 294+ Function conf() {
 295+
 296+ // disabled ?
 297+ //
 298+ if (!krumo::_debug()) {
 299+ return false;
 300+ }
 301+
 302+ // render it
 303+ //
 304+ ?>
 305+<div class="krumo-title">
 306+This is a list of all your configuration settings.
 307+</div>
 308+ <?php
 309+ return krumo::dump(ini_get_all());
 310+ }
 311+
 312+ /**
 313+ * Prints a list of the specified directories under your <i>include_path</i> option.
 314+ *
 315+ * @access public
 316+ * @static
 317+ */
 318+ Function path() {
 319+
 320+ // disabled ?
 321+ //
 322+ if (!krumo::_debug()) {
 323+ return false;
 324+ }
 325+
 326+ // render it
 327+ //
 328+ ?>
 329+<div class="krumo-title">
 330+This is a list of the specified directories under your <code><b>include_path</b></code> option.
 331+</div>
 332+ <?php
 333+ return krumo::dump(explode(PATH_SEPARATOR, ini_get('include_path')));
 334+ }
 335+
 336+ /**
 337+ * Prints a list of all the values from the <i>$_REQUEST</i> array.
 338+ *
 339+ * @access public
 340+ * @static
 341+ */
 342+ Function request() {
 343+
 344+ // disabled ?
 345+ //
 346+ if (!krumo::_debug()) {
 347+ return false;
 348+ }
 349+
 350+ // render it
 351+ //
 352+ ?>
 353+<div class="krumo-title">
 354+This is a list of all the values from the <code><b>$_REQUEST</b></code> array.
 355+</div>
 356+ <?php
 357+ return krumo::dump($_REQUEST);
 358+ }
 359+
 360+ /**
 361+ * Prints a list of all the values from the <i>$_GET</i> array.
 362+ *
 363+ * @access public
 364+ * @static
 365+ */
 366+ Function get() {
 367+
 368+ // disabled ?
 369+ //
 370+ if (!krumo::_debug()) {
 371+ return false;
 372+ }
 373+
 374+ // render it
 375+ //
 376+ ?>
 377+<div class="krumo-title">
 378+This is a list of all the values from the <code><b>$_GET</b></code> array.
 379+</div>
 380+ <?php
 381+ return krumo::dump($_GET);
 382+ }
 383+
 384+ /**
 385+ * Prints a list of all the values from the <i>$_POST</i> array.
 386+ *
 387+ * @access public
 388+ * @static
 389+ */
 390+ Function post() {
 391+
 392+ // disabled ?
 393+ //
 394+ if (!krumo::_debug()) {
 395+ return false;
 396+ }
 397+
 398+ // render it
 399+ //
 400+ ?>
 401+<div class="krumo-title">
 402+This is a list of all the values from the <code><b>$_POST</b></code> array.
 403+</div>
 404+ <?php
 405+ return krumo::dump($_POST);
 406+ }
 407+
 408+ /**
 409+ * Prints a list of all the values from the <i>$_SERVER</i> array.
 410+ *
 411+ * @access public
 412+ * @static
 413+ */
 414+ Function server() {
 415+
 416+ // disabled ?
 417+ //
 418+ if (!krumo::_debug()) {
 419+ return false;
 420+ }
 421+
 422+ // render it
 423+ //
 424+ ?>
 425+<div class="krumo-title">
 426+This is a list of all the values from the <code><b>$_SERVER</b></code> array.
 427+</div>
 428+ <?php
 429+ return krumo::dump($_SERVER);
 430+ }
 431+
 432+ /**
 433+ * Prints a list of all the values from the <i>$_COOKIE</i> array.
 434+ *
 435+ * @access public
 436+ * @static
 437+ */
 438+ Function cookie() {
 439+
 440+ // disabled ?
 441+ //
 442+ if (!krumo::_debug()) {
 443+ return false;
 444+ }
 445+
 446+ // render it
 447+ //
 448+ ?>
 449+<div class="krumo-title">
 450+This is a list of all the values from the <code><b>$_COOKIE</b></code> array.
 451+</div>
 452+ <?php
 453+ return krumo::dump($_COOKIE);
 454+ }
 455+
 456+ /**
 457+ * Prints a list of all the values from the <i>$_ENV</i> array.
 458+ *
 459+ * @access public
 460+ * @static
 461+ */
 462+ Function env() {
 463+
 464+ // disabled ?
 465+ //
 466+ if (!krumo::_debug()) {
 467+ return false;
 468+ }
 469+
 470+ // render it
 471+ //
 472+ ?>
 473+<div class="krumo-title">
 474+This is a list of all the values from the <code><b>$_ENV</b></code> array.
 475+</div>
 476+ <?php
 477+ return krumo::dump($_ENV);
 478+ }
 479+
 480+ /**
 481+ * Prints a list of all the values from the <i>$_SESSION</i> array.
 482+ *
 483+ * @access public
 484+ * @static
 485+ */
 486+ Function session() {
 487+
 488+ // disabled ?
 489+ //
 490+ if (!krumo::_debug()) {
 491+ return false;
 492+ }
 493+
 494+ // render it
 495+ //
 496+ ?>
 497+<div class="krumo-title">
 498+This is a list of all the values from the <code><b>$_SESSION</b></code> array.
 499+</div>
 500+ <?php
 501+ return krumo::dump($_SESSION);
 502+ }
 503+
 504+ /**
 505+ * Prints a list of all the values from an INI file.
 506+ *
 507+ * @param string $ini_file
 508+ *
 509+ * @access public
 510+ * @static
 511+ */
 512+ Function ini($ini_file) {
 513+
 514+ // disabled ?
 515+ //
 516+ if (!krumo::_debug()) {
 517+ return false;
 518+ }
 519+
 520+ // read it
 521+ //
 522+ if (!$_ = @parse_ini_file($ini_file, 1)) {
 523+ return false;
 524+ }
 525+
 526+ // render it
 527+ //
 528+ ?>
 529+<div class="krumo-title">
 530+This is a list of all the values from the <code><b><?php echo realpath($ini_file) ? realpath($ini_file) : $ini_file;?></b></code> INI file.
 531+</div>
 532+ <?php
 533+ return krumo::dump($_);
 534+ }
 535+
 536+ // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 537+
 538+ /**
 539+ * Dump information about a variable
 540+ *
 541+ * @param mixed $data,...
 542+ * @access public
 543+ * @static
 544+ */
 545+ Function dump($data) {
 546+
 547+ // disabled ?
 548+ //
 549+ if (!krumo::_debug()) {
 550+ return false;
 551+ }
 552+
 553+ // more arguments ?
 554+ //
 555+ if (func_num_args() > 1) {
 556+ $_ = func_get_args();
 557+ foreach($_ as $d) {
 558+ krumo::dump($d);
 559+ }
 560+ return;
 561+ }
 562+
 563+ // the css ?
 564+ //
 565+ krumo::_css();
 566+
 567+ // find caller
 568+
 569+ // DEVEL: we added array_reverse() so the proper file+line number is found.
 570+ $_ = array_reverse(debug_backtrace());
 571+ while($d = array_pop($_)) {
 572+ // DEVEL: changed if() condition below
 573+ if ((strpos(@$d['file'], 'devel') === FALSE) && (strpos(@$d['file'], 'krumo') === FALSE) && @$d['class'] != 'krumo') {
 574+ break;
 575+ }
 576+ }
 577+
 578+ // the content
 579+ //
 580+ ?>
 581+<div class="krumo-root" dir="ltr">
 582+ <ul class="krumo-node krumo-first">
 583+ <?php echo krumo::_dump($data);?>
 584+ <li class="krumo-footnote">
 585+ <div class="krumo-version" style="white-space:nowrap;">
 586+ <h6>Krumo version <?php echo krumo::version();?></h6> | <a
 587+ href="http://krumo.sourceforge.net"
 588+ target="_blank">http://krumo.sourceforge.net</a>
 589+ </div>
 590+
 591+ <?php if (@$d['file']) { ?>
 592+ <span class="krumo-call" style="white-space:nowrap;">
 593+ Called from <code><?php echo $d['file']?></code>,
 594+ line <code><?php echo $d['line']?></code></span>
 595+ <?php } ?>
 596+ &nbsp;
 597+ </li>
 598+ </ul>
 599+</div>
 600+<?php
 601+ // flee the hive
 602+ //
 603+ $_recursion_marker = krumo::_marker();
 604+ if ($hive =& krumo::_hive($dummy)) {
 605+ foreach($hive as $i=>$bee){
 606+ if (is_object($bee)) {
 607+ unset($hive[$i]->$_recursion_marker);
 608+ } else {
 609+ unset($hive[$i][$_recursion_marker]);
 610+ }
 611+ }
 612+ }
 613+
 614+ // PHP 4.x.x array reference bug...
 615+ //
 616+ if (is_array($data) && version_compare(PHP_VERSION, "5", "<")) {
 617+ unset($GLOBALS[krumo::_marker()]);
 618+ }
 619+ }
 620+
 621+ // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 622+
 623+ /**
 624+ * Print the skin (CSS)
 625+ *
 626+ * @return boolean
 627+ * @access private
 628+ * @static
 629+ */
 630+ Function _css() {
 631+
 632+ static $_css = false;
 633+
 634+ // already set ?
 635+ //
 636+ if ($_css) {
 637+ return true;
 638+ }
 639+
 640+ $css = '';
 641+
 642+ // DEVEL: changed for Drupal variables system
 643+ $skin = variable_get('devel_krumo_skin', 'orange');
 644+
 645+ // custom selected skin ?
 646+ //
 647+ $_ = KRUMO_DIR . "skins/{$skin}/skin.css";
 648+ if ($fp = @fopen($_, 'r', 1)) {
 649+ $css = fread($fp, filesize($_));
 650+ fclose($fp);
 651+ }
 652+
 653+ // defautl skin ?
 654+ //
 655+ if (!$css && ($skin != 'default')) {
 656+ $skin = 'default';
 657+ $_ = KRUMO_DIR . "skins/default/skin.css";
 658+ $css = join('', @file($_));
 659+ }
 660+
 661+ // print ?
 662+ //
 663+ if ($_css = $css != '') {
 664+
 665+ // fix the urls
 666+ //
 667+
 668+ // DEVEL: changed for Drupal path system.
 669+ $css_url = base_path() . drupal_get_path('module', 'devel') . "/krumo/skins/{$skin}/";
 670+
 671+ $css = preg_replace('~%url%~Uis', $css_url, $css);
 672+
 673+ // the CSS
 674+ //
 675+ ?>
 676+<!-- Using Krumo Skin: <?php echo preg_replace('~^' . preg_quote(realpath(KRUMO_DIR) . DIRECTORY_SEPARATOR) . '~Uis', '', realpath($_));?> -->
 677+<style type="text/css">
 678+<!--/**/
 679+<?php echo $css?>
 680+
 681+/**/-->
 682+</style>
 683+<?php
 684+ // the JS
 685+ //
 686+ ?>
 687+<script type="text/javascript">
 688+<!--//
 689+<?php echo join(file(KRUMO_DIR . "krumo.js"));?>
 690+
 691+//-->
 692+</script>
 693+<?php
 694+ }
 695+
 696+ return $_css;
 697+ }
 698+
 699+ // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 700+
 701+ /**
 702+ * Enable Krumo
 703+ *
 704+ * @return boolean
 705+ * @access public
 706+ * @static
 707+ */
 708+ Function enable() {
 709+ return true === krumo::_debug(true);
 710+ }
 711+
 712+ /**
 713+ * Disable Krumo
 714+ *
 715+ * @return boolean
 716+ * @access public
 717+ * @static
 718+ */
 719+ Function disable() {
 720+ return false === krumo::_debug(false);
 721+ }
 722+
 723+ /**
 724+ * Get\Set Krumo state: whether it is enabled or disabled
 725+ *
 726+ * @param boolean $state
 727+ * @return boolean
 728+ * @access private
 729+ * @static
 730+ */
 731+ Function _debug($state=null) {
 732+
 733+ static $_ = true;
 734+
 735+ // set
 736+ //
 737+ if (isset($state)) {
 738+ $_ = (boolean) $state;
 739+ }
 740+
 741+ // get
 742+ //
 743+ return $_;
 744+ }
 745+
 746+ // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 747+
 748+ /**
 749+ * Dump information about a variable
 750+ *
 751+ * @param mixed $data
 752+ * @param string $name
 753+ * @access private
 754+ * @static
 755+ */
 756+ Function _dump(&$data, $name='...') {
 757+
 758+ // object ?
 759+ //
 760+ if (is_object($data)) {
 761+ return krumo::_object($data, $name);
 762+ }
 763+
 764+ // array ?
 765+ //
 766+ if (is_array($data)) {
 767+
 768+ // PHP 4.x.x array reference bug...
 769+ //
 770+ if (version_compare(PHP_VERSION, "5", "<")) {
 771+
 772+ // prepare the GLOBAL reference list...
 773+ //
 774+ if (!isset($GLOBALS[krumo::_marker()])) {
 775+ $GLOBALS[krumo::_marker()] = array();
 776+ }
 777+ if (!is_array($GLOBALS[krumo::_marker()])) {
 778+ $GLOBALS[krumo::_marker()] = (array) $GLOBALS[krumo::_marker()];
 779+ }
 780+
 781+ // extract ?
 782+ //
 783+ if (!empty($GLOBALS[krumo::_marker()])) {
 784+ $d = array_shift($GLOBALS[krumo::_marker()]);
 785+ if (is_array($d)) {
 786+ $data = $d;
 787+ }
 788+ }
 789+ }
 790+
 791+ return krumo::_array($data, $name);
 792+ }
 793+
 794+ // resource ?
 795+ //
 796+ if (is_resource($data)) {
 797+ return krumo::_resource($data, $name);
 798+ }
 799+
 800+ // scalar ?
 801+ //
 802+ if (is_string($data)) {
 803+ return krumo::_string($data, $name);
 804+ }
 805+
 806+ if (is_float($data)) {
 807+ return krumo::_float($data, $name);
 808+ }
 809+
 810+ if (is_integer($data)) {
 811+ return krumo::_integer($data, $name);
 812+ }
 813+
 814+ if (is_bool($data)) {
 815+ return krumo::_boolean($data, $name);
 816+ }
 817+
 818+ // null ?
 819+ //
 820+ if (is_null($data)) {
 821+ return krumo::_null($name);
 822+ }
 823+ }
 824+
 825+ // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 826+
 827+ /**
 828+ * Render a dump for a NULL value
 829+ *
 830+ * @param string $name
 831+ * @return string
 832+ * @access private
 833+ * @static
 834+ */
 835+ Function _null($name) {
 836+?>
 837+<li class="krumo-child">
 838+ <div class="krumo-element"
 839+ onMouseOver="krumo.over(this);"
 840+ onMouseOut="krumo.out(this);">
 841+
 842+ <a class="krumo-name"><?php echo $name;?></a>
 843+ (<em class="krumo-type krumo-null">NULL</em>)
 844+ </div>
 845+</li>
 846+<?php
 847+ }
 848+
 849+ // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 850+
 851+ /**
 852+ * Return the marked used to stain arrays
 853+ * and objects in order to detect recursions
 854+ *
 855+ * @return string
 856+ * @access private
 857+ * @static
 858+ */
 859+ Function _marker() {
 860+
 861+ static $_recursion_marker;
 862+ if (!isset($_recursion_marker)) {
 863+ $_recursion_marker = uniqid('krumo');
 864+ }
 865+
 866+ return $_recursion_marker;
 867+ }
 868+
 869+ // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 870+
 871+ /**
 872+ * Adds a variable to the hive of arrays and objects which
 873+ * are tracked for whether they have recursive entries
 874+ *
 875+ * @param mixed &$bee either array or object, not a scallar vale
 876+ * @return array all the bees
 877+ *
 878+ * @access private
 879+ * @static
 880+ */
 881+ Function &_hive(&$bee) {
 882+
 883+ static $_ = array();
 884+
 885+ // new bee ?
 886+ //
 887+ if (!is_null($bee)) {
 888+
 889+ // stain it
 890+ //
 891+ $_recursion_marker = krumo::_marker();
 892+ (is_object($bee))
 893+ ? @($bee->$_recursion_marker++)
 894+ : @($bee[$_recursion_marker]++);
 895+
 896+ $_[0][] =& $bee;
 897+ }
 898+
 899+ // return all bees
 900+ //
 901+ return $_[0];
 902+ }
 903+
 904+ // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 905+
 906+ /**
 907+ * Render a dump for the properties of an array or objeect
 908+ *
 909+ * @param mixed &$data
 910+ * @access private
 911+ * @static
 912+ */
 913+ Function _vars(&$data) {
 914+
 915+ $_is_object = is_object($data);
 916+
 917+ // test for references in order to
 918+ // prevent endless recursion loops
 919+ //
 920+ $_recursion_marker = krumo::_marker();
 921+ $_r = ($_is_object)
 922+ ? @$data->$_recursion_marker
 923+ : @$data[$_recursion_marker] ;
 924+ $_r = (integer) $_r;
 925+
 926+ // recursion detected
 927+ //
 928+ if ($_r > 0) {
 929+ return krumo::_recursion();
 930+ }
 931+
 932+ // stain it
 933+ //
 934+ krumo::_hive($data);
 935+
 936+ // render it
 937+ //
 938+ ?>
 939+<div class="krumo-nest" style="display:none;">
 940+ <ul class="krumo-node">
 941+ <?php
 942+
 943+ // keys ?
 944+ //
 945+ $keys = ($_is_object)
 946+ ? array_keys(get_object_vars($data))
 947+ : array_keys($data);
 948+
 949+ // itterate
 950+ //
 951+ foreach($keys as $k) {
 952+
 953+ // skip marker
 954+ //
 955+ if ($k === $_recursion_marker) {
 956+ continue;
 957+ }
 958+
 959+ // get real value
 960+ //
 961+ if ($_is_object) {
 962+ $v =& $data->$k;
 963+ } else {
 964+ $v =& $data[$k];
 965+ }
 966+
 967+ // PHP 4.x.x array reference bug...
 968+ //
 969+ if (is_array($data) && version_compare(PHP_VERSION, "5", "<")) {
 970+ $GLOBALS[krumo::_marker()][] =& $v;
 971+ }
 972+
 973+ krumo::_dump($v,$k);
 974+ } ?>
 975+ </ul>
 976+</div>
 977+<?php
 978+ }
 979+
 980+ // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 981+
 982+ /**
 983+ * Render a block that detected recursion
 984+ *
 985+ * @access private
 986+ * @static
 987+ */
 988+ Function _recursion() {
 989+?>
 990+<div class="krumo-nest" style="display:none;">
 991+ <ul class="krumo-node">
 992+ <li class="krumo-child">
 993+ <div class="krumo-element"
 994+ onMouseOver="krumo.over(this);"
 995+ onMouseOut="krumo.out(this);">
 996+ <a class="krumo-name"><big>&#8734;</big></a>
 997+ (<em class="krumo-type">Recursion</em>)
 998+ </div>
 999+
 1000+ </li>
 1001+ </ul>
 1002+</div>
 1003+<?php
 1004+ }
 1005+
 1006+ // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 1007+
 1008+ /**
 1009+ * Render a dump for an array
 1010+ *
 1011+ * @param mixed $data
 1012+ * @param string $name
 1013+ * @access private
 1014+ * @static
 1015+ */
 1016+ Function _array(&$data, $name) {
 1017+?>
 1018+<li class="krumo-child">
 1019+
 1020+ <div class="krumo-element<?php echo count($data) > 0 ? ' krumo-expand' : '';?>"
 1021+ <?php if (count($data) > 0) {?> onClick="krumo.toggle(this);"<?php } ?>
 1022+ onMouseOver="krumo.over(this);"
 1023+ onMouseOut="krumo.out(this);">
 1024+
 1025+ <a class="krumo-name"><?php echo $name;?></a>
 1026+ (<em class="krumo-type">Array, <strong class="krumo-array-length"><?php echo
 1027+ (count($data)==1)
 1028+ ?("1 element")
 1029+ :(count($data)." elements");
 1030+ ?></strong></em>)
 1031+
 1032+
 1033+ <?php
 1034+ // callback ?
 1035+ //
 1036+ if (is_callable($data)) {
 1037+ $_ = array_values($data);
 1038+ ?>
 1039+ <span class="krumo-callback"> |
 1040+ (<em class="krumo-type">Callback</em>)
 1041+ <strong class="krumo-string"><?php
 1042+ echo htmlSpecialChars($_[0]);?>::<?php
 1043+ echo htmlSpecialChars($_[1]);?>();</strong></span>
 1044+ <?php
 1045+ }
 1046+ ?>
 1047+
 1048+ </div>
 1049+
 1050+ <?php if (count($data)) {
 1051+ krumo::_vars($data);
 1052+ } ?>
 1053+</li>
 1054+<?php
 1055+ }
 1056+
 1057+ // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 1058+
 1059+ /**
 1060+ * Render a dump for an object
 1061+ *
 1062+ * @param mixed $data
 1063+ * @param string $name
 1064+ * @access private
 1065+ * @static
 1066+ */
 1067+ Function _object(&$data, $name) {
 1068+?>
 1069+<li class="krumo-child">
 1070+
 1071+ <div class="krumo-element<?php echo count($data) > 0 ? ' krumo-expand' : '';?>"
 1072+ <?php if (count($data) > 0) {?> onClick="krumo.toggle(this);"<?php } ?>
 1073+ onMouseOver="krumo.over(this);"
 1074+ onMouseOut="krumo.out(this);">
 1075+
 1076+ <a class="krumo-name"><?php echo $name;?></a>
 1077+ (<em class="krumo-type">Object</em>)
 1078+ <strong class="krumo-class"><?php echo get_class($data);?></strong>
 1079+ </div>
 1080+
 1081+ <?php if (count($data)) {
 1082+ krumo::_vars($data);
 1083+ } ?>
 1084+</li>
 1085+<?php
 1086+ }
 1087+
 1088+ // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 1089+
 1090+ /**
 1091+ * Render a dump for a resource
 1092+ *
 1093+ * @param mixed $data
 1094+ * @param string $name
 1095+ * @access private
 1096+ * @static
 1097+ */
 1098+ Function _resource($data, $name) {
 1099+?>
 1100+<li class="krumo-child">
 1101+
 1102+ <div class="krumo-element"
 1103+ onMouseOver="krumo.over(this);"
 1104+ onMouseOut="krumo.out(this);">
 1105+
 1106+ <a class="krumo-name"><?php echo $name;?></a>
 1107+ (<em class="krumo-type">Resource</em>)
 1108+ <strong class="krumo-resource"><?php echo get_resource_type($data);?></strong>
 1109+ </div>
 1110+
 1111+</li>
 1112+<?php
 1113+ }
 1114+
 1115+ // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 1116+
 1117+ /**
 1118+ * Render a dump for a boolean value
 1119+ *
 1120+ * @param mixed $data
 1121+ * @param string $name
 1122+ * @access private
 1123+ * @static
 1124+ */
 1125+ Function _boolean($data, $name) {
 1126+?>
 1127+<li class="krumo-child">
 1128+
 1129+ <div class="krumo-element"
 1130+ onMouseOver="krumo.over(this);"
 1131+ onMouseOut="krumo.out(this);">
 1132+
 1133+ <a class="krumo-name"><?php echo $name;?></a>
 1134+ (<em class="krumo-type">Boolean</em>)
 1135+ <strong class="krumo-boolean"><?php echo $data?'TRUE':'FALSE'?></strong>
 1136+ </div>
 1137+
 1138+</li>
 1139+<?php
 1140+ }
 1141+
 1142+ // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 1143+
 1144+ /**
 1145+ * Render a dump for a integer value
 1146+ *
 1147+ * @param mixed $data
 1148+ * @param string $name
 1149+ * @access private
 1150+ * @static
 1151+ */
 1152+ Function _integer($data, $name) {
 1153+?>
 1154+<li class="krumo-child">
 1155+
 1156+ <div class="krumo-element"
 1157+ onMouseOver="krumo.over(this);"
 1158+ onMouseOut="krumo.out(this);">
 1159+
 1160+ <a class="krumo-name"><?php echo $name;?></a>
 1161+ (<em class="krumo-type">Integer</em>)
 1162+ <strong class="krumo-integer"><?php echo $data;?></strong>
 1163+ </div>
 1164+
 1165+</li>
 1166+<?php
 1167+ }
 1168+
 1169+ // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 1170+
 1171+ /**
 1172+ * Render a dump for a float value
 1173+ *
 1174+ * @param mixed $data
 1175+ * @param string $name
 1176+ * @access private
 1177+ * @static
 1178+ */
 1179+ Function _float($data, $name) {
 1180+?>
 1181+<li class="krumo-child">
 1182+
 1183+ <div class="krumo-element"
 1184+ onMouseOver="krumo.over(this);"
 1185+ onMouseOut="krumo.out(this);">
 1186+
 1187+ <a class="krumo-name"><?php echo $name;?></a>
 1188+ (<em class="krumo-type">Float</em>)
 1189+ <strong class="krumo-float"><?php echo $data;?></strong>
 1190+ </div>
 1191+
 1192+</li>
 1193+<?php
 1194+ }
 1195+
 1196+ // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 1197+
 1198+ /**
 1199+ * Render a dump for a string value
 1200+ *
 1201+ * @param mixed $data
 1202+ * @param string $name
 1203+ * @access private
 1204+ * @static
 1205+ */
 1206+ Function _string($data, $name) {
 1207+
 1208+ // extra ?
 1209+ //
 1210+ $_extra = false;
 1211+ $_ = $data;
 1212+ if (strLen($data) > KRUMO_TRUNCATE_LENGTH) {
 1213+ $_ = substr($data, 0, KRUMO_TRUNCATE_LENGTH - 3) . '...';
 1214+ $_extra = true;
 1215+ }
 1216+?>
 1217+<li class="krumo-child">
 1218+
 1219+ <div class="krumo-element<?php echo $_extra ? ' krumo-expand' : '';?>"
 1220+ <?php if ($_extra) {?> onClick="krumo.toggle(this);"<?php } ?>
 1221+ onMouseOver="krumo.over(this);"
 1222+ onMouseOut="krumo.out(this);">
 1223+
 1224+ <a class="krumo-name"><?php echo $name;?></a>
 1225+ (<em class="krumo-type">String,
 1226+ <strong class="krumo-string-length"><?php
 1227+ echo strlen($data) ?> characters</strong> </em>)
 1228+ <strong class="krumo-string"><?php echo htmlSpecialChars($_);?></strong>
 1229+
 1230+ <?php
 1231+ // callback ?
 1232+ //
 1233+ if (is_callable($data)) {
 1234+ ?>
 1235+ <span class="krumo-callback"> |
 1236+ (<em class="krumo-type">Callback</em>)
 1237+ <strong class="krumo-string"><?php echo htmlSpecialChars($_);?>();</strong></span>
 1238+ <?php
 1239+ }
 1240+ ?>
 1241+
 1242+ </div>
 1243+
 1244+ <?php if ($_extra) { ?>
 1245+ <div class="krumo-nest" style="display:none;">
 1246+ <ul class="krumo-node">
 1247+
 1248+ <li class="krumo-child">
 1249+ <div class="krumo-preview"><?php echo htmlSpecialChars($data);?></div>
 1250+ </li>
 1251+
 1252+ </ul>
 1253+ </div>
 1254+ <?php } ?>
 1255+</li>
 1256+<?php
 1257+ }
 1258+
 1259+ // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 1260+
 1261+//--end-of-class--
 1262+}
 1263+
 1264+//////////////////////////////////////////////////////////////////////////////
 1265+
 1266+/**
 1267+* Alias of {@link krumo::dump()}
 1268+*
 1269+* @param mixed $data,...
 1270+*
 1271+* @see krumo::dump()
 1272+*/
 1273+Function krumo() {
 1274+ $_ = func_get_args();
 1275+ return call_user_func_array(
 1276+ array('krumo', 'dump'), $_
 1277+ );
 1278+ }
 1279+
 1280+//////////////////////////////////////////////////////////////////////////////
 1281+
 1282+?>
Index: civicrm/trunk/sites/all/modules/devel/krumo/krumo.ini
@@ -3,7 +3,7 @@
44 ;
55
66 [skin]
7 -selected = "schablon.com"
 7+selected = "white"
88 ;
99 ; Change the above value to set the CSS skin used to render
1010 ; Krumo layout. If the skin is not found, then the "default" one
@@ -17,4 +17,4 @@
1818 ; where the Krumo folder is. This is required in
1919 ; order to have web access to Krumo's CSS and
2020 ; image files.
21 -;
\ No newline at end of file
 21+;
Index: civicrm/trunk/sites/all/modules/devel/performance/performance.module
@@ -1,10 +1,27 @@
22 <?php
3 -// $Id: performance.module,v 1.2.2.24 2009/06/25 02:51:54 kbahey Exp $
 3+// $Id: performance.module,v 1.2.2.33 2010/08/04 22:26:53 kbahey Exp $
44
5 -// Copyright Khalid Baheyeldin 2008 of http://2bits.com
 5+/**
 6+ * @file
 7+ *
 8+ * Logs detailed and/or summary page generation time and memory
 9+ * consumption for page requests.
 10+ *
 11+ * Copyright Khalid Baheyeldin 2008 of http://2bits.com
 12+ */
613
7 -define('PERFORMANCE_KEY', 'dru-perf:' . $_SERVER['HTTP_HOST'] . ':');
 14+define('PERFORMANCE_KEY', 'dru-perf:'. $_SERVER['HTTP_HOST'] .':');
 15+define('PERFORMANCE_MEMCACHE_BIN', 'cache_performance');
816
 17+function performance_memcache_enabled() {
 18+ global $conf;
 19+
 20+ if (function_exists('dmemcache_set') && isset($conf['memcache_bins']['cache_performance'])) {
 21+ return TRUE;
 22+ }
 23+ return FALSE;
 24+}
 25+
926 function performance_menu() {
1027 $items = array();
1128
@@ -24,6 +41,14 @@
2542 'access arguments' => array('access administration pages'),
2643 );
2744
 45+ $items['admin/settings/performance_logging/memcache_clear'] = array(
 46+ 'title' => 'Clear Memcache',
 47+ 'description' => 'Clears performance statistics collected in Memcache.',
 48+ 'page callback' => 'drupal_get_form',
 49+ 'page arguments' => array('performance_clear_memcache_confirm'),
 50+ 'access arguments' => array('access administration pages'),
 51+ );
 52+
2853 $items['admin/reports/performance_logging_summary'] = array(
2954 'title' => 'Performance Logs: Summary',
3055 'description' => 'View summary performance logs: page generation times and memory usage.',
@@ -90,6 +115,20 @@
91116 '#description' => t('Log summary data, such as average and maximum page generation times and memory usage to APC, if installed. The summary will be stored in APC memory, and hence there is no load on the database. This logging to APC is suitable for most live sites, unless the number of unique page accesses is excessively high.'),
92117 );
93118
 119+ $disabled = TRUE;
 120+ if (performance_memcache_enabled()) {
 121+ $disabled = FALSE;
 122+ }
 123+
 124+ $form['mode']['performance_summary_memcache'] = array(
 125+ '#type' => 'select',
 126+ '#title' => t('Summary logging (Memcached)'),
 127+ '#default_value' => variable_get('performance_summary_memcache', 0),
 128+ '#options' => $options,
 129+ '#disabled' => $disabled,
 130+ '#description' => t('Log summary data, such as average and maximum page generation times and memory usage to Memcached, if installed. The summary will be stored in Memcached memory, and hence there is no load on the database. This logging to Memcached is suitable for most live sites, unless the number of unique page accesses is excessively high.'),
 131+ );
 132+
94133 $form['other'] = array(
95134 '#type' => 'fieldset',
96135 '#title' => t('Other'),
@@ -123,7 +162,8 @@
124163 function performance_shutdown() {
125164 global $queries;
126165
127 - if ($_GET['q']) {
 166+// if ($_GET['q']) {
 167+ if (isset($_GET['q']) && ($_GET['q'])) {
128168 // q= has a value, use that for the path
129169 $path = $_GET['q'];
130170 }
@@ -144,7 +184,7 @@
145185 else {
146186 $params['mem'] = 0;
147187 }
148 -
 188+
149189 // Query time and count
150190 $query_count = 0;
151191 $query_timer = 0;
@@ -160,7 +200,7 @@
161201 $params['query_count'] = $query_count;
162202 $params['query_timer'] = $query_timer;
163203
164 - $anon = ($data['anon']) ? t('Yes') : t('No');
 204+ $anon = (!empty($data['anon']))? 'Yes' : 'No';
165205
166206 $header = array(
167207 'path' => $path,
@@ -190,6 +230,12 @@
191231 performance_log_summary_apc($params);
192232 }
193233 }
 234+
 235+ if (variable_get('performance_summary_memcache', 0)) {
 236+ if (performance_memcache_enabled()) {
 237+ performance_log_summary_memcache($params);
 238+ }
 239+ }
194240 }
195241
196242 function performance_log_summary_apc($params = array()) {
@@ -200,8 +246,8 @@
201247 'last_access' => time(),
202248 'bytes_max' => max($params['mem'], $data['bytes_max']),
203249 'bytes_avg' => ($data['bytes_avg'] + $params['mem']) / 2,
204 - 'millisecs_max' => max($params['timer'], $data['millisecs_max']),
205 - 'millisecs_avg' => ($data['millisecs_avg'] + $params['timer']) / 2,
 250+ 'ms_max' => max($params['timer'], $data['ms_max']),
 251+ 'ms_avg' => ($data['ms_avg'] + $params['timer']) / 2,
206252 'query_timer_max' => max($params['query_timer'], $data['query_timer_max']),
207253 'query_timer_avg' => ($data['query_timer_avg'] + $params['query_timer']) / 2,
208254 'query_count_max' => max($params['query_count'], $data['query_count_max']),
@@ -212,10 +258,10 @@
213259 else {
214260 $data = array(
215261 'path' => $params['path'],
216 - 'bytes_max' => $params['mem'],
 262+ 'bytes_max' => $params['mem'],
217263 'bytes_avg' => $params['mem'],
218 - 'millisecs_max' => $params['timer'],
219 - 'millisecs_avg' => $params['timer'],
 264+ 'ms_max' => $params['timer'],
 265+ 'ms_avg' => $params['timer'],
220266 'query_timer_max' => $params['query_timer'],
221267 'query_timer_avg' => $params['query_timer'],
222268 'query_count_max' => $params['query_count'],
@@ -227,16 +273,61 @@
228274 apc_store($key, $data);
229275 }
230276
 277+function performance_log_summary_memcache($params = array()) {
 278+ $key = PERFORMANCE_KEY . $params['path'];
 279+ if ($cache = cache_get($key, PERFORMANCE_MEMCACHE_BIN)) {
 280+ $type = 'existing';
 281+ $values = $cache->data;
 282+ $values = array(
 283+ 'path' => $params['path'],
 284+ 'last_access' => time(),
 285+ 'bytes_max' => max($params['mem'], $values['bytes_max']),
 286+ 'bytes_avg' => ($values['bytes_avg'] + $params['mem']) / 2,
 287+ 'ms_max' => max($params['timer'], $values['ms_max']),
 288+ 'ms_avg' => ($values['ms_avg'] + $params['timer']) / 2,
 289+ 'query_timer_max' => max($params['query_timer'], $values['query_timer_max']),
 290+ 'query_timer_avg' => ($values['query_timer_avg'] + $params['query_timer']) / 2,
 291+ 'query_count_max' => max($params['query_count'], $values['query_count_max']),
 292+ 'query_count_avg' => ($values['query_count_avg'] + $params['query_count']) / 2,
 293+ 'num_accesses' => $values['num_accesses'] + 1,
 294+ );
 295+ }
 296+ else {
 297+ $type = 'new';
 298+ // It is a new key
 299+ $values = array(
 300+ 'path' => $params['path'],
 301+ 'bytes_max' => $params['mem'],
 302+ 'bytes_avg' => $params['mem'],
 303+ 'ms_max' => $params['timer'],
 304+ 'ms_avg' => $params['timer'],
 305+ 'query_timer_max' => $params['query_timer'],
 306+ 'query_timer_avg' => $params['query_timer'],
 307+ 'query_count_max' => $params['query_count'],
 308+ 'query_count_avg' => $params['query_count'],
 309+ 'num_accesses' => 1,
 310+ 'last_access' => time(),
 311+ );
 312+
 313+ if ($keys_cache = cache_get(PERFORMANCE_KEY, PERFORMANCE_MEMCACHE_BIN)) {
 314+ $keys_values = $keys_cache->data;
 315+ }
 316+ $keys_values[$key] = 1;
 317+ cache_set(PERFORMANCE_KEY, $keys_values, PERFORMANCE_MEMCACHE_BIN, CACHE_PERMANENT);
 318+ }
 319+ cache_set($key, $values, PERFORMANCE_MEMCACHE_BIN, CACHE_PERMANENT);
 320+}
 321+
231322 function performance_log_summary_db($params = array()) {
232323 $row = db_fetch_object(db_query("SELECT * FROM {performance_summary} WHERE path = '%s'", $params['path']));
233324 if (!empty($row)) {
234 - db_query("UPDATE {performance_summary}
 325+ db_query("UPDATE {performance_summary}
235326 SET last_access = %d,
236327 num_accesses = num_accesses + 1,
237328 bytes_max = %d,
238329 bytes_avg = %d,
239 - millisecs_max = %d,
240 - millisecs_avg = %d,
 330+ ms_max = %d,
 331+ ms_avg = %d,
241332 query_timer_max = %d,
242333 query_timer_avg = %d,
243334 query_count_max = %d,
@@ -245,8 +336,8 @@
246337 time(),
247338 max($params['mem'], $row->bytes_max),
248339 ($row->bytes_avg + $params['mem']) / 2,
249 - max($params['timer'], $row->millisecs_max),
250 - ($row->millisecs_avg + $params['timer']) / 2,
 340+ max($params['timer'], $row->ms_max),
 341+ ($row->ms_avg + $params['timer']) / 2,
251342 max($params['query_timer'], $row->query_timer_max),
252343 ($row->query_timer_avg + $params['query_timer']) / 2,
253344 max($params['query_count'], $row->query_count_max),
@@ -257,15 +348,15 @@
258349 // First time we log this path, write fresh values
259350 db_query("INSERT INTO {performance_summary}
260351 (path, last_access, num_accesses,
261 - bytes_max, bytes_avg, millisecs_max, millisecs_avg,
 352+ bytes_max, bytes_avg, ms_max, ms_avg,
262353 query_count_max, query_count_avg, query_timer_max, query_timer_avg)
263 - VALUES
 354+ VALUES
264355 ('%s', %d, %d, %d, %d, %d, %d, %d, %d, %d, %d)",
265356 $params['path'],
266357 time(),
267358 1,
268 - $params['mem'],
269359 $params['mem'],
 360+ $params['mem'],
270361 $params['timer'],
271362 $params['timer'],
272363 $params['query_count'],
@@ -279,7 +370,7 @@
280371 function performance_log_details($params = array()) {
281372 global $user;
282373 $anon = ($user->uid) ? FALSE : TRUE;
283 - db_query("INSERT INTO {performance_detail} (path, anon, bytes, millisecs, timestamp, query_timer, query_count, data) VALUES ('%s', %d, %d, %d, %d, %d, %d, '%s')",
 374+ db_query("INSERT INTO {performance_detail} (path, anon, bytes, ms, timestamp, query_timer, query_count, data) VALUES ('%s', %d, %d, %d, %d, %d, %d, '%s')",
284375 $params['path'],
285376 $anon,
286377 $params['mem'],
@@ -294,8 +385,8 @@
295386 function performance_apc_list_all() {
296387 $key_list = array();
297388 $list = apc_cache_info('user');
298 - foreach($list['cache_list'] as $cache_id => $cache_data) {
299 - $regex = '/^' . PERFORMANCE_KEY . '/';
 389+ foreach ($list['cache_list'] as $cache_id => $cache_data) {
 390+ $regex = '/^'. PERFORMANCE_KEY .'/';
300391 if (preg_match($regex, $cache_data['info'])) {
301392 $key_list[] = $cache_data['info'];
302393 }
@@ -303,14 +394,30 @@
304395 return $key_list;
305396 }
306397
 398+/**
 399+ * Custom sort for summary performance report
 400+ *
 401+ * @param $x
 402+ * @param $y
 403+ * @return int
 404+ */
 405+function performance_summary_sort($x, $y) {
 406+ // This function is not working
 407+ return 0;
 408+}
 409+
307410 function performance_view_summary() {
308411 $sum = array();
 412+ $data_list = array();
 413+ $rows = array();
 414+
309415 $sum[] = variable_get('performance_summary_db', 0);
310416 $sum[] = variable_get('performance_summary_apc', 0);
 417+ $sum[] = variable_get('performance_summary_memcache', 0);
311418 $go = array_sum($sum);
312419
313420 if (!$go) {
314 - return t('Summary performance log is not enabled. Go to the !link to enable it.', array('!link' => l(t('settings page'), 'admin/settings/performance_logging')));
 421+ return t('Summary performance log is not enabled. Go to the <a href="@link">settings page</a> to enable it.', array('@link' => url('admin/settings/performance_logging')));
315422 }
316423
317424 $header = array();
@@ -320,58 +427,73 @@
321428 $header[] = array('data' => t('# accesses'), 'field' => 'num_accesses');
322429 $header[] = array('data' => t('Max Memory (MB)'), 'field' => 'bytes_max');
323430 $header[] = array('data' => t('Avg Memory (MB)'), 'field' => 'bytes_avg');
324 - $header[] = array('data' => t('Milliseconds (Max)'), 'field' => 'millisecs_max');
325 - $header[] = array('data' => t('Milliseconds (Avg)'), 'field' => 'millisecs_avg');
 431+ $header[] = array('data' => t('ms (Max)'), 'field' => 'ms_max');
 432+ $header[] = array('data' => t('ms (Avg)'), 'field' => 'ms_avg');
326433
327434 if (variable_get('dev_query', 0)) {
328 - $header[] = array('data' => t('Query Millisecs (Max)'), 'field' => 'query_timer_max');
329 - $header[] = array('data' => t('Query Millisecs (Avg)'), 'field' => 'query_timer_avg');
330 - $header[] = array('data' => t('Query Count (Max)'), 'field' => 'query_count_max');
331 - $header[] = array('data' => t('Query Count (Avg)'), 'field' => 'query_count_avg');
 435+ $header[] = array('data' => t('Query ms (Max)'), 'field' => 'query_timer_max');
 436+ $header[] = array('data' => t('Query ms (Avg)'), 'field' => 'query_timer_avg');
 437+ $header[] = array('data' => t('Query Count (Max)'), 'field' => 'query_count_max');
 438+ $header[] = array('data' => t('Query Count (Avg)'), 'field' => 'query_count_avg');
332439 }
333440
334 - $total_rows = $shown = $last_max = $total_bytes = $total_millisecs = $total_accesses = 0;
 441+ $total_rows = $shown = $last_max = $total_bytes = $total_ms = $total_accesses = 0;
335442 $last_min = time();
336443
337444 $threshold = variable_get('performance_threshold_accesses', 0);
338445
339 - if (variable_get('performance_summary_apc', 0) && function_exists('apc_cache_info')) {
 446+ if (variable_get('performance_summary_memcache', 0) && performance_memcache_enabled()) {
 447+ $tablesort = tablesort_init($header);
 448+ // Get the data from memcache
 449+ if ($keys_cache = cache_get(PERFORMANCE_KEY, PERFORMANCE_MEMCACHE_BIN)) {
 450+ if ($keys_cache->data) {
 451+ foreach ($keys_cache->data as $key => $v) {
 452+ $cache = cache_get($key, PERFORMANCE_MEMCACHE_BIN);
 453+ $data_list[] = $cache->data;
 454+ }
 455+ }
 456+ }
 457+ usort($data_list, 'performance_summary_sort');
 458+ }
 459+ else if (variable_get('performance_summary_apc', 0) && function_exists('apc_cache_info')) {
 460+ $tablesort = tablesort_init($header);
340461 // Get the data from the APC cache
341 - foreach(performance_apc_list_all() as $key) {
342 - $data_list[] = apc_fetch($key);
 462+ foreach (performance_apc_list_all() as $key) {
 463+ $data_list[] = apc_fetch($key) + $tablesort;
343464 }
 465+ usort($data_list, 'performance_summary_sort');
344466 }
345467 else {
346468 // Get the data form the database table
347469 $sql = "SELECT * FROM {performance_summary}";
348470 $tablesort = tablesort_sql($header);
349471 $result = pager_query($sql . $tablesort, 50);
350 - while($row = db_fetch_array($result)) {
 472+ while ($row = db_fetch_array($result)) {
351473 $data_list[] = $row;
352474 }
353475 }
354476
355 - foreach($data_list as $data) {
 477+ foreach ($data_list as $data) {
356478 $total_rows++;
357479 $last_max = max($last_max, $data['last_access']);
358480 $last_min = min($last_min, $data['last_access']);
359481
360482 // Calculate running averages
361483 $total_bytes += $data['bytes_avg'];
362 - $total_millisecs += $data['millisecs_avg'];
 484+ $total_ms += $data['ms_avg'];
363485 $total_accesses += $data['num_accesses'];
364486
365487 $row_data = array();
366488
367489 if ($data['num_accesses'] > $threshold) {
368490 $shown++;
369 - $row_data[] = $data['path'];
 491+ $row_data[] = check_plain($data['path']);
370492 $row_data[] = format_date($data['last_access'], 'small');
371493 $row_data[] = $data['num_accesses'];
372494 $row_data[] = number_format($data['bytes_max']/1024/1024, 2);
373495 $row_data[] = number_format($data['bytes_avg']/1024/1024, 2);
374 - $row_data[] = number_format($data['millisecs_max'], 1);
375 - $row_data[] = number_format($data['millisecs_avg'], 1);
 496+ $row_data[] = number_format($data['ms_max'], 1);
 497+ $row_data[] = number_format($data['ms_avg'], 1);
376498 if (variable_get('dev_query', 0)) {
377499 $row_data[] = number_format($data['query_timer_max'], 1);
378500 $row_data[] = number_format($data['query_timer_avg'], 1);
@@ -389,27 +511,27 @@
390512 $output = '';
391513 if ($threshold) {
392514 $output .= t('Showing !shown paths with more than !threshold accesses, out of !total total paths.',
393 - array('!threshold' => $threshold, '!shown' => $shown, '!total' => $total_rows)) . '<br/>';
 515+ array('!threshold' => $threshold, '!shown' => $shown, '!total' => $total_rows)) .'<br/>';
394516 }
395517 else {
396 - $output .= t('Showing all !total paths.', array('!total' => $total_rows)) . '<br/>';
 518+ $output .= t('Showing all !total paths.', array('!total' => $total_rows)) .'<br/>';
397519 }
398520
399521 // Protect against divide by zero
400522 if ($total_rows > 0) {
401523 $mb_avg = number_format($total_bytes/$total_rows/1024/1024, 1);
402 - $ms_avg = number_format($total_millisecs/$total_rows, 2);
 524+ $ms_avg = number_format($total_ms/$total_rows, 2);
403525 }
404526 else {
405527 $mb_avg = 'n/a';
406528 $ms_avg = 'n/a';
407529 }
408530
409 - $output .= t('Average memory per page: !mb_avg MB', array('!mb_avg' => $mb_avg)) . '<br/>';
410 - $output .= t('Average milliseconds per page: !ms_avg', array('!ms_avg' => $ms_avg)) . '<br/>';
411 - $output .= t('Total number of page accesses: !accesses', array('!accesses' => $total_accesses)) . '<br/>';
412 - $output .= t('First access: !access.', array('!access' => format_date($last_min, 'small'))) . '<br/>';
413 - $output .= t('Last access: !access.', array('!access' => format_date($last_max, 'small'))) . '<br/>';
 531+ $output .= t('Average memory per page: !mb_avg MB', array('!mb_avg' => $mb_avg)) .'<br/>';
 532+ $output .= t('Average ms per page: !ms_avg', array('!ms_avg' => $ms_avg)) .'<br/>';
 533+ $output .= t('Total number of page accesses: !accesses', array('!accesses' => $total_accesses)) .'<br/>';
 534+ $output .= t('First access: !access.', array('!access' => format_date($last_min, 'small'))) .'<br/>';
 535+ $output .= t('Last access: !access.', array('!access' => format_date($last_max, 'small'))) .'<br/>';
414536
415537 $output .= theme('table', $header, $rows);
416538 $output .= theme('pager', NULL, 50, 0);
@@ -419,21 +541,21 @@
420542
421543 function performance_view_details() {
422544 if (!variable_get('performance_detail', 0)) {
423 - return t('Detail performance log is not enabled. Go to the !link to enable it.', array('!link' => l(t('settings page'), 'admin/settings/performance_logging')));
 545+ return t('Detail performance log is not enabled. Go to the <a href="@link">settings page</a> to enable it.', array('@link' => url('admin/settings/performance_logging')));
424546 }
425547
426548 $header = array(
427 - array('data' => t('#'), 'field' => 'pid', 'sort' => 'desc'),
428 - array('data' => t('Date'), 'field' => 'timestamp'),
429 - array('data' => t('Path'), 'field' => 'path'),
430 - array('data' => t('Memory (MB)'), 'field' => 'bytes'),
431 - array('data' => t('Milliseconds (Total)'), 'field' => 'millisecs'),
432 - array('data' => t('Anonymous?'), 'field' => 'anon'),
 549+ array('data' => t('#'), 'field' => 'pid', 'sort' => 'desc'),
 550+ array('data' => t('Date'), 'field' => 'timestamp'),
 551+ array('data' => t('Path'), 'field' => 'path'),
 552+ array('data' => t('Memory (MB)'), 'field' => 'bytes'),
 553+ array('data' => t('ms (Total)'), 'field' => 'ms'),
 554+ array('data' => t('Anonymous?'), 'field' => 'anon'),
433555 );
434556
435557 if (variable_get('dev_query', 0)) {
436 - $header[] = array('data' => t('# Queries'), 'field' => 'query_count');
437 - $header[] = array('data' => t('Query Milliseconds'), 'field' => 'query_timer');
 558+ $header[] = array('data' => t('# Queries'), 'field' => 'query_count');
 559+ $header[] = array('data' => t('Query ms'), 'field' => 'query_timer');
438560 }
439561
440562 $sql = "SELECT * FROM {performance_detail}";
@@ -445,9 +567,9 @@
446568
447569 $row_data[] = $data['pid'];
448570 $row_data[] = format_date($data['timestamp'], 'small');
449 - $row_data[] = $data['path'];
 571+ $row_data[] = check_plain($data['path']);
450572 $row_data[] = number_format($data['bytes']/1024/1024, 2);
451 - $row_data[] = $data['millisecs'];
 573+ $row_data[] = $data['ms'];
452574 $row_data[] = ($data['anon']) ? t('Yes') : t('No');
453575
454576 if (variable_get('dev_query', 0)) {
@@ -497,7 +619,7 @@
498620 return;
499621 }
500622
501 - foreach($list as $key) {
 623+ foreach ($list as $key) {
502624 if ($data = apc_fetch($key)) {
503625 if ($data['last_access'] <= $timestamp) {
504626 apc_delete($key);
@@ -508,7 +630,7 @@
509631
510632 function performance_clear_apc_confirm() {
511633 $form['confirm'] = array(
512 - '#value' => t('Confirm APC clear'),
 634+ '#value' => t('Confirm APC clear'),
513635 );
514636 return confirm_form(
515637 $form,
@@ -519,7 +641,7 @@
520642 t('Cancel'));
521643 }
522644
523 -function performance_clear_apc_confirm_submit($form_id, &$form) {
 645+function performance_clear_apc_confirm_submit($form, &$form_state) {
524646 if (!function_exists('apc_cache_info')) {
525647 drupal_set_message(t('APC is not enabled. Nothing to do ...'), 'status', FALSE);
526648 drupal_goto('admin/settings/performance');
@@ -532,7 +654,7 @@
533655 return;
534656 }
535657
536 - foreach($list as $key) {
 658+ foreach ($list as $key) {
537659 if ($data = apc_fetch($key)) {
538660 apc_delete($key);
539661 }
@@ -542,8 +664,44 @@
543665 drupal_goto('admin/settings/performance');
544666 }
545667
 668+function performance_clear_memcache_confirm() {
 669+ $form['confirm'] = array(
 670+ '#value' => t('Confirm Memcache clear'),
 671+ );
 672+ return confirm_form(
 673+ $form,
 674+ t('Are you sure you want to clear the Memcache statistics for this site?'),
 675+ 'admin/settings/performance_logging',
 676+ t('This will clear all the collected performance statistics stored in Memcache. This action cannot be undone.'),
 677+ t('Clear'),
 678+ t('Cancel'));
 679+}
 680+
 681+function performance_clear_memcache_confirm_submit($form, &$form_state) {
 682+ if (!performance_memcache_enabled()) {
 683+ drupal_set_message(t('Memcache is not enabled. Nothing to do ...'), 'status', FALSE);
 684+ drupal_goto('admin/settings/performance');
 685+ return;
 686+ }
 687+
 688+ // We have to iterate over all entries and delete them, reaching down
 689+ // the API stack and calling dmemcache_delete directly.
 690+ // This is suboptimal, but there is no other alternative
 691+ if ($keys_cache = cache_get(PERFORMANCE_KEY, PERFORMANCE_MEMCACHE_BIN)) {
 692+ if ($keys_cache->data) {
 693+ foreach ($keys_cache->data as $key => $v) {
 694+ dmemcache_delete($key, PERFORMANCE_MEMCACHE_BIN);
 695+ }
 696+ dmemcache_delete(PERFORMANCE_KEY, PERFORMANCE_MEMCACHE_BIN);
 697+ }
 698+ }
 699+
 700+ drupal_set_message(t('Performance statistics collected in Memcache has been cleared.'), 'status', FALSE);
 701+ drupal_goto('admin/settings/performance');
 702+}
 703+
546704 /**
547 - * Implementation of hook_nagios_info()
 705+ * Implementation of hook_nagios_info().
548706 */
549707 function performance_nagios_info() {
550708 return array(
@@ -553,11 +711,11 @@
554712 }
555713
556714 /**
557 - * Implementation of hook_nagios()
 715+ * Implementation of hook_nagios().
558716 */
559717 function performance_nagios() {
560718 $info = performance_nagios_info();
561 - $id = $info['id'];
 719+ $id = $info['id'];
562720
563721 // Find out if we have what we need enabled
564722 $sum = array();
@@ -577,29 +735,29 @@
578736 }
579737
580738 // Initialize variables
581 - $total_rows = $total_bytes = $total_millisecs = $total_accesses = $total_query_time = $total_query_count = 0;
 739+ $total_rows = $total_bytes = $total_ms = $total_accesses = $total_query_time = $total_query_count = 0;
582740
583741 // Check which data store to use
584742 if (variable_get('performance_summary_apc', 0) && function_exists('apc_cache_info')) {
585743 // Get the data from the APC cache
586 - foreach(performance_apc_list_all() as $key) {
 744+ foreach (performance_apc_list_all() as $key) {
587745 $data_list[] = apc_fetch($key);
588746 }
589747 }
590748 else {
591749 // Get the data form the database table for URLs that have been accessed in the last 15 minutes
592750 $result = db_query("SELECT * FROM {performance_summary} WHERE last_access >= %d", time() - 15*60);
593 - while($row = db_fetch_array($result)) {
 751+ while (is_array($row = db_fetch_array($result))) {
594752 $data_list[] = $row;
595753 }
596754 }
597755
598 - foreach($data_list as $data) {
 756+ foreach ($data_list as $data) {
599757 $total_rows++;
600758
601759 // Calculate running averages
602760 $total_bytes += $data['bytes_avg'];
603 - $total_millisecs += $data['millisecs_avg'];
 761+ $total_ms += $data['ms_avg'];
604762 $total_accesses += $data['num_accesses'];
605763 $total_query_time += $data['query_timer_avg'];
606764 $total_query_count += $data['query_count_avg'];
@@ -607,7 +765,7 @@
608766
609767 // Protect against divide by zero
610768 if ($total_rows > 0) {
611 - $ms_avg = number_format($total_millisecs / $total_rows, 1, '.', '');
 769+ $ms_avg = number_format($total_ms / $total_rows, 1, '.', '');
612770 $ms_query = number_format($total_query_time / $total_rows, 1, '.', '');
613771 $query_count = number_format($total_query_count / $total_rows, 2, '.', '');
614772 $mb_avg = number_format($total_bytes / $total_rows/1024/1024, 1);
@@ -649,4 +807,3 @@
650808 ),
651809 );
652810 }
653 -
Index: civicrm/trunk/sites/all/modules/devel/performance/performance.install
@@ -1,8 +1,16 @@
22 <?php
3 -// $Id: performance.install,v 1.1.4.7 2009/06/25 02:51:54 kbahey Exp $
 3+// $Id: performance.install,v 1.1.4.12 2010/02/08 03:56:14 kbahey Exp $
44
5 -// Copyright Khalid Baheyeldin 2008 of http://2bits.com
 5+/**
 6+ * @file
 7+ * Install and update for Performance Logging
 8+ *
 9+ * Copyright Khalid Baheyeldin 2008 of http://2bits.com
 10+ */
611
 12+// Minimum APC shm memory size to require
 13+define('PERFORMANCE_MIN_MEMORY', 48);
 14+
715 function performance_schema() {
816 $schema = array();
917
@@ -12,8 +20,8 @@
1321 'last_access' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'disp-width' => '11'),
1422 'bytes_max' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'disp-width' => '11'),
1523 'bytes_avg' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'disp-width' => '11'),
16 - 'millisecs_max' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'disp-width' => '11'),
17 - 'millisecs_avg' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'disp-width' => '11'),
 24+ 'ms_max' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'disp-width' => '11'),
 25+ 'ms_avg' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'disp-width' => '11'),
1826 'query_count_max' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'disp-width' => '11'),
1927 'query_count_avg' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'disp-width' => '11'),
2028 'query_timer_max' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'disp-width' => '11'),
@@ -30,7 +38,7 @@
3139 'pid' => array('type' => 'serial', 'not null' => TRUE, 'disp-width' => '11'),
3240 'timestamp' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'disp-width' => '11'),
3341 'bytes' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'disp-width' => '11'),
34 - 'millisecs' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'disp-width' => '11'),
 42+ 'ms' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'disp-width' => '11'),
3543 'query_count' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'disp-width' => '11'),
3644 'query_timer' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'disp-width' => '11'),
3745 'anon' => array('type' => 'int', 'not null' => FALSE, 'default' => 1, 'disp-width' => '1'),
@@ -64,45 +72,45 @@
6573 return $requirements;
6674 }
6775
68 - if (variable_get('performance_detail', 0)) {
69 - $requirements['performance_detail'] = array(
70 - 'title' => t('Performance logging details'),
71 - 'value' => 'Enabled',
72 - 'severity' => REQUIREMENT_WARNING,
73 - 'description' => t('Performance detailed logging is !link. This can cause severe issues on live sites.', array('!link' => l(t('enabled'), 'admin/settings/performance_logging'))),
74 - );
75 - }
 76+ if (variable_get('performance_detail', 0)) {
 77+ $requirements['performance_detail'] = array(
 78+ 'title' => t('Performance logging details'),
 79+ 'value' => 'Enabled',
 80+ 'severity' => REQUIREMENT_WARNING,
 81+ 'description' => t('Performance detailed logging is <a href="@link">enabled</a>. This can cause severe issues on live sites.', array('@link' => url('admin/settings/performance_logging'))),
 82+ );
 83+ }
7684
77 - if (variable_get('dev_query', 0)) {
78 - if (variable_get('performance_detail', 0) ||
79 - variable_get('performance_summary_db', 0) ||
80 - variable_get('performance_summary_apc', 0)) {
81 - $requirements['performance_query'] = array(
82 - 'title' => t('Performance logging query'),
83 - 'value' => 'Enabled',
84 - 'severity' => REQUIREMENT_WARNING,
85 - 'description' => t('Query timing and count logging is !link. This can cause memory size per page to be larger than normal.', array('!link' => l(t('enabled'), 'admin/settings/performance_logging'))),
86 - );
87 - }
88 - }
 85+ if (variable_get('dev_query', 0)) {
 86+ if (variable_get('performance_detail', 0) ||
 87+ variable_get('performance_summary_db', 0) ||
 88+ variable_get('performance_summary_apc', 0)) {
 89+ $requirements['performance_query'] = array(
 90+ 'title' => t('Performance logging query'),
 91+ 'value' => 'Enabled',
 92+ 'severity' => REQUIREMENT_WARNING,
 93+ 'description' => t('Query timing and count logging is <a href="@link">enabled</a>. This can cause memory size per page to be larger than normal.', array('@link' => url('admin/settings/performance_logging'))),
 94+ );
 95+ }
 96+ }
8997
90 - if (!function_exists('apc_fetch')) {
91 - $requirements['performance_apc'] = array(
92 - 'title' => t('Performance logging APC'),
93 - 'value' => 'Disabled',
94 - 'severity' => REQUIREMENT_WARNING,
95 - 'description' => t('Performance logging on live web sites works best if APC is enabled.'),
96 - );
97 - }
 98+ if (!function_exists('apc_fetch')) {
 99+ $requirements['performance_apc'] = array(
 100+ 'title' => t('Performance logging APC'),
 101+ 'value' => 'Disabled',
 102+ 'severity' => REQUIREMENT_WARNING,
 103+ 'description' => t('Performance logging on live web sites works best if APC is enabled.'),
 104+ );
 105+ }
98106
99 - $shm_size = ini_get('apc.shm_size');
100 - if ($shm_size < 48) {
101 - $requirements['performance_apc_mem'] = array(
102 - 'title' => t('Performance logging APC memory size'),
103 - 'value' => $shm_size,
104 - 'severity' => REQUIREMENT_WARNING,
105 - 'description' => t('APC has been configured for !size, which is less than the recommended 48 MB of memory. If you encounter errors when viewing the summary report, then try to increase that limit for APC.', array('!size' => $shm_size)),
106 - );
 107+ $shm_size = ini_get('apc.shm_size');
 108+ if (function_exists('apc_fetch') && $shm_size < PERFORMANCE_MIN_MEMORY) {
 109+ $requirements['performance_apc_mem'] = array(
 110+ 'title' => t('Performance logging APC memory size'),
 111+ 'value' => $shm_size,
 112+ 'severity' => REQUIREMENT_WARNING,
 113+ 'description' => t('APC has been configured for !size, which is less than the recommended !min_memory MB of memory. If you encounter errors when viewing the summary report, then try to increase that limit for APC.', array('!size' => 1*$shm_size, '!min_memory' => PERFORMANCE_MIN_MEMORY)),
 114+ );
107115 }
108116
109117 return $requirements;
@@ -120,3 +128,23 @@
121129 db_add_field($ret, 'performance_detail', 'data', array('type' => 'blob', 'not null' => FALSE, 'size' => 'big'));
122130 return $ret;
123131 }
 132+
 133+/**
 134+ * Harmonize notations for milliseconds to "ms".
 135+ *
 136+ * @return array
 137+ */
 138+function performance_update_6001() {
 139+ $int_field = array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'disp-width' => '11');
 140+
 141+ $ret = array();
 142+ db_change_field($ret, 'performance_summary', 'millisecs_max', 'ms_max', $int_field);
 143+ db_change_field($ret, 'performance_summary', 'millisecs_avg', 'ms_avg', $int_field);
 144+ db_change_field($ret, 'performance_detail', 'millisecs', 'ms', $int_field);
 145+
 146+ // We don't have a cache update method, so it's better to clear it
 147+ if (function_exists('apc_fetch')) {
 148+ apc_clear_cache('user');
 149+ }
 150+ return $ret;
 151+}
Index: civicrm/trunk/sites/all/modules/devel/performance/README.txt
@@ -1,4 +1,4 @@
2 -$Id: README.txt,v 1.1 2008/10/20 19:33:59 kbahey Exp $
 2+$Id: README.txt,v 1.1.4.1 2010/05/16 22:14:28 kbahey Exp $
33
44 By Khalid Baheyeldin
55
@@ -23,33 +23,64 @@
2424 * Summary logging logs the average and maximum page generation time, average and maximum memory
2525 usage, last access time, and number of accesses for each path.
2626
27 -* Summary is logged to APC, if installed, so as to not cause extra load on the database. This is
28 - the only mode recommended for live sites.
 27+* Summary can be logged to memcache, if configured, so as to not cause extra load on the database.
 28+ This works when APC cannot be used (e.g. certain FastCGI configurations, or when you have many
 29+ web servers on different boxes. This mode is recommended for live sites.
2930
 31+* Summary can be logged to APC, if installed, and the APC data cache is shared, so as to not cause
 32+ extra load on the database. This mode is recommended for live sites.
 33+
3034 * A settings option is available when using summary mode with APC, to exclude pages with less
3135 than a certain number of accesses. Useful for large sites.
3236
3337 * Support for normal page cache.
3438
35 -Note that detailed logging is only suitable for a site that is in development or testing. Do NOT enable
36 -detailed logging on a live site.
 39+Note that detailed logging is only suitable for a site that is in development or testing. Do NOT
 40+enable detailed logging on a live site.
3741
38 -The memory measurement feature of this module depends on the memory_get_peak_usage() function, available
39 -only in PHP 5.2.x or later.
 42+The memory measurement feature of this module depends on the memory_get_peak_usage() function,
 43+available only in PHP 5.2.x or later.
4044
41 -Only summary logging with APC is the recommended mode for live sites, with a threshold of 2 or more.
 45+Only summary logging with Memcache or APC are recommended mode for live sites, with a threshold of
 46+2 or more.
4247
43 -Patches:
44 -For Drupal 5.x, a simple patch is needed if you want to use the module with Drupal's normal page caching
45 -mode.
 48+Note on Completeness:
 49+---------------------
 50+Please note that when summary logging to APC or Memcache, the data captured in the summary will
 51+not be comprehensive reflecting every single page view for every URL.
4652
47 -The patch is included in the patches directory in the module's tarball.
 53+The reason for this is that there is no atomic locking when updating the data structures that
 54+store per-URL statistics in this module.
4855
49 -To apply the patch, check http://drupal.org/patch for instructions.
 56+This means that the values you get when using these storage caches are only samples, and would
 57+miss some page views, depending on how busy the site is.
5058
51 -If you are using Drupal 6.x or higher, there is no need for this patch.
 59+For memcache, there is way to implement locking using the $mc->increment and/or $mc->add as well.
 60+However, there is a risk if these are implemented, that there will be less concurrency and we
 61+can cause a site to slow down.
5262
 63+Configuration:
 64+--------------
 65+If you are using memcache, then you need to configure an extra bin for performance.
 66+If you have multiple web server boxes, then it is best to centralize this bin for
 67+all the boxes, so you get combined statistics.
 68+
 69+Your settings.php looks like this:
 70+
 71+ $conf = array(
 72+ 'cache_inc' => './sites/all/modules/memcache/memcache.inc',
 73+
 74+ 'memcache_servers' => array(
 75+ '127.0.0.1:11211' => 'default',
 76+ // More bins here ....
 77+ '127.0.0.1:11311' => 'performance',
 78+ ),
 79+
 80+ 'memcache_bins' => array(
 81+ 'cache_performance' => 'performance',
 82+ ),
 83+ );
 84+
5385 Bugs/Features/Patches:
5486 ----------------------
5587 If you want to report bugs, feature requests, or submit a patch, please do so at the project page on
Index: civicrm/trunk/sites/all/modules/devel/performance/performance.info
@@ -4,9 +4,9 @@
55 package = Development
66 core = 6.x
77
8 -; Information added by drupal.org packaging script on 2009-08-19
9 -version = "6.x-1.17"
 8+; Information added by drupal.org packaging script on 2010-08-04
 9+version = "6.x-1.21"
1010 core = "6.x"
1111 project = "devel"
12 -datestamp = "1250713853"
 12+datestamp = "1280961078"
1313
Index: civicrm/trunk/sites/all/modules/devel/devel_generate.info
@@ -4,9 +4,9 @@
55 package = Development
66 core = 6.x
77
8 -; Information added by drupal.org packaging script on 2009-08-19
9 -version = "6.x-1.17"
 8+; Information added by drupal.org packaging script on 2010-08-04
 9+version = "6.x-1.21"
1010 core = "6.x"
1111 project = "devel"
12 -datestamp = "1250713853"
 12+datestamp = "1280961078"
1313
Index: civicrm/trunk/sites/all/modules/devel/devel.install
@@ -1,5 +1,5 @@
22 <?php
3 -// $Id: devel.install,v 1.24.2.7 2009/07/30 19:38:48 weitzman Exp $
 3+// $Id: devel.install,v 1.24.2.8 2010/08/02 15:04:55 weitzman Exp $
44 /**
55 * @file
66 * Install file for devel module.
@@ -172,3 +172,12 @@
173173 menu_link_save($item);
174174 return array();
175175 }
 176+
 177+/**
 178+ * As per issue #813132: change schablon.com to white for krumo.
 179+ */
 180+function devel_update_6003() {
 181+ if (variable_get('devel_krumo_skin', 'white') == 'schablon.com') {
 182+ variable_set('devel_krumo_skin', 'white');
 183+ }
 184+}
Index: civicrm/trunk/sites/all/modules/devel/devel_generate.drush.inc
@@ -1,5 +1,5 @@
22 <?php
3 -// $Id: devel_generate.drush.inc,v 1.1.2.7 2009/05/30 04:34:47 weitzman Exp $
 3+// $Id: devel_generate.drush.inc,v 1.1.2.14 2010/07/07 16:46:37 weitzman Exp $
44
55 /**
66 * @file
@@ -11,11 +11,11 @@
1212 */
1313 function devel_generate_drush_help($section) {
1414 switch ($section) {
15 - case 'drush:generate users':
 15+ case 'drush:generate-users':
1616 return dt('Generate user accounts.');
17 - case 'drush:generate taxonomy':
 17+ case 'drush:generate-taxonomy':
1818 return dt('Generate taxonomy terms for a given vocabulary.');
19 - case 'drush:generate content':
 19+ case 'drush:generate-content':
2020 return dt('Generate nodes and comments.');
2121 }
2222 }
@@ -24,8 +24,7 @@
2525 * Implementation of hook_drush_command().
2626 */
2727 function devel_generate_drush_command() {
28 - $items['generate users'] = array(
29 - 'callback' => 'drush_generate_users',
 28+ $items['generate-users'] = array(
3029 'description' => 'Creates users.',
3130 'arguments' => array(
3231 'num_users' => 'Number of users to generate.',
@@ -33,9 +32,9 @@
3433 'options' => array(
3534 'kill' => 'Delete all users before generating new ones.',
3635 ),
 36+ 'aliases' => array('genu'),
3737 );
38 - $items['generate taxonomy'] = array(
39 - 'callback' => 'drush_generate_taxonomy',
 38+ $items['generate-taxonomy'] = array(
4039 'description' => 'Creates taxonomy.',
4140 'arguments' => array(
4241 'vid' => 'Vocabulary ID into which new terms will be inserted.',
@@ -44,18 +43,23 @@
4544 'options' => array(
4645 'kill' => 'Delete all terms in specified vocab before generating.'
4746 ),
48 -
 47+ 'aliases' => array('gent'),
4948 );
50 - $items['generate content'] = array(
51 - 'callback' => 'drush_generate_nodescontent',
 49+ $items['generate-content'] = array(
5250 'description' => 'Creates content.',
 51+ 'drupal dependencies' => array('devel_generate'),
5352 'arguments' => array(
5453 'num_nodes' => 'Number of nodes to generate.',
55 - 'num_comments' => 'Number of comments to generate.',
 54+ 'max_comments' => 'Maximum number of comments to generate.',
5655 ),
5756 'options' => array(
58 - 'kill' => 'Delete all content before generating new content.'
 57+ 'kill' => 'Delete all content before generating new content.',
 58+ 'add-terms' => 'Add terms to generated nodes.',
 59+ 'add-upload' => 'Add an attached file to generated nodes.',
 60+ 'types' => 'Specify which types of nodes to generate. Should be a comma-separated list.',
 61+ 'languages' => 'A comma-separated list of language codes',
5962 ),
 63+ 'aliases' => array('genc'),
6064 );
6165 return $items;
6266 }
@@ -63,7 +67,7 @@
6468 /**
6569 * Command callback. Generate a number of users.
6670 */
67 -function drush_generate_users($num_users = NULL) {
 71+function drush_devel_generate_generate_users($num_users = NULL) {
6872 if (drush_generate_is_number($num_users) == FALSE) {
6973 drush_set_error('DEVEL_GENERATE_INVALID_NUMBER', dt('Invalid number of users.'));
7074 }
@@ -75,7 +79,7 @@
7680 /**
7781 * Command callback. Generate a number of taxonomy.
7882 */
79 -function drush_generate_taxonomy($num_vocab = NULL, $num_terms = NULL) {
 83+function drush_devel_generate_generate_taxonomy($num_vocab = NULL, $num_terms = NULL) {
8084 if (drush_generate_is_number($num_vocab) == FALSE) {
8185 drush_set_error('DEVEL_GENERATE_INVALID_VID', dt('Invalid vocabulary ID.'));
8286 }
@@ -90,14 +94,22 @@
9195 /**
9296 * Command callback. Generate a number of content.
9397 */
94 -function drush_generate_nodescontent($num_nodes = NULL, $num_comments = NULL) {
 98+function drush_devel_generate_generate_content($num_nodes = NULL, $max_comments = NULL, $add_language = NULL) {
9599 if (drush_generate_is_number($num_nodes) == FALSE) {
96100 drush_set_error('DEVEL_GENERATE_INVALID_NUM_NODES', dt('Invalid number of nodes'));
97101 }
98 - if (!empty($num_comments) && drush_generate_is_number($num_comments) == FALSE) {
 102+ if (!empty($max_comments) && drush_generate_is_number($max_comments) == FALSE) {
99103 drush_set_error('DEVEL_GENERATE_INVALID_NUM_COMMENTS', dt('Invalid number of comments.'));
100104 }
101105
 106+ $add_language = drush_get_option('languages');
 107+ if (!empty($add_language)) {
 108+ $add_language = explode(',', str_replace(' ', '', $add_language));
 109+ // Intersect with the enabled languages to make sure the language args
 110+ // passed are actually enabled.
 111+ $values['values']['add_language'] = array_flip(array_intersect($add_language, array_keys(locale_language_list())));
 112+ }
 113+
102114 // Let's load user 1, seems to be need for creating comments.
103115 global $user;
104116 $user_one = user_load(array('uid' => '1'));
@@ -109,9 +121,12 @@
110122 if (drush_get_option('kill')) $values['values']['kill_content'] = 1;
111123 $values['values']['title_length'] = '8';
112124 $values['values']['num_nodes'] = $num_nodes;
113 - $values['values']['num_comments'] = $num_comments;
 125+ $values['values']['max_comments'] = $max_comments;
 126+ $values['values']['add_terms'] = drush_get_option('add-terms', FALSE);
 127+ $values['values']['add_upload'] = drush_get_option('add-upload', FALSE);
114128 $all_types = array_keys(devel_generate_content_types());
115 - if ($types = drush_get_option('types')) {
 129+ if (drush_get_option('types')) {
 130+ $types = explode(',', drush_get_option('types'));
116131 $types = array_intersect($types, $all_types);
117132 }
118133 else {
@@ -120,7 +135,7 @@
121136 $values['values']['node_types'] = drupal_map_assoc($types);
122137
123138 drush_op('devel_generate_content', $values);
124 - drush_log(dt('Generated @num_nodes nodes, @num_comments comments per node', array('@num_nodes' => $num_nodes, '@num_comments' => $num_comments)), 'ok');
 139+ drush_log(dt('Generated @num_nodes nodes, @max_comments comments per node', array('@num_nodes' => $num_nodes, '@max_comments' => $max_comments)), 'ok');
125140 }
126141
127142 //////////////////////////////////////////////////////////////////////////////
Index: civicrm/trunk/sites/all/modules/devel/devel_node_access.module
@@ -1,5 +1,5 @@
22 <?php
3 -// $Id: devel_node_access.module,v 1.15.2.14 2009/07/25 19:59:18 salvis Exp $
 3+// $Id: devel_node_access.module,v 1.15.2.31 2010/07/13 19:50:10 salvis Exp $
44 /**
55 * @file
66 *
@@ -12,7 +12,7 @@
1313 define('DNA_ACCESS_VIEW', 'view devel_node_access information');
1414
1515 function devel_node_access_perm() {
16 - return array(DNA_ACCESS_VIEW);
 16+ return array('view devel_node_access information');
1717 }
1818
1919 /**
@@ -28,18 +28,16 @@
2929 $output .= '<p>'. t('The node_access table is one method Drupal provides to hide content from some users while displaying it to others. By default, Drupal shows all nodes to all users. There are a number of optional modules which may be installed to hide content from some users.') ."</p>\n";
3030 $output .= '<p>'. t('If you have not installed any of these modules, you really have no need for the devel_node_access module. This module is intended for use during development, so that developers and admins can confirm that the node_access table is working as expected. You probably do not want this module enabled on a production site.') ."</p>\n";
3131 $output .= '<p>'. t('This module provides two blocks. One called Devel Node Access by User is visible when a single node is shown on a page. This block shows which users can view, update or delete the node shown. Note that this block uses an inefficient algorithm to produce its output. You should only enable this block on sites with very few user accounts.') ."</p>\n";
32 - $output .= '<p>'. t('The second block provided by this module shows the entries in the node_access table for any nodes shown on the current page. You can enable the debug mode on the !settings_page to display much more information, but this can cause considerable overhead. Because the tables shown are wide, it is recommended to enable the blocks in the page footer rather than a sidebar.',
33 - array('!settings_page' => l(t('settings page'), 'admin/settings/devel', array('fragment' => 'edit-devel-node-access-debug-mode')))
 32+ $output .= '<p>'. t('The second block provided by this module shows the entries in the node_access table for any nodes shown on the current page. You can enable the debug mode on the <a href="@settings_page">settings page</a> to display much more information, but this can cause considerable overhead. Because the tables shown are wide, it is recommended to enable the blocks in the page footer rather than a sidebar.',
 33+ array('@settings_page' => url('admin/settings/devel', array('fragment' => 'edit-devel-node-access-debug-mode')))
3434 ) ."</p>\n";
35 - $output .= '<p>'. t('This module also provides a !summary_page which shows general information about your node_access table. If you have installed the Views module, you may browse node_access by realm.',
36 - array('!summary_page' => l(t('summary page'), 'devel/node_access/summary'))
 35+ $output .= '<p>'. t('This module also provides a <a href="@summary_page">summary page</a> which shows general information about your node_access table. If you have installed the Views module, you may browse node_access by realm.',
 36+ array('@summary_page' => url('devel/node_access/summary'))
3737 ) ."</p>\n";
38 - $output .= '<p>'. t('') ."</p>\n";
3938 return $output;
4039 }
4140 }
4241
43 -
4442 function devel_node_access_menu() {
4543 $items = array();
4644
@@ -71,13 +69,13 @@
7270 }
7371
7472 function devel_node_access_form_alter(&$form, $form_state, $form_id) {
75 - $t = 't';
 73+ $tr = 't';
7674 if ($form_id == 'devel_admin_settings' || $form_id == 'devel_node_access_admin_settings') {
7775 $form['devel_node_access_debug_mode'] = array(
7876 '#type' => 'checkbox',
7977 '#title' => t('Devel Node Access debug mode'),
8078 '#default_value' => variable_get('devel_node_access_debug_mode', FALSE),
81 - '#description' => t('Debug mode verifies the grants in the node_access table against those that would be set by running !Rebuild_permissions, and displays them all; this can cause considerable overhead.', array('!Rebuild_permissions' => l('['. $t('Rebuild permissions') .']', 'admin/content/node-settings'))),
 79+ '#description' => t('Debug mode verifies the grant records in the node_access table against those that would be set by running !Rebuild_permissions, and displays them all; this can cause considerable overhead.', array('!Rebuild_permissions' => l('['. $tr('Rebuild permissions') .']', 'admin/content/node-settings'))),
8280 );
8381 // push these down:
8482 $form['devel_error_handler']['#weight'] = 1;
@@ -103,7 +101,7 @@
104102 }
105103
106104 // how many nodes are not represented in the node_access table
107 - $result = db_fetch_object(db_query('SELECT COUNT(n.nid) as num_nodes FROM {node} n LEFT JOIN {node_access} na ON n.nid = na.nid WHERE na.nid IS NULL'));
 105+ $result = db_fetch_object(db_query('SELECT COUNT(n.nid) AS num_nodes FROM {node} n LEFT JOIN {node_access} na ON n.nid = na.nid WHERE na.nid IS NULL'));
108106 if ($num = $result->num_nodes) {
109107 $output .= '<h3>'. t('Legacy Nodes') ."</h3>\n";
110108 $output .= '<p>'.
@@ -188,7 +186,7 @@
189187 }
190188 }
191189
192 -function _devel_node_access_module_invoke_all() { // array returns only!
 190+function _devel_node_access_module_invoke_all() { // array and scalar returns only!
193191 $args = func_get_args();
194192 $hook = array_shift($args);
195193 $return = array();
@@ -196,10 +194,16 @@
197195 $function = $module .'_'. $hook;
198196 $result = call_user_func_array($function, $args);
199197 if (isset($result)) {
200 - foreach ($result as $key => $value) {
201 - // add name of module that returned the value:
202 - $result[$key]['#module'] = $module;
 198+ if (is_array($result)) {
 199+ foreach ($result as $key => $value) {
 200+ // add name of module that returned the value:
 201+ $result[$key]['#module'] = $module;
 202+ }
203203 }
 204+ else {
 205+ // build array with result keyed by $module:
 206+ $result = array($module => $result);
 207+ }
204208 $return = array_merge($return, $result);
205209 }
206210 }
@@ -208,6 +212,15 @@
209213
210214 function devel_node_access_block($op = 'list', $delta = 0) {
211215 global $user;
 216+ global $theme_key;
 217+ static $block1_visible, $hint = '';
 218+ if (!isset($block1_visible)) {
 219+ $block1_visible = db_result(db_query("SELECT status FROM {blocks} WHERE module = 'devel_node_access' AND delta = '1' AND theme = '%s'", $theme_key));
 220+ if (!$block1_visible) {
 221+ $hint = t('For per-user access permissions enable the second DNA <a href="@block">block</a>.', array('@block' => url('admin/build/block')));
 222+ }
 223+ }
 224+
212225 switch ($op) {
213226 case 'list':
214227 $blocks[0]['info'] = t('Devel Node Access');
@@ -230,36 +243,39 @@
231244
232245 // include rows where nid == 0
233246 $nids = array_merge(array(0 => 0), dna_visible_nodes());
234 - $result = db_query('SELECT na.*, n.title FROM {node_access} na LEFT JOIN {node} n ON n.nid = na.nid WHERE na.nid IN (%s) ORDER BY na.nid, na.realm, na.gid', implode(',', $nids));
 247+ $result = db_query('SELECT na.*, n.title FROM {node_access} na LEFT JOIN {node} n ON n.nid = na.nid WHERE na.nid IN ('. db_placeholders($nids) .') ORDER BY na.nid, na.realm, na.gid', $nids);
235248
236249 if (!variable_get('devel_node_access_debug_mode', FALSE)) {
237250 $headers = array(t('node'), t('realm'), t('gid'), t('view'), t('update'), t('delete'), t('explained'));
238251 $rows = array();
239252 while ($row = db_fetch_object($result)) {
240253 $explained = module_invoke_all('node_access_explain', $row);
241 - $rows[] = array(!empty($row->title) ? check_plain($row->title) : $row->nid,
 254+ $rows[] = array('<a href="#node-'. $row->nid .'">'. _devel_node_access_get_node_title($row, TRUE) .'</a>',
242255 $row->realm,
243256 $row->gid,
244257 $row->grant_view,
245258 $row->grant_update,
246259 $row->grant_delete,
247 - implode('; ', $explained));
 260+ implode('<br />', $explained));
248261 }
249262 $output = theme('table', $headers, $rows, array('style' => 'text-align: left'));
 263+ $hint = t('To see more details enable <a href="@debug_mode">debug mode</a>.', array('@debug_mode' => url('admin/settings/devel', array('fragment' => 'edit-devel-node-access-debug-mode')))) .' '. $hint;
250264 }
251265 else {
252266 $tr = 't';
253 - $tokens = array('!na' => '{node_access}');
 267+ $variables = array('!na' => '{node_access}');
254268 $states = array(
255 - 'default' => array(t('default'), 'ok', t('Default grant supplied by core in the absence of any other non-empty grants, in !na.', $tokens)),
256 - 'ok' => array(t('ok'), 'ok', t('Highest priority grant, in !na.', $tokens)),
 269+ 'default' => array(t('default'), 'ok', t('Default grant supplied by core in the absence of any other non-empty grants, in !na.', $variables)),
 270+ 'ok' => array(t('ok'), 'ok', t('Highest priority grant, in !na.', $variables)),
 271+ 'static' => array(t('static'), 'ok', t('Non-standard grant in !na.', $variables)),
257272 'unexpected' => array(t('unexpected'), 'warning', t('The 0/0/all/... grant applies to all nodes and all users -- usually it should not be present if any node access module is active!')),
258 - 'ignored' => array(t('ignored'), 'warning', t('Lower priority grant, not in !na and thus ignored.', $tokens)),
259 - 'empty' => array(t('empty'), 'warning', t('Does not grant any access, but could block lower priority grants; not in !na.', $tokens)),
260 - 'missing' => array(t('missing'), 'error', t("Should be in !na but isn't!", $tokens)),
261 - 'illegitimate' => array(t('illegitimate'), 'error', t('Should NOT be in !na because of lower priority!', $tokens)),
262 - 'alien' => array(t('alien'), 'error', t('Should NOT be in !na because of unknown origin!', $tokens)),
 273+ 'ignored' => array(t('ignored'), 'warning', t('Lower priority grant, not in !na and thus ignored.', $variables)),
 274+ 'empty' => array(t('empty'), 'warning', t('Does not grant any access, but could block lower priority grants; not in !na.', $variables)),
 275+ 'missing' => array(t('missing'), 'error', t("Should be in !na but isn't!", $variables)),
 276+ 'illegitimate' => array(t('illegitimate'), 'error', t('Should NOT be in !na because of lower priority!', $variables)),
 277+ 'alien' => array(t('alien'), 'error', t('Should NOT be in !na because of unknown origin!', $variables)),
263278 );
 279+ $active_states = array('default', 'ok', 'static', 'unexpected', 'illegitimate', 'alien');
264280 $headers = array(t('node'), t('prio'), t('status'), t('realm'), t('gid'), t('view'), t('update'), t('delete'), t('explained'));
265281 $active_grants = array();
266282 while ($active_grant = db_fetch_object($result)) {
@@ -268,7 +284,7 @@
269285 $all_grants = $checked_grants = $checked_status = array();
270286 foreach ($nids as $nid) {
271287 $acquired_grants_nid = array();
272 - if ($node = node_load(array('nid' => $nid))) {
 288+ if ($node = node_load($nid)) {
273289 // check node_access_acquire_grants()
274290 $grants = _devel_node_access_module_invoke_all('node_access_records', $node);
275291 if (!empty($grants)) {
@@ -278,7 +294,7 @@
279295 $top_priority = (isset($top_priority) ? max($top_priority, $priority) : $priority);
280296 $grant['priority'] = (isset($grant['priority']) ? $priority : '&ndash;&nbsp;');
281297 $acquired_grants_nid[$priority][$grant['realm']][$grant['gid']] = $grant + array(
282 - '#title' => ($node->title ? check_plain($node->title) : $node->nid),
 298+ '#title' => _devel_node_access_get_node_title($node),
283299 '#module' => (isset($grant['#module']) ? $grant['#module'] : ''),
284300 );
285301 }
@@ -296,10 +312,10 @@
297313 }
298314 }
299315 // check for grants in the node_access table that aren't returned by node_access_acquire_grants()
300 - $found = FALSE;
301316 if (isset($active_grants[$nid])) {
302317 foreach ($active_grants[$nid] as $realm => $active_grants_realm) {
303318 foreach ($active_grants_realm as $gid => $active_grant) {
 319+ $found = FALSE;
304320 $count_nonempty_grants = 0;
305321 foreach ($acquired_grants_nid as $priority => $acquired_grants_nid_priority) {
306322 if (isset($acquired_grants_nid_priority[$realm][$gid])) {
@@ -313,24 +329,37 @@
314330 }
315331 }
316332 }
 333+ $fixed_grant = (array) $active_grant;
317334 if ($count_nonempty_grants == 0 && $realm == 'all' && $gid == 0 ) {
318 - $fixed_grant = ((array) $active_grant) + array(
 335+ $fixed_grant += array(
319336 'priority' => '&ndash;',
320337 'state' => 'default',
321338 );
322339 }
323340 elseif (!$found) {
324 - $fixed_grant = ((array) $active_grant) + array(
325 - 'priority' => '?',
326 - 'state' => 'alien',
327 - );
 341+ $acknowledged = _devel_node_access_module_invoke_all('node_access_acknowledge', $fixed_grant);
 342+ if (empty($acknowledged)) {
 343+ // no one acknowledged this record, mark it as alien:
 344+ $fixed_grant += array(
 345+ 'priority' => '?',
 346+ 'state' => 'alien',
 347+ );
 348+ }
 349+ else {
 350+ // at least one module acknowledged the record, attribute it to the first one:
 351+ $fixed_grant += array(
 352+ 'priority' => '&ndash;',
 353+ 'state' => 'static',
 354+ '#module' => reset(array_keys($acknowledged)),
 355+ );
 356+ }
328357 }
329358 else {
330359 continue;
331360 }
332361 $fixed_grant += array(
333 - 'nid' => $nid,
334 - '#title' => (empty($node) ? '&mdash;' : (isset($node->title) ? check_plain($node->title) : $node->nid)),
 362+ 'nid' => $nid,
 363+ '#title' => _devel_node_access_get_node_title($node),
335364 );
336365 $all_grants[] = $fixed_grant;
337366 }
@@ -380,8 +409,8 @@
381410 $row->grant_view = $grant['grant_view'];
382411 $row->grant_update = $grant['grant_update'];
383412 $row->grant_delete = $grant['grant_delete'];
384 - $row->explained = implode('; ', module_invoke_all('node_access_explain', $row));
385 - unset($row->title);
 413+ $row->explained = implode('<br />', module_invoke_all('node_access_explain', $row));
 414+ unset($row->title); // possibly needed above
386415 if ($row->nid == 0 && $row->gid == 0 && $row->realm == 'all' && count($all_grants) > 1) {
387416 $row->state = array('data' => $states['unexpected'][0], 'title' => $states['unexpected'][2]);
388417 $class = $states['unexpected'][1];
@@ -393,15 +422,16 @@
394423 $row = (array) $row;
395424 foreach (array('view', 'update', 'delete') as $op) {
396425 $row["grant_$op"] = array('data' => $row["grant_$op"]);
397 - if ((isset($checked_grants[$grant['nid']][$op][$grant['realm']]) && in_array($grant['gid'], $checked_grants[$grant['nid']][$op][$grant['realm']]) || ($row['nid'] == 0 && $row['gid'] == 0 && $row['realm'] == 'all')) && !empty($row["grant_$op"]['data'])) {
 426+ if ((isset($checked_grants[$grant['nid']][$op][$grant['realm']]) && in_array($grant['gid'], $checked_grants[$grant['nid']][$op][$grant['realm']]) || ($row['nid'] == 0 && $row['gid'] == 0 && $row['realm'] == 'all')) && !empty($row["grant_$op"]['data']) && in_array($grant['state'], $active_states)) {
398427 $row["grant_$op"]['data'] .= '&prime;';
399428 $row["grant_$op"]['title'] = t('This entry grants access to this node to this user.');
400429 }
401430 if (isset($grant["grant_$op!"])) {
402 - $row["grant_$op"]['data'] = $grant["grant_$op!"] .'&gt;'. $row["grant_$op"]['data'];
 431+ $row["grant_$op"]['data'] = $grant["grant_$op!"] .'&gt;'. (!$row["grant_$op"]['data'] ? 0 : $row["grant_$op"]['data']);
403432 $row["grant_$op"]['class'] = 'error';
404433 }
405434 }
 435+ $row['nid'] = '<a href="#node-'. $grant['nid'] .'">'. $row['nid'] .'</a>';
406436 foreach (array('nid', 'priority', 'gid') as $key) {
407437 $row[$key] = array('data' => $row[$key], 'style' => 'text-align: right');
408438 }
@@ -409,72 +439,72 @@
410440 $row['realm'] = (empty($grant['#module']) || strpos($grant['realm'], $grant['#module']) === 0 ? '' : $grant['#module'] .':<br />') . $grant['realm'];
411441 $rows[] = array('data' => array_values($row), 'class' => 'even '. $class);
412442 }
413 - $output = theme_table($headers, $rows, array('class' => 'system-status-report', 'style' => 'text-align: left'));
 443+ $output = theme('table', $headers, $rows, array('class' => 'system-status-report', 'style' => 'text-align: left'));
414444
415445 $output .= theme_item(array('#value' => '', '#description' => '(Some of the table elements provide additional information if you hover your mouse over them.)'));
416446
417447 if ($error_count > 0) {
418 - $tokens['!Rebuild_permissions'] = '<a href="'. url('admin/content/node-settings/rebuild') .'">'. $tr('Rebuild permissions') .'</a>';
419 - $output .= theme_item(array('#value' => '<div class="error">'. t("You have errors in your !na table! You may be able to fix these for now by running !Rebuild_permissions, but this is likely to destroy the evidence and make it impossible to identify the underlying issues. If you don't fix those, the errors will probably come back again. <br /> DON'T do this just yet if you intend to ask for help with this situation.", $tokens) .'</div>'));
 448+ $variables['!Rebuild_permissions'] = '<a href="'. url('admin/content/node-settings/rebuild') .'">'. $tr('Rebuild permissions') .'</a>';
 449+ $output .= theme_item(array('#value' => '<div class="error">'. t("You have errors in your !na table! You may be able to fix these for now by running !Rebuild_permissions, but this is likely to destroy the evidence and make it impossible to identify the underlying issues. If you don't fix those, the errors will probably come back again. <br /> DON'T do this just yet if you intend to ask for help with this situation.", $variables) .'</div>'));
420450 }
421451
422 - // explain how access is granted (code from node_access())
423 - $t = 't';
 452+ // Explain whether access is granted or denied, and why (using code from node_access()).
 453+ $tr = 't';
 454+ array_shift($nids); // remove the 0
 455+ $accounts = array();
 456+ $variables += array(
 457+ '!username' => theme('username', $user),
 458+ '%uid' => $user->uid,
 459+ );
 460+
424461 if (user_access('administer nodes')) {
425 - $output .= t('This user has the %administer_nodes permission and thus full access to all nodes.', array('%administer_nodes' => $t('administer nodes')));
 462+ $variables['%administer_nodes'] = $tr('administer nodes');
 463+ $output .= t('!username has the %administer_nodes permission and thus full access to all nodes.', $variables) .'<br />&nbsp;';
426464 }
427465 else {
428 -
429 - function devel_node_access_message($nid, $by_what) {
430 - $t = 't';
431 - return '<div class="form-item" style="text-align: left">'. theme_markup(array('#value' => t('This user is granted %view access to node %nid !by_what', array('%view' => $t('view'), '%nid' => $nid, '!by_what' => $by_what)))) .'</div>';
 466+ $variables['!list'] = '<div style="margin-left: 2em">'. _devel_node_access_get_grant_list($nid, $checked_status, $checked_grants) .'</div>';
 467+ $variables['%access'] = 'view';
 468+ $output .= "\n<div style='text-align: left' title='". t('These are the grants returned by hook_node_grants() for this user.') ."'>". t('!username (user %uid) can use these grants for %access access (if they are present above): !list', $variables) ."</div>\n";
 469+ $accounts[] = $user;
 470+ }
 471+ if (arg(0) == 'node' && is_numeric(arg(1)) && !$block1_visible) { // only for single nodes
 472+ if (user_is_logged_in()) {
 473+ $accounts[] = user_load(0); // Anonymous, too
432474 }
433 -
434 - foreach ($nids as $nid) {
435 - if ($node = node_load(array('nid' => $nid))) {
436 - $module = node_get_types('module', $node);
437 - if ($module == 'node') {
438 - $module = 'node_content'; // Avoid function name collisions.
 475+ foreach ($accounts as $account) {
 476+ $variables['!username'] = theme('username', $account);
 477+ $output .= "\n<div style='text-align: left'>". t("!username has the following access", $variables) .' ';
 478+ $nid_items = array();
 479+ foreach ($nids as $nid) {
 480+ $op_items = array();
 481+ foreach (array('create', 'view', 'update', 'delete') as $op) {
 482+ $explain = _devel_node_access_explain_access($op, $nid, $account);
 483+ $op_items[] = "<div style='width: 5em; display: inline-block'>". t('%op:', array('%op' => $op)) .' </div>'. $explain[2];
439484 }
440 - $access = module_invoke($module, 'access', 'view', $node, $user);
441 - if (!empty($access)) {
442 - $output .= devel_node_access_message($nid, t('by the %module module itself.', array('%module' => $module)));
443 - }
444 - else {
445 - if (!empty($checked_status[$nid])) {
446 - $cgs_by_realm = array();
447 - foreach ($checked_grants[$nid]['view'] as $realm => $cg) {
448 - if (isset($cg['#module'])) {
449 - $module = $cg['#module'];
450 - unset($cg['#module']);
451 - if (!empty($module) && (strpos($realm, $module) !== 0)) {
452 - $realm = $module .':'. $realm;
453 - }
454 - }
455 - $cgs_by_realm[$realm] = $realm .': '. implode(', ', $cg);
456 - }
457 - if (!empty($cgs_by_realm)) {
458 - $output .= devel_node_access_message($nid, t("by one or more of the following grants (if they are present above): !list", array('!list' => theme('item_list', array_values($cgs_by_realm), NULL, 'ul'))));
459 - }
460 - elseif ($user->uid == $node->uid && $user->uid != 0) {
461 - $output .= devel_node_access_message($nid, t('as author of the node.'));
462 - }
463 - }
464 - }
 485+ $nid_items[] = t('to node !nid:', array('!nid' => l($nid, 'node/'. $nid)))
 486+ ."\n<div style='margin-left: 2em'>". theme('item_list', $op_items, NULL, 'ul') .'</div>';
465487 }
 488+ if (count($nid_items) == 1) {
 489+ $output .= $nid_items[0];
 490+ }
 491+ else {
 492+ $output .= "\n<div style='margin-left: 2em'>". theme('item_list', $nid_items, NULL, 'ul') .'</div>';
 493+ }
 494+ $output .= "\n</div>\n";
466495 }
467496 }
468497 }
469498
 499+ if (!empty($hint)) {
 500+ $output .= theme_item(array('#value' => '', '#description' => '('. $hint .')'));
 501+ }
470502 $subject = t('node_access entries for nodes shown on this page');
471503 return array('subject' => $subject, 'content' => $output .'<br /><br />');
472504
473505 case 1:
474506 // show which users can access this node
475 - if (arg(0) == 'node' && is_numeric(arg(1))) {
476 - $nid = arg(1);
477 - $node = node_load($nid);
478 - $headers = array(t('username'), t('view'), t('update'), t('delete'));
 507+ if (arg(0) == 'node' && is_numeric($nid = arg(1)) && arg(2) == null && $node = node_load($nid)) {
 508+ $headers = array(t('username'), '<span title="'. t("Create nodes of the '@Node_type' type.", array('@Node_type' => node_get_types('name', $node))) .'">'. t('create') .'</span>', t('view'), t('update'), t('delete'));
479509 $rows = array();
480510 // Find all users. The following operations are very inefficient, so we
481511 // limit the number of users returned. It would be better to make a
@@ -482,15 +512,21 @@
483513 // anyone is up for that please submit a patch.
484514 $result = db_query_range('SELECT DISTINCT u.* FROM {users} u ORDER BY u.access DESC', 0, 10);
485515 while ($data = db_fetch_object($result)) {
486 - $account = user_load(array('uid' => $data->uid));
487 - $rows[] = array(theme('username', $data),
488 - theme('dna_permission', node_access('view', $node, $account)),
489 - theme('dna_permission', node_access('update', $node, $account)),
490 - theme('dna_permission', node_access('delete', $node, $account)),
 516+ $account = user_load($data->uid);
 517+ $username = theme('username', $data);
 518+ if ($account->uid == $user->uid) {
 519+ $username = '<strong>'. $username .'</strong>';
 520+ }
 521+ $rows[] = array($username,
 522+ theme('dna_permission', _devel_node_access_explain_access('create', $nid, $account)),
 523+ theme('dna_permission', _devel_node_access_explain_access('view', $nid, $account)),
 524+ theme('dna_permission', _devel_node_access_explain_access('update', $nid, $account)),
 525+ theme('dna_permission', _devel_node_access_explain_access('delete', $nid, $account)),
491526 );
492527 }
493528 if (count($rows)) {
494529 $output = theme('table', $headers, $rows, array('style' => 'text-align: left'));
 530+ $output .= theme_item(array('#value' => '', '#description' => t('(This table lists the most-recently active users. Hover your mouse over each result for more details.)')));
495531 return array('subject' => t('Access permissions by user'),
496532 'content' => $output);
497533 }
@@ -502,6 +538,203 @@
503539 }
504540
505541 /**
 542+ * Helper function that mimicks node.module's node_access() function.
 543+ *
 544+ * Unfortunately, this needs to be updated manually whenever node.module changes!
 545+ *
 546+ * @return
 547+ * An array suitable for theming with theme_dna_permission().
 548+ */
 549+function _devel_node_access_explain_access($op, $node, $account = NULL) {
 550+ global $user;
 551+ static $filter_formats;
 552+
 553+ if (is_numeric($node) && !($node = node_load($node))) {
 554+ return array( FALSE, '???',
 555+ t('Unable to load the node &ndash; this should never happen!'),
 556+ );
 557+ }
 558+ if ($op == 'create' && is_object($node)) {
 559+ $node = $node->type;
 560+ }
 561+
 562+ if (!empty($account)) {
 563+ $filter_formats = filter_formats(); // use real current user first!
 564+ // To try to get the most authentic result we impersonate the given user!
 565+ // This may reveal bugs in other modules, leading to contradictory results.
 566+ $saved_user = $user;
 567+ session_save_session(FALSE);
 568+ $user = $account;
 569+ $result = _devel_node_access_explain_access($op, $node, NULL);
 570+ $user = $saved_user;
 571+ session_save_session(TRUE);
 572+ $second_opinion = node_access($op, $node, $account);
 573+ if ($second_opinion != $result[0]) {
 574+ $result[1] .= '<span class="'. ($second_opinion ? 'ok' : 'error') .'" title="DNA and Core seem to disagree on this item. This is a bug in either one of them and should be fixed! Try to look at this node as this user and check whether there is still disagreement.">*</span>';
 575+ }
 576+ return $result;
 577+ }
 578+
 579+ $variables = array(
 580+ '!NO' => t('NO'),
 581+ '!YES' => t('YES'),
 582+ );
 583+
 584+ if ($op == 'update' && !_devel_node_access_filter_access($node->format)) {
 585+ return array( FALSE,
 586+ t('!NO: input format', $variables),
 587+ t("!NO: This user is not allowed to use the input format '!format' (!fid).", $variables += array(
 588+ '!fid' => $node->format,
 589+ '!format' => (isset($filter_formats[$node->format]) ? $filter_formats[$node->format]->name : '***'),
 590+ )),
 591+ );
 592+ }
 593+ if (user_access('administer nodes')) {
 594+ return array( TRUE,
 595+ t('!YES: administer nodes', $variables),
 596+ t("!YES: This user has the '!administer_nodes' permission and may do everything with nodes.", $variables += array(
 597+ '!administer_nodes' => t('administer nodes'),
 598+ )),
 599+ );
 600+ }
 601+ elseif (!user_access('access content')) {
 602+ return array( FALSE,
 603+ t('!NO: access content', $variables),
 604+ t("!NO: This user does not have the '!access_content' permission and is denied doing anything with content.", $variables += array(
 605+ '!access_content' => t('access content'),
 606+ )),
 607+ );
 608+ }
 609+ $module = node_get_types('module', $node);
 610+ $access = module_invoke(($module == 'node' ? 'node_content' : $module), 'access', $op, $node, $user);
 611+ if (!is_null($access)) {
 612+ $variables += array(
 613+ '@module' => $module,
 614+ '@content_type' => (is_object($node) ? $node->type : $node),
 615+ );
 616+ if ($access) {
 617+ return array( TRUE,
 618+ t('!YES: by the module', $variables),
 619+ t("!YES: The '@module' module (which defines the '@content_type' content type) allows this, probably based on some permission.", $variables),
 620+ );
 621+ }
 622+ else {
 623+ return array( FALSE,
 624+ t('!NO: by the module', $variables),
 625+ t("!NO: The '@module' module (which defines the '@content_type' content type) denies this.", $variables),
 626+ );
 627+ }
 628+ }
 629+
 630+ if ($op != 'create' && $node->nid && $node->status) {
 631+ if (node_access($op, $node, $user)) { // delegate this part
 632+ return array( TRUE,
 633+ t('!YES: node access', $variables),
 634+ t('!YES: Node access allows this.', $variables),
 635+ );
 636+ }
 637+ else {
 638+ return array( FALSE,
 639+ t('!NO: node access', $variables),
 640+ t('!NO: Node access denies this.', $variables),
 641+ );
 642+ }
 643+ }
 644+
 645+ if ($op == 'view' && $user->uid == $node->uid && $user->uid != 0) {
 646+ return array( TRUE,
 647+ t('!YES: own node', $variables),
 648+ t('!YES: The user may view his/her own node.', $variables),
 649+ );
 650+ }
 651+ return array( FALSE,
 652+ t('!NO: no reason', $variables),
 653+ t("!NO: None of the checks resulted in allowing this, so it's denied.", $variables) .
 654+ ($op != 'create' && !$node->status ? ' '. t('Node access was not checked because the node is not published.') : '') .
 655+ ($op == 'create' ? ' '. t('This is most likely due to a withheld permission.') : ''),
 656+ );
 657+}
 658+
 659+/*
 660+ * Helper function that mimicks filter.modules' filter_access(), but with the
 661+ * help of the user-aware _devel_node_access_filter_formats() function.
 662+ */
 663+function _devel_node_access_filter_access($format) {
 664+ $format = filter_resolve_format($format);
 665+ if (user_access('administer filters') || ($format == variable_get('filter_default_format', 1))) {
 666+ return TRUE;
 667+ }
 668+ else {
 669+ return (bool) _devel_node_access_filter_formats($format);
 670+ }
 671+}
 672+
 673+/*
 674+ * Helper function that mimicks filter.module's filter_formats(), but for a
 675+ * specific user. If #470840 gets committed, we can remove this here.
 676+ */
 677+function _devel_node_access_filter_formats($index, $account = NULL) {
 678+ global $user;
 679+ static $formats = array();
 680+
 681+ if (!isset($account)) {
 682+ $account = $user;
 683+ }
 684+
 685+ // Administrators can always use all text formats.
 686+ $all = user_access('administer filters', $account);
 687+
 688+ if (!isset($formats[$account->uid])) {
 689+ $formats[$account->uid] = array();
 690+
 691+ $query = 'SELECT * FROM {filter_formats}';
 692+
 693+ // Build query for selecting the format(s) based on the user's roles.
 694+ $args = array();
 695+ if (!$all) {
 696+ $where = array();
 697+ foreach ($account->roles as $rid => $role) {
 698+ $where[] = "roles LIKE '%%,%d,%%'";
 699+ $args[] = $rid;
 700+ }
 701+ $query .= ' WHERE '. implode(' OR ', $where) .' OR format = %d';
 702+ $args[] = variable_get('filter_default_format', 1);
 703+ }
 704+
 705+ $result = db_query($query, $args);
 706+ while ($format = db_fetch_object($result)) {
 707+ $formats[$account->uid][$format->format] = $format;
 708+ }
 709+ }
 710+ if (isset($index)) {
 711+ return isset($formats[$account->uid][$index]) ? $formats[$account->uid][$index] : FALSE;
 712+ }
 713+ return $formats[$account->uid];
 714+}
 715+
 716+/**
 717+ * Helper function to create a list of the grants returned by hook_node_grants().
 718+ */
 719+function _devel_node_access_get_grant_list($nid, $checked_status, $checked_grants) {
 720+ if (!empty($checked_status[$nid])) {
 721+ $cgs_by_realm = array();
 722+ foreach ($checked_grants[$nid]['view'] as $realm => $cg) {
 723+ if (isset($cg['#module'])) {
 724+ $module = $cg['#module'];
 725+ unset($cg['#module']);
 726+ if (!empty($module) && (strpos($realm, $module) !== 0)) {
 727+ $realm = $module .':'. $realm;
 728+ }
 729+ }
 730+ $cgs_by_realm[$realm] = $realm .': '. implode(', ', $cg);
 731+ }
 732+ if (!empty($cgs_by_realm)) {
 733+ return theme('item_list', array_values($cgs_by_realm), NULL, 'ul');
 734+ }
 735+ }
 736+}
 737+
 738+/**
506739 * Implementation of hook_node_access_explain().
507740 */
508741 function devel_node_access_node_access_explain($row) {
@@ -513,7 +746,7 @@
514747 }
515748 }
516749 if (empty($ops)) {
517 - return '(No access granted to '. ($row->nid == 0 ? 'any nodes.)' : 'this node.)');
 750+ return '(No access granted to '. ($row->nid == 0 ? 'any nodes.)' : 'this node.)');
518751 }
519752 else {
520753 return 'All users may '. implode('/', $ops) . ($row->nid == 0 ? ' all nodes.' : ' this node.');
@@ -522,6 +755,28 @@
523756 }
524757
525758 /**
 759+ * Helper function to return a sanitized node title.
 760+ */
 761+function _devel_node_access_get_node_title($node, $clip_and_decorate = FALSE) {
 762+ if (isset($node)) {
 763+ if (isset($node->title)) {
 764+ $node_title = check_plain($node->title);
 765+ if ($clip_and_decorate) {
 766+ if (drupal_strlen($node_title) > 20) {
 767+ $node_title = "<span title='node/$node->nid: $node_title'>". drupal_substr($node_title, 0, 15) .'...</span>';
 768+ }
 769+ $node_title = '<span title="node/'. $node->nid .'">'. $node_title .'</span>';
 770+ }
 771+ return $node_title;
 772+ }
 773+ elseif (isset($node->nid)) {
 774+ return $node->nid;
 775+ }
 776+ }
 777+ return '&mdash;';
 778+}
 779+
 780+/**
526781 * Implementation of hook_theme().
527782 */
528783 function devel_node_access_theme() {
@@ -534,14 +789,7 @@
535790
536791 /**
537792 * Indicate whether user has a permission or not.
538 - *
539 - * TODO: use good looking images.
540793 */
541794 function theme_dna_permission($permission) {
542 - if ($permission) {
543 - return t('yes');
544 - }
545 - else {
546 - return t('no');
547 - }
 795+ return '<span class="'. ($permission[0] ? 'ok' : 'error') .'" title="'. $permission[2] .'">'. $permission[1] .'</span>';
548796 }
Index: civicrm/trunk/sites/all/modules/queue2civicrm/queue2civicrm.module
@@ -277,17 +277,37 @@
278278 $contribution = array(
279279 'contact_id' => $contact['id'],
280280 'total_amount' => $msg['gross'],
281 - 'contribution_type_id' => 9, // cash donation
282 - 'payment_instrument_id' => 6, // contribution
 281+ 'contribution_type_id' => 9, // cash donation @fixme this needs to be pulled from a variable that was available with fundcore, but no longer exists
 282+ 'payment_instrument_id' => 6, // contribution @fixme see above
283283 'fee_amount' => $msg['fee'],
284284 'net_amount' => $msg['net'],
285285 'trxn_id' => strtoupper($msg['gateway']) . ' ' . $msg['gateway_txn_id'],
286286 'receive_date' => date('Y-m-d H:i:s', $msg['date']),
287287 'currency' => 'USD',
288288 'source' => $msg['original_currency'] . ' ' . $msg['original_gross'],
289 - 'custom_45' => ( $msg['comment'] ) ? $msg['comment'] : '',
290289 );
291290
 291+ /**
 292+ * Apply custom field defaults.
 293+ *
 294+ * Civicrm API v2 does NOT provide methods for custom groups/fields beyond creation and deleition,
 295+ * so we hack this cusotm. Hopefully this won't be forever...
 296+ *
 297+ * At least we can use the CiviCRM DAO stuff to stuff necessary custom data in to the contribution object.
 298+ *
 299+ * At the moment, all custom fields get default values for online contribution EXCEPT for 'Donor Comment'.
 300+ */
 301+ $query = "SELECT id, custom_group_id, label, default_value FROM civicrm_custom_field WHERE custom_group_id IN (SELECT id FROM civicrm_custom_group WHERE extends='Contribution' && is_active='1');";
 302+ $dao = CRM_Core_DAO::executeQuery( $query ); // Execute's query using CiviCRM data object stuff
 303+ while ( $dao->fetch() ) {
 304+ if ( $dao->label == 'Donor Comment' ) {
 305+ $comment = ( $msg[ 'comment' ] ) ? $msg[ 'comment'] : $dao->default_value;
 306+ $contribution[ 'custom_' . $dao->id ] = $comment;
 307+ } elseif ( $dao->default_value ) { // if we dont make sure $dao->default_value has some value, Civi breaks when we try to insert
 308+ $contribution[ 'custom_' . $dao->id ] = $dao->default_value;
 309+ }
 310+ }
 311+
292312 watchdog( 'queue2civicrm', 'Contribution array for civicrm_contribution_add(): ' . print_r($contribution, TRUE));
293313
294314 $contribution_result = civicrm_contribution_add( $contribution );
@@ -302,13 +322,11 @@
303323 // Map the tracking record to the CiviCRM contribution
304324 if (array_key_exists('contribution_tracking_id', $msg)) {
305325 db_query('UPDATE {contribution_tracking} SET contribution_id = %d WHERE id = %d LIMIT 1', $contribution['id'], $msg['contribution_tracking_id']);
306 - }
307 -
308 - //db_query('UPDATE civicrm.civicrm_contribution SET note = \'%s\' WHERE id = %d LIMIT 1', $msg['comment'], $contribution['id']);
309 -
 326+ }
 327+
310328 // Tag contact for review
311329 $tag = array(
312 - 'tag_id' => 7, // review tag
 330+ 'tag_id' => 7, // review tag @fixme should this also be variable?
313331 'contact_id' => $contact['id']
314332 );
315333 $tag_result = &civicrm_entity_tag_add( $tag );

Status & tagging log