Player ACBL data ($n)"); for($i=0; $i<$n; $i++) { $name = $pName[$i]; $num = $pNumber[$i]; $mpts = $pMPts[$i]; echo("
name >$name< num >$num< mp >$mpts<"); } exit; */ return 0; } //=============================================================================================== function UpdateACBLData() //=============================================================================================== { //global $nColumns; global $pName; global $pNumber; global $pMPts; global $nACBL; global $Players; $nPlayers = MyGetPlayerInfo(); WriteToLogFile( "\n\n--> ACBL Update", "data"); for($p=0; $p<$nPlayers; $p++) { $name = trim($Players[$p]['name']); if(substr_count($name, "Guest") > 0) {continue;} $playerid = trim($Players[$p]['playerid']); $pid = trim($Players[$p]['pid']); if(strlen($playerid) <= 0) //if player has no playerid { $ndxP = FindPlayerName($name); //try to find by name if($ndxP < 0) //if can't find { //echo("
Cannot find player $name"); WriteToLogFile( "\n--> Cannot find $name", "data"); $Players[$p]['playerid'] = ""; continue; } //player has been found in ACBL data if(strlen($pNumber[$ndxP]) > 0) //does player have ACBL number? { //update player's information from ACBL data $rc = MyUpdateMasterpts($pid, $pNumber[$ndxP], $pMPts[$ndxP]); continue; } else { //player does not have ACBL number $rc = MyUpdateMasterpts($pid, "", 0); continue; } } //player has a playerid $ndxP = FindPlayerID($Players[$p]['playerid']); if($ndxP < 0) { //not in ACBL by playerid $ndxP = FindPlayerName($name); //try to find by name if($ndxP < 0) //if can't find { } else { //in ACBL by name $rc = MyUpdateMasterpts($pid, $pNumber[$ndxP], $pMPts[$ndxP]); } continue; } else { //found by playerid $rc = MyUpdateMasterpts($pid, $pNumber[$ndxP], $pMPts[$ndxP]); continue; } } WriteToLogFile( "\n", "data"); MyGetPlayerInfo(); return 0; } //=============================================================================================== function FindPlayerName($name) //=============================================================================================== { global $pName; global $pNumber; global $pMPts; $cnt = count($pName); for($i=0; $i<$cnt; $i++) { if(strcmp($name, trim($pName[$i])) == 0) { //echo("
FindPlayerName: >$name< ndx = $i"); return $i; } } return -1; } //=============================================================================================== function FindPlayerID($playerid) //=============================================================================================== { global $pName; global $pNumber; global $pMPts; $cnt = count($pNumber); for($i=0; $i<$cnt; $i++) { if(strcmp($playerid, trim($pNumber[$i])) == 0) { //$foo = $pName[$i]; //echo("
FindPlayerID: name=$foo $playerid ndx = $i"); return $i; } } return -1; } //-------------------------------------------------------------------------------- function CheckLogin($login) { //-------------------------------------------------------------------------------- global $Players; $NumDBPlayers = $_SESSION['susnoplayers'] = count($Players); for($i=0; $i<$NumDBPlayers; $i++) { if($Players[$i]['login'] == $login) //return $Players[$i]['pid']; return $p; } return 0; } //-------------------------------------------------------------------------------- function RemindTimeDropDown() { //-------------------------------------------------------------------------------- global $SUSRemindTime; global $remindOffset; $Hours = array('None','3am','4am','5am','6am','7am','8am','9am','10am','11am','Noon','1pm','2pm','3pm','4pm','5pm','6pm','7pm','8pm','9pm','10pm','11pm','Midnight'); $nHours = count($Hours); if($SUSRemindTime == 0) { $rt = 0; } else { $rt = abs($SUSRemindTime) - $remindOffset; } echo ''; } //-------------------------------------------------------------------------------- function TimeDropDown() { //-------------------------------------------------------------------------------- global $Players; global $SUSTimeZone; global $SUSDOPChgHour; global $TimeZones; $Hours = array('8am','9am','10am','11am','Noon','1pm','2pm','3pm','4pm','5pm','6pm','7pm','8pm','9pm','10pm','11pm','Midnight'); $baseHour = 8; echo ''; } //-------------------------------------------------------------------------------- function TimeZoneDropDown() { //-------------------------------------------------------------------------------- global $Players; global $SUSTimeZone; global $TimeZones; echo ''; } //-------------------------------------------------------------------------------- function MakeDropDown() { //-------------------------------------------------------------------------------- global $Players; global $PName; $PName = array(); $NumDBPlayers = $_SESSION['susnoplayers'] = count($Players); echo ''; } //=============================================================================================== function SetShutdown($flag) // $flag == 0 => End shutdown, 1 => shutdown & allow admins, 2 => Total shutdown except superuser //=============================================================================================== { global $SUSShutdown; $SUSShutdown = $_SESSION['susshutdown'] = 0; if($flag > 0) { $SUSShutdown = $_SESSION['susshutdown'] = $flag; } WriteCfgFile(); } //-------------------------------------------------------------------------------- //ob_end_flush(); //-------------------------------------------------------------------------------- global $PName; $Contact; $emailContact; $phoneContact; //-------------------------------------------------------------------------------- // Process $_POST data //------------------------------------------------------------------------------ $ErrorMsg = ""; $rc = 0; $_post = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); if($_post AND isset($_post['AdminManual'])) { $AdminManual = "../documentation/AdminsGuide.pdf"; //got this from php manual - seems to work $size = filesize($AdminManual); $baseName = basename($AdminManual); header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header("Content-Disposition: attachment; filename=$baseName"); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . $size); readfile($AdminManual); exit; } if($_post AND isset($_post['button'])) { $post_button = ($_post['button']); switch($post_button) { case "Change Announcement": $foostr = html_entity_decode($_post['notice'], ENT_QUOTES); $SUSNotice = $_SESSION['susnotice'] = preg_replace($PatAnnounce, "", $foostr); $len = strlen($SUSNotice); if($len > 70 || $len < 0){ $rc = 1; $ErrorMsg = "Length of the Announcement is too long (0-70)"; $SUSNotice = ''; break; } if(isset($_post['blink'])){ $SUSOptions[0] = $_SESSION['susoptions'][0] ='1'; }else{ $SUSOptions[0] = $_SESSION['susoptions'][0] ='0'; } $N = WriteCfgFile(); if($N > 0) { $rc = 2; $ErrorMsg = "Error writing the Announcement to the Config file"; } else { $ErrorMsg = "The Announcement has been updated"; } break; case "Send Welcome": $I = $_SESSION['editpid'] = ($_post['playlist']); $ndxPlayer = PlayerIndex($I); if($_SESSION['editpid'] == 0) { $rc = 3; $ErrorMsg = "You must select a member before pressing the Send button"; break; } $Email = $Players[$ndxPlayer]['email']; $len = strlen($Email); if($len <= 0) { $rc = 31; $ErrorMsg = "Can't send, no email address for member"; } else { $I = strpos($Players[$ndxPlayer]['name'], ','); $LastName = substr($Players[$ndxPlayer]['name'], 0, $I); $N = strlen($Players[$ndxPlayer]['name']) - ($I + 2); $FirstName = substr($Players[$ndxPlayer]['name'], $I+2, $N); $Username = $Players[$ndxPlayer]['username']; SendWelcomeEmail($FirstName, $LastName, $Email, $Username); $ErrorMsg = "The welcome email has been sent"; } //clear the display of player info $FirstName = ""; $LastName = ""; $Username = ""; $Login = ""; $Email = ""; $Phone = ""; $Mobile = ""; $PlayerID = ""; $MasterPts = ""; $_SESSION['editpid'] = 0; break; case "Edit Welcome": header('Location: edit_welcome.php'); exit; break; case "Edit": $I = $_SESSION['editpid'] = ($_post['playlist']); $ndxPlayer = PlayerIndex($I); if($_SESSION['editpid'] == 0) { $rc = 4; $ErrorMsg = "You must select a member before pressing the Edit button"; break; } $I = strpos($Players[$ndxPlayer]['name'], ','); if($I === FALSE) { $FirstName = $Players[$ndxPlayer]['name']; $LastName = ""; } else { $LastName = substr($Players[$ndxPlayer]['name'], 0, $I); $N = strlen($Players[$ndxPlayer]['name']) - ($I + 2); $FirstName = substr($Players[$ndxPlayer]['name'], $I+2, $N); } $Username = $Players[$ndxPlayer]['username']; $Login = $chrLogin; $Email = $Players[$ndxPlayer]['email']; $Phone = $Players[$ndxPlayer]['phone']; $Mobile = $Players[$ndxPlayer]['mobile']; $SuperIn = $Players[$ndxPlayer]['super']; $ptype = $Players[$ndxPlayer]['ptype']; $Notify = $Players[$ndxPlayer]['notify']; $Contact = $Players[$ndxPlayer]['contact']; $PlayerID = $Players[$ndxPlayer]['playerid']; $MasterPts = $Players[$ndxPlayer]['masterpts']; $emailContact = $Contact & 1; $phoneContact = $Contact & 2; break; case "Delete": $I = $_SESSION['editpid'] = ($_post['playlist']); if($_SESSION['editpid'] == 0) { $rc = 5; $ErrorMsg = "You must select a member before pressing the Delete button"; break; } //DeletePlayer($I); $ndxPlayer = PlayerIndex($I); $pname = $Players[$ndxPlayer]['name']; $rc = MyDeletePlayer($pname); if($rc !== 0) { $ErrorMsg = $rc; } else { $ErrorMsg = "Member has been deleted"; } $_SESSION['editpid'] = 0; break; case "Submit Changes": if($_SESSION['editpid'] == 0) { $rc = 6; $ErrorMsg = "You must select a member and press the Edit button"; break; } case "Add New Player": if($NumDBPlayers >= $SUSMaxPlayers) { $rc = 7; $ErrorMsg = "The database already contains the maximum number of members allowed"; break; } $SuperIn = 0; if($Super == 2) { //if this is a chief administrator if(isset($_post['super'])) { $SuperIn = 2; } } $ndxPlayer = PlayerIndex($_SESSION['editpid']); //Player type (reg or sub) if(isset($_post['ptype'])) { $ptype = ($_post['ptype']); } else { $ErrorMsg = "You must select a player type"; $ptype = 0; break; } //Name //$foo = $_post['firstname']; $foo = html_entity_decode($_post['firstname'], ENT_QUOTES); $foo = preg_replace($PatFirst, "", $foo); $lf = strlen($foo); $fn = $foo; //$foo = $_post['lastname']; $foo = html_entity_decode($_post['lastname'], ENT_QUOTES); $foo = preg_replace($PatLast, "", $foo); $ll = strlen($foo); $ln = $foo; if(($lf < 1) && ($ll < 1)){ $rc = 8; $ErrorMsg = "You must enter a first and/or a last name"; break; } $pos = strpos($ln, '-'); if($pos === FALSE) { $LastName = ucwords(strtolower($ln)); } else { $ln = str_replace('-', ' ', $ln); $LastName = ucwords(strtolower($ln)); $LastName = str_replace(' ', '-', $LastName); } $pos = strpos($LastName, '\''); if($pos !== FALSE) { $LastName = CharToUpper($LastName, $pos+1); } $pos = strpos($fn, '-'); if($pos === FALSE) { $FirstName = ucwords(strtolower($fn)); } else { $fn = str_replace('-', ' ', $fn); $FirstName = ucwords(strtolower($fn)); $FirstName = str_replace(' ', '-', $FirstName); } if($lf < 1) { $Name = $LastName; } else { if($ll < 1) { $Name = $FirstName; } else { $Name = $LastName.", ".$FirstName; } } if(($lf+$ll) > 40){ $rc = 8; $ErrorMsg = "Length of first + last name is too long. (1-40)"; break; } if($post_button == "Add New Member") { if(FindName($Name) >= 0){ $rc = 8; $ErrorMsg = "$FirstName $LastName is already in the database"; break; } } //PlayerID $PlayerID = preg_replace($PatWhitespace, "", ($_post['playerid'])); /* if($post_button == "Add New Member") { $PlayerID = ""; } else { //$PlayerID = $Players[$ndxPlayer]['playerid']; $str = preg_replace($PatWhitespace, "", ($_post['playerid'])); $str = trim($str); $len = strlen($str); if(strcmp($str, $Players[$ndxPlayer]['playerid']) == 0) { $PlayerID = $Players[$ndxPlayer]['playerid']; } else { if($len != 0){ if($len == 7) { $PlayerID = $str; } else { $PlayerID = $Players[$ndxPlayer]['playerid']; $rc = 20; $ErrorMsg = "Player ID must be 7 chars long"; break; } } else { $PlayerID = ""; } } } */ //MasterPts $MasterPts = (trim($_post['masterpts'])); $len = strlen($MasterPts); if($len == 0) $MasterPts = 0; $MasterPts = filter_var($MasterPts, FILTER_VALIDATE_FLOAT); if($MasterPts === FALSE || $MasterPts < 0 || $MasterPts > 100000){ $rc = 21; $ErrorMsg = "Invalid Master Points value"; break; } //Username $oldUsername = $Players[$ndxPlayer]['username']; $foo = trim(html_entity_decode($_post['username'], ENT_QUOTES)); $Username = preg_replace($PatUser, "", $foo); $len = strlen($Username); if($len == 0){ $Username = $FirstName . $LastName; $Username = preg_replace($PatUser, "", $Username); $len = strlen($Username); } if($lf < 1) { $Name = $LastName; } else { if($ll < 1) { $Name = $FirstName; } else { $Name = $LastName.", ".$FirstName; } } if(($lf+$ll) > 40){ $rc = 8; $ErrorMsg = "Length of first + last name is too long. (1-40)"; break; } if($post_button == "Add New Member") { if(FindName($Name) >= 0){ $rc = 8; $ErrorMsg = "$FirstName $LastName is already in the database"; break; } } //PlayerID $PlayerID = preg_replace($PatWhitespace, "", ($_post['playerid'])); /* if($post_button == "Add New Member") { $PlayerID = ""; } else { //$PlayerID = $Players[$ndxPlayer]['playerid']; $str = preg_replace($PatWhitespace, "", ($_post['playerid'])); $str = trim($str); $len = strlen($str); if(strcmp($str, $Players[$ndxPlayer]['playerid']) == 0) { $PlayerID = $Players[$ndxPlayer]['playerid']; } else { if($len != 0){ if($len == 7) { $PlayerID = $str; } else { $PlayerID = $Players[$ndxPlayer]['playerid']; $rc = 20; $ErrorMsg = "Player ID must be 7 chars long"; break; } } else { $PlayerID = ""; } } } */ //MasterPts $MasterPts = (trim($_post['masterpts'])); $len = strlen($MasterPts); if($len == 0) $MasterPts = 0; $MasterPts = filter_var($MasterPts, FILTER_VALIDATE_FLOAT); if($MasterPts === FALSE || $MasterPts < 0 || $MasterPts > 100000){ $rc = 21; $ErrorMsg = "Invalid Master Points value"; break; } //Username $oldUsername = $Players[$ndxPlayer]['username']; $foo = trim(html_entity_decode($_post['username'], ENT_QUOTES)); $Username = preg_replace($PatUser, "", $foo); $len = strlen($Username); if($len == 0){ $Username = $FirstName . $LastName; $Username = preg_replace($PatUser, "", $Username); $len = strlen($Username); } if($len > 20 || $len < 6) { $ErrorMsg = "Username length is out of range (6-20)"; break; } //see if username already used if(strcmp($oldUsername, $Username) != 0) { $rc = MyGetLoginInfo($Username); if(is_array($rc)) { $ErrorMsg = "Username is already being used"; $Username = $oldUsername; break; } } //Login $Login = preg_replace($PatWhitespace, "", ($_post['login'])); if(strcmp($chrLogin, trim($Login)) == 0) { $hashedLogin = $Players[$ndxPlayer]['login']; } else { $len = strlen($Login); if($len == 0){ $Login = $FirstName . $LastName; $Login = preg_replace($PatWhitespace, "", $Login); } else { if($len > 50 || $len < 8){ $ErrorMsg = "Password length is out of range (8-50)"; break; } } $hashedLogin = password_hash($Login, PASSWORD_DEFAULT); //was: crypt($Login,$Login); if($rc = CheckLogin($hashedLogin) > 0){ if($rc > 0 && $rc != $ndxPlayer) { if($post_button == "Add New Player") { $ErrorMsg = "Password is already in use"; $Login = ""; break; } else { if($_SESSION['editpid'] != $rc) { $ErrorMsg = "Password is already in use"; $Login = ""; break; } } } } } $Login = $chrLogin; if(strlen($hashedLogin) <= 0) { $ErrorMsg = "Login is blank"; $Login = ""; break; } //Email $Email = preg_replace($PatEmail, "", ($_post['email'])); $len = strlen($Email); if($len > 0){ if(strstr($Email, "@") == FALSE){ $rc = 9; $ErrorMsg = "Invalid Email address = $Email"; $Email = ''; break; } if($len > 30){ $rc = 9; $ErrorMsg = "Email address is too long (30)"; $Email = ''; break; } } //Phone $Phone = preg_replace($PatDigits, "", ($_post['phone'])); $len = strlen($Phone); if($len != 0 && $len < 10){ $rc = 10; $ErrorMsg = "Phone number must be at least 10 digits"; break; } //Mobile $Mobile = preg_replace($PatDigits, "", ($_post['mobile'])); $len = strlen($Mobile); if($len != 0 && $len < 10){ $rc = 11; $ErrorMsg = "Mobile number must be at least 10 digits"; break; } //Notify if(isset($_post['notify'])) { if(strlen($Email) <= 0) { $rc = 10; $ErrorMsg = "Notification requires an email address"; $Notify = 0; break; } $Notify = 1; } else { $Notify = 0; } //Contact List if(isset($_post['emailcontact'])) { if(strlen($Email) <= 0) { $ErrorMsg = "Contact list requires an email address"; break; } $emailContact = 1; } else { $emailContact = 0; } if(isset($_post['phonecontact'])) { if((strlen($Phone) + strlen($Mobile)) <= 0) { $ErrorMsg = "Contact list requires an phone number"; break; } $phoneContact = 2; } else { $phoneContact = 0; } $Contact = $phoneContact + $emailContact; //Update database if($post_button == "Add New Player") { $PData = array(); $PData['pid'] = $NextPid; $PData['super'] = $SuperIn; $PData['name'] = $Name; $PData['username'] = $Username; $PData['login'] = $hashedLogin; $PData['phone'] = $Phone; $PData['mobile'] = $Mobile; $PData['ptype'] = $ptype; $PData['email'] = $Email; $PData['notify'] = $Notify; $PData['contact'] = $Contact; $PData['playerid'] = $PlayerID; $PData['masterpts'] = $MasterPts; $rc = MyAddPlayer($PData); $ErrorMsg = $rc; if($rc == 0) { $ErrorMsg = "Member has been added"; } //Notify admins if($SUSAdminNewPlayer != 0) { $EmailAddr = $_SESSION['susadminemail']; $body = "$FirstName $LastName has been added."; $body .= "\nEmail: $Email"; $body .= "\nPhone: $Phone"; $body .= "\nMobile: $Mobile"; $body .= "\nACBL No: $PlayerID"; $body .= "\nMaster Pts: $MasterPts"; $bccAddr = ""; $from = "no-reply@bridgesignup.com"; $title = "A new player has been added to $SUSTitle"; $rc = SendSMTPMail($EmailAddr, $from, $title, $body, $bccAddr); } } else { $I = $_SESSION['editpid']; $ndxPlayer = PlayerIndex($I); $Players[$ndxPlayer]['super'] = $SuperIn; $Players[$ndxPlayer]['name'] = $Name; $Players[$ndxPlayer]['username'] = $Username; $Players[$ndxPlayer]['login'] = $hashedLogin; $Players[$ndxPlayer]['phone'] = $Phone; $Players[$ndxPlayer]['mobile'] = $Mobile; $Players[$ndxPlayer]['ptype'] = $ptype; $Players[$ndxPlayer]['email'] = $Email; $Players[$ndxPlayer]['notify'] = $Notify; $Players[$ndxPlayer]['contact'] = $Contact; $Players[$ndxPlayer]['playerid'] = $PlayerID; $Players[$ndxPlayer]['masterpts'] = $MasterPts; $PData = array(); $PData['pid'] = $_SESSION['editpid']; $PData['super'] = $SuperIn; $PData['name'] = $Name; $PData['username'] = $Username; $PData['login'] = $hashedLogin; $PData['phone'] = $Phone; $PData['mobile'] = $Mobile; $PData['ptype'] = $ptype; $PData['email'] = $Email; $PData['notify'] = $Notify; $PData['contact'] = $Contact; $PData['playerid'] = $PlayerID; $PData['masterpts'] = $MasterPts; $rc = MyUpdatePlayer($PData); $ErrorMsg = $rc; if($rc == 0) { $ErrorMsg = "Member information has been updated"; } } $_SESSION['editpid'] = 0; if($post_button != "Add New Player" && $post_button != "Submit Changes") { $FirstName = ""; $LastName = ""; $Username = ""; $Login = ""; $Email = ""; $Phone = ""; $Mobile= ""; $PlayerID= ""; $MasterPts= ""; } break; case "Submit New Settings": $rc = 0; //Size of logfile $k = (trim($_post['sizelogfile'])); if($k < 50 || $k > 350) { $rc = 23; $ErrorMsg = "Logfile size is out of range (50-350)"; } else { $SUSNoLinesLogfile = $_SESSION['susnolineslogfile'] = $k; } //Admin notify time $k = (trim($_post['notifytime'])); if($k < 0 || $k > 30) { $rc = 20; $ErrorMsg = "Admin notify time is out of range (0-30)"; } else { $SUSNotifyTime = $_SESSION['susnotifytime'] = $k; } //Signup cutoff time $k = (trim($_post['cutoff'])); if($k < 0 || $k > 30) { $rc = 20; $ErrorMsg = "Signup cutoff time is out of range (0-30)"; } else { $SUSSignupCutoff = $_SESSION['sussignupcutoff'] = $k; } //Time zone $k = ($_post['timezone']); $SUSTimeZone = $_SESSION['sustimezone'] = $TimeZones[$k]; //Hour to rollover DOP $k = ($_post['dopchghour']); $SUSDOPChgHour = $_SESSION['susdopchghour'] = $k; //Title $SUSTitle = $_SESSION['sustitle'] = preg_replace($PatTitle, "", ($_post['title'])); $len = strlen($SUSTitle); if($len > 30 || $len < 1){ $rc = 12; $ErrorMsg = "Title length is out of range (30)"; $SUSTitle = $_SESSION['sustitle'] = ''; } //Number of days displayed $SUSNoDays = $_SESSION['susnodays'] = preg_replace($PatDigits, "", ($_post['daysdisp'])); $len = $SUSNoDays; if($len > 30 || $len < 1){ $rc = 13; $ErrorMsg = "Numberr Days to Display is out of range (1-30)"; $SUSNoDays = $_SESSION['susnodays'] = 18; } //Number of players per table $SUSNumPPG = $_SESSION['susppgame'] = 4; //preg_replace($PatDigits, "", ($_post['ppg'])); //Max tables per day $str = (trim($_post['gpd'])); if(strlen($str) <= 0) { $SUSMaxGames = $_SESSION['susmaxgames'] = 0; $SUSMaxTables = $_SESSION['susmaxtables'] = array(0,0,0,0,0,0,0); } else { $dpw = 0; for($d=0; $d<7; $d++) { if($SUSDaysUsed[$d] != 0) { $dpw++; } } $mt = array(); $mt = explode(',', $str, 7); $cnt = count($mt); for($i=0; $i<$cnt; $i++) $mt[$i] = trim($mt[$i]); $SUSMaxGames = $_SESSION['susmaxgames'] = implode(',', $mt); $SUSMaxTables = $_SESSION['susmaxtables'] = GetMaxTables("../"); if($SUSMaxTables === FALSE) { $ErrorMsg = "Number of max table values not same as number days per week played"; $SUSMaxGames = $_SESSION['susmaxgames'] = 0; $SUSMaxTables = $_SESSION['susmaxtables'] = array(0,0,0,0,0,0,0); } } //Max players on the list $SUSMaxPlayers = $_SESSION['susmaxplayers'] = preg_replace($PatDigits, "", ($_post['maxpeople'])); $len = $SUSMaxPlayers; if($len > $SUSMaxListSize || $len < 1){ $rc = 15; $ErrorMsg = "Max Number of People is out of range (1-$SUSMaxListSize)"; $SUSMaxPlayers = $_SESSION['susmaxplayers']= $SUSMaxListSize; } //Number of guests $foo = 0; if(strlen($_post['numguests']) > 0) { $foo = preg_replace($PatDigits, "", ($_post['numguests'])); if($foo < 0) { $foo = 0; } } $chg = $foo - $SUSNumGuests; if($chg != 0) //ignore if no change { if($foo > 9) { $rc = 16; $ErrorMsg = "Number of guests is out of range (0-9)"; } else { //reset affected status entries if($chg > 0) //if increasing number of guests { $ng0 = $SUSNumGuests+1; } else { $ng0 = $foo + 1; } for($ng=$ng0; $ng<=9; $ng++) { for($d=0; $d<$SUSNoStatus; $d++) { if($chg < 0) //if decreasing then have to remove settings { //of any partners that may be active $part = $Status[$ng][$d]['partner']; if($part != 0) //does this guest have a partner? { $pndx = StatusIndex($part); if($pndx > 0) { $Status[$pndx][$d]['partner'] = 0; $Status[$pndx][$d]['posn'] = 0; $Status[$pndx][$d]['prevstatus'] = $Status[$pndx][$d]['status']; $Status[$pndx][$d]['status'] = 'O'; $Status[$pndx][$d]['seq'] = 0; $Status[$pndx][$d]['table'] = 0; $Status[$pndx][$d]['tableposn'] = 0; } } } $Status[$ng][$d]['partner'] = 0; $Status[$ng][$d]['posn'] = 0; $Status[$ng][$d]['status'] = 'O'; $Status[$ng][$d]['prevstatus'] = 'O'; $Status[$ng][$d]['seq'] = 0; $Status[$ng][$d]['table'] = 0; $Status[$ng][$d]['tableposn'] = 0; } } $SUSNumGuests = $_SESSION['susnumguests'] = $foo; MyUpdateStatus(); } } //Master Pt Levels $str = preg_replace($PatWhitespace, "", trim(($_post['mplevels']))); $len = strlen($str); if($len <= 0) // or $str == 0) { $SUSMPLevels = $_SESSION['susmplevels']= ""; $_SESSION['mplevels'] = array(); $_SESSION['nmplevels'] = 0; $_SESSION['showlifemasters'] = 0; } else { if($len > 0) { $k = 0; $new = ""; for($i=0; $i<$len; $i++) { if(is_numeric($str[$i]) || ($i == 0 && $str[$i] === '*')) { $new .= $str[$i]; } else { if($i == 0 || $i == $len-1) { continue; } if($str[$i] == '/' || $str[$i] == ',') { $new .= '/'; } } } } if(strlen($new) > 0) { $mpl = explode('/', $new,7); $_SESSION['showlifemasters'] = 0; if($mpl[0] === '*') { unset($mpl[0]); $mpl = array_values($mpl); if(count($mpl) > 0) { $_SESSION['showlifemasters'] = 1; } else { $SUSMPLevels = $_SESSION['susmplevels']= ""; $_SESSION['mplevels'] = array(); $_SESSION['nmplevels'] = 0; $_SESSION['showlifemasters'] = 0; } } $cnt = count($mpl); for($i=0; $i<$cnt; $i++) { if(strlen($mpl[$i]) <= 0) { $cnt = 99; break; } } if($cnt > 5){ $rc = 22; if($cnt == 99) { $ErrorMsg = "Invalid or empty master point level"; } else { $ErrorMsg = "Too many master point levels"; } $SUSMPLevels = $_SESSION['susmplevels']= ""; $_SESSION['mplevels'] = array(); $_SESSION['nmplevels'] = 0; $_SESSION['showlifemasters'] = 0; } else { $_SESSION['nmplevels'] = $cnt + 1; $_SESSION['mplevels'] = array(); for($i=0; $i<$cnt; $i++) { $_SESSION['mplevels'][$i] = $mpl[$i]; } rsort($_SESSION['mplevels'], SORT_NUMERIC); $str = ($_SESSION['showlifemasters'] != 0) ? '*/' : ''; for($i=0; $i<$cnt; $i++) { $str .= $_SESSION['mplevels'][$i]; if($i == ($cnt - 1)) { continue; } $str .= '/'; } $SUSMPLevels = $_SESSION['susmplevels']= $str; sort($_SESSION['mplevels'], SORT_NUMERIC); } } else { $SUSMPLevels = $_SESSION['susmplevels']= ""; $_SESSION['mplevels'] = array(); $_SESSION['nmplevels'] = 0; $_SESSION['showlifemasters'] = 0; } } //Days no changes $SUSNoChgs = 0; /* $SUSNoChgs = $_SESSION['susnochgs'] = preg_replace($PatDigits, "", ($_post['nochgs'])); $len = $SUSNoChgs; if($len > 10 || $len < 0){ $rc = 20; $ErrorMsg = "Max days for no signup changes is 10"; $SUSNoChgs = $_SESSION['susnochgs']= 0; } */ //AdminEmail $SUSAdminEmail = $_SESSION['susadminemail'] = preg_replace($PatEmail, "", ($_post['adminemail'])); $len = strlen($SUSAdminEmail); if($len > 0){ if(strstr($SUSAdminEmail, "@") == FALSE){ $rc = 21; $ErrorMsg = "Invalid AdminEmail address = $SUSAdminEmail"; //$SUSAdminEmail = ''; } else { if($len > 200){ $rc = 21; $ErrorMsg = "AdminEmail address is too long (200)"; //$SUSAdminEmail = ''; } } } //Admin BCC on welcome msg if(isset($_post['adminwelcome'])) { $_SESSION['susadminwelcome'] = $SUSAdminWelcome = 1; } else { $_SESSION['susadminwelcome'] = $SUSAdminWelcome = 0; } //Email admin when player added if(isset($_post['adminnewplayer'])) { $_SESSION['susadminnewplayer'] = $SUSAdminNewPlayer = 1; } else { $_SESSION['susadminnewplayer'] = $SUSAdminNewPlayer = 0; } //Reminder Msg Add-on //$SUSRemindMsg = $_SESSION['susremindmsg'] = preg_replace($PatTitle, "", ($_post['remindmsg'])); $foo = html_entity_decode($_post['remindmsg'], ENT_QUOTES); $SUSRemindMsg = $_SESSION['susremindmsg'] = preg_replace($PatAnnounce, "", $foo); $len = strlen($SUSTitle); if($len > 100){ $rc = 22; $ErrorMsg = "Remind Msg Add-on length is out of range (100)"; $SUSRemindMsg = $_SESSION['susremindmsg'] = ''; } //Hour to send reminder email $k = $_post['remindtime']; //echo "
R=$SUSRemindTime O=$remindOffset k=$k"; if($k == $remindOffset) { $k = 0; } if($k != abs($SUSRemindTime)) //If remind time was changed { if($k > ($SUSDOPChgHour - 1)) { $rc = 221; $ErrorMsg = "Reminder must be at least an hour before rollover"; } else { if($SUSRemindTime != 0) { $k = $k * $SUSRemindTime/abs($SUSRemindTime); } //echo "
R=$SUSRemindTime O=$remindOffset k=$k"; $SUSRemindTime = $_SESSION['susremindtime'] = $k; } } //Notify on/off if(isset($_post['notifyonoff'])) { $foo = (($_post['notifyonoff']) == "on") ? 1 : 0; $_SESSION['susnotifyonoff'] = $SUSNotifyOnOff = $foo; } //Notify on by default if(isset($_post['notifydefault'])) { $_SESSION['susnotify'] = $SUSNotify = 1; } else { $_SESSION['susnotify'] = $SUSNotify = 0; } //Send Notifications to Admins if(isset($_post['notifyadmin'])) { $_SESSION['susnotifyadmin'] = $SUSNotifyAdmin = 1; } else { $_SESSION['susnotifyadmin'] = $SUSNotifyAdmin = 0; } //Allow half games if(isset($_post['allowhalfgames'])) { $_SESSION['susallowhalfgames'] = $SUSAllowHalfGames = 1; } else { $_SESSION['susallowhalfgames'] = $SUSAllowHalfGames = 0; } //Allow guest login if(isset($_post['allowguestlogin'])) { $_SESSION['susallowguestlogin'] = $SUSAllowGuestLogin = 1; } else { $_SESSION['susallowguestlogin'] = $SUSAllowGuestLogin = 0; } //Contacts page if(isset($_post['contacts'])) { $_SESSION['suscontacts'] = ($_post['contacts']); $foo = (($_post['contacts']) == 'all')? 1 : 0; $SUSContacts = $_SESSION['suscontacts'] = $foo; } else { $rc = 16; $ErrorMsg = "You must select a Contacts Page Availability"; $ptype = 0; break; } //Sub priority if(isset($_post['subeqreg'])) { $_SESSION['sussubeqreg'] = ($_post['subeqreg']); $foo = (($_post['subeqreg']) == 'same')? 1 : 0; $SUSSubEqReg = $_SESSION['sussubeqreg'] = $foo; } else { $rc = 16; $ErrorMsg = "You must select a Sus Priority"; $ptype = 0; break; } //Guest priority (reg or sub) if(isset($_post['guest'])) { $_SESSION['susguest'] = ($_post['guest']); $guest = ($_post['guest']); } else { $rc = 16; $ErrorMsg = "You must select a Guest Priority"; $ptype = 0; break; } //Update config file if($rc == 0) { $N = WriteCfgFile(); if($N > 0) { $rc = 17; $ErrorMsg = "Error writing Website Settings to the Config file"; } else { $rc = 18; $ErrorMsg = "The Website Settings have been updated"; } } break; /* No Longer Used ********************************** case "Help": if(isset($_SESSION['maintparent']) && $_SESSION['maintparent'] == 'WebsiteMaint') { header('Location: EditHelp.php'); exit; break; } else { header('Location: mainthelp.php'); exit; break; } */ case "Reset": $_SESSION['editpid'] = 0; break; case "Chg Days Used": $foo = $_post['daysused']; //---------------------------- //validate the days used input //---------------------------- if(strlen($foo) != 7) { $ErrorMsg = "Days used must be 7 characters"; break; } $newDaysUsed = str_split($foo); //new days that are allowed for play //------------------------------ //convert to 0/1 chars if needed //------------------------------ for($i=0; $i<7; $i++) { if($newDaysUsed[$i] != 0 ) $newDaysUsed[$i] = 1; } //---------------------------------------- //Check that new and old are not the same //---------------------------------------- $error = 0; for($i=0; $i<7; $i++) { if($newDaysUsed[$i] == $SUSDaysUsed[$i]) continue; $error = 1; } if($error == 0) { $ErrorMsg = "Old and new days used are the same"; break; } //------------------------------------------ //calc the new days displayed //------------------------------------------ $sumOld = 0; $sumNew = 0; for($i=0; $i<7; $i++) { $sumOld += $SUSDaysUsed[$i]; $sumNew += $newDaysUsed[$i]; } $daysDisplayed = $sumNew * ($SUSNoDays/$sumOld); //---------------------- //set chg to max tables //---------------------- $maxTables = array(0,0,0,0,0,0,0); $mt = array(); $mt = explode(',', $SUSMaxGames, 7); $cnt = count($mt); if($cnt > 1) { $i = 0; for($d=0; $d<7; $d++) { if($SUSDaysUsed[$d] != 0) { $maxTables[$d] = ($i<$cnt) ? trim($mt[$i++]) : 0; } } } else { for($d=0; $d<7; $d++) if($SUSDaysUsed[$d] != 0) { $maxTables[$d] = $mt[0]; } } $strMaxTables = ""; for($d=0; $d<7; $d++) { $chg = $newDaysUsed[$d] - $SUSDaysUsed[$d]; //-1=>removed 0=>no chg 1=>added if($chg == 0) { if($newDaysUsed[$d] != 0) //If active day of play { //if no chg keep old value if(strlen($strMaxTables) > 0) $strMaxTables .= ','; $strMaxTables .= $maxTables[$d]; } continue; } if($chg < 0) { //if removed set to zero and don't add to str $maxTables[$d] = 0; } else { //if added use place holder and add to str $maxTables[$d] = 100; if(strlen($strMaxTables) > 0) $strMaxTables .= ','; $strMaxTables .= $maxTables[$d]; } } //--------------------- //update days displayed //--------------------- $_SESSION['susnodays'] = $daysDisplayed; //--------------------- //update days used //--------------------- $str = implode($newDaysUsed); $_SESSION['susdaysofweek'] = $str; $daysUsed = $_SESSION['susdaysofweek']; //--------------------- //update max tables //--------------------- $SUSMaxGames = $_SESSION['susmaxgames'] = $strMaxTables; //----------------------------------------------- //add/remove days in the current status database //----------------------------------------------- $rc = MyChgDaysUsed($newDaysUsed, $daysDisplayed); if($rc > 0) { $ErrorMsg = "Cannot change days used"; ReadCfgFile(); break; } WriteCfgFile(); $ErrorMsg = "Successful - Change days used"; break; case "Back": header('Location: ../RTE/signup.php'); exit; break; case "Repair DB HighSeq": $rc = MyRepairHighseqDB(); $ErrorMsg = "$rc"; break; case "Backup DB": $rc = MyBackupDB('_M'); $ErrorMsg = "$rc"; break; case "Restore DB": header('Location: RestoreDB.php'); exit; break; case "Zero jdStart": $rc = MyZeroJDStart(); $ErrorMsg = "$rc"; break; case "Repair jdStart": $rc = MyFillJDStart(); $ErrorMsg = "$rc"; break; case "Clear DB Status": $rc = MyClearStatusDB(); $ErrorMsg = "$rc"; break; case "Rollover DB": $rc = MyRollover(1); $ErrorMsg = "$rc"; break; case "Import V1 DB": $rc = MyImportV1DB(); $ErrorMsg = $rc; break; case "Special Action": SpecialAction(); $ErrorMsg = "DB Special Action completed"; break; case "Reset PType": $rc = MyResetPType(); $ErrorMsg = "$rc"; break; case "View DB": header('Location: DatabaseView.php'); exit; break; case "Signup Page": $foo = $_SESSION['susname']; $pw = $_SESSION['login']; $_SESSION = array(); session_destroy(); header("Location: ../RTE/index.php?id=$foo&user=tedlane&pw=$pw"); exit; break; case "View Logfile": header('Location: viewlogfile.php'); exit; break; case "Clear Logfile": $ErrorMsg = "Logfile has been cleared"; ClearLogFile(); break; case "View ErrorLog": header('Location: viewerrorlog.php'); exit; break; case "Clear ErrorLog": $ErrorMsg = "ErrorLog has been cleared"; ClearErrorLog(); break; case "View Config File": header('Location: viewconfigfile.php'); exit; break; case "End Shutdown": $SUSShutdown = $_SESSION['susshutdown'] = 0; writeCfgFile(); break; case "Total Shutdown": $SUSShutdown = $_SESSION['susshutdown'] = 2; writeCfgFile(); break; case "Start Shutdown": $SUSShutdown = $_SESSION['susshutdown'] = 1; writeCfgFile(); break; case "Logout": $_SESSION = array(); session_destroy(); header('Location: goodbye.php'); exit; break; case "Send Reminder": SendReminder(); $ErrorMsg = "Reminder emails have been sent"; break; case "List Players": $fp = fopen($MembersCsvFileName, 'w'); if($fp === FALSE) { $ErrorMsg = "Cannot open $MembersCsvFileName"; break; } //write header line $aTitles = '"LAST NAME","FIRST NAME","TYPE","NOTIFY","CONTACT","PHONE","MOBILE","EMAIL"'; fputs($fp, $aTitles); fputs($fp, "\n\n"); //add each member line for($p=0; $p<$NumDBPlayers; $p++) { if($Players[$p]['login'] != 'Guest') { $str = ""; //name $name = $Players[$p]['name']; $I = strpos($name, ','); $LastName = substr($name, 0, $I); $N = strlen($name) - ($I + 2); $FirstName = substr($name, $I+2, $N); $str .= '"' . $LastName . '",'; $str .= '"' . $FirstName . '",'; //player type $ptype = $Players[$p]['ptype']; $type = (($ptype & 1) == 0) ? 'reg' : 'sub'; $str .= '"' . $type . '",'; //notify $notify = $Players[$p]['notify']; $foo = ($notify != 0) ? "Yes" : "No"; $str .= '"' . $foo . '",'; //contact $contact = $Players[$p]['contact']; $foo = ($contact != 0) ? "Yes" : "No"; $str .= '"' . $foo . '",'; //phone $phone = $Players[$p]['phone']; $phone = substr_replace($phone, ' ',3,0); $phone = substr_replace($phone, '-',7,0); $str .= '"' . $phone . '",'; //mobile $mobile = $Players[$p]['mobile']; $mobile = substr_replace($mobile, ' ',3,0); $mobile = substr_replace($mobile, '-',7,0); $str .= '"' . $mobile . '",'; //email $email = $Players[$p]['email']; $str .= '"' . $email . '"'; //playerid $playerid = $Players[$p]['playerid']; $str .= '"' . $playerid . '"'; //masterpts $masterpts = $Players[$p]['masterpts']; $str .= '"' . $masterpts . '"'; $str .= "\n"; fputs($fp, $str); } } fclose($fp); header("Location: $MembersCsvFileName"); break; case "Change Headings": $foo = array(); $foo[0] = preg_replace("~[^A-Za-z0-9_-]+~", "", ($_post['acblfn'])); $foo[1] = preg_replace("~[^A-Za-z0-9_-]+~", "", ($_post['acblln'])); $foo[2] = preg_replace("~[^A-Za-z0-9_-]+~", "", ($_post['acblno'])); $foo[3] = preg_replace("~[^A-Za-z0-9_-]+~", "", ($_post['acblmp'])); for($i=0; $i<4; $i++) { $len = strlen($foo[$i]); if($len <= 0 || $len > 15) { $error_msg = "ACBL Column Heading out of range (1-15)"; break; } } if($error_msg != "") break; $ACBLHeadings = $foo; $SUSACBLColHeadings = $_SESSION['susacblcolheadings'] = implode(',', $foo); writeCfgFile(); break; case "Update": unset($fileupload); $error_msg = ""; if(isset($_FILES['file'])) { $size = $_FILES['file']['size']; if($size > $maxfile) { $s = $maxfile / 1000000; $error_msg = "File size is greater than $s mb"; } else { if($size > 0) { $str = $_FILES['file']['name']; $file = explode(".", $str, 3); $ftype = strtolower(trim($file[1])); if($ftype === "csv") { if ($_FILES["file"]["error"] > 0) { $error_msg = "Return Code: " . $_FILES["file"]["error"]; } else { $path = $_SESSION['path_acbldata']; $type = $_FILES['file']['type']; $size = $_FILES['file']['size']; $temp = $_FILES['file']['tmp_name']; } } else { $error_msg = "Invalid file type"; } } else { $err = $_FILES['file']['error']; $error_msg = "Invalid File($err)"; } } if($error_msg === "") { if(move_uploaded_file($temp, $path)) { $error_msg = "File was uploaded successfully"; $fileupload = 1; } else { $error_msg = "File could not be uploaded"; } } } if(isset($fileupload)) { $rc = ReadACBLData(); if($rc != 0) { $error_msg = "Cannot read ACBL data file ($rc)"; } else { $rc = UpdateACBLData(); if($rc != 0) { $error_msg = "Cannot update player data from ACBL data file ($rc)"; } else { $error_msg = "Player data was updated successfully"; } } } break; } } //==============PHP End ======================================================== ?> <?php echo "$SUSTitle";?> - Website Maintenance


Website Maintenance

0) echo "

$ErrorMsg

"; ?>

Announcement

">
>


Player Database


"; $Str ='"; echo ""; $Str ='"; if($Super == 2) { //if this is a cheif administrator echo ""; $Str ='"; } ?>
First Name: ">
Last Name: ">
Username: ">
Password: ">
Email Addr: ">
Phone: ">
Mobile: ">
Player ID: ">
Master Pts: ">
Type of Player: > > Contacts List: 0) { $Str .= "CHECKED"; } $Str .= '>'; echo $Str; echo ''; $Str =' 0) { $Str .= "CHECKED"; } $Str .= '>'; echo $Str; echo ''; echo "
  0) { $Str .= "CHECKED"; } $Str .= '>'; echo $Str; echo ''; echo "
  0) { $Str .= "CHECKED"; } $Str .= '>'; echo $Str; echo ''; echo "





0) { echo "

$ErrorMsg

"; } ?>

"; echo "
"; echo ""; //echo ""; echo ''; echo ""; echo "
"; echo ""; echo ""; echo ""; echo "
"; echo ""; echo ""; echo "
"; if($SUSShutdown > 0) { echo ""; } else { echo ""; echo ""; } echo "



"; echo "
"; echo ""; echo ""; echo "
"; echo ""; //echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo "
"; echo "
"; echo ""; echo " = Days Used = SMTWTFS (0 => Not Used or 1 => Used)"; } else { //Following are the Admin buttons echo ""; //echo ""; echo ""; echo "
"; echo ""; echo ""; echo "
"; echo ""; echo "
"; echo ""; //echo ""; echo "
"; if($SUSShutdown > 0) { echo ""; } else { echo ""; } echo "
"; echo ""; } ?>

Website Settings

"; $Str ='"; echo ""; $Str ='"; ?> "; $Str ='"; echo ""; $Str ='"; ?> "; $Str ='"; echo ""; $Str ='"; ?>
Title: ">
Days Displayed: ">
Max Tables: ">
Number Guests(0-9): ">
Max Players: ">
Master Pt Levels: ">
Administrator Emails:   0) { $Str .= "CHECKED"; } $Str .= '>'; echo $Str; echo ''; echo "
  0) { $Str .= "CHECKED"; } $Str .= '>'; echo $Str; echo ''; echo "
Reminder Msg Add-on: ">
  0) { $Str .= "CHECKED"; } $Str .= '>'; echo $Str; echo ''; echo "
  0) { $Str .= "CHECKED"; } $Str .= '>'; echo $Str; echo ''; echo "
Contacts Page: >
>
Subs Priority: >
>
Guest Priority: >
= 10) { echo "CHECKED"; }?>>
Notifications: > >   0) { $Str .= "CHECKED"; } $Str .= '>'; echo $Str; echo ''; echo "
  0) { $Str .= "CHECKED"; } $Str .= '>'; echo $Str; echo ''; echo "
Admin Notify Time: "> Hours Before Rollover (0-30)
Hour to Send Reminder:
Logfile Size: "> Number of lines (50-350)
Signup Cutoff Time: "> Hours Before Rollover (0-30)
Time Zone:
Hour to Chg DOP:


0) { echo '

Update Master Points

'; echo '
'; echo '

Input File Column Headings

'; echo ''; echo ''; echo ''; echo ""; echo ''; echo ""; echo ''; echo ''; echo ""; echo ''; echo ""; echo ''; echo '
First Name:Last Name:
ACBL No:Master Pts:
'; echo '
'; echo '
'; echo '

'; echo '

Input File Upload Information

'; if($error_msg != "") { echo "
"; echo "

$error_msg

"; echo "
"; } echo '
'; echo ""; echo '          '; echo 'File Name: '; echo '

'; echo ''; echo '

'; echo '
'; echo '
'; } ?>