PageRenderTime 48ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/fannie/reports/DBA/index.php

https://github.com/CORE-POS/IS4C
PHP | 179 lines | 161 code | 16 blank | 2 comment | 33 complexity | 5e3f108850c5986e0c9f970304e44be3 MD5 | raw file
  1. <?php
  2. //header('Location: ../../modules/plugins2.0/DBA/DBAReport.php');
  3. //exit;
  4. include(dirname(__FILE__) . '/../../config.php');
  5. include_once(__DIR__ . '/../../classlib2.0/FannieAPI.php');
  6. $dbc = FannieDB::get($FANNIE_OP_DB);
  7. if (isset($_REQUEST['loadID'])){
  8. $q = $dbc->prepare("SELECT reportName,reportQuery FROM
  9. customReports WHERE reportID=?");
  10. $r = $dbc->execute($q,array($_REQUEST['loadID']));
  11. $w = $dbc->fetch_row($r);
  12. echo $w['reportName'];
  13. echo '`';
  14. echo base64_decode($w['reportQuery']);
  15. return;
  16. }
  17. $errors = "";
  18. $query = "";
  19. if (isset($_REQUEST['query'])){
  20. $query = $_REQUEST['query'];
  21. if (stristr($query,"drop"))
  22. $errors .= "Illegal term <b>drop</b><br />";
  23. if (stristr($query,"truncate"))
  24. $errors .= "Illegal term <b>truncate</b><br />";
  25. if (stristr($query,"delete"))
  26. $errors .= "Illegal term <b>delete</b><br />";
  27. if (stristr($query,"update"))
  28. $errors .= "Illegal term <b>update</b><br />";
  29. if (stristr($query,"alter"))
  30. $errors .= "Illegal term <b>alter</b><br />";
  31. }
  32. if ($errors == "" && $query != ""){
  33. $dlog = "";
  34. $dtrans = "";
  35. if (!empty($_REQUEST['date1']) && !empty($_REQUEST['date2'])){
  36. $dlog = DTransactionsModel::selectDlog($_REQUEST['date1'],$_REQUEST['date2']);
  37. $dtrans = DTransactionsModel::selectDtrans($_REQUEST['date1'],$_REQUEST['date2']);
  38. }
  39. elseif (!empty($_REQUEST['date1'])){
  40. $dlog = DTransactionsModel::selectDlog($_REQUEST['date1']);
  41. $dtrans = DTransactionsModel::selectDtrans($_REQUEST['date1']);
  42. }
  43. if (!empty($dlog))
  44. $query = str_ireplace(" dlog "," ".$dlog." ",$query);
  45. if (!empty($dtrans))
  46. $query = str_ireplace(" dtransactions "," ".$dtrans." ",$query);
  47. $prep = $dbc->prepare($query);
  48. $result = $dbc->execute($query);
  49. if (!$result){
  50. echo "<i>Error occured</i>: ".$dbc->error();
  51. echo "<hr />";
  52. echo "<i>Your query</i>: ".$query;
  53. }
  54. else if ($dbc->num_rows($result) == 0){
  55. echo "<i>Query returned zero results</i><hr />";
  56. echo "<i>Your query</i>: ".$query;
  57. }
  58. else {
  59. if (isset($_REQUEST['excel'])){
  60. $ext = \COREPOS\Fannie\API\data\DataConvert::excelFileExtension();
  61. header('Content-Type: application/ms-excel');
  62. header('Content-Disposition: attachment; filename="resultset.' . $ext . '"');
  63. ob_start();
  64. }
  65. echo '<table cellspacing="0" cellpadding="4" border="1">';
  66. echo '<tr>';
  67. $num = $dbc->numFields($result);
  68. for($i=0;$i<$num;$i++){
  69. echo '<th>'.$dbc->fieldName($result,$i)."</th>";
  70. }
  71. echo '</tr>';
  72. while($row = $dbc->fetch_row($result)){
  73. echo '<tr>';
  74. for($i=0;$i<$num;$i++)
  75. echo '<td>'.$row[$i].'</td>';
  76. echo '</tr>';
  77. }
  78. echo '</table>';
  79. if (isset($_REQUEST['excel'])){
  80. $output = ob_get_contents();
  81. ob_end_clean();
  82. $array = \COREPOS\Fannie\API\data\DataConvert::htmlToArray($output);
  83. $xls = \COREPOS\Fannie\API\data\DataConvert::arrayToExcel($array);
  84. echo $xls;
  85. }
  86. if (!empty($_REQUEST['repName'])){
  87. $name = $_REQUEST['repName'];
  88. $saveableQ = base64_encode($_REQUEST['query']);
  89. $chkQ = $dbc->prepare("SELECT reportID FROM customReports WHERE reportName=?");
  90. $chkR = $dbc->execute($chkQ,array($name));
  91. if ($dbc->num_rows($chkR) == 0){
  92. $idQ = $dbc->prepare("SELECT max(reportID) FROM customReports");
  93. $idR = $dbc->execute($idQ);
  94. $id = array_pop($dbc->fetch_row($idR));
  95. $id = ($id=="")?1:$id+1;
  96. $insQ = $dbc->prepare("INSERT INTO customReports (reportID,reportName,reportQuery)
  97. VALUES (?,?,?)");
  98. $insR = $dbc->execute($insQ,array($id,$name,$saveableQ));
  99. }
  100. else {
  101. $id = array_pop($dbc->fetch_row($chkR));
  102. $upQ = $dbc->prepare("UPDATE customReports SET reportQuery=? WHERE reportID=?");
  103. $upR = $dbc->execute($upQ,array($saveableQ,$id));
  104. }
  105. }
  106. }
  107. }
  108. else {
  109. $header = "Reporting for DBAs";
  110. $page_title = "Fannie :: Skip learning PHP/HTML";
  111. include(__DIR__ . '/../../src/header.html');
  112. if (!empty($errors))
  113. echo "<blockquote>".$errors."</blockquote>";
  114. $q = $dbc->prepare("SELECT reportID,reportName FROM customReports ORDER BY reportName");
  115. $r = $dbc->execute($q);
  116. $opts = "";
  117. while($w = $dbc->fetch_row($r))
  118. $opts .= sprintf('<option value="%d">%s</option>',$w['reportID'],$w['reportName']);
  119. ?>
  120. <script type="text/javascript">
  121. function loadSaved(id){
  122. if (id==-1){
  123. $('#repName').val('');
  124. $('#query').val('');
  125. }
  126. else {
  127. $.ajax({
  128. url:'index.php',
  129. type:'get',
  130. cache: false,
  131. data:'loadID='+id
  132. }).done(function(data){
  133. var tmp = data.split('`');
  134. $('#repName').val(tmp[0]);
  135. $('#query').val(tmp[1]);
  136. });
  137. }
  138. }
  139. </script>
  140. <?php
  141. echo ' <script type="text/javascript">
  142. $(document).ready(function() {
  143. $(\'#date1\').datepicker();
  144. $(\'#date2\').datepicker();
  145. });
  146. </script>
  147. <form action="index.php" method="post">
  148. Saved reports: <select onchange="loadSaved(this.value);">
  149. <option value="-1">Choose...</option>'.$opts.'</select>
  150. <p />Save As <input type="text" name="repName" id="repName" />
  151. <p />
  152. <textarea name="query" id="query" rows="10" cols="40"></textarea>
  153. <p />
  154. Date range
  155. <input type="text" name="date1" size="10" id="date1" />
  156. <input type="text" name="date2" size="10" id="date2" />
  157. <br /><input type="checkbox" name="excel" id="excel" />
  158. <label for="excel">Download results</label>
  159. <p />
  160. <input type="submit" value="Run Report" />
  161. </form>';
  162. include(__DIR__ . '/../../src/footer.html');
  163. }