| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323 |
- <?php
- function changed_drivers()
- {
- $accum=array();
-
- $temp=load_drivers();
-
- foreach($_SESSION['drivers'] as $key => $record)
- {
- if(isset($temp[$key]))
- {
- if(array_diff($temp[$key],$record))
- {
- $accum[$key]=$record;
- $accum[$key]['comment'] = "Modified";
- }
- }
- else
- {
- $accum[$key]=$record;
- $accum[$key]['comment'] = "Added";
- }
- }
-
- foreach($temp as $key => $record)
- {
- if(!isset($_SESSION['drivers'][$key]))
- {
- $accum[$key]=$record;
- $accum[$key]['comment'] = "Deleted";
- }
- }
-
- return $accum;
- }
- function load_drivers()
- {
- global $sql;
- $qry="SELECT id,pin,name FROM drivers";
- $res=mysqli_query($sql,$qry);
-
- $accum=array();
-
- while($row=mysqli_fetch_assoc($res))
- {
- $accum[$row['id']]=$row;
- }
-
- return $accum;
- }
- function commit_drivers()
- {
- global $sql;
- mysqli_query($sql,"BEGIN");
- mysqli_query($sql,"DELETE FROM drivers");
-
- foreach($_SESSION['drivers'] as $record)
- {
- $escrec=escape_array($record);
- mysqli_query($sql,"INSERT INTO drivers SET id='${escrec['id']}', pin='${escrec['pin']}', name='${escrec['name']}'");
- }
-
- mysqli_query($sql,"COMMIT");
-
- $_SESSION['drivers_dirty']=false;
- $tmp=fopen("/tmp/new_drivers_exist","wb");
- if($tmp) fclose($tmp);
- }
- function begin_driver_table($sortheaders)
- {
- if($sortheaders)
- {
- 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>';
- }
- else
- {
- echo '<center><table width="80%" border="1"><tr><th>Driver Number</th><th>Pin Number</th><th>Driver Name</th><th>Action</th></tr>';
- }
- }
- function driver_compare($a, $b)
- {
- if(isset($_SESSION['driver_sortby']))
- {
- $sortby=$_SESSION['driver_sortby'];
- }
- else
- {
- $sortby='name';
- }
-
- $sorttype="str";
-
- if(isset($_SESSION['driver_sorttype']))
- {
- $sorttype=$_SESSION['driver_sorttype'];
- }
-
- if(!strcmp($sorttype,"str"))
- {
- return strcmp($a[$sortby],$b[$sortby]);
- }
- else if(!strcmp($sorttype,"num"))
- {
- if(floatval($a[$sortby]) == floatval($b[$sortby])) return 0;
- return ( floatval($a[$sortby]) < floatval($b[$sortby]) ) ? -1 : 1;
- }
-
- return 0;
- }
- function sort_drivers()
- {
- uasort($_SESSION['drivers'],'driver_compare');
- }
- //--------------------------------------------------------HANDLE LOADING DRIVERS IF THEY AREN'T
- if(!isset($_SESSION['drivers']))
- {
- $_SESSION['drivers']=load_drivers();
- sort_drivers();
- $_SESSION['drivers_dirty']=false;
- }
- //--------------------------------------------------------HANDLE SORTING DRIVER LIST DISPLAY
- if(isset($_REQUEST['sortby']))
- {
- $_SESSION['driver_sortby']=$_REQUEST['sortby'];
-
- if(isset($_REQUEST['type']))
- {
- $_SESSION['driver_sorttype']=$_REQUEST['type'];
- }
- sort_drivers();
- redirect('index.php');
- }
- //---------------------------------------------------------HANDLE ADDING A DRIVER
- if(isset($_REQUEST['adddriver']))
- {
- $okay=true;
- if(!preg_match('/[\d][\d][\d][\d]*/',$_REQUEST['pin']))
- {
- $okay=false;
- echo "PIN must be entirely numeric and at least three digits.<br>";
- }
- if(!preg_match('/[\d]+/',$_REQUEST['num']))
- {
- $okay=false;
- echo "Driver Number must be entirely numeric.<br>";
- }
- foreach($_SESSION['drivers'] as $record)
- {
- if($record['id'] == $_REQUEST['num'])
- {
- $okay=false;
- echo "Driver number must be unique (not already exist in the database).<br>";
- break;
- }
- }
-
- if($okay)
- {
- $_SESSION['drivers'][$_REQUEST['num']]=array('id' => $_REQUEST['num'], 'pin' => $_REQUEST['pin'], 'name' => $_REQUEST['name'] );
- $_SESSION['drivers_dirty']=true;
- sort_drivers();
- redirect("index.php");
- }
- else
- {
- begin_driver_table(true);
- 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>";
- echo '<tr><td colspan="4"><center><a href="index.php">Cancel Data Entry</a></center></td></tr>';
- echo '</table></center>';
- exit;
- }
- }
- //-----------------------------------------------------HANDLE DELETING A DRIVER----------------------------
- if(isset($_REQUEST['deldriver']))
- {
- begin_driver_table(true);
- echo '<tr><td colspan="4"><center><big>Really delete this driver?</big></center></td></tr>';
- $bkgr="#E0FFE0";
- $record=$_SESSION['drivers'][$_REQUEST['id']];
- $num=$record['id'];
- echo "<tr bgcolor=\"$bkgr\"><td>$num</td><td>****</td><td>${record['name']}</td><td> </td></tr>";
- 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>";
-
- echo '</table></center>';
- exit;
- }
- else if(isset($_REQUEST['deldriverconf']))
- {
- unset($_SESSION['drivers'][$_REQUEST['id']]);
- $_SESSION['drivers_dirty']=true;
- redirect('index.php');
- }
- //-----------------------------------------------------HANDLE THE REVERT OPERATION--------------------------
- if(isset($_REQUEST['revert_drivers']))
- {
- $changes=changed_drivers();
- begin_driver_table(false);
-
- $count=0;
- foreach($changes as $record)
- {
- $num=$record['id'];
- if( ($count % 2) == 1)
- {
- $bkgr="#E0FFE0";
- }
- else
- {
- $bkgr="#FFE0E0";
- }
-
- echo "<tr bgcolor=\"$bkgr\"><td>$num</td><td>****</td><td>${record['name']}</td><td>${record['comment']}</td></tr>";
- $count++;
- }
- echo "<tr><td colspan=\"4\"><center><big>Really lose these $count changes?</big></center></td></tr>";
- 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>";
-
- echo '</table></center>';
- exit;
- }
- else if(isset($_REQUEST['revert_driversconf']))
- {
- unset($_SESSION['drivers']);
- redirect('index.php');
- }
- //-----------------------------------------------------HANDLE THE COMMIT DRIVER OPERATION-------------------
- if(isset($_REQUEST['commit_drivers']))
- {
- $changes=changed_drivers();
- begin_driver_table(false);
-
- $count=0;
- foreach($changes as $record)
- {
- $num=$record['id'];
- if( ($count % 2) == 1)
- {
- $bkgr="#E0FFE0";
- }
- else
- {
- $bkgr="#FFE0E0";
- }
-
- echo "<tr bgcolor=\"$bkgr\"><td>$num</td><td>****</td><td>${record['name']}</td><td>${record['comment']}</td></tr>";
- $count++;
- }
- echo "<tr><td colspan=\"4\"><center><big>Really apply these $count changes?</big></center></td></tr>";
- 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>";
-
- echo '</table></center>';
- exit;
- }
- else if(isset($_REQUEST['commit_driversconf']))
- {
- commit_drivers();
- unset($_SESSION['drivers']);
- redirect('index.php');
- }
- //-----------------------------------------------------BELOW GENERATES THE MAIN SCREEN FOR DRIVER MANAGEMENT
- begin_driver_table(true);
-
- $count=0;
- foreach($_SESSION['drivers'] as $record)
- {
- $num=$record['id'];
- $delurl="index.php?deldriver&id=$num";
- if( ($count % 2) == 1)
- {
- $bkgr="#E0FFE0";
- }
- else
- {
- $bkgr="#FFE0E0";
- }
-
- echo "<tr bgcolor=\"$bkgr\"><td>$num</td><td>****</td><td>${record['name']}</td><td><a href=\"$delurl\">(Delete)</a></td></tr>";
- $count++;
- }
-
- 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>';
-
- if($_SESSION['drivers_dirty'])
- {
- 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>';
- }
-
- echo '</table></center>';
- ?>
|