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
$foo = $SUSTitle;
$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'] = $foo;
}
//Number of days displayed
$foo = $SUSNoDays;
$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'] = $foo;
} else {
MyFillJDStart();
}
//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 ======================================================== ?>
$error_msg
"; echo "