editdrivers.php 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. <?php
  2. function changed_drivers()
  3. {
  4. $accum=array();
  5. $temp=load_drivers();
  6. foreach($_SESSION['drivers'] as $key => $record)
  7. {
  8. if(isset($temp[$key]))
  9. {
  10. if(array_diff($temp[$key],$record))
  11. {
  12. $accum[$key]=$record;
  13. $accum[$key]['comment'] = "Modified";
  14. }
  15. }
  16. else
  17. {
  18. $accum[$key]=$record;
  19. $accum[$key]['comment'] = "Added";
  20. }
  21. }
  22. foreach($temp as $key => $record)
  23. {
  24. if(!isset($_SESSION['drivers'][$key]))
  25. {
  26. $accum[$key]=$record;
  27. $accum[$key]['comment'] = "Deleted";
  28. }
  29. }
  30. return $accum;
  31. }
  32. function load_drivers()
  33. {
  34. global $sql;
  35. $qry="SELECT id,pin,name FROM drivers";
  36. $res=mysqli_query($sql,$qry);
  37. $accum=array();
  38. while($row=mysqli_fetch_assoc($res))
  39. {
  40. $accum[$row['id']]=$row;
  41. }
  42. return $accum;
  43. }
  44. function commit_drivers()
  45. {
  46. global $sql;
  47. mysqli_query($sql,"BEGIN");
  48. mysqli_query($sql,"DELETE FROM drivers");
  49. foreach($_SESSION['drivers'] as $record)
  50. {
  51. $escrec=escape_array($record);
  52. mysqli_query($sql,"INSERT INTO drivers SET id='${escrec['id']}', pin='${escrec['pin']}', name='${escrec['name']}'");
  53. }
  54. mysqli_query($sql,"COMMIT");
  55. $_SESSION['drivers_dirty']=false;
  56. $tmp=fopen("/tmp/new_drivers_exist","wb");
  57. if($tmp) fclose($tmp);
  58. }
  59. function begin_driver_table($sortheaders)
  60. {
  61. if($sortheaders)
  62. {
  63. echo '<center><table width="80%" border="1"><tr><th><a href="index.php?sortby=id&type=num">Driver Number</a></th><th>Pin Number</th><th><a href="index.php?sortby=name&type=str">Driver Name</a></th><th>Action</th></tr>';
  64. }
  65. else
  66. {
  67. echo '<center><table width="80%" border="1"><tr><th>Driver Number</th><th>Pin Number</th><th>Driver Name</th><th>Action</th></tr>';
  68. }
  69. }
  70. function driver_compare($a, $b)
  71. {
  72. if(isset($_SESSION['driver_sortby']))
  73. {
  74. $sortby=$_SESSION['driver_sortby'];
  75. }
  76. else
  77. {
  78. $sortby='name';
  79. }
  80. $sorttype="str";
  81. if(isset($_SESSION['driver_sorttype']))
  82. {
  83. $sorttype=$_SESSION['driver_sorttype'];
  84. }
  85. if(!strcmp($sorttype,"str"))
  86. {
  87. return strcmp($a[$sortby],$b[$sortby]);
  88. }
  89. else if(!strcmp($sorttype,"num"))
  90. {
  91. if(floatval($a[$sortby]) == floatval($b[$sortby])) return 0;
  92. return ( floatval($a[$sortby]) < floatval($b[$sortby]) ) ? -1 : 1;
  93. }
  94. return 0;
  95. }
  96. function sort_drivers()
  97. {
  98. uasort($_SESSION['drivers'],'driver_compare');
  99. }
  100. //--------------------------------------------------------HANDLE LOADING DRIVERS IF THEY AREN'T
  101. if(!isset($_SESSION['drivers']))
  102. {
  103. $_SESSION['drivers']=load_drivers();
  104. sort_drivers();
  105. $_SESSION['drivers_dirty']=false;
  106. }
  107. //--------------------------------------------------------HANDLE SORTING DRIVER LIST DISPLAY
  108. if(isset($_REQUEST['sortby']))
  109. {
  110. $_SESSION['driver_sortby']=$_REQUEST['sortby'];
  111. if(isset($_REQUEST['type']))
  112. {
  113. $_SESSION['driver_sorttype']=$_REQUEST['type'];
  114. }
  115. sort_drivers();
  116. redirect('index.php');
  117. }
  118. //---------------------------------------------------------HANDLE ADDING A DRIVER
  119. if(isset($_REQUEST['adddriver']))
  120. {
  121. $okay=true;
  122. if(!preg_match('/[\d][\d][\d][\d]*/',$_REQUEST['pin']))
  123. {
  124. $okay=false;
  125. echo "PIN must be entirely numeric and at least three digits.<br>";
  126. }
  127. if(!preg_match('/[\d]+/',$_REQUEST['num']))
  128. {
  129. $okay=false;
  130. echo "Driver Number must be entirely numeric.<br>";
  131. }
  132. foreach($_SESSION['drivers'] as $record)
  133. {
  134. if($record['id'] == $_REQUEST['num'])
  135. {
  136. $okay=false;
  137. echo "Driver number must be unique (not already exist in the database).<br>";
  138. break;
  139. }
  140. }
  141. if($okay)
  142. {
  143. $_SESSION['drivers'][$_REQUEST['num']]=array('id' => $_REQUEST['num'], 'pin' => $_REQUEST['pin'], 'name' => $_REQUEST['name'] );
  144. $_SESSION['drivers_dirty']=true;
  145. sort_drivers();
  146. redirect("index.php");
  147. }
  148. else
  149. {
  150. begin_driver_table(true);
  151. echo "<tr><form method=\"POST\"><td><input type=\"text\" name=\"num\" value=\"${_REQUEST['num']}\"></td><td><input type=\"text\" name=\"pin\" value=\"${_REQUEST['pin']}\"></td><td><input type=\"text\" size=\"32\" name=\"name\" value=\"${_REQUEST['name']}\"></td><td><input type=\"submit\" name=\"adddriver\" value=\"Add a Driver\"></td></form></tr>";
  152. echo '<tr><td colspan="4"><center><a href="index.php">Cancel Data Entry</a></center></td></tr>';
  153. echo '</table></center>';
  154. exit;
  155. }
  156. }
  157. //-----------------------------------------------------HANDLE DELETING A DRIVER----------------------------
  158. if(isset($_REQUEST['deldriver']))
  159. {
  160. begin_driver_table(true);
  161. echo '<tr><td colspan="4"><center><big>Really delete this driver?</big></center></td></tr>';
  162. $bkgr="#E0FFE0";
  163. $record=$_SESSION['drivers'][$_REQUEST['id']];
  164. $num=$record['id'];
  165. echo "<tr bgcolor=\"$bkgr\"><td>$num</td><td>****</td><td>${record['name']}</td><td> </td></tr>";
  166. echo "<tr><td colspan=\"4\"><center><big><a href=\"index.php\">(Cancel)</a> <a href=\"index.php?deldriverconf&id=${_REQUEST['id']}\">(OK)</a></big></center></td></tr>";
  167. echo '</table></center>';
  168. exit;
  169. }
  170. else if(isset($_REQUEST['deldriverconf']))
  171. {
  172. unset($_SESSION['drivers'][$_REQUEST['id']]);
  173. $_SESSION['drivers_dirty']=true;
  174. redirect('index.php');
  175. }
  176. //-----------------------------------------------------HANDLE THE REVERT OPERATION--------------------------
  177. if(isset($_REQUEST['revert_drivers']))
  178. {
  179. $changes=changed_drivers();
  180. begin_driver_table(false);
  181. $count=0;
  182. foreach($changes as $record)
  183. {
  184. $num=$record['id'];
  185. if( ($count % 2) == 1)
  186. {
  187. $bkgr="#E0FFE0";
  188. }
  189. else
  190. {
  191. $bkgr="#FFE0E0";
  192. }
  193. echo "<tr bgcolor=\"$bkgr\"><td>$num</td><td>****</td><td>${record['name']}</td><td>${record['comment']}</td></tr>";
  194. $count++;
  195. }
  196. echo "<tr><td colspan=\"4\"><center><big>Really lose these $count changes?</big></center></td></tr>";
  197. echo "<tr><td colspan=\"4\"><center><big><a href=\"index.php\">(Cancel)</a> <a href=\"index.php?revert_driversconf\">(OK)</a></big></center></td></tr>";
  198. echo '</table></center>';
  199. exit;
  200. }
  201. else if(isset($_REQUEST['revert_driversconf']))
  202. {
  203. unset($_SESSION['drivers']);
  204. redirect('index.php');
  205. }
  206. //-----------------------------------------------------HANDLE THE COMMIT DRIVER OPERATION-------------------
  207. if(isset($_REQUEST['commit_drivers']))
  208. {
  209. $changes=changed_drivers();
  210. begin_driver_table(false);
  211. $count=0;
  212. foreach($changes as $record)
  213. {
  214. $num=$record['id'];
  215. if( ($count % 2) == 1)
  216. {
  217. $bkgr="#E0FFE0";
  218. }
  219. else
  220. {
  221. $bkgr="#FFE0E0";
  222. }
  223. echo "<tr bgcolor=\"$bkgr\"><td>$num</td><td>****</td><td>${record['name']}</td><td>${record['comment']}</td></tr>";
  224. $count++;
  225. }
  226. echo "<tr><td colspan=\"4\"><center><big>Really apply these $count changes?</big></center></td></tr>";
  227. echo "<tr><td colspan=\"4\"><center><big><a href=\"index.php\">(Cancel)</a> <a href=\"index.php?commit_driversconf\">(OK)</a></big></center></td></tr>";
  228. echo '</table></center>';
  229. exit;
  230. }
  231. else if(isset($_REQUEST['commit_driversconf']))
  232. {
  233. commit_drivers();
  234. unset($_SESSION['drivers']);
  235. redirect('index.php');
  236. }
  237. //-----------------------------------------------------BELOW GENERATES THE MAIN SCREEN FOR DRIVER MANAGEMENT
  238. begin_driver_table(true);
  239. $count=0;
  240. foreach($_SESSION['drivers'] as $record)
  241. {
  242. $num=$record['id'];
  243. $delurl="index.php?deldriver&id=$num";
  244. if( ($count % 2) == 1)
  245. {
  246. $bkgr="#E0FFE0";
  247. }
  248. else
  249. {
  250. $bkgr="#FFE0E0";
  251. }
  252. echo "<tr bgcolor=\"$bkgr\"><td>$num</td><td>****</td><td>${record['name']}</td><td><a href=\"$delurl\">(Delete)</a></td></tr>";
  253. $count++;
  254. }
  255. echo '<tr><form><td><input type="text" name="num"></td><td><input type="text" name="pin"></td><td><input type="text" size="32" name="name"></td><td><input type="submit" name="adddriver" value="Add a Driver"></td></tr>';
  256. if($_SESSION['drivers_dirty'])
  257. {
  258. echo '<tr bgcolor="#FFA0A0"><td colspan="4"><center><big><a href="index.php?commit_drivers">(Commit Changes to Drivers)</a> <a href="index.php?revert_drivers">(Revert to Saved Drivers)</a></big></center></td></tr>';
  259. }
  260. echo '</table></center>';
  261. ?>