= $aend) { $error[] = 'End time less than or equal to start time'; } else { if ($freq == "week") $dayplus = 7; if ($freq == "day") $dayplus = 1; if (!user) $user = $username; $index = file($datadir); // read the data file and put into an array $add = 0; for( $i = 0; $i <= $repeat; $i++ ) { $adate = date( "Ymd", mktime( 0, 0, 0, $month, $day + $add, $year ) ); $errordate = date( "M j, Y", mktime( 0, 0, 0, $month, $day + $add, $year ) ); $result = CheckConflict($index,$adate,$astart,$aend,$schedule_room); if ($result == "open") { $addindex[] = "$adate|$astart|$aend|$schedule_room|$atitle|$user|$aemail"; $suberror[] = "$schedule_room available on $errordate for $atitle"; $addcount++; } else { $suberror[] = "$result on $errordate"; $conflict = 1; } $add = $add + $dayplus; } if (($addcount > 0) && ($conflict != 1)) { $wp = fopen( $datadir, "a" ); if (flock($wp, LOCK_EX)) { // do an exclusive lock for( $i = 0; $addindex[$i]; $i++ ) { fwrite($wp,$addindex[$i]); } flock($wp, LOCK_UN); // release the lock $error[] = "Added $addcount events"; } else { $error[] = "Data File was in Use, Please try Again!"; $filelock = "** LOCK CONFLICT"; } fclose($wp); } else { $error[] = "Events NOT Added - Schedule Conflict"; } $error = array_merge($error, $suberror); } } Function CheckConflict($vindex,$vdate,$vstart,$vend,$vroom) { global $error; for( $i = 0; $vindex[$i]; $i++ ) { $col = explode("|", $vindex[$i]); if (($col[0] == $vdate) && ($col[3] == $vroom)) { if (($vstart >= $col[1]) && ($vstart < $col[2])) { return ("Start time conflict"); } if (($vend > $col[1]) && ($vend <= $col[2])) { return ("End time conflict"); } if (($vstart <= $col[1]) && ($vend >= $col[2])) { return ("Overlaps existing event"); } } } return ("open"); } Function Checkpass () { global $user, $userdir, $username, $password, $error, $aemail, $_SESSION; if (!$user) { $index = file($userdir); for( $i = 0; $index[$i]; $i++ ) { $col = explode("|", $index[$i]); if ($col[0] == $username) { $crypt_data = $col[1]; $crypt_entered = crypt($password,$col[1]); if ($crypt_data == $crypt_entered) { $_SESSION['user'] = $col[0]; $_SESSION['aemail'] = $col[2]; return("Authenticated"); } else { return("Bad password"); } } } return("Username not found or cookie has expired. Please Log-in"); } else { return("valid"); } } session_start(); header("Cache-control: private"); // IE 6 Fix. $user = $_SESSION['user']; $aemail = $_SESSION['aemail']; $caption = $mode; switch ($mode) { case "Schedule Resource" : if (($astart_hour <= 12) && ($aend_hour <= 12) && ($astart_min <=59) && ($aend_min <= 59)){ $valid = Checkpass(); if ($valid == "valid") { if ($astart_hour == 12) { $astart_hour = 0; } if ($aend_hour == 12) { $aend_hour = 0; } CheckDays(); } else { $error[] = $valid; } } else { $error[] = "Bad start or end time data"; } break; case "Change Password": /* $newpass = ereg_replace("[^0-9A-Za-z.]", "",$newpass); if ($newpass == $confirm) { $valid = Checkpass(); if ($valid == "valid") { $index = file($userdir); for( $i = 0; $index[$i]; $i++ ) { $col = explode("|", $index[$i]); if ($user == $col[0]) { $pass = crypt($newpass); $newindex[] = "$col[0]|$pass|$col[2]|\n"; } else { $newindex[] = "$index[$i]"; } } if ($newindex) { $wp = fopen( $userdir, "w" ); for( $i = 0; $newindex[$i]; $i++ ) { fwrite($wp,$newindex[$i]); } fclose($wp); } } $error[] = "Password Changed"; } else { $error[] = "New Passwords don't match or not numbers and letters"; } */ $error[] = "Feature Disabled"; break; case "delete": case "Confirm Delete": $valid = Checkpass(); if (($valid == "valid") && (isset($kill))) { $index = file($datadir); for( $i = 0; $index[$i]; $i++ ) { $col = explode("|", $index[$i]); $keeper = 1; reset($kill); while (list ($key, $value) = each ($kill)) { if ($value == "1") { if (($key == "$col[0]|$col[1]|$col[2]|$col[3]|$col[4]") && (($user == $col[5]) || isAdmin($user))) { eregi ("([0-9]{4})([0-9]{2})([0-9]{2})", $col[0], $regs); $suberror[]="Event deleted on $regs[2]/$regs[3]/$regs[1]"; $keeper = 0; } } } if ($keeper == 1) $newindex[] = "$index[$i]"; } if ($newindex) { $wp = fopen( $datadir, "w" ); if (flock($wp, LOCK_EX)) { // do an exclusive lock for( $i = 0; $newindex[$i]; $i++ ) { fwrite($wp,$newindex[$i]); } flock($wp, LOCK_UN); // release the lock eregi ("([0-9]{4})([0-9]{2})([0-9]{2})", $col[0], $regs); if ($suberror && $error) $error = array_merge($error, $suberror); } else { $filelock = "** LOCK CONFLICT"; $error[] = "Data File was in Use, Please try Again!"; } fclose($wp); } } else { $error[]= "No Events Deleted"; } break; case "Update User" : $newpass = ereg_replace("[^0-9A-Za-z.]", "",$newpass); if ($newpass == $confirm) { $valid = Checkpass(); if ($valid == "valid") { $index = file($userdir); for( $i = 0; $index[$i]; $i++ ) { $col = explode("|", $index[$i]); if ($edituser == $col[0]) { if ($newpass) { $pass = crypt($newpass); } else { $pass = $col[1]; } $newindex[] = "$edituser|$pass|$uemail\n"; if ($email != $col[2]) { $rindex = file($datadir); for( $j = 0; $rindex[$j]; $j++ ) { $rcol = explode("|", $rindex[$j]); if ($edituser != $rcol[5]) { $rnewindex[] = $rindex[$j]; } else { $rnewindex[] = "$rcol[0]|$rcol[1]|$rcol[2]|$rcol[3]|$rcol[4]|$rcol[5]|$uemail\n"; } } if ($rnewindex) { $wp = fopen( $datadir, "w" ); if (flock($wp, LOCK_EX)) { // do an exclusive lock for( $j = 0; $rnewindex[$j]; $j++ ) { fwrite($wp,$rnewindex[$j]); } flock($wp, LOCK_UN); // release the lock } else { $filelock = "** LOCK CONFLICT"; $error[] = "Data File was in Use, Please try Again!"; } fclose($wp); } } } else { $newindex[] = "$col[0]|$col[1]|$col[2]"; } } if ($newindex) { $wp = fopen( $userdir, "w" ); if (flock($wp, LOCK_EX)) { // do an exclusive lock for( $i = 0; $newindex[$i]; $i++ ) { fwrite($wp,$newindex[$i]); } flock($wp, LOCK_UN); // release the lock } else { $filelock = "** LOCK CONFLICT"; $error[] = "Data File was in Use, Please try Again!"; } fclose($wp); } $error[] = "User Updated"; } } else { $error[] = "New Passwords don't match or not numbers and letters"; $caption = "Update User"; $mode = "edituser"; } $mode = "useradmin"; break; case "Add User" : $newpass = ereg_replace("[^0-9A-Za-z.]", "",$newpass); if ($newpass == $confirm) { if ($edituser) { $valid = Checkpass(); if ($valid == "valid") { $index = file($userdir); for( $i = 0; $index[$i]; $i++ ) { $col = explode("|", $index[$i]); if ($edituser == $col[0]) { $error[] = "User: ".$edituser." Already Exists"; $exists = true; } } if (!$exists) { $wp = fopen( $userdir, "a" ); if (flock($wp, LOCK_EX)) { // do an exclusive lock $pass = crypt($newpass); $newline = "$edituser|$pass|$uemail\n"; fwrite($wp,$newline); flock($wp, LOCK_UN); // release the lock } else { $filelock = "** LOCK CONFLICT"; $error[] = "Data File was in Use, Please try Again!"; } fclose($wp); $error[] = "User Added"; } } } } else { $error[] = "New Passwords don't match or not numbers and letters"; $caption = "Add User"; $mode = "edituser"; } $mode = "useradmin"; break; case "Confirm Delete User"; $valid = Checkpass(); if ($valid == "valid") { $index = file($userdir); for( $i = 0; $index[$i]; $i++ ) { $col = explode("|", $index[$i]); if ($edituser == $col[0]) { $error[] = "User: ".$edituser." Deleted"; } else { $newindex[] = "$index[$i]"; } } if ($newindex) { $wp = fopen( $userdir, "w" ); if (flock($wp, LOCK_EX)) { // do an exclusive lock for( $i = 0; $newindex[$i]; $i++ ) { fwrite($wp,$newindex[$i]); } flock($wp, LOCK_UN); // release the lock } else { $filelock = "** LOCK CONFLICT"; $error[] = "Data File was in Use, Please try Again!"; } fclose($wp); } if ($deleteposts) { $index = file($datadir); for( $i = 0; $index[$i]; $i++ ) { $col = explode("|", $index[$i]); if ($edituser != $col[5]) $rnewindex[] = "$index[$i]"; } if ($rnewindex) { $wp = fopen( $datadir, "w" ); if (flock($wp, LOCK_EX)) { // do an exclusive lock for( $i = 0; $rnewindex[$i]; $i++ ) { fwrite($wp,$rnewindex[$i]); } flock($wp, LOCK_UN); // release the lock } else { $filelock = "** LOCK CONFLICT"; $error[] = "Data File was in Use, Please try Again!"; } fclose($wp); } $error[] = $edituser."'s Reservations Deleted"; } } $mode = "useradmin"; break; case "Update Resource" : $valid = Checkpass(); if ($valid == "valid") { if ($newroomname) { $index = file($roomdir); for( $i = 0; $index[$i]; $i++ ) { if ($editroom == chop($index[$i])) { $newindex[] = "$newroomname\n"; } elseif (chop($index[$i]) == ""){ } else { $newindex[] = "$index[$i]"; } } if ($newindex) { $wp = fopen( $roomdir, "w" ); if (flock($wp, LOCK_EX)) { // do an exclusive lock for( $i = 0; $newindex[$i]; $i++ ) { fwrite($wp,$newindex[$i]); } flock($wp, LOCK_UN); // release the lock } else { $filelock = "** LOCK CONFLICT"; $error[] = "Data File was in Use, Please try Again!"; } fclose($wp); } $rindex = file($datadir); for( $i = 0; $rindex[$i]; $i++ ) { $rcol = explode("|", $rindex[$i]); if ($editroom != $rcol[3]) { $rnewindex[] = $rindex[$i]; } else { $rnewindex[] = "$rcol[0]|$rcol[1]|$rcol[2]|$newroomname|$rcol[4]|$rcol[5]|$rcol[6]"; } } if ($rnewindex) { $wp = fopen( $datadir, "w" ); if (flock($wp, LOCK_EX)) { // do an exclusive lock for( $i = 0; $rnewindex[$i]; $i++ ) { fwrite($wp,$rnewindex[$i]); } flock($wp, LOCK_UN); // release the lock } else { $filelock = "** LOCK CONFLICT"; $error[] = "Data File was in Use, Please try Again!"; } fclose($wp); } $error[] = "Resource Updated"; $rooms = file($roomdir); $totalrooms=0; while($rooms[$totalrooms]) { $rooms[$totalrooms] = chop ($rooms[$totalrooms]); $totalrooms++; } $totalrooms++; } } $mode = "roomadmin"; break; case "Add Resource" : $valid = Checkpass(); if ($valid == "valid") { if ($newroomname) { $index = file($roomdir); for( $i = 0; $index[$i]; $i++ ) { if ($newroomname == chop($index[$i])) { $error[] = "Resource already exists"; $exists = true; } } if (!$exists) { $wp = fopen( $roomdir, "a" ); if (flock($wp, LOCK_EX)) { // do an exclusive lock $pass = crypt($newpass); $newline = "$newroomname\n"; fwrite($wp,$newline); flock($wp, LOCK_UN); // release the lock } else { $filelock = "** LOCK CONFLICT"; $error[] = "Data File was in Use, Please try Again!"; } fclose($wp); $error[] = "Resource Added"; $rooms = file($roomdir); $totalrooms=0; while($rooms[$totalrooms]) { $rooms[$totalrooms] = chop ($rooms[$totalrooms]); $totalrooms++; } $totalrooms++; } } } $mode = "roomadmin"; break; case "Confirm Delete Resource"; $valid = Checkpass(); if ($valid == "valid") { $index = file($roomdir); for( $i = 0; $index[$i]; $i++ ) { if ($editroom == chop($index[$i])) { $error[] = "Room: ".$editroom." Deleted"; } else { $newindex[] = "$index[$i]"; } } if ($newindex) { $wp = fopen( $roomdir, "w" ); if (flock($wp, LOCK_EX)) { // do an exclusive lock for( $i = 0; $newindex[$i]; $i++ ) { fwrite($wp,$newindex[$i]); } flock($wp, LOCK_UN); // release the lock } else { $filelock = "** LOCK CONFLICT"; $error[] = "Data File was in Use, Please try Again!"; } fclose($wp); } if ($deleteposts) { $index = file($datadir); for( $i = 0; $index[$i]; $i++ ) { $col = explode("|", $index[$i]); if ($editroom != $col[3]) $newindex[] = "$index[$i]"; } if ($newindex) { $wp = fopen( $datadir, "w" ); if (flock($wp, LOCK_EX)) { // do an exclusive lock for( $i = 0; $newindex[$i]; $i++ ) { fwrite($wp,$newindex[$i]); } flock($wp, LOCK_UN); // release the lock } else { $filelock = "** LOCK CONFLICT"; $error[] = "Data File was in Use, Please try Again!"; } fclose($wp); } $rooms = file($roomdir); $totalrooms=0; while($rooms[$totalrooms]) { $rooms[$totalrooms] = chop ($rooms[$totalrooms]); $totalrooms++; } $totalrooms++; $error[] = $editroom."'s Reservations Deleted"; } } $mode = "roomadmin"; break; case "logoff": $_SESSION = array(); session_destroy(); break; case "password": $caption = "Change Password"; break; case "deleteall": $caption = "Delete Dates"; break; case "edituser": $caption = ($edituser ? "Update User" : "Add User"); break; case "useradmin": $caption = "User Administration"; break; case "Delete User": $caption = "Delete User"; break; case "editroom": $caption = ($editroom ? "Update Resource - $editroom" : "Add Resource"); break; case "roomadmin": $caption = "Resource Administration"; break; case "Delete Resource": $caption = "Delete Resource"; break; default: $caption = "Schedule Resource"; break; } ?> <? echo $pagetitle; ?>
',$pagetitle,''; ?>