$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 '
'; } else { echo '
Driver NumberPin NumberDriver NameAction
'; } } 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.
"; } if(!preg_match('/[\d]+/',$_REQUEST['num'])) { $okay=false; echo "Driver Number must be entirely numeric.
"; } foreach($_SESSION['drivers'] as $record) { if($record['id'] == $_REQUEST['num']) { $okay=false; echo "Driver number must be unique (not already exist in the database).
"; 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 ""; echo ''; echo '
Driver NumberPin NumberDriver NameAction
Cancel Data Entry
'; exit; } } //-----------------------------------------------------HANDLE DELETING A DRIVER---------------------------- if(isset($_REQUEST['deldriver'])) { begin_driver_table(true); echo '
Really delete this driver?
'; $bkgr="#E0FFE0"; $record=$_SESSION['drivers'][$_REQUEST['id']]; $num=$record['id']; echo "$num****${record['name']} "; echo "
(Cancel) (OK)
"; echo ''; 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 "$num****${record['name']}${record['comment']}"; $count++; } echo "
Really lose these $count changes?
"; echo "
(Cancel) (OK)
"; echo ''; 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 "$num****${record['name']}${record['comment']}"; $count++; } echo "
Really apply these $count changes?
"; echo "
(Cancel) (OK)
"; echo ''; 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 "$num****${record['name']}(Delete)"; $count++; } echo '
'; if($_SESSION['drivers_dirty']) { echo '
(Commit Changes to Drivers) (Revert to Saved Drivers)
'; } echo ''; ?>