source: tags/Mars-V0.9.5/datacenter/db/runinfo.php

Last change on this file was 7547, checked in by Daniela Dorner, 19 years ago
*** empty log message ***
  • Property svn:executable set to *
File size: 20.2 KB
Line 
1<?php
2{
3 function CreateQuery($_GET, $alias, $checkwhere, $checkgroup, $checkstatusgroup, $needs)
4 {
5 $fromtable="RunData";
6
7 $groups = 0;
8 foreach ($checkgroup as $element)
9 if ($element==-1)
10 $groups++;
11
12 $statusgroups = 0;
13 foreach ($checkstatusgroup as $element)
14 if ($element==-1)
15 $statusgroups++;
16
17 $query0 = "SELECT ";
18
19 if ($groups>0)
20 {
21 foreach ($checkgroup as $key => $element)
22 if ($element==-1)
23 $query0 .= $key . " as '" . $alias[$key] . "' " . ", ";
24 //--------------------------------------------------
25 //$query0 .= " TIMEDIFF(fRunStop, fRunStart), ";
26 // Only available in MySQL>4.1.1
27 $query0 .= "SUM(if(TIME_TO_SEC(fRunStop)-TIME_TO_SEC(fRunStart)<0, " .
28 "TIME_TO_SEC(fRunStop)-TIME_TO_SEC(fRunStart)+24*60*60, " .
29 "TIME_TO_SEC(fRunStop)-TIME_TO_SEC(fRunStart)))/3600 as '" . $alias["SUM(fRunTime)/3600"] . "', ";
30 //--------------------------------------------------
31 $query0 .= " SUM(fNumEvents) as '" . $alias["SUM(fNumEvents)"] . "', ";
32 $query0 .= " Min(fZenithDistance) as '" . $alias["Min(fZenithDistance)"] . "', ";
33 $query0 .= " Max(fZenithDistance) as '" . $alias["Max(fZenithDistance)"] . "', ";
34 $query0 .= " COUNT(*) as 'Runs#' ";
35 }
36 else
37 {
38 if ($statusgroups>0)
39 {
40 foreach ($checkstatusgroup as $key => $element)
41 if ($element==-1)
42 $query0 .= " (if(IsNull(" . $key . "), if(isnull(fStartTime), 'not done', if(isnull(fFailedTime),if(isnull(" . $needs[$key] . "),'not done',if(date_sub(Now(),interval 12 hour) < fStartTime,'running','crashed')),if(isnull(" . $needs[$key] . "),'not done','failed'))) ,if(" . $key . "='1970-01-01 00:00:00','dont do','done'))) as '" . $alias[$key] . "', ";
43// $query0 .= " (if(IsNull(" . $key . "), 'not done' ,if(" . $key . "='1970-01-01 00:00:00','dont do','done'))) as '" . $alias[$key] . "', ";
44
45 $query0 .= " count(*) as 'Run#'";
46
47 }
48 else
49 {
50 $query0 .= " RunData.fRunNumber as 'Run#' ";
51
52 foreach ($_GET as $key => $element)
53 if ($_GET[$key]=="On" && $key!="fTest")
54 if (empty($checkwhere[$key]) || $checkwhere[$key]==0)
55 $query0 .= ", " . $key . " as '" . $alias[$key] . "' ";
56 }
57 }
58
59 $query0 .= " FROM RunData ";
60
61 $query0 .= " LEFT JOIN RunProcessStatus ON RunData.fRunNumber=RunProcessStatus.fRunNumber ";
62
63 foreach ($_GET as $key => $element)
64 if (($_GET[$key]=="On" || $groups>0))// && !empty($joins[$key]))
65 $query0 .= GetJoin($fromtable,$key);
66
67 if ($_GET["fTest"]!="On")
68 {
69 if ($_GET["fSourceName"]!="On")
70 $query0 .= " LEFT JOIN Source ON Sequences.fSourceKEY=Source.fSourceKEY ";
71 $query0 .= " WHERE fTest='no'";
72 }
73
74 foreach ($checkwhere as $key => $element)
75 {
76 if (empty($element) || $element<=0)
77 continue;
78
79 if (strpos($query0, " WHERE ")==FALSE)
80 $query0 .= " WHERE ";
81 else
82 if ($element!=-1)
83 if (strrpos($query0, " AND ")!=strlen($query0)-5)// this if clause doesn't work
84 $query0 .= " AND ";
85
86 if ($element!=-1)
87 $query0 .= GetCheck($fromtable, $key) . "=" . $element;
88 }
89
90 if (strpos($query0, " WHERE ")==FALSE)
91 $query0 .= " WHERE ";
92 else
93 $query0 .= " AND ";
94
95 $query0 .= StatusQuery("fCCFileAvail", $needs);
96 $query0 .= StatusQuery("fCaCoFileAvail", $needs);
97 $query0 .= StatusQuery("fCaCoFileFound", $needs);
98 $query0 .= StatusQuery("fRawFileAvail", $needs);
99 $query0 .= StatusQuery("fDataCheckDone", $needs);
100 $query0 .= StatusQuery("fTimingCorrection", $needs);
101
102 if (!empty($_GET["fRunMin"]) && !empty($_GET["fRunMax"]))
103 $query0 .= "RunData.fRunNumber BETWEEN " . $_GET["fRunMin"] . " AND " . $_GET["fRunMax"] . " ";
104
105/*
106 if (!empty($_GET["fDate"]))
107 $query0 .= " AND fRunStart REGEXP \"^" . $_GET["fDate"] . "\" ";
108*/
109
110 if (!empty($_GET["fSourceN"]))
111 $query0 .= " AND fSourceName REGEXP \"^" . $_GET["fSourceN"] . "\" ";
112
113 if (!empty($_GET["fStartDate"]))
114 {
115 if (strpos(strrev($query0), " DNA ")!=0)
116 $query0 .= " AND ";
117
118 $startdate=substr($_GET["fStartDate"], 0, 10);
119 if ($startdate=="0000-00-00")
120 $query0 .=" fRunStart >= '" . $startdate . " 00:00:00' ";
121 else
122 $query0 .= " fRunStart >= ADDDATE('" . $startdate . " 13:00:00', INTERVAL -1 DAY) ";
123 }
124
125 if (!empty($_GET["fStopDate"]))
126 {
127 if (strpos(strrev($query0), " DNA ")!=0)
128 $query0 .= " AND ";
129
130 $stopdate=substr($_GET["fStopDate"], 0, 10);
131 $query0 .= " fRunStart < '" . $stopdate . " 13:00:00' ";
132 }
133
134 if (!empty($_GET["fSequenceNo"]) || $_GET["fSequenceNo"]=="0")
135 {
136 if (strpos(strrev($query0), " DNA ")!=0)
137 $query0 .= " AND ";
138
139 $query0 .= " fSequenceFirst = '" . $_GET["fSequenceNo"] . "' ";
140 }
141
142
143 if ($groups>0)
144 {
145 $query0 .= " GROUP BY ";
146 $num = $groups;
147 foreach ($checkgroup as $key => $element)
148 if ($element==-1)
149 {
150 $query0 .= GetCheck($fromtable,$key);
151 if ($num-->1)
152 $query0 .= ", ";
153 }
154 }
155
156 if ($statusgroups>0)
157 {
158 $query0 .= " GROUP BY ";
159 $num = $statusgroups;
160 foreach ($checkstatusgroup as $key => $element)
161 if ($element==-1)
162 {
163 $query0 .= $alias[$key];
164 if ($num-->1)
165 $query0 .= ", ";
166 }
167 }
168
169 if (!empty($_GET["fSortBy"]))
170 {
171 $val=substr($_GET["fSortBy"], 0, -1);
172 $query0 .= " ORDER BY " . GetTable($fromtable, $val) . " ";
173 if (substr($_GET["fSortBy"], -1)=="-")
174 $query0 .= "DESC";
175 }
176
177 if (empty($_GET["fNumStart"]))
178 $_GET["fNumStart"]=0;
179
180 if (empty($_GET["fSendTxt"]))
181 $query0 .= " LIMIT " . $_GET["fNumStart"] . ", " . $_GET["fNumResults"];
182
183 return $query0;
184 }
185
186 function InitGet($_GET)
187 {
188 /*
189 if (empty($_GET["fRawFileKEY"]))
190 $_GET["fRawFileKEY"]="Off";
191 */
192
193 // Find out whether it is the first call to the php script
194 $first = empty($_GET["fRunMin"]) && empty($_GET["fRunMax"]);
195
196 if (empty($_GET["fNumResults"]))
197 $_GET["fNumResults"]="20";
198
199 if (empty($_GET["fLastUpdate"]))
200 $_GET["fLastUpdate"]="Off";
201
202 if (empty($_GET["fTest"]))
203 $_GET["fTest"]=$first?"On":"";
204
205 if (empty($_GET["fFormatVersion"]))
206 $_GET["fFormatVersion"]="Off";
207
208 if (empty($_GET["fNumEvents"]))
209 $_GET["fNumEvents"]=$first?"On":"";
210
211 if (empty($_GET["fRunStart"]))
212 $_GET["fRunStart"]=$first?"On":"";
213
214 if (empty($_GET["fRunStop"]))
215 $_GET["fRunStop"]="Off";
216
217 if (empty($_GET["fAzimuth"]))
218 $_GET["fAzimuth"]="Off";
219
220 if (empty($_GET["fZenithDistance"]))
221 $_GET["fZenithDistance"]=$first?"On":"";
222
223 if (empty($_GET["fRunTypeName"]))
224 $_GET["fRunTypeName"]=$first?"On":"";
225
226 if (empty($_GET["fMagicNumberName"]))
227 $_GET["fMagicNumberName"]="Off";
228
229 if (empty($_GET["fSourceName"]))
230 $_GET["fSourceName"]=$first?"On":"";
231
232 if (empty($_GET["fProjectName"]))
233 $_GET["fProjectName"]="Off";
234
235 if (empty($_GET["fL1TriggerTableName"]))
236 $_GET["fL1TriggerTableName"]="Off";
237
238 if (empty($_GET["fL2TriggerTableName"]))
239 $_GET["fL2TriggerTableName"]="Off";
240
241 if (empty($_GET["fMeanTriggerRate"]))
242 $_GET["fMeanTriggerRate"]=$first?"On":"";
243
244 if (empty($_GET["fHvSettingsName"]))
245 $_GET["fHvSettingsName"]="Off";
246
247 if (empty($_GET["fCalibrationScriptName"]))
248 $_GET["fCalibrationScriptName"]="Off";
249
250 if (empty($_GET["fDiscriminatorThresholdTableName"]))
251 $_GET["fDiscriminatorThresholdTableName"]="Off";
252
253 if (empty($_GET["fTriggerDelayTableName"]))
254 $_GET["fTriggerDelayTableName"]="Off";
255
256 if (empty($_GET["fLightConditionsName"]))
257 $_GET["fLightConditionsName"]="Off";
258
259 if (empty($_GET["fTestFlagName"]))
260 $_GET["fTestFlagName"]="Off";
261
262 if (empty($_GET["fDaqStoreRate"]))
263 $_GET["fDaqStoreRate"]="Off";
264
265 if (empty($_GET["fDaqTriggerRate"]))
266 $_GET["fDaqTriggerRate"]="Off";
267
268 if (empty($_GET["fL2RatePresc"]))
269 $_GET["fL2RatePresc"]="Off";
270
271 if (empty($_GET["fL2RateUnpresc"]))
272 $_GET["fL2RateUnpresc"]="Off";
273
274 if (empty($_GET["fExcludedFDAName"]))
275 $_GET["fExcludedFDAName"]=$first?"On":"";
276
277 if (empty($_GET["fSequenceFirst"]))
278 $_GET["fSequenceFirst"]="Off";
279
280 if (empty($_GET["fSequenceNo"]))
281 $_GET["fSequenceNo"]="";
282
283 if (empty($_GET["fDataCheckDone"]))
284 $_GET["fDataCheckDone"]="Off";
285
286 if (empty($_GET["fDataCheckDoneStatus"]))
287 $_GET["fDataCheckDoneStatus"]="0";
288
289 if (empty($_GET["fCCFileAvail"]))
290 $_GET["fCCFileAvail"]=$first?"On":"";
291
292 if (empty($_GET["fCCFileAvailStatus"]))
293 $_GET["fCCFileAvailStatus"]="0";
294
295 if (empty($_GET["fCaCoFileAvail"]))
296 $_GET["fCaCoFileAvail"]=$first?"On":"";
297
298 if (empty($_GET["fCaCoFileAvailStatus"]))
299 $_GET["fCaCoFileAvailStatus"]="0";
300
301 if (empty($_GET["fCaCoFileFound"]))
302 $_GET["fCaCoFileFound"]="Off";
303
304 if (empty($_GET["fCaCoFileFoundStatus"]))
305 $_GET["fCaCoFileFoundStatus"]="0";
306
307 if (empty($_GET["fRawFileAvail"]))
308 $_GET["fRawFileAvail"]=$first?"On":"";
309
310 if (empty($_GET["fRawFileAvailStatus"]))
311 $_GET["fRawFileAvailStatus"]="0";
312
313 if (empty($_GET["fTimingCorrection"]))
314 $_GET["fTimingCorrection"]=$first?"On":"";
315
316 if (empty($_GET["fTimingCorrectionStatus"]))
317 $_GET["fTimingCorrectionStatus"]="0";
318
319 }
320
321 function PrintForm($_GET, $host, $user, $pw, $db)
322 {
323 printf("<center>\n");
324 printf("<form action=\"runinfo.php\" METHOD=\"GET\">\n");
325 printf(" <table>\n");
326 printf(" <tr>\n");
327
328 CheckBox("fRunStart", "Run start time");
329 CheckBox("fL2RatePresc", "L2 presc Rate");
330 CheckBox("fDaqStoreRate", "DAQ Storage Rate");
331 CheckBox("fAzimuth", "Azimuth");
332
333 printf(" </tr><tr>\n");
334
335 CheckBox("fRunStop", "Run stop time");
336 CheckBox("fL2RateUnpresc", "L2 unpresc Rate");
337 CheckBox("fDaqTriggerRate", "DAQ Trigger Rate");
338 CheckBox("fZenithDistance", "Zenith distance");
339
340 printf(" </tr><tr>\n");
341
342// CheckBox("fFormatVersion", "File format");
343 CheckBox("fNumEvents", "Num of events");
344 CheckBox("fMeanTriggerRate", "Mean Trigger rate");
345 CheckBox("fSequenceFirst", "Sequence Number");
346 CheckBox("fTest", "incl. TestSources");
347
348 printf(" </tr>\n");
349 printf(" </table>\n");
350 printf(" <table>\n");
351 printf(" <tr><td>\n");
352
353 PrintStatusMenu("fCCFileAvail", "CC File available");
354 printf(" </td><td>\n");
355 PrintStatusMenu("fCaCoFileAvail", "Caco File available");
356 printf(" </td><td>\n");
357 PrintStatusMenu("fRawFileAvail", "Rawfile available");
358
359 printf(" </td></tr><tr><td>\n");
360
361 PrintStatusMenu("fTimingCorrection", "Timing Correction");
362 printf(" </td><td>\n");
363 PrintStatusMenu("fCaCoFileFound", "Caco File");
364 printf(" </td><td>\n");
365 PrintStatusMenu("fDataCheckDone", "DataCheck");
366
367 printf(" </td></tr></table>\n");
368 printf(" <p>\n");
369
370 // pull down boxes
371
372 printf(" <table>\n");
373 printf(" <tr><td>\n");
374 PrintPullDown($host, $user, $pw, $db, "RunType", "fRunTypeName", "fRunTypeKEY", "Run type");
375 printf(" </td><td>\n");
376 PrintPullDown($host, $user, $pw, $db, "Source", "fSourceName", "fSourceKEY", "Source Name");
377 printf(" </td><td>\n");
378 PrintPullDown($host, $user, $pw, $db, "HvSettings", "fHvSettingsName", "fHvSettingsKEY", "HV Settings");
379 printf(" </td><td>\n");
380 PrintPullDown($host, $user, $pw, $db, "L1TriggerTable", "fL1TriggerTableName", "fL1TriggerTableKEY", "L1 Trigger Table");
381 printf(" </td></tr><tr><td>\n");
382 PrintPullDown($host, $user, $pw, $db, "TestFlag", "fTestFlagName", "fTestFlagKEY", "Test Flag");
383 printf(" </td><td>\n");
384 PrintPullDown($host, $user, $pw, $db, "Project", "fProjectName", "fProjectKEY", "Project Name");
385 printf(" </td><td>\n");
386 PrintPullDown($host, $user, $pw, $db, "DiscriminatorThresholdTable", "fDiscriminatorThresholdTableName", "fDiscriminatorThresholdTableKEY", "DT Table");
387 printf(" </td><td>\n");
388 PrintPullDown($host, $user, $pw, $db, "L2TriggerTable", "fL2TriggerTableName", "fL2TriggerTableKEY", "L2 Trigger Table");
389 printf(" </td></tr><tr><td>\n");
390 PrintPullDown($host, $user, $pw, $db, "ExcludedFDA", "fExcludedFDAName", "fExcludedFDAKEY", "Exclusions");
391 printf(" </td><td>\n");
392 PrintPullDown($host, $user, $pw, $db, "LightConditions", "fLightConditionsName", "fLightConditionsKEY", "Light Conditions");
393 printf(" </td><td>\n");
394 PrintPullDown($host, $user, $pw, $db, "CalibrationScript", "fCalibrationScriptName", "fCalibrationScriptKEY", "Cal Script");
395 printf(" </td><td>\n");
396 PrintPullDown($host, $user, $pw, $db, "TriggerDelayTable", "fTriggerDelayTableName", "fTriggerDelayTableKEY", "Trigger Delay Table");
397 printf(" </td></tr><tr><td>\n");
398 PrintPullDown($host, $user, $pw, $db, "MagicNumber", "fMagicNumberName", "fMagicNumberKEY", "Magic Number");
399 printf(" </td></tr></table>\n");
400
401 printf(" <p>\n");
402
403 if (empty($_GET["fStartDate"]))
404 $timemin = GetMin("fRunStart", "RunData", $host, $user, $pw, $db);
405 else
406 $timemin = $_GET["fStartDate"];
407
408 if (empty($_GET["fStopDate"]))
409 $timemax = GetMax("fRunStart", "RunData", $host, $user, $pw, $db);
410 else
411 $timemax = $_GET["fStopDate"];
412
413 printf("Sequ#&nbsp;<input name=\"fSequenceNo\" type=\"text\" size=\"6\" maxlength=\"6\" value=\"");
414 if (!empty($_GET["fSequenceNo"]))
415 printf("%s", $_GET["fSequenceNo"]);
416 printf("\">&nbsp;&nbsp;&nbsp;\n");
417
418 printf("Night&nbsp;(yyyy-mm-dd)&nbsp;from&nbsp;<input name=\"fStartDate\" type=\"text\" size=\"10\" maxlength=\"10\" value=\"%s\">\n", $timemin);
419 printf("to&nbsp;<input name=\"fStopDate\" type=\"text\" size=\"10\" maxlength=\"10\" value=\"%s\">&nbsp;&nbsp;&nbsp;&nbsp;\n", $timemax);
420
421/*
422 printf("Date&nbsp;(yyyy-mm-dd)&nbsp;<input name=\"fDate\" type=\"text\" size=\"10\" maxlength=\"10\" value=\"");
423 if (!empty($_GET["fDate"]))
424 printf("%s", $_GET["fDate"]);
425 printf("\">&nbsp;&nbsp;&nbsp;\n");
426*/
427
428 if (empty($_GET["fRunMin"]))
429 $min = GetMin("fRunNumber", "RunData", $host, $user, $pw, $db);
430 else
431 $min = $_GET["fRunMin"];
432
433 if (empty($_GET["fRunMax"]))
434 $max = GetMax("fRunNumber", "RunData", $host, $user, $pw, $db);
435 else
436 $max = $_GET["fRunMax"];
437
438 printf("Runs&nbsp;from&nbsp;<input name=\"fRunMin\" type=\"text\" size=\"6\" maxlength=\"6\" value=\"%s\">\n", $min);
439 printf("to&nbsp;<input name=\"fRunMax\" type=\"text\" size=\"6\" maxlength=\"6\" value=\"%s\">&nbsp;&nbsp;&nbsp;\n", $max);
440
441 printf(" <P>\n");
442
443 printf("Source&nbsp;(<A HREF=\"regexp.html\">regexp</A>)&nbsp;<input name=\"fSourceN\" type=\"text\" size=\"15\" maxlength=\"15\" value=\"");
444 if (!empty($_GET["fSourceN"]))
445 printf("%s", $_GET["fSourceN"]);
446 printf("\">&nbsp;&nbsp;&nbsp;\n");
447
448 printf(" Results:\n");
449 printf(" <select name=\"fNumResults\">\n");
450
451 $numres = array("10", "20", "50", "100", "200", "500", "1000", "2000");
452 foreach ($numres as $element)
453 {
454 if ($element==$_GET["fNumResults"])
455 printf("<option value=\"%s\" selected>%3s</option>\n", $element, $element);
456 else
457 printf("<option value=\"%s\">%3s</option>\n", $element, $element);
458 }
459 printf(" </select>\n");
460 printf(" &nbsp;&nbsp;&nbsp;\n");
461
462 ini_set("mysql.trace_mode", "Off");
463 ini_set("display_errors", "Off");
464
465 printf("<input class='Width' type='submit' value='Query Table'>&nbsp;&nbsp;&nbsp;\n");
466 printf("<input class='Width' type='button' value='Reset' onClick='self.location.href=\"runinfo.php\"'>&nbsp;&nbsp;&nbsp;\n");
467 if (strchr($_SERVER["REQUEST_URI"], '?')!=FALSE)
468 printf("<input class='Width' type='button' value='Get .txt' onClick='self.location.href=\"%s&fSendTxt=1\"'>&nbsp;&nbsp;&nbsp;\n", $_SERVER["REQUEST_URI"]);
469 if (strchr($_SERVER["REQUEST_URI"], '?')!=FALSE)
470 printf("<input class='Width' type='button' value='Print' onClick='self.location.href=\"%s&fPrintTable=1\"'>&nbsp;&nbsp;&nbsp;\n", $_SERVER["REQUEST_URI"]);
471 printf("</form>\n");
472 printf("</center>\n");
473 printf("</td>\n");
474 printf("</tr>\n");
475 printf("<tr class='Block'>\n");
476 printf("<td>\n");
477 }
478
479 function PrintPage($html, $host, $user, $pw, $db, $alias, $rightalign, $checkwhere, $checkgroup, $checkstatusgroup, $needs)
480 {
481 $db_id = mysql_connect($host, $user, $pw);
482 if ($db_id==FALSE)
483 {
484 printf("mysql_connect returned the following error: %s\n", mysql_error());
485 die("");
486 }
487 mysql_select_db($db);
488 mysql_query("SET BIG_TABLES=1"); // necessary for mySQL <= 4
489
490 $query0 = CreateQuery($_GET, $alias, $checkwhere, $checkgroup, $checkstatusgroup, $needs);
491
492 $result0 = mysql_query($query0, $db_id);
493
494 if ($result0)
495 {
496 if ($html=="1" || $html=="2")
497 PrintMagicTable($result0, $alias, $rightalign, "", "", $_GET);
498 else
499 PrintText($result0);
500
501 mysql_free_result($result0);
502 }
503 mysql_close($db_id);
504
505 if ($html=="1")
506 printf("<U><B>submitted query:</B></U><BR>%s<BR>", htmlspecialchars($query0));
507 }
508
509 include ("include.php");
510 include ("db.php");
511 include ("magicdefs.php");
512
513 ini_set("display_errors", "On");
514 ini_set("mysql.trace_mode", "On");
515
516 if (!empty($_GET["fSendTxt"]))
517 {
518 header("Content-type: application/octet");
519 header("Content-Disposition: attachment; filename=query-result.txt");
520
521 PrintPage("0", $host, $user, $pw, $db, $alias, $rightalign, $checkwhere, $checkgroup, $checkstatusgroup, $needs);
522 }
523 else
524 {
525 echo (file_get_contents("index-header.html"));
526
527 $environment = sizeof($_GET);
528
529 InitGet($_GET);
530 if (empty($_GET["fPrintTable"]))
531 PrintForm($_GET, $host, $user, $pw, $db);
532
533 if ($environment==0)
534 printf("No query submitted yet.<BR>");
535 else
536 {
537 if (empty($_GET["fPrintTable"]))
538 PrintPage("1", $host, $user, $pw, $db, $alias, $rightalign, $checkwhere, $checkgroup, $checkstatusgroup, $needs);
539 else
540 PrintPage("2", $host, $user, $pw, $db, $alias, $rightalign, $checkwhere, $checkgroup, $checkstatusgroup, $needs);
541 }
542
543 echo (file_get_contents("index-footer.html"));
544 }
545
546 ini_set("display_errors", "Off");
547 ini_set("mysql.trace_mode", "Off");
548}
549?>
Note: See TracBrowser for help on using the repository browser.