Odyssey
combo_reports.prg
1 <?php
2 
3 $monLibrary= dirname(__FILE__) . "/../library";
4 $sharedLibrary= dirname(__FILE__) . "/../../shared/library";
5 require_once("$monLibrary/cu_top.i");
6 require_once("$monLibrary/ck_hticket.i");
7 require_once("$sharedLibrary/cu_flagconst.i");
8 
9  if (!CheckPerm($link, $Hu, basename($_SERVER['SCRIPT_NAME']), $_SERVER['REMOTE_ADDR'])) {
10  // ** Permissions failed
11  // ** redirect to new page
12  header("Location: /hcuadm/hcu_noperm.prg");
13  exit;
14  }
15 
16 $dms_ok=array('report'=>'digits','ob'=>'digits','csv'=>'string',
17  'pos'=>'digits','d'=>'digits','jval'=>'string','pm'=>'digits',
18  'mo'=>'digits','s0'=>'digits','s1'=>'digits','s2'=>'digits',
19  's3'=>'digits','s4'=>'digits','s5'=>'digits','s6'=>'digits','hit'=>'digits');
20 dms_import($dms_ok);
21 
22 $report = (isset($report) ? $report : 0);
23 // verify_server check works only because the 1st column selected in every
24 // adm_reports report is cu. If we ever have an adm_report that does not
25 // select cu first, will need to turn this check off. 8/3/15 MH
26 //$verify_server = ($report == 23 ? 1 : 0);
27 $verify_server = 1;
28 $cfgQuotes="\"";
29 $cfgBorder=0;
30 $cfgMaxRows=30;
31 $cfgMaxPages=5;
32 $cfgMaxText=255;
33 $strShowingRecords = "Showing records ";
34 $strTotal = "total";
35 $strPrevious = "Previous";
36 $strNext = "Next";
37 $strPos1 = "Begin";
38 $strEnd = "End";
39 $strMore = "More";
40 $strEmptySet = "No records found";
41 
42 $self = $_SERVER['PHP_SELF'];
43 
44 if ($report) {
45 
46  $q='';
47  $servers=array();
48 
49  if ($s1 == 1) {array_push($servers,"www");$q .= "&s1=1";}
50  if ($s2 == 1) {array_push($servers,"www2");$q .= "&s2=1";}
51  if ($s3 == 1) {array_push($servers,"www3");$q .= "&s3=1";}
52  if ($s4 == 1) {array_push($servers,"www4");$q .= "&s4=1";}
53  if ($s5 == 1) {array_push($servers,"www5");$q .= "&s5=1";}
54  if ($s6 == 1) {array_push($servers,"www6");$q .= "&s6=1";}
55 
56  if (sizeof($servers) == 0) {
57  #$servers=array('www2','www','www4','www5','www6');
58  $servers=array('www3','www5','www6');
59  }
60  if ($verify_server) {
61 
62  $dbh = $link;
63 
64  $sql_query = "select trim(upper(user_name)) as user_name, trim(www_server) as www_server from cuinfo order by user_name";
65  if (!$result = db_query($sql_query,$dbh)) {
66  pg_die(pg_errormessage($dbh), $sql_query.$sql_order, __FILE__, __LINE__);
67  }
68  $num_rows = db_num_rows($result);
69  for ($i_row = 0; $drow=db_fetch_array($result,$row);$row++) {
70  $client_www{$drow['user_name']} = $drow['www_server'];
71  }
72  }
73 
74  # select user_name, www_server from cuinfo where client is not closed
75  # build array $client_www{"$user_name" => $www_server}
76  # inside loop, compare retrieved clients to make sure they appear on that server in the array
77  # only include if
78  # array_key_exists("$user_name",array_intersect($client_www,array($ask)));
79 
80  if (!isset($ob)) { $ob = "1";}
81  $culist = array();
82  foreach ($servers as $ask) {
83 
84 // ** Old method -- perform a web call
85  // $response = (@file("https://nobody:no1home@$ask.homecu.net/hcuadm/adm_reports?report=$report&csv=raw"));
86 // ** New method -- make a system call --
87  // * the system call will actually be a curl call that will
88  // * send the cookie so it can be processed as normal with all
89  // * validation
90  $cmd = "https://$ask.homecu.net/hcuadm/adm_reports.prg?report=$report&csv=raw";
91 $ch=curl_init($cmd);
92 curl_setopt($ch,CURLOPT_COOKIE,"HCUTicket={$_COOKIE['HCUTicket']}");
93 curl_setopt($ch,CURLOPT_USERPWD,"nobody:no1home");
94 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); # get response as string
95 $rawresp=curl_exec($ch);
96 curl_close($ch);
97 $response=array();
98 if ($rawresp) {
99  $i=0;
100  foreach(explode("\r\n",$rawresp) as $get_line) {
101  if (trim($get_line) != "") {
102  if ($verify_server) {
103  $i++;
104  $content = explode("\t",$get_line);
105  if ($i < 3 || array_key_exists(trim($content[0]),array_intersect($client_www,array($ask)))) {
106  $response[] = $get_line;
107  }
108  } else {
109  $response[] = $get_line;
110  }
111  }
112  }
113 }
114 # $cmd = "https://nobody:no1home@$ask.homecu.net/hcuadm/adm_reports?report=$report&csv=raw";
115 # $cmd = "/usr/bin/curl " . escapeshellarg("-b HCUTicket={$_COOKIE['HCUTicket']}") . " " . escapeshellarg("$cmd");
116 #
117 ## temporarily pass user credentials for testing remote access
118 ## $cmd = "/usr/bin/curl " . escapeshellarg("-b HCUTicket={$_COOKIE['HCUTicket']}") . " -u nobody:no1home " . escapeshellarg("$cmd");
119 #
120 # // $cmd = escapeshellcmd("/usr/bin/curl -b \"HCUTicket={$_COOKIE['HCUTicket']}\" \"$cmd\"");
121 # // ** Now pass the command to the command line
122 #
123 # $response = Array(); // Reset the array
124 # // ** Take the command -- open a pipe -- then retrieve the information -- stuff into an array
125 # if ($handle = popen($cmd, 'r')) {
126 # while (!feof ($handle)) {
127 # $get_line = fgets($handle, 4096);
128 # if (trim($get_line) != "") {
129 # $response[] = $get_line;
130 # }
131 # }
132 #
133 # // ** Be sure to close the handle
134 # pclose($handle);
135 # }
136 
137  if (sizeof($response)) {
138  $titles = explode("\t",rtrim(array_shift($response),"\r\n"));
139  $ftypes = explode("\t",rtrim(array_shift($response),"\r\n"));
140  if ($s0) {
141  $q .= "&s0=1";
142  array_walk($response, 'save_server', "$ask");
143  array_push($titles,"Server");
144  array_push($ftypes,"char");
145  }
146  array_walk($response, 'sort_by', $ob -1);
147  $culist = array_merge($culist, $response);
148  }
149  }
150  if(is_array($culist) && sizeof($culist)) {
151  $culist = array_unique($culist);
152  $sortopt = (eregi("int|numeric", $ftypes[$ob - 1]) ? SORT_NUMERIC : SORT_REGULAR);
153  if ($d==1) {
154  rsort($culist, $sortopt);
155  } else {
156  sort($culist, $sortopt);
157  }
158  $title = array_shift($titles);
159  $num_fields = sizeof($titles);
160  $num_rows = sizeof($culist);
161 
162 function highlight($line) {
163 global $pm;
164 global $jval;
165  if ($pm) $clen = strlen($jval);
166  $row = explode("\t",rtrim($line,"\r\n"));
167  $colval=$row[0];
168  $coloff = (strpos(strtolower($colval), strtolower($jval))===false ? 0 : strpos(strtolower($colval),strtolower($jval)));
169  if ($pm==2) $colval = substr($colval,$coloff,$clen);
170  if ($pm==1) $colval = substr($colval,0,$clen);
171  return (strtolower(trim($colval)) == strtolower($jval));
172 }
173 
174 #
175 # if jval is set, search through the ob field until we find a match
176 # set $pos so record is on the page
177 #
178 
179  if (!isset($pos))
180  $pos = 0;
181  if (!isset($d))
182  $d = 0;
183 
184  $matchlines=array();
185  if (isset($jval) && trim($jval) > '') {
186  $jval = trim(preg_replace("/[\"\`;\\\]/","",$jval));
187  $matchlines=array_filter($culist,'highlight');
188  if (sizeof($matchlines) == 0) {
189  $nomatch=1;
190  } else {
191  # only reset to record zero if we got here by clicking the form
192  # strNavigation calls send in their own position info
193 
194  if ($hit) $pos = $cfgMaxRows * floor((key($matchlines))/$cfgMaxRows);
195  reset($matchlines);
196  if ($mo) {
197  $culist=array_merge($matchlines);
198  $num_rows = sizeof($culist);
199  $matchlines=array();
200  # only reset to record zero if we got here by clicking the form
201  # strNavigation calls send in their own position info
202  if($hit) $pos=0;
203 
204  }
205  }
206  }
207 
208 #
209 
210 #
211 if (($csv == 'csv') && ($num_rows > 1)) {
212  unset($csv);
213  $ostring = "";
214  $osep = "";
215 
216 #
217 # First record has the field names
218 #
219  for ($i_field = 0; $i_field < $num_fields; $i_field++) {
220  $field_name = $titles[$i_field];
221  $ostring .= "$osep\"$field_name\"";
222  $osep = ",";
223  }
224  $ostring .= "\r\n";
225 
226 #
227 # Now the data
228 #
229  foreach ($culist as $cu) {
230  $cu = rtrim($cu);
231  $osep="";
232  $row = explode("\t",$cu);
233 
234  # throw away the sort column
235  array_shift($row);
236 
237  for ($i_field = 0; $i_field < $num_fields; $i_field++) {
238  $field_type = $ftypes[$i_field];
239  if (preg_match("/(int|numeric)/i", $field_type)) {
240  $ostring .= "${osep}${row[$i_field]}";
241  } elseif (preg_match("/(text|char)/i", $field_type)) {
242  $ostring .= "${osep}\"${row[$i_field]}\"";
243  } elseif ($field_type == "bool") {
244  $ostring .= "${osep}\"${row[$i_field]}\"";
245  } else {
246  $ostring .= "${osep}\"${row[$i_field]}\"";
247  }
248  $osep=",";
249  }
250  $ostring .= "\r\n";
251 
252  }
253 
254  header("Content-length: " . strlen( $ostring ) );
255  header("Content-type: application/octetstream");
256  header("Content-disposition: inline; filename=\"${Cu}report${report}.csv\"");
257  print ( $ostring );
258  exit;
259 }
260 
261  $pos_next = $pos + $cfgMaxRows;
262  $pos_prev = $pos - $cfgMaxRows;
263 
264 
265  $iNumRows = $num_rows;
266  if ($num_rows < $pos_next) {
267  $pos_next = $num_rows;
268  }
269  $strNavigation .= "<table border=0 cellspacing=0 cellpadding=2><tr>\n";
270  $strNavigation .= "<td align=left>";
271  if ($pos >= $cfgMaxRows) {
272  //doj added link to beginning of results
273  $strNavigation .= "<a href=\"$self&report=$report\" onclick=\"jumpto(0,0);return false;\">&lt;&lt; $strPos1 </a> | ";
274 
275  $strNavigation .= " <a href=\"$self&report=$report\" onclick=\"jumpto($pos_prev,0);return false;\">&lt; $strPrevious </a> | ";
276  } else {
277  $strNavigation .= "&nbsp;";
278  }
279  $strNavigation .= "</td>\n";
280 
281  $strNavigation .= "<td align=center>\n";
282 
283  //doj now only the previous and next $cfgMaxPages pages will be shown
284  if (empty($cfgMaxPages)) {
285  $cfgMaxPages = 5;
286  }
287 
288  $iCount = $pos - ($cfgMaxRows * $cfgMaxPages);
289  if ($iCount < 0)
290  $iCount = 0;
291 
292  $iPageCnt = (int)($iCount / $cfgMaxRows);
293  $iPageStop = $pos + ($cfgMaxRows * ($cfgMaxPages + 1));
294 
295  for (; $iCount < $iNumRows && $iCount < $iPageStop; $iCount += $cfgMaxRows) {
296  //doj until here
297  $iPageCnt++;
298  if ($iCount != $pos) {
299  $strPages .= "<a href=\"$self&report=$report\" onclick=\"jumpto($iCount,0);return false;\">$iPageCnt</a> | ";
300  } else {
301  if ($iNumRows > $cfgMaxRows) {
302  $strPages .= "$iPageCnt | ";
303  }
304  }
305  }
306  $strNavigation .= preg_replace("/ \| $/", "", $strPages);
307 
308  $strNavigation .= "</td>\n";
309 
310  $strNavigation .= "<td align=right>";
311  if ($pos_next < $num_rows) {
312  $strNavigation .= " | <a href=\"$self&report=$report\" onclick=\"jumpto($pos_next,0);return false;\"> $strNext &gt;</a>";
313 
314  //doj link to end of results
315  $pos_end = $num_rows - $cfgMaxRows;
316  $strNavigation .= " | <a href=\"$self&report=$report\" onclick=\"jumpto($pos_end,0);return false;\"> $strEnd &gt;&gt;</a>";
317  } else {
318  $strNavigation .= "&nbsp;";
319  }
320  $strNavigation .= "</td>\n";
321  $strNavigation .= "</tr></table>\n";
322 
323 header("Expires: Sat 20 May 1995 03:32:38 GMT");
324 header("Pragma: no-cache");
325 header("Cache-Control: no-cache, must-revalidate");
326 
327 # document.location='$self?report=$report&ob=$ob&d=$d&pos=0&jval=' + strJval + '&pm=' + strPm + '&mo=' + strMo + '$q';
328  print <<<EOF
329  <script language='javascript'>
330  function jumpto(pos,hit,ob, d)
331  {
332  pos = typeof(pos) != 'undefined' ? pos : $pos;
333  hit = typeof(hit) != 'undefined' ? hit : '';
334  ob = typeof(ob) != 'undefined' ? ob : $ob;
335  d = typeof(d) != 'undefined' ? d : $d;
336  document.jumpform.ob.value = ob;
337  document.jumpform.d.value = d;
338  document.jumpform.pos.value = pos;
339  document.jumpform.hit.value = hit;
340  document.jumpform.submit();
341  }
342  function jumpclear()
343  {
344  document.jumpform.ob.value = 1;
345  document.jumpform.d.value = 0;
346  document.jumpform.pos.value = 0;
347  document.jumpform.hit.value = '';
348  document.jumpform.jval.value = '';
349  document.jumpform.pm[0].checked=true;
350  document.jumpform.pm[1].checked=false;
351  document.jumpform.pm[2].checked=false;
352  document.jumpform.mo.checked=false;
353  document.jumpform.submit();
354  }
355  </script>
356 EOF;
357 
358 cu_header("$title");
359  echo "<table border=$cfgBorder align=center width='100%' bgcolor=white cellpadding=2 cellspacing=0>";
360  echo "<tr><td class='dtl' align='left'>";
361  echo "<a href='$produrl/hcuadm/cuilist.prg'>Credit Union List</a>&nbsp;&nbsp;&nbsp;
362  <a href='$self?report=0'>Report Menu</a>&nbsp;&nbsp;&nbsp;
363  <A HREF='$self?csv=csv&report=$report&ob=$ob&d=$d&jval=" . urlencode($jval) . "&pm=$pm&mo=$mo$q'>Download CSV</a></td><td class='dtl' align='right'>&nbsp; ";
364  if ($num_rows > 1) {
365  echo "$strShowingRecords $pos - $pos_next ($num_rows $strTotal)";
366  }
367  echo "</td></tr></table>";
368 
369  echo $strNavigation;
370  if (!isset($pm)) $pm = 0;
371 # if ($iNumRows > $cfgMaxRows) {
372  # show a 'Jump to this value' link for the sorted field only
373  #print "<form name='jumpform' onSubmit='jumpto();return false;'>
374  print "<form name='jumpform' action='$self'>
375  <input type='hidden' name='report' value='$report'>
376  <input type='hidden' name='pos' value='$pos'>
377  <input type='hidden' name='ob' value='$ob'>
378  <input type='hidden' name='d' value='$d'>
379  <input type='hidden' name='hit' value='$hit'>
380  <input type='hidden' name='s0' value='$s0'>
381  <input type='hidden' name='s1' value='$s1'>
382  <input type='hidden' name='s2' value='$s2'>
383  <input type='hidden' name='s3' value='$s3'>
384  <input type='hidden' name='s4' value='$s4'>
385  <input type='hidden' name='s5' value='$s5'>
386  <input type='hidden' name='s6' value='$s6'>
387  <table border=$cfgBorder align=center width='90%'>
388  <tr><td class='msg'><hr>
389  Click column heading to change sort order and jump value<br>&nbsp;</td></tr>
390  <tr><td class='small' valign='top'>Jump to {$titles[$ob -1]} : &nbsp;
391  <input type='text' name='jval' value='$jval' size='10'>&nbsp;&nbsp;<br>
392  &nbsp;&nbsp;
393  <input type='radio' name='pm' value='0'" .
394  ($pm==0 ? ' checked>' : '>') . "&nbsp;Full Match &nbsp;&nbsp;
395  <input type='radio' name='pm' value='1'" .
396  ($pm==1 ? ' checked>' : '>') . "&nbsp;Starts With
397  &nbsp;&nbsp;
398  <input type='radio' name='pm' value='2'" .
399  ($pm==2 ? ' checked>' : '>') . "&nbsp;Contains<br>&nbsp;&nbsp;
400  <input type='checkbox' name='mo' value='1'" .
401  ($mo==1 ? ' checked>' : '>') . "&nbsp;Show Matches Only
402  &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;
403  <input type='button' value=' Clear ' onClick='jumpclear();return false;'>
404  &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;
405  <input type='button' value=' Go ' onClick='jumpto(0,1);return false;'>
406 ";
407  if ($nomatch == 1 ) print "<br><font color='red' align='center'>No Match Found</font>";
408  print "</td></tr></table></form>";
409 # }
410  echo "<table cellspacing=0 border=$cfgBorder align=center width='100%'>";
411  echo "<tr><td class='hdr' colspan='$num_fields' align='center'>$title</td></tr><tr>";
412 
413  for ($i_field = 0; $i_field < $num_fields; $i_field++) {
414  $field_name = $titles[$i_field];
415 # if (sizeof($culist) > 1) {
416 
417  if (($i_field + 1) == intval($ob) && $d != 1) {
418  $desc_ord = 1; // Descending order??
419  } else {
420  $desc_ord = 0;
421  }
422 
423  $sort_order = ($i_field + 1);
424  echo "<th class='small' align='left'><A HREF=\"$self?report=$report&pos=$pos&ob={$sort_order}{$desc_ord}{$q}\" onclick=\"jumpto(0,1,$sort_order,$desc_ord);return false;\">$field_name</a></th>\n";
425 # } else {
426 # echo "<th class='small' align='left'>$field_name</th>";
427 # }
428  }
429  echo "</tr>\n";
430  if ((sizeof($culist)) < 1) {
431  echo "<tr class='odd'><td colspan='$num_fields'>$strEmptySet</td></tr>";
432  } else {
433 
434  for ($i_row = $pos; $i_row < $pos_next; $i_row++) {
435  $row = explode("\t",rtrim($culist[$i_row],"\r\n"));
436 
437  # throw away the sort column
438  array_shift($row);
439 
440  if(sizeof($matchlines) && array_key_exists("$i_row",$matchlines)) {
441  $i_row % 2 ? $rbg="odd_smhlt" : $rbg = "even_smhlt";
442  } else {
443  $i_row % 2 ? $rbg="odd_small" : $rbg = "even_small";
444  }
445 
446  echo "<tr class=$rbg>";
447  for ($i_field = 0; $i_field < sizeof($row); $i_field++) {
448  if (!isset($row[$i_field]))
449  unset($row[$i_field]);
450  $field_type = $ftypes[$i_field];
451  $field_name = $titles[$i_field];
452  if (preg_match("/(int|numeric)/i", $field_type)) {
453 
454  echo "<td align=right valign=top>&nbsp;$row[$i_field]&nbsp;</td>\n";
455  } elseif ($cfgShowBlob == false && preg_match("/BLOB/i", $field_type)) {
456  echo "<td align=right valign=top>&nbsp;[BLOB]&nbsp;</td>\n";
457  } elseif (preg_match("/(text|char)/i", $field_type)) {
458  // If the text is longer than $cfgMaxText characters, let's cut it short
459  if (strlen($row[$i_field]) > $cfgMaxText && !empty($cfgMaxText)) {
460  $strLgText = nl2br(htmlspecialchars(substr($row[$i_field], 0, $cfgMaxText))) . " <br><b>... $strMore ...</b>";
461  } else {
462  $strLgText = nl2br(htmlspecialchars($row[$i_field]));
463  }
464  echo "<td valign=top>&nbsp;$strLgText</td>\n";
465  } elseif ($field_type == "bool") {
466  echo "<td valign=top>&nbsp;", bool_YesNo($row[$i_field]), "&nbsp;</td>\n";
467  } else {
468  echo "<td valign=top>&nbsp;", nl2br(htmlspecialchars($row[$i_field])), "&nbsp;</td>\n";
469  }
470  }
471 
472  }
473 }
474 
475  echo "</tr></table>\n";
476  echo $strNavigation;
477 
478  echo "</td></tr></table>";
479 
480 
481  } else {
482 
483  print "No Records Found";
484  }
485 } else {
486  # show list of selections
487 header("Expires: Sat 20 May 1995 03:32:38 GMT");
488 header("Pragma: no-cache");
489 header("Cache-Control: no-cache, must-revalidate");
490 cu_header("Select Report");
491 print <<<EOF
492  <form action='$PHP_SELF' method='GET'>
493  <table width='500' border='0' align='center' cellpadding=3 cellspacing=0 class='dmsbg'><tr><td>
494  <table width='100%' border='0' align='center' bgcolor=white cellpadding2 cellspacing=0>
495  <tr class='barb'><td align='center'><font size=+1>Please Select Report</font></td></tr>
496  <tr><td><a href="$produrl/hcuadm/cuilist.prg" target="parent">Credit Union List</a></td></tr>
497  <tr class='hdr'><td>Home Banking Settings Reports</td></tr>
498  <tr class='odd_small'><td>&nbsp;&nbsp;&nbsp;<input type='radio' name='report' value='2'>&nbsp;E-Statement Clients</td></tr>
499  <tr class='even_small'><td>&nbsp;&nbsp;&nbsp;<input type='radio' name='report' value='3'>&nbsp;Alpha Check List</td></tr>
500  <tr class='odd_small'><td>&nbsp;&nbsp;&nbsp;<input type='radio' name='report' value='4'>&nbsp;Check Imaging Clients</td></tr>
501  <tr class='even_small'><td>&nbsp;&nbsp;&nbsp;<input type='radio' name='report' value='5'>&nbsp;Download Formats</td></tr>
502  <tr class='odd_small'><td>&nbsp;&nbsp;&nbsp;<input type='radio' name='report' value='6'>&nbsp;Alert Usage Summary</td></tr>
503  <tr class='even_small'><td>&nbsp;&nbsp;&nbsp;<input type='radio' name='report' value='7'>&nbsp;Bill Pay Cross-Authentication Settings</td></tr>
504  <tr class='odd_small'><td>&nbsp;&nbsp;&nbsp;<input type='radio' name='report' value='10'>&nbsp;Trusted Access Settings</td></tr>
505  <tr class='even_small'><td>&nbsp;&nbsp;&nbsp;<input type='radio' name='report' value='8'>&nbsp;Security Method Settings</td></tr>
506  <tr class='odd_small'><td>&nbsp;&nbsp;&nbsp;<input type='radio' name='report' value='14'>&nbsp;Credit Card Settings</td></tr>
507  <tr class='even_small'><td>&nbsp;&nbsp;&nbsp;<input type='radio' name='report' value='9'>&nbsp;Offline Status Settings</td></tr>
508  <tr class='odd_small'><td>&nbsp;&nbsp;&nbsp;<input type='radio' name='report' value='11'>&nbsp;Admin 2-Factor Details</td></tr>
509  <tr class='even_small'><td>&nbsp;&nbsp;&nbsp;<input type='radio' name='report' value='12'>&nbsp;Admin 2-Factor Summary</td></tr>
510  <tr class='odd_small'><td>&nbsp;&nbsp;&nbsp;<input type='radio' name='report' value='13'>&nbsp;Admin User Login Failure Status</td></tr>
511  <tr class='even_small'><td>&nbsp;&nbsp;&nbsp;<input type='radio' name='report' value='16'>&nbsp;CU TXT Banking Clients</td></tr>
512  <tr class='odd_small'><td>&nbsp;&nbsp;&nbsp;<input type='radio' name='report' value='17'>&nbsp;CU Alerts Clients</td></tr>
513  <tr class='even_small'><td>&nbsp;&nbsp;&nbsp;<input type='radio' name='report' value='21'>&nbsp;CU Classic Mobile Clients</td></tr>
514  <tr class='odd_small'><td>&nbsp;&nbsp;&nbsp;<input type='radio' name='report' value='22'>&nbsp;CU Mobile Web Clients</td></tr>
515  <tr class='even_small'><td>&nbsp;&nbsp;&nbsp;<input type='radio' name='report' value='18'>&nbsp;Callahan Report Details</td></tr>
516  <tr class='odd_small'><td>&nbsp;&nbsp;&nbsp;<input type='radio' name='report' value='19'>&nbsp;FID Settings</td></tr>
517  <tr class='even_small'><td>&nbsp;&nbsp;&nbsp;<input type='radio' name='report' value='20'>&nbsp;Override MICR Usage</td></tr>
518  <tr class='odd_small'><td>&nbsp;&nbsp;&nbsp;<input type='radio' name='report' value='23'>&nbsp;E-Statement Saturation</td></tr>
519  <tr class='hdr'><td>&nbsp;</td></tr>
520  <tr class='odd_small'><td>Include Data from <br>
521 <!--&nbsp;&nbsp;<input type='checkbox' name='s1' value='1'>&nbsp;www
522 &nbsp;&nbsp;<input type='checkbox' name='s2' value='1'>&nbsp;www2
523 &nbsp;&nbsp;<input type='checkbox' name='s4' value='1'>&nbsp;www4
524 <br>-->&nbsp;&nbsp;<input type='checkbox' name='s3' value='1'>&nbsp;www3
525 &nbsp;&nbsp;<input type='checkbox' name='s5' value='1'>&nbsp;www5
526 &nbsp;&nbsp;<input type='checkbox' name='s6' value='1'>&nbsp;www6
527 </td></tr>
528  <tr class='hdr'><td>&nbsp;</td></tr>
529  <tr class='odd_small'><td>&nbsp;
530 <input type='checkbox' name='s0' value='1'>&nbsp;Include server name in results
531 &nbsp;</td></tr>
532  <tr class='hdrc'><td><input type='submit' value='Go'></td></tr>
533 </table>
534 EOF;
535  exit;
536 
537  }
538 function save_server(&$response, $key, $server)
539 {
540  $response = rtrim($response,"\r\n") . "\t$server\r\n";
541 }
542 
543 function sort_by(&$response, $key, $sortcol)
544 {
545  $row = explode("\t",$response);
546  $response = $row[$sortcol] . "\t$response";
547 }
548 
549 ?>
Definition: User.php:7