= $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,''; ?>