0)
{
$lock_sql = "LOCK TABLES $table1 $lockType, $table2 $lockType";
} else {
$lock_sql = "LOCK TABLES $table1 $lockType";
}
//------------------
//Connect to the DB
//------------------
$conn = dbConnect();
//------------------
//Lock mysql tables
//------------------
$result = mysqli_query($conn, $lock_sql);
if($result === FALSE)
{
$err = mysqli_error($conn);
$strLog = "\nMyLockTables: Cannot lock tables - $err";
$strLog .= "\nsql=$lock_sql";
WriteToErrorLog($strLog, 'data');
return "Cannot lock tables - Please try again";
}
return $conn;
}
//=================================================================================
function MyUnlockTables($conn)
//=================================================================================
{
$unlock_sql = "UNLOCK TABLES";
//------------------
//Unlock mysql tables
//------------------
$result = mysqli_query($conn, $unlock_sql);
if($result === FALSE)
{
echo "
MyUnlockTables: Cannot unlock tables";
}
mysqli_close($conn);
}
//=================================================================================
function MyGetLoginInfo($username)
//=================================================================================
{
$tablePlayers = $_SESSION['mysqlPlayers'];
$tableSystemdata = $_SESSION['mysqlSystemdata'];
$dbConn = MyLockTables($tablePlayers, "", 'READ');
//-----------------
//Get players data
//-----------------
$sql = "SELECT * FROM $tablePlayers WHERE username = \"$username\"";
$result = mysqli_query($dbConn, $sql);
$numrows = $result->num_rows;
if($numrows <= 0)
{
$err = mysqli_error($dbConn);
MyUnlockTables($dbConn);
$strLog = "\nCannot select username=$username: $err";
//WriteToErrorLog($strLog, 'data');
return 1;
}
$row = $result->fetch_assoc();
// free result set
mysqli_free_result($result);
MyUnlockTables($dbConn);
return $row;
}
//=================================================================================
function MyGetPlayerInfo()
//=================================================================================
{
global $Players;
global $Status;
global $Systemdata;
global $ndxPlayers;
global $NumDBPlayers;
global $SUSNoStatus;
global $SUSNoDays;
//$SUSNoStatus = $_SESSION['susnostatus']; //Number of days of status in DB
//$SUSNoDays = $_SESSION['susnodays']; //Number of days displayed
$tablePlayers = $_SESSION['mysqlPlayers'];
$tableSystemdata = $_SESSION['mysqlSystemdata'];
$Zero = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0";
$issetPlayers = (isset($Players)) ? 1 : 0;
$issetPlayers = 0; //always read entire database
$dbConn = MyLockTables($tablePlayers, $tableSystemdata, 'READ');
//-----------------------
//Get system data
//-----------------------
$sql = "SELECT * FROM $tableSystemdata";
$result = mysqli_query($dbConn, $sql);
$numrows = $result->num_rows;
if($numrows != 1)
{
$err = mysqli_error($dbConn);
MyUnlockTables($dbConn);
$strLog = "\nCannot select $tableSystemdata: $err";
WriteToErrorLog($strLog, 'data');
return "Database busy - Please try again";
}
//$Systemdata[] = array();
$row = $result->fetch_assoc();
$Sjd = explode(',', $row['jdstart']);
$Sdate = explode(',', $row['date']);
$Sday = explode(',', $row['day']);
$Shigh = explode(',', $row['highseq']);
$Sblk = explode(',', $row['signupblock']);
for($d=0; $d<$SUSNoDays; $d++) //for each day of play
{
$Systemdata['jdstart'][$d] = $Sjd[$d];
$Systemdata['date'][$d] = $Sdate[$d];
$Systemdata['day'][$d] = $Sday[$d];
$Systemdata['highseq'][$d] = $Shigh[$d];
$Systemdata['signupblock'][$d] = $Sblk[$d];
}
// free result set
mysqli_free_result($result);
//-----------------------
//Get player information
//-----------------------
if($issetPlayers)
{
$lastMod = $_SESSION['lastread'];
$sql = "SELECT * FROM $tablePlayers WHERE last_modified > $lastMod";
} else {
$sql = "SELECT * FROM $tablePlayers";
}
$result = mysqli_query($dbConn, $sql);
$numrows = $result->num_rows;
if($numrows === FALSE)
{
$err = mysqli_error($dbConn);
MyUnlockTables($dbConn);
$strLog = "\nCannot get player info ($err)";
$strLog .= "\n$sql";
WriteToErrorLog($strLog, 'data');
return "Database busy - Please try again";
}
if($numrows <= 0)
{
mysqli_free_result($result);
MyUnlockTables($dbConn);
$_SESSION['lastread'] = time();
$NumDBPlayers = $_SESSION['susnoplayers'] = count($Players);
return $NumDBPlayers;
}
//-----------------------
//Generate players array
//-----------------------
//$Players[] = array(); //clear any current array
//$Status[][] = array(); //clear any current array
$i = -1;
$s = -1;
while($row = $result->fetch_assoc())
{
if($issetPlayers == 1)
{
$i = PlayerIndex($row['pid']);
$s = StatusIndex($row['pid']);
} else {
$i++;
$s++;
}
$Players[$i]['pid'] = $row['pid'];
$Players[$i]['super'] = $row['super'];
$Players[$i]['name'] = $row['name'];
$Players[$i]['username'] = $row['username'];
$Players[$i]['login'] = $row['login'];
$Players[$i]['phone'] = $row['phone'];
$Players[$i]['mobile'] = $row['mobile'];
$Players[$i]['ptype'] = $row['ptype'];
$Players[$i]['email'] = $row['email'];
$Players[$i]['notify'] = $row['notify'];
$Players[$i]['contact'] = $row['contact'];
$Players[$i]['playerid'] = $row['playerid'];
$Players[$i]['masterpts'] = $row['masterpts'];
//----------------------
//Generate status array
//----------------------
$Spart = array();
$Sposn = array();
$Sstat = array();
$Sprev = array();
$Sseq = array();
$Stblnum = array();
$Stblposn = array();
$Spart = explode(',', $row['partner']);
$Sposn = explode(',', $row['posn']);
$Sstat = explode(',', $row['status']);
$Sprev = explode(',', $row['prevstatus']);
$Sseq = explode(',', $row['seq']);
$Stblnum = explode(',', $row['tablenum']);
$Stblposn = explode(',', $row['tableposn']);
$cnt = count($Spart);
//for($d=0; $d<$cnt; $d++) //for each day
for($d=0; $d<$SUSNoStatus; $d++) //for each day
{
$Status[$s][$d]['pid'] = $row['pid'];
$Status[$s][$d]['partner'] = $Spart[$d];
$Status[$s][$d]['posn'] = $Sposn[$d];
$Status[$s][$d]['status'] = $Sstat[$d];
$Status[$s][$d]['prevstatus'] = $Sprev[$d];
$Status[$s][$d]['seq'] = $Sseq[$d];
$Status[$s][$d]['table'] = $Stblnum[$d];
$Status[$s][$d]['tableposn'] = $Stblposn[$d];
}
}
// free result set
mysqli_free_result($result);
MyUnlockTables($dbConn);
$NumDBPlayers = count($Players);
$_SESSION['susnoplayers'] = $NumDBPlayers;
// -------------------------------------
// Sort the player info by player name
// -------------------------------------
$rowName = array();
// create array of player names in column form
for($i=0; $i<$NumDBPlayers; $i++)
{
$rowName[$i] = $Players[$i]['name'];
}
// sort the names and reorder players array accordingly
array_multisort($rowName, SORT_ASC, $Players);
// --------------------------
// Generate pid lookup array
// --------------------------
$ndxPlayers = array();
for($i=0; $i<$NumDBPlayers; $i++)
{
$row[$i] = $Players[$i]['pid'];
$ndxPlayers[$i][0] = $Players[$i]['pid'];
$ndxPlayers[$i][1] = $i;
}
array_multisort($row, SORT_ASC, $ndxPlayers);
$_SESSION['lastread'] = time();
return $NumDBPlayers;
}
//=================================================================================
function MyUpdateSystemdata()
//=================================================================================
{
global $SUSNoStatus;
global $Systemdata;
$tablePlayers = $_SESSION['mysqlPlayers'];
$tableSystemdata = $_SESSION['mysqlSystemdata'];
$dbConn = MyLockTables($tableSystemdata);
//------------------------------
//Generate the systemdata table
//------------------------------
$v1 = implode(',', $Systemdata['jdstart']);
$v2 = implode(',', $Systemdata['date']);
$v3 = implode(',', $Systemdata['day']);
$v4 = implode(',', $Systemdata['highseq']);
$v5 = implode(',', $Systemdata['signupblock']);
$sql = "UPDATE $tableSystemdata SET jdstart='$v1', date='$v2',
day='$v3', highseq='$v4',
signupblock='$v5'
WHERE row = 1";
$rc = mysqli_query($dbConn, $sql);
if($rc === FALSE)
{
$err = mysqli_error($dbConn);
MyUnlockTables($dbConn);
$strLog = "\nCannot update $tableSystemdata ($err)";
WriteToErrorLog($strLog, 'data');
return "Database busy - Please try again";
}
MyUnlockTables($dbConn);
return intval(0);
}
//=================================================================================
function MyUpdatePType($pid, $ptype)
//=================================================================================
{
global $SUSNoStatus;
$tablePlayers = $_SESSION['mysqlPlayers'];
$tableSystemdata = $_SESSION['mysqlSystemdata'];
$dbConn = MyLockTables($tablePlayers);
//--------------------------
//Set player information
//--------------------------
$v1 = $pid;
$v8 = $ptype;
//-------------------------------------
//Check that player is in the database
//-------------------------------------
$sql = "SELECT * FROM $tablePlayers Where pid = $v1";
$result = mysqli_query($dbConn, $sql);
$numrows = $result->num_rows;
if($numrows <= 0)
{
MyUnlockTables($dbConn);
return "pid $v1 is not in the database";
}
//--------------------
//update the database
//--------------------
$lastmod = time();
$sql = "UPDATE $tablePlayers SET ptype=$v8, last_modified=$lastmod
where pid = $v1";
$rc = mysqli_query($dbConn, $sql);
if($rc === FALSE)
{
$err = mysqli_error($dbConn);
MyUnlockTables($dbConn);
$strLog = "\nCannot update player pid $v1: $err";
WriteToErrorLog($strLog, 'data');
return "Database busy - Please try again";
}
// free result set
mysqli_free_result($result);
MyUnlockTables($dbConn);
MyGetPlayerInfo();
return 0;
}
//=================================================================================
function MyUpdateStatus()
//=================================================================================
{
global $SUSNoStatus;
global $Status;
$tablePlayers = $_SESSION['mysqlPlayers'];
$tableSystemdata = $_SESSION['mysqlSystemdata'];
if(!isset($_SESSION['changed_pids'])) return 0;
//--------------------------------------
//prune the list of pids for duplicates
//--------------------------------------
$chgpids = array();
$temp = $_SESSION['changed_pids'];
$_SESSION['changed_pids'] = array();
if(!is_array($temp))
{
$cnt = 1;
$chgpids[] = $temp;
} else {
$cnt = count($temp);
$j = 0;
sort($temp);
$chgpids[$j++] = $temp[0];
for($i=1; $i<$cnt; $i++)
{
if($temp[$i-1] == $temp[$i])
{
continue;
} else {
$chgpids[$j++] = $temp[$i];
}
}
$cnt = count($chgpids);
}
$dbConn = MyLockTables($tablePlayers);
for($p=0; $p<$cnt; $p++)
{
$v1 = $chgpids[$p];
$n = StatusIndex($v1);
if($n < 0) continue;
//-------------------------------------
//Check that player is in the database
//-------------------------------------
$sql = "SELECT * FROM $tablePlayers Where pid = $v1";
$result = mysqli_query($dbConn, $sql);
$numrows = $result->num_rows;
if($numrows <= 0)
{
// free result set
mysqli_free_result($result);
echo "
Player $v1 is not in database";
continue;
}
// free result set
mysqli_free_result($result);
//--------------------------------
//Format status info for database
//--------------------------------
$t2 = array();
$t3 = array();
$t4 = array();
$t5 = array();
$t6 = array();
$t7 = array();
$t8 = array();
for($d=0; $d<$SUSNoStatus; $d++)
{
$t2[] = $Status[$n][$d]['partner'];
$t3[] = $Status[$n][$d]['posn'];
$t4[] = $Status[$n][$d]['status'];
$t5[] = $Status[$n][$d]['prevstatus'];
$t6[] = $Status[$n][$d]['seq'];
$t7[] = $Status[$n][$d]['table'];
$t8[] = $Status[$n][$d]['tableposn'];
}
$v2 = implode(',', $t2);
$v3 = implode(',', $t3);
$v4 = implode(',', $t4);
$v5 = implode(',', $t5);
$v6 = implode(',', $t6);
$v7 = implode(',', $t7);
$v8 = implode(',', $t8);
$v9 = time();
//--------------------
//update the database
//--------------------
$lastmod = time();
$sql = "UPDATE $tablePlayers SET partner='$v2', posn='$v3',
status='$v4', prevstatus='$v5',
seq='$v6', tablenum='$v7',
tableposn='$v8', last_modified='$v9'
where pid = $v1";
$rc = mysqli_query($dbConn, $sql);
if($rc === FALSE)
{
$err = mysqli_error($dbConn);
echo "
Cannot update player status for $v1: $err";
continue;
}
}
MyUnlockTables($dbConn);
MyGetPlayerInfo();
return 0;
}
//=================================================================================
function MyAddPlayer($PData)
//=================================================================================
{
$tablePlayers = $_SESSION['mysqlPlayers'];
$tableSystemdata = $_SESSION['mysqlSystemdata'];
$Zero = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0";
$Open = "O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O";
//echo "
PData
"; //print_r($PData); $dbConn = MyLockTables($tablePlayers); //-------------------------- //Check for duplicate names //-------------------------- $v3 = $PData['name']; $sql = "SELECT * FROM $tablePlayers Where name = \"$v3\""; $result = mysqli_query($dbConn, $sql); $numrows = $result->num_rows; // free result set mysqli_free_result($result); if($numrows > 0) { MyUnlockTables($dbConn); return "$v3 is already in the database"; } //-------------------------- //Set player information //-------------------------- $v2 = $PData['super']; $v3 = $PData['name']; $v4 = $PData['username']; $v5 = $PData['login']; $v6 = $PData['phone']; $v7 = $PData['mobile']; $v8 = $PData['ptype']; $v9 = $PData['email']; $v10 = $PData['notify']; $v11 = $PData['contact']; $v12 = $PData['playerid']; $v13 = $PData['masterpts']; //-------------------------- //Set status information //-------------------------- $s2 = $Zero; $s3 = $Zero; $s4 = $Open; $s5 = $Open; $s6 = $Zero; $s7 = $Zero; $s8 = $Zero; //-------------------------- //Insert player information //-------------------------- $lastmod = time(); $sql = "INSERT INTO $tablePlayers (super, name, username, login, phone, mobile, ptype, email, notify, contact, playerid, masterpts, partner, posn, status, prevstatus, seq, tablenum, tableposn, last_modified) VALUES ($v2, \"$v3\", \"$v4\", '$v5', '$v6', '$v7', $v8, '$v9', $v10, $v11, '$v12', $v13, '$s2', '$s3', '$s4', '$s5', '$s6', '$s7', '$s8', $lastmod)"; $rc = mysqli_query($dbConn, $sql); // or die("Can't insert pid=$v1"); if($rc === FALSE) { $err = mysqli_error($dbConn); MyUnlockTables($dbConn); $strLog = "\nMyAddPlayer: Cannot insert player: $err"; WriteToErrorLog($strLog, 'data'); //echo "
$v2, \"$v3\", '$v4', '$v5', '$v6', '$v7', $v8, '$v9', $v10, $v11, '$v12', $v13"; //echo "
'$s2', '$s3', $s4, '$s5', '$s6', '$s7', '$s8', $lastmod"; return "MyAddPlayer: Cannot insert player: $err"; } //------------------ //Sort table by pid //------------------ $sql = "ALTER TABLE `$tablePlayers` ORDER BY `pid`" ; $rc = mysqli_query($dbConn, $sql); if($rc === FALSE) { $err = mysqli_error($dbConn); $strLog = "\nMyAddPlayer: Cannot sort sort players: $err"; WriteToErrorLog($strLog, 'data'); } MyUnlockTables($dbConn); MyGetPlayerInfo(); $strLog = "\nMyAddPlayer: $v3 has been added to the database"; WriteToErrorLog($strLog, 'data'); return 0; } //================================================================================= function MyDeletePlayer($pname) //================================================================================= { global $SUSNoStatus; $tablePlayers = $_SESSION['mysqlPlayers']; $tableSystemdata = $_SESSION['mysqlSystemdata']; $dbConn = MyLockTables($tablePlayers); //get player information $sql = "SELECT * FROM $tablePlayers WHERE name = \"$pname\""; $result = mysqli_query($dbConn, $sql); $numrows = $result->num_rows; if($result === FALSE || $numrows <= 0) { MyUnlockTables($dbConn); return "Player \"$pname\" not in DB"; } $player = $result->fetch_assoc(); $pid = $player['pid']; $playpart = explode(',', $player['partner']); //find partners and remove player from their status for($i=0; $i<$SUSNoStatus; $i++) //for each day { if($playpart[$i] != 0) //if player has partner that day { //get partner's status $partpid = $playpart[$i]; $sql = "SELECT * FROM $tablePlayers WHERE pid = '$partpid'"; $result = mysqli_query($dbConn, $sql); $numrows = $result->num_rows; if($result === FALSE || $numrows <= 0) { MyUnlockTables($dbConn); return "Cannot get status for pid $partpid"; } $partstat = $result->fetch_assoc(); $Spart = explode(',', $partstat['partner']); $Sposn = explode(',', $partstat['posn']); $Sstat = explode(',', $partstat['status']); $Sprev = explode(',', $partstat['prevstatus']); $Sseq = explode(',', $partstat['seq']); $Stblnum = explode(',', $partstat['tablenum']); $Stblposn = explode(',', $partstat['tableposn']); //reset player's partnership in partner's status $chgcnt = 0; for($j=0; $j<$SUSNoStatus; $j++) { if($Spart[$j] == $pid) //if partner is player { $Spart[$j] = 0; //reset status $Sposn[$j] = 0; $Sstat[$j] = 'O'; $Sprev[$j] = 'O'; $Sseq[$j] = 0; $Stblnum[$j] = 0; $Stblposn[$j] = 0; $chgcnt++; } } if($chgcnt > 0) //if any changes in status { $Spart = implode(',', $Spart); $Sposn = implode(',', $Sposn); $Sstat = implode(',', $Sstat); $Sprev = implode(',', $Sprev); $Sseq = implode(',', $Sseq); $Stblnum = implode(',', $Stblnum); $Stblposn = implode(',', $Stblposn); $sql = "UPDATE $tablePlayers SET partner='$Spart', posn='$Sposn', status='$Sstat', status='$Sprev', seq='$Sseq', tablenum='$Stblnum', tableposn='$Stblposn' where pid = $partpid"; $result = mysqli_query($dbConn, $sql); if($result === FALSE) { echo "
MyDeletePlayer: Cannot update status for pid $partpid"; exit; } } } } //delete the player's info and status $sql = "DELETE FROM $tablePlayers WHERE pid = $pid"; $rc = mysqli_query($dbConn, $sql); if($rc === FALSE) { $err = mysqli_error($dbConn); MyUnlockTables($dbConn); $strLog = "\nMyDeletePlayer: Cannot delete $pname($pid) $err"; WriteToErrorLog($strLog, 'data'); return "MyDeletePlayer: Cannot delete $pname($pid) $err"; } // free result set mysqli_free_result($result); MyUnlockTables($dbConn); MyGetPlayerInfo(); $strLog = "\nMyDeletePlayer: $pname($pid) has been deleted"; WriteToErrorLog($strLog, 'data'); return 0; } //================================================================================= function MyUpdatePlayer($PData) //================================================================================= { global $SUSNoStatus; $tablePlayers = $_SESSION['mysqlPlayers']; $tableSystemdata = $_SESSION['mysqlSystemdata']; $dbConn = MyLockTables($tablePlayers); //-------------------------- //Set player information //-------------------------- $v1 = $PData['pid']; $v2 = $PData['super']; $v3 = $PData['name']; $v4 = $PData['username']; $v5 = $PData['login']; $v6 = $PData['phone']; $v7 = $PData['mobile']; $v8 = $PData['ptype']; $v9 = $PData['email']; $v10 = $PData['notify']; $v11 = $PData['contact']; $v12 = $PData['playerid']; $v13 = $PData['masterpts']; //echo "
$v2, '$v3', $v4, '$v5', '$v6', '$v7', $v8, '$v9', $v10, $v11, '$v12', $v13"; //exit; //------------------------------------- //Check that player is in the database //------------------------------------- $sql = "SELECT * FROM $tablePlayers Where pid = $v1"; $result = mysqli_query($dbConn, $sql); $numrows = $result->num_rows; if($numrows <= 0) { MyUnlockTables($dbConn); $strLog = "\n$v3 is not in the database"; WriteToErrorLog($strLog, 'data'); return 0; } //-------------------- //update the database //-------------------- $lastmod = time(); $sql = "UPDATE $tablePlayers SET super=$v2, name=\"$v3\", username=\"$v4\", login='$v5', phone='$v6', mobile='$v7', ptype=$v8, email='$v9', notify=$v10, contact=$v11, playerid='$v12',masterpts=$v13, last_modified=$lastmod where pid = $v1"; $rc = mysqli_query($dbConn, $sql); if($rc === FALSE) { $err = mysqli_error($dbConn); MyUnlockTables($dbConn); $strLog = "\nCannot update player $v3: $err"; WriteToErrorLog($strLog, 'data'); return "Database busy - Please try again"; } // free result set mysqli_free_result($result); MyUnlockTables($dbConn); MyGetPlayerInfo(); return 0; } //================================================================================= function MyUpdateMasterpts($pid, $ACBL, $mpts ) //================================================================================= { $tablePlayers = $_SESSION['mysqlPlayers']; $tableSystemdata = $_SESSION['mysqlSystemdata']; $dbConn = MyLockTables($tablePlayers); //------------------------------------- //Check that player is in the database //------------------------------------- $sql = "SELECT * FROM $tablePlayers Where pid = $pid"; $result = mysqli_query($dbConn, $sql); $numrows = $result->num_rows; if($numrows <= 0) { MyUnlockTables($dbConn); return 0; } //-------------------- //update the database //-------------------- $lastmod = time(); $fpMPts = floatval($mpts); $sql = "UPDATE $tablePlayers SET playerid='$ACBL', masterpts=$fpMPts, last_modified=$lastmod where pid = $pid"; $rc = mysqli_query($dbConn, $sql); if($rc === FALSE) { $err = mysqli_error($dbConn); MyUnlockTables($dbConn); $strLog = "\nCannot update master pts - $err"; WriteToErrorLog($strLog, 'data'); return 1; } // free result set mysqli_free_result($result); MyUnlockTables($dbConn); //MyGetPlayerInfo(); return 0; } //================================================================================= function MyRollover($fullro = 0) //================================================================================= { global $Players; global $Status; global $Systemdata; global $NumDBPlayers; global $SUSNoStatus; global $SUSNoDays; global $SUSDaysUsed; $TablesFileName = $_SESSION['path_tables']; $TablesCsvFileName = $_SESSION['path_tabcsv']; $tablePlayers = $_SESSION['mysqlPlayers']; $tableSystemdata = $_SESSION['mysqlSystemdata']; $DayName = array("Su ","M ","Tu ","W ","Th ","F ","Sa "); $Zero = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"; if($fullro > 0) { $jd = $Systemdata['jdstart'][0]; $rolloverDOW = (jddayofweek($jd,0)); PruneLogFile(); //---------------------------------------- //backup the database before rolling over //---------------------------------------- $suffix = '_R' . $rolloverDOW; MyBackupDB($suffix); $line = "\nMyRollover: Manual backup & rollover for DOW=$rolloverDOW"; WriteToLogFile($line, "data"); //--------------------------- //reset player ptype entries //--------------------------- $rc = MyResetPType(); WriteToLogFile("\nResetPType(): $rc resets", "data"); } $dbConn = MyLockTables($tablePlayers, $tableSystemdata); //----------------------- //Get system data //----------------------- $sql = "SELECT * FROM $tableSystemdata"; $result = mysqli_query($dbConn, $sql); $numrows = $result->num_rows; if($numrows != 1) { MyUnlockTables($dbConn); $strLog = "\nMyRollover: Cannot get $tableSystemdata info from the database"; WriteToErrorLog($strLog, 'data'); return 0; } $row = $result->fetch_assoc(); $Sjd = explode(',', $row['jdstart']); $flag = 0; $jd = $Sjd[$SUSNoDays-1]; //last jd in current table $jd++; while($flag == 0) { //for each day of play $dow = (jddayofweek($jd,0)); if($SUSDaysUsed[$dow] == 0) { //day not day of play $jd++; continue; } $flag = 1; $md = jdtogregorian($jd); // returns month/day/year $md = substr($md,0,strrpos($md,"/")); //get month/day $dn = $DayName[$dow]; } array_shift($Sjd); $Sjd[] = $jd; $str_jd = implode(',', $Sjd); $Sdate = explode(',', $row['date']); array_shift($Sdate); $Sdate[] = $md; $str_date = implode(',', $Sdate); $Sday = explode(',', $row['day']); array_shift($Sday); $Sday[] = $dn; $str_day = implode(',', $Sday); $Shigh = explode(',', $row['highseq']); array_shift($Shigh); $Shigh[] = 0; $str_high = implode(',', $Shigh); $Sblk = explode(',', $row['signupblock']); array_shift($Sblk); $Sblk[] = 0; $str_blk = implode(',', $Sblk); $jdStart = $Sjd[0]; /* echo "
jdStart=$jdStart"; echo "
jd=$str_jd"; echo "
date=$str_date"; echo "
day=$str_day"; echo "
high=$str_high"; echo "
blk=$str_blk"; exit; */ //-------------------- //update the database //-------------------- $sql = "UPDATE $tableSystemdata SET jdstart='$str_jd', date='$str_date', day='$str_day', highseq='$str_high', signupblock='$str_blk' WHERE row = 1"; $rc = mysqli_query($dbConn, $sql); if($rc === FALSE) { $err = mysqli_error($dbConn); MyUnlockTables($dbConn); $strLog = "\nMyRollover: Cannot rollover $tableSystemdata ($err)"; WriteToErrorLog($strLog, 'data'); return 1; } // free result set mysqli_free_result($result); //----------------------- //Get player information //----------------------- $sql = "SELECT * FROM $tablePlayers"; $result = mysqli_query($dbConn, $sql); $numrows = $result->num_rows; if($numrows <= 0) { $err = mysqli_error($dbConn); MyUnlockTables($dbConn); $strLog = "\nMyRollover:Cannot select $tablePlayers - $err"; WriteToErrorLog($strLog, 'data'); return 1; } //----------------------- //Generate players array //----------------------- while($row = $result->fetch_assoc()) { $pid = $row['pid']; //------------------------- //Rollover the status info //------------------------- $Spart = array(); $Spart = explode(',', $row['partner']); array_shift($Spart); $Spart[] = 0; $str_part = implode(',', $Spart); $Sposn = array(); $Sposn = explode(',', $row['posn']); array_shift($Sposn); $Sposn[] = 0; $str_posn = implode(',', $Sposn); $Sstat = array(); $Sstat = explode(',', $row['status']); array_shift($Sstat); $Sstat[] = 'O'; $str_stat = implode(',', $Sstat); $Sprev = array(); $Sprev = explode(',', $row['prevstatus']); array_shift($Sprev); $Sprev[] = 'O'; $Sprev[0] = $Sstat[0]; //Avoid sending email for change of status $str_prev = implode(',', $Sprev); $Sseq = array(); $Sseq = explode(',', $row['seq']); array_shift($Sseq); $Sseq[] = 0; $str_seq = implode(',', $Sseq); $Stblnum = array(); $Stblnum = explode(',', $row['tablenum']); array_shift($Stblnum); $Stblnum[] = 0; $str_tblnum = implode(',', $Stblnum); $Stblposn = array(); $Stblposn = explode(',', $row['tableposn']); array_shift($Stblposn); $Stblposn[] = 0; $str_tblposn = implode(',', $Stblposn); //-------------------- //update the database //-------------------- $sql = "UPDATE $tablePlayers SET partner='$str_part', posn='$str_posn', status='$str_stat', prevstatus='$str_prev', seq='$str_seq', tablenum='$str_tblnum', tableposn='$str_tblposn' WHERE pid = $pid"; $rc = mysqli_query($dbConn, $sql); if($rc === FALSE) { $err = mysqli_error($dbConn); MyUnlockTables($dbConn); $strLog = "\nMyRollover: Cannot rollover $tablePlayers $err"; WriteToErrorLog($strLog, 'data'); return 1; } } // free result set mysqli_free_result($result); MyUnlockTables($dbConn); if($fullro > 0) { //--------------------------------- //pop the Tables file (tables.ser) //--------------------------------- if(file_exists($TablesFileName)) { $Tables = unserialize(file_get_contents($TablesFileName)); if($Tables) { ksort($Tables); array_shift($Tables); $Tables[2][0]['table'] = -1; file_put_contents($TablesFileName, serialize($Tables)); } } //--------------------------------------- //remove the tables csv file (tables.csv) //--------------------------------------- if(file_exists($TablesCsvFileName)) { //fclose($TablesCsvFileName); unlink($TablesCsvFileName); } } return intval($jdStart); } //====================================================================================== function MyChgDaysUsed($newDaysUsed, $daysDisplayed) { //add and remove days of a week //====================================================================================== global $Players; global $Status; global $Systemdata; global $SUSNoDays; //number of days displayed global $SUSNoStatus; //number of days of data in an entry global $SUSDaysUsed; //array of days used in a week (smtwtfs) 0=>not used 1=>used $tablePlayers = $_SESSION['mysqlPlayers']; $tableSystemdata = $_SESSION['mysqlSystemdata']; $DayName = array("Su ","M ","Tu ","W ","Th ","F ","Sa "); $NumDB= MyGetPlayerInfo(); $dbConn = MyLockTables($tablePlayers, $tableSystemdata); $jdstart = $Systemdata['jdstart']; $date = $Systemdata['date']; $day = $Systemdata['day']; //------------------------------------------------------------------------ //------------------------------ //Generate the systemdata table //------------------------------ $Zero = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"; //jdstart, date and dayname $j = explode($Zero); $d = explode($Zero); $n = explode($Zero); $jd = $jdstart[0]; $days = 0; $dow = (jddayofweek($jd,0)); // echo "
-------------------"; while($days < $daysDisplayed) { //for each day of play $dow = (jddayofweek($jd,0)); if($newDaysUsed[$dow] == 0) { //day not day of play $jd++; continue; } $md = jdtogregorian($jd); // returns month/day/year $md = substr($md,0,strrpos($md,"/")); //get month/day $j[$days] = $jd; $d[$days] = $md; $dn = $DayName[$dow]; $n[$days] = $dn; $days++; $jd++; } $v1 = implode(',', $j); $v2 = implode(',', $d); $v3 = implode(',', $n); $highseq = $Systemdata['highseq']; $signupblock = $Systemdata['signupblock']; $JulDay = $jdstart[0]; $oldDU = $SUSDaysUsed; $newDU = $newDaysUsed; //---------------------------- //align the days used to today //---------------------------- $ndxDOW = jddayofweek($JulDay); //smtwtfs (0=sun, 1=mon, ...) //------------------------------------------------- //init new $Status arrays //------------------------------------------------- $newStatus[][] = array(); $newHS = array(); $newSB = array(); //--------------------------------------- //build new $Status arrays //--------------------------------------- for($p=0; $p<$NumDB; $p++) //for all status entries { $pid = $Status[$p][0]['pid']; //pid for current player $dow = $ndxDOW; //day of the week index $src = 0; $d = 0; while($d<$SUSNoStatus) //for each day in a status entry { if($d >= $daysDisplayed) { $highseq[$d] = 0; $signupblock[$d] = 0; $newStatus[$p][$d]['pid'] = $pid; $newStatus[$p][$d]['partner'] = 0; $newStatus[$p][$d]['posn'] = 0; $newStatus[$p][$d]['status'] = 'O'; $newStatus[$p][$d]['prevstatus'] = 'O'; $newStatus[$p][$d]['seq'] = 0; $newStatus[$p][$d]['table'] = 0; $newStatus[$p][$d]['tableposn'] = 0; $d++; continue; } if($src >= $SUSNoStatus) $src = $SUSNoStatus - 1; //----------------------------------------------- //cycle thru the days used arrays to determine //the action required //----------------------------------------------- // $action == 0 =>skip the day (day not used) // == 1 =>add as new day // == 2 =>keep as retained day // == 3 =>remove //----------------------------------------------- $action = 0; while($action == 0) //proceed thru arrays while nothing to do { if($oldDU[$dow] == 0) { if($newDU[$dow] == 0) { $action = 0; //old==0 new==0 (skip) $dow++; if($dow > 6) $dow = 0; } else { $action = 1; //old==0 new==1 (add) } } else { if($newDU[$dow] == 0) { $action = 3; //old==1 new==0 (remove) } else { $action = 2; //old==1 new==1 (keep) } } } switch ($action) { case 1: //add if($p == 0) { $newHS[$d] = 0; $newSB[$d] = 0; } //if($p == 0) { echo "$d,";} $newStatus[$p][$d]['pid'] = $pid; $newStatus[$p][$d]['partner'] = 0; $newStatus[$p][$d]['posn'] = 0; $newStatus[$p][$d]['status'] = 'O'; $newStatus[$p][$d]['prevstatus'] = 'O'; $newStatus[$p][$d]['seq'] = 0; $newStatus[$p][$d]['table'] = 0; $newStatus[$p][$d]['tableposn'] = 0; $d++; break; case 2: //keep if($p == 0) { $newHS[$d] = $highseq[$src]; $newSB[$d] = $signupblock[$src]; } $newStatus[$p][$d]['pid'] = $Status[$p][$src]['pid']; $newStatus[$p][$d]['partner'] = $Status[$p][$src]['partner']; $newStatus[$p][$d]['posn'] = $Status[$p][$src]['posn']; $newStatus[$p][$d]['status'] = $Status[$p][$src]['status']; $newStatus[$p][$d]['prevstatus'] = $Status[$p][$src]['prevstatus']; $newStatus[$p][$d]['seq'] = $Status[$p][$src]['seq']; $newStatus[$p][$d]['table'] = $Status[$p][$src]['table']; $newStatus[$p][$d]['tableposn'] = $Status[$p][$src]['tableposn']; $src++; $d++; break; case 3: //remove $src++; break; } $dow++; if($dow > 6) $dow = 0; } } //------------------------------------------------- //update $Status array //------------------------------------------------- $Status[][] = array(); $SUSNoDays = $daysDisplayed; $SUSDaysUsed = $newDU; for($p=0; $p<$NumDB; $p++) //for all status entries { for($d=0; $d<$SUSNoStatus; $d++) //for all status entries { $Status[$p][$d]['pid'] = $newStatus[$p][$d]['pid']; $Status[$p][$d]['partner'] = $newStatus[$p][$d]['partner']; $Status[$p][$d]['posn'] = $newStatus[$p][$d]['posn']; $Status[$p][$d]['status'] = $newStatus[$p][$d]['status']; $Status[$p][$d]['prevstatus'] = $newStatus[$p][$d]['prevstatus']; $Status[$p][$d]['seq'] = $newStatus[$p][$d]['seq']; $Status[$p][$d]['table'] = $newStatus[$p][$d]['table']; $Status[$p][$d]['tableposn'] = $newStatus[$p][$d]['tableposn']; } } //---------------------- //update the systemdata //---------------------- $str_high = implode(',', $newHS); $str_blk = implode(',', $newSB); $sql = "UPDATE $tableSystemdata SET jdstart='$v1', date='$v2', day='$v3', highseq='$str_high', signupblock='$str_blk' WHERE row = 1"; $rc = mysqli_query($dbConn, $sql); if($rc === FALSE) { $err = mysqli_error($dbConn); MyUnlockTables($dbConn); $strLog = "\nMyChgDaysUsed: Cannot update $tableSystemdata ($err)"; WriteToErrorLog($strLog, 'data'); return 1; } // free result set mysqli_free_result($result); for($p=0; $p<$NumDB; $p++) //for all status entries { $v1 = $Status[$p][0]['pid']; //-------------------------------- //Format status info for database //-------------------------------- $t2 = array(); $t3 = array(); $t4 = array(); $t5 = array(); $t6 = array(); $t7 = array(); $t8 = array(); for($d=0; $d<$SUSNoStatus; $d++) { $t2[] = $Status[$p][$d]['partner']; $t3[] = $Status[$p][$d]['posn']; $t4[] = $Status[$p][$d]['status']; $t5[] = $Status[$p][$d]['prevstatus']; $t6[] = $Status[$p][$d]['seq']; $t7[] = $Status[$p][$d]['table']; $t8[] = $Status[$p][$d]['tableposn']; } $v2 = implode(',', $t2); $v3 = implode(',', $t3); $v4 = implode(',', $t4); $v5 = implode(',', $t5); $v6 = implode(',', $t6); $v7 = implode(',', $t7); $v8 = implode(',', $t8); $v9 = time(); //-------------------- //update the database //-------------------- $lastmod = time(); $sql = "UPDATE $tablePlayers SET partner='$v2', posn='$v3', status='$v4', prevstatus='$v5', seq='$v6', tablenum='$v7', tableposn='$v8', last_modified='$v9' where pid = $v1"; $rc = mysqli_query($dbConn, $sql); if($rc === FALSE) { $err = mysqli_error($dbConn); echo "
Cannot update player status for $v1: $err"; continue; } } MyUnlockTables($dbConn); //WriteCfgFile(); MyGetPlayerInfo(); return 0; } //====================================================================================== function MyZeroJDStart() { //====================================================================================== global $SUSNoDays; $tablePlayers = $_SESSION['mysqlPlayers']; $tableSystemdata = $_SESSION['mysqlSystemdata']; $j = array(); $d = array(); $n = array(); $dbConn = MyLockTables($tableSystemdata); for($i=0; $i<$SUSNoDays; $i++) { $j[$i] = '0'; $d[$i] = '0'; $n[$i] = '0'; $Systemdata['jdstart'][$i] = 0; $Systemdata['date'][$i] = '0'; $Systemdata['day'][$i] = '0'; } $v1 = implode(',', $j); $v2 = implode(',', $d); $v3 = implode(',', $n); //-------------------- //update the database //-------------------- $sql = "UPDATE $tableSystemdata SET jdstart='$v1', date='$v2', day='$v3' WHERE row = 1"; $rc = mysqli_query($dbConn, $sql); if($rc === FALSE) { $err = mysqli_error($dbConn); MyUnlockTables($dbConn); $strLog = "\nMyZeroJDStart: Cannot fill jdstart in $tableSystemdata ($err)"; WriteToErrorLog($strLog, 'data'); return "Cannot fill jdstart in $tableSystemdata ($err)"; } MyUnlockTables($dbConn); return 'Zero jdStart completed'; } //====================================================================================== function MyFillJDStart() { //====================================================================================== global $SUSNoDays; global $SUSDaysUsed; global $Systemdata; $tablePlayers = $_SESSION['mysqlPlayers']; $tableSystemdata = $_SESSION['mysqlSystemdata']; $DayName = array("Su ","M ","Tu ","W ","Th ","F ","Sa "); $j = array(); $d = array(); $n = array(); $dbConn = MyLockTables($tableSystemdata); $jdToday = cal_to_jd(CAL_GREGORIAN,date("m"),date("d"),date("Y")); $jd = $jdToday; $days = 0; // echo "
-------------------"; while($days < $SUSNoDays) { //for each day of play $dow = (jddayofweek($jd,0)); //day of week (0=Sunday) if($SUSDaysUsed[$dow] == 0) { //day not day of play $jd++; continue; } $md = jdtogregorian($jd); // returns month/day/year $md = substr($md,0,strrpos($md,"/")); //get month/day $j[$days] = $jd; $d[$days] = $md; $dn = $DayName[$dow]; $n[$days] = $dn; $days++; $jd++; } $jdStart = $j[0]; //jd number of next day of play for($i=0; $i<$SUSNoDays; $i++) { $Systemdata['jdstart'][$i] = $j[$i]; $Systemdata['date'][$i] = $d[$i]; $Systemdata['day'][$i] = $n[$i]; } $v1 = implode(',', $j); $v2 = implode(',', $d); $v3 = implode(',', $n); //-------------------- //update the database //-------------------- $sql = "UPDATE $tableSystemdata SET jdstart='$v1', date='$v2', day='$v3' WHERE row = 1"; $rc = mysqli_query($dbConn, $sql); if($rc === FALSE) { $err = mysqli_error($dbConn); MyUnlockTables($dbConn); $strLog = "\nMyFillJDStart: Cannot fill jdstart in $tableSystemdata ($err)"; WriteToErrorLog($strLog, 'data'); return "Cannot fill jdstart in $tableSystemdata ($err)"; } MyUnlockTables($dbConn); return $jdStart; } //====================================================================================== function MyClearStatusDB() { //====================================================================================== $tablePlayers = $_SESSION['mysqlPlayers']; $tableSystemdata = $_SESSION['mysqlSystemdata']; $Zero = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"; $Open = "O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O"; $dbConn = MyLockTables($tablePlayers); //----------------------- //Get player information //----------------------- $sql = "SELECT * FROM $tablePlayers"; $result = mysqli_query($dbConn, $sql); $numrows = $result->num_rows; if($numrows <= 0) { $err = mysqli_error($dbConn); MyUnlockTables($dbConn); $strLog = "\nMyClearStatusDB: Cannot select $tablePlayers - $err"; WriteToErrorLog($strLog, 'data'); return "MyClearStatusDB: Cannot select $tablePlayers - $err"; } //----------------------- //Generate players array //----------------------- while($row = $result->fetch_assoc()) { $pid = $row['pid']; //------------------------- //Reset the status info //------------------------- $str_part = $Zero; $str_posn = $Zero; $str_stat = $Open; $str_prev = $Open; $str_seq = $Zero; $str_tblnum = $Zero; $str_tblposn = $Zero; //-------------------- //update the database //-------------------- $sql = "UPDATE $tablePlayers SET partner='$str_part', posn='$str_posn', status='$str_stat', prevstatus='$str_prev', seq='$str_seq', tablenum='$str_tblnum', tableposn='$str_tblposn' WHERE pid = $pid"; $rc = mysqli_query($dbConn, $sql); if($rc === FALSE) { $err = mysqli_error($dbConn); MyUnlockTables($dbConn); $strLog = "\nMyClearStatusDB: Cannot clear status: $err"; WriteToErrorLog($strLog, 'data'); return "MyClearStatusDB: Cannot clear status: $err"; } } // free result set mysqli_free_result($result); MyUnlockTables($dbConn); Return "Clear status completed"; } //================================================================================= function MyRepairHighseqDB() { //================================================================================= global $SUSNoStatus; $tablePlayers = $_SESSION['mysqlPlayers']; $tableSystemdata = $_SESSION['mysqlSystemdata']; $HS = array(); for($i=0; $i<$SUSNoStatus; $i++) $HS[$i] = 0; $dbConn = MyLockTables($tablePlayers, $tableSystemdata); //----------------------- //Get player information //----------------------- $sql = "SELECT * FROM $tablePlayers"; $result = mysqli_query($dbConn, $sql); $numrows = $result->num_rows; if($numrows <= 0) { $err = mysqli_error($dbConn); MyUnlockTables($dbConn); $strLog = "\nMyRepairHighseqDB: Cannot select $tablePlayers - $err"; WriteToErrorLog($strLog, 'data'); return "MyRepairHighseqDB: Cannot select $tablePlayers - $err"; } //----------------------- //Generate high seq array //----------------------- while($row = $result->fetch_assoc()) { $high = explode(',', $row['seq']); for($i=0; $i<$SUSNoStatus; $i++) { if($high[$i] > $HS[$i]) $HS[$i] = $high[$i]; } } // free result set mysqli_free_result($result); //----------------------- //Get system data //----------------------- $sql = "SELECT * FROM $tableSystemdata"; $result = mysqli_query($dbConn, $sql); $numrows = $result->num_rows; if($numrows != 1) { $err = mysqli_error($dbConn); MyUnlockTables($dbConn); $strLog = "\nMyRepairHighseqDB: Cannot get $tableSystemdata - $err"; WriteToErrorLog($strLog, 'data'); return "MyRepairHighseqDB: Cannot get $tableSystemdata - $err"; } //-------------------- //update the database //-------------------- $high = implode(',', $HS); $sql = "UPDATE $tableSystemdata SET highseq='$high' WHERE row = 1"; $rc = mysqli_query($dbConn, $sql); if($rc === FALSE) { $err = mysqli_error($dbConn); MyUnlockTables($dbConn); $strLog = "\nMyRepairHighseqDB: Cannot update $tableSystemdata - $err"; WriteToErrorLog($strLog, 'data'); return "MyRepairHighseqDB: Cannot update $tableSystemdata - $err"; } // free result set mysqli_free_result($result); return "Highseq DB repaired"; } //================================================================================= function MyResetPType() { //================================================================================= global $SUSNoStatus; $tablePlayers = $_SESSION['mysqlPlayers']; $tableSystemdata = $_SESSION['mysqlSystemdata']; $dbConn = MyLockTables($tablePlayers); //----------------------- //Get player information //----------------------- $sql = "SELECT * FROM $tablePlayers"; $result = mysqli_query($dbConn, $sql); $numrows = $result->num_rows; if($numrows <= 0) { $err = mysqli_error($dbConn); MyUnlockTables($dbConn); $strLog = "\nMyResetPType: Cannot select $tablePlayers - $err"; WriteToErrorLog($strLog, 'data'); return "MyResetPType: Cannot select $tablePlayers - $err"; } while($row = $result->fetch_assoc()) { $pid = $row['pid']; $ptype = $row['ptype']; //------------------------ //Change ptype to defaults //------------------------ if($ptype == 10) { $ptype = 0; } if($ptype == 11) { $ptype = 1; } //-------------------- //update the database //-------------------- $sql = "UPDATE $tablePlayers SET ptype=$ptype WHERE pid = $pid"; $rc = mysqli_query($dbConn, $sql); if($rc === FALSE) { $err = mysqli_error($dbConn); MyUnlockTables($dbConn); $strLog = "\nMyResetPType: Cannot reset ptype: $err"; WriteToErrorLog($strLog, 'data'); return "MyResetPType: Cannot reset ptype: $err"; } } // free result set mysqli_free_result($result); MyUnlockTables($dbConn); return "PType reset completed"; } //================================================================================= function MyBackupDB($daynumber) //================================================================================= { $tablePlayers = $_SESSION['mysqlPlayers']; $tableSystemdata = $_SESSION['mysqlSystemdata']; //backup files location = ../dbasefiles/sheetid_bkup/sheetid#/* //where # is the day of the week (0 <= # <= 6) 0=Sunday //susname = "tcbc" $buDir = $_SESSION['susname'] . $daynumber; //path_buloc = "../dbasefiles/tcbc_bkup" $buLoc = $_SESSION['path_buloc']; //buDir = "../dbasefiles/tcbc_bkup/tcbc#" $buPath = $buLoc . '/' . $buDir; //path_dbloc = "../dbasefiles/tcbc" $workingDir = $_SESSION['path_dbloc']; if(!file_exists($buLoc)) { mkdir($buLoc); //make the backup directory } if(file_exists($buPath)) { RemoveDir($buPath); //remove previous backup } mkdir($buPath); //make directory for new backup $rc = LockPlayerFiles(1); CopyDir($workingDir, $buPath); //copy files into backup directory $rc = LockPlayerFiles(0); //--------------------- //Create backup object //--------------------- $BackupObj = new DBTables; //add current julian date $jdToday = cal_to_jd(CAL_GREGORIAN,date("m"),date("d"),date("Y")); $BackupObj->jddate = $jdToday; $dbConn = MyLockTables($tablePlayers, $tableSystemdata, 'READ'); //----------------------- //Get system data //----------------------- $sql = "SELECT * FROM $tableSystemdata"; $result = mysqli_query($dbConn, $sql); $numrows = $result->num_rows; if($numrows != 1) { $err = mysqli_error($dbConn); MyUnlockTables($dbConn); $strLog = "\nMyBackupDB: Cannot select $tableSystemdata: $err"; WriteToErrorLog($strLog, 'data'); return "MyBackupDB: Cannot select $tableSystemdata: $err"; } //add systemdata to backup object $row = $result->fetch_assoc(); $BackupObj->systemdata = $row; //add field names $cnt = mysqli_field_count($dbConn); $foo = array(); for($i=0; $i<$cnt; $i++) { $prop = mysqli_fetch_field_direct($result, $i); $foo[] = $prop->name; } $BackupObj->sdatafields = implode(',', $foo); $BackupObj->sdatacount = $cnt; // free result set mysqli_free_result($result); //----------------------- //Get player information //----------------------- $sql = "SELECT * FROM $tablePlayers"; $result = mysqli_query($dbConn, $sql); $numrows = $result->num_rows; if($numrows <= 0) { $err = mysqli_error($dbConn); MyUnlockTables($dbConn); $strLog = "\nMyBackupDB: Cannot select $tablePlayers: $err"; WriteToErrorLog($strLog, 'data'); return "MyBackupDB: Cannot select $tablePlayers: $err"; } //add number of players $BackupObj->num_players[] = $numrows; //add field names $cnt = mysqli_field_count($dbConn); $foo = array(); for($i=0; $i<$cnt; $i++) { $prop = mysqli_fetch_field_direct($result, $i); $foo[] = $prop->name; } $BackupObj->playfields = implode(',', $foo); $BackupObj->playcount = $cnt; //add data rows while($row = $result->fetch_assoc()) { $BackupObj->players[] = $row; } // free result set mysqli_free_result($result); // ------------------------------------- // Serialize and write the backup object // ------------------------------------- $path = $buPath . "/dbtables"; $rc = file_put_contents($path, serialize($BackupObj)); if($rc === FALSE) { return "MyBackupDB: Cannot write $path"; } unset($BackupObj); //free memory to GC return "MyBackupDB: Backed up to $path"; } //================================================================================= function MyRestoreDB($filename) //================================================================================= { $tablePlayers = $_SESSION['mysqlPlayers']; $tableSystemdata = $_SESSION['mysqlSystemdata']; //backup files location = ../dbasefiles/sheetid_bkup/sheetid#/* //where # is the day of the week (0 <= # <= 6) 0=Sunday //susname = sheetid = "tcbc" //path_buloc = "../dbasefiles/tcbc_bkup" $buDir = $_SESSION['path_buloc']; //buPath = "../dbasefiles/tcbc_bkup/tcbc#" $buPath = $buDir . '/' . $filename; //path_dbloc = "../dbasefiles/tcbc" $workingDir = $_SESSION['path_dbloc']; $rc = LockPlayerFiles(1); if(file_exists($workingDir)) { RemoveDir($workingDir); //remove previous working directory } mkdir($workingDir); //make new working directory CopyDir($buPath, $workingDir); //copy files into working directory $path = $workingDir . '/dbtables'; //remove dbtables file from working dir unlink($path); // ------------------------------------- // Unserialize and create backup object // ------------------------------------- $path = $buPath . '/dbtables'; $RestObj = unserialize(file_get_contents($path)); if($RestObj === FALSE) { return "MyRestoreDB: Cannot get $path"; } //----------------------- //clear systemdata table //----------------------- $dbConn = dbConnect(); $sql = "TRUNCATE TABLE $tableSystemdata"; $result = mysqli_query($dbConn, $sql); if($result === FALSE) { $err = mysqli_error($dbConn); $strLog = "\nMyRestoreDB: Cannot truncate $tableSystemdata - $err"; WriteToErrorLog($strLog, 'data'); return "MyRestoreDB: Cannot truncate $tableSystemdata - $err"; } //------------------------- //Restore systemdata table //------------------------- $vars = $RestObj->sdatafields; $f = explode(",", $vars); $numFlds = $RestObj->sdatacount; for($i=0; $i<$numFlds; $i++) { if($i == 0) { $values = '"'; } else { $values .= '","'; } $values .= $RestObj->systemdata[$f[$i]]; } $values .= '"'; $sql = "INSERT INTO $tableSystemdata ($vars) VALUES ($values)"; $rc = mysqli_query($dbConn, $sql); if($rc === FALSE) { $err = mysqli_error($dbConn); MyUnlockTables($dbConn); $strLog = "\nMyRestoreDB: Cannot insert $tableSystemdata - $err"; WriteToErrorLog($strLog, 'data'); return "MyRestoreDB: Cannot insert $tableSystemdata - $err"; } //----------------------- //clear players table //----------------------- $dbConn = dbConnect(); $sql = "TRUNCATE TABLE $tablePlayers"; $result = mysqli_query($dbConn, $sql); if($result === FALSE) { $err = mysqli_error($dbConn); $strLog = "\nMyRestoreDB: Cannot truncate $tablePlayers - $err"; WriteToErrorLog($strLog, 'data'); return "MyRestoreDB: Cannot truncate $tablePlayers - $err"; } mysqli_close($dbConn); $dbConn = MyLockTables($tablePlayers, $tableSystemdata); //------------------------- //Restore players table //------------------------- $vars = $RestObj->playfields; $f = explode(",", $vars); $numFlds = $RestObj->playcount; foreach($RestObj->players as $row) { for($i=0; $i<$numFlds; $i++) { if($i == 0) { $values = '"'; } else { $values .= '","'; } $values .= $row[$f[$i]]; } $values .= '"'; $sql = "INSERT INTO $tablePlayers ($vars) VALUES ($values)"; $rc = mysqli_query($dbConn, $sql); if($rc === FALSE) { $err = mysqli_error($dbConn); MyUnlockTables($dbConn); $strLog = "\nMyRestoreDB: Cannot insert $tablePlayers - $err"; WriteToErrorLog($strLog, 'data'); return "MyRestoreDB: Cannot insert $tablePlayers - $err"; } } MyUnlockTables($dbConn); MyGetPlayerInfo(); return "Restored from $buPath"; } //================================================================================= function MyImportV1DB() { //================================================================================= global $Players; global $Status; global $SUSDBName; global $SUSNoDays; global $SUSNoStatus; global $SUSDaysUsed; global $DBFilesLocation; global $dbConn; $tablePlayers = $_SESSION['mysqlPlayers']; $tableSystemdata = $_SESSION['mysqlSystemdata']; $DayName = array("Su ","M ","Tu ","W ","Th ","F ","Sa "); $NumDBPlayers = ReadPlayerFiles(-1); //--------------------------------------------------------------- //Special Action ... //generate MySQL database tables from old form database //--------------------------------------------------------------- // ------------------------------------- // Sort the player info by pid // ------------------------------------- $rowName = array(); // create array of player pids in column form for($i=0; $i<$NumDBPlayers; $i++) { $rowName[$i] = $Players[$i]['pid']; } // sort the names and reorder players array accordingly array_multisort($rowName, SORT_ASC, $Players); // ------------------------------------- // Sort the status info by pid // ------------------------------------- $rowName = array(); // create array of player pids in column form for($i=0; $i<$NumDBPlayers+1; $i++) { $rowName[$i] = $Status[$i][0]['pid']; } // sort the names and reorder players array accordingly array_multisort($rowName, SORT_ASC, $Status); //----------------------- //clear players table //----------------------- $dbConn = dbConnect(); $sql = "TRUNCATE TABLE $tablePlayers"; $result = mysqli_query($dbConn, $sql); if($result === FALSE) { $err = mysqli_error($dbConn); $strLog = "\nMyImportV1DB: Cannot truncate $tablePlayers - $err"; WriteToErrorLog($strLog, 'data'); return "MyImportV1DB: Cannot truncate $tablePlayers - $err"; } //----------------------- //clear systemdata table //----------------------- $sql = "TRUNCATE TABLE $tableSystemdata"; $result = mysqli_query($dbConn, $sql); if($result === FALSE) { $err = mysqli_error($dbConn); $strLog = "\nMyImportV1DB: Cannot truncate $tableSystemdata - $err"; WriteToErrorLog($strLog, 'data'); return "MyImportV1DB: Cannot truncate $tableSystemdata - $err"; } mysqli_close($dbConn); $dbConn = MyLockTables($tablePlayers, $tableSystemdata); // ------------------------------ // Generate pid conversion array // ------------------------------ $ppid = array(); //pid conversion array $ppid[0] = 0; $jds = 0; for($i=0; $i<$NumDBPlayers; $i++) { //$ppid[$i+1] = $Players[$i]['pid']; $ppid[] = $Players[$i]['pid']; if($jds == 0 && $Players[$i]['jdstart'] > 0) $jds = $Players[$i]['jdstart']; } $cnt = count($ppid); // ------------------------------------- // Generate the players table // ------------------------------------- $lastmod = time(); for($i=0; $i<$NumDBPlayers; $i++) { $v1 = $i+1; $v2 = $Players[$i]['super']; $v3 = $Players[$i]['name']; //$v4 = $Players[$i]['username']; $v4 = ""; $v5 = $Players[$i]['login']; $v6 = $Players[$i]['phone']; $v7 = $Players[$i]['mobile']; $v8 = $Players[$i]['ptype']; $v9 = $Players[$i]['email']; $v10 = $Players[$i]['notify']; $v11 = $Players[$i]['contact']; $v12 = $Players[$i]['playerid']; $v13 = $Players[$i]['masterpts']; if(strlen($v13) == 0) $v13 = 0; $pid = $Players[$i]['pid']; $s = StatusIndex($pid); if($s < 0) { echo "
Cannot get status index for pid = $pid"; exit; } //$s = $i + 1; //convert pids $part = $Status[$s][0]['partner']; if($part != 0) { for($j=1; $j<$cnt; $j++) { if($ppid[$j] == $part) { $part = $j; } } } $s2 = $part; $s3 = $Status[$s][0]['posn']; $s4 = $Status[$s][0]['status']; $s5 = $Status[$s][0]['prevstatus']; $s6 = $Status[$s][0]['seq']; $s7 = $Status[$s][0]['table']; $s8 = $Status[$s][0]['tableposn']; for($d=1; $d<$SUSNoStatus; $d++) { //convert pids $part = $Status[$s][$d]['partner']; if($part != 0) { for($j=1; $j<$cnt; $j++) { if($ppid[$j] == $part) { $part = $j; } } } $s2 .= ',' . $part; $s3 .= ',' . $Status[$s][$d]['posn']; $s4 .= ',' . $Status[$s][$d]['status']; $s5 .= ',' . $Status[$s][$d]['prevstatus']; $s6 .= ',' . $Status[$s][$d]['seq']; $s7 .= ',' . $Status[$s][$d]['table']; $s8 .= ',' . $Status[$s][$d]['tableposn']; } //Generate player's username if(strlen(strstr($v3, "Guest")) > 0) { $v4 = ""; //Guests don't have usernames } else { $foo = explode(',', $v3); $foocnt = count($foo); $u = 0; foreach($foo as $str) { trim($foo[$u]); $foo[$u++] = preg_replace("/[^-\w]/", "", $str); } if($foocnt > 1) { $v4 = $foo[1] . $foo[0]; //$v4 = FirstLast } else { $v4 = $foo[0]; //$v4 = FirstLast } if(strlen($v4) > 20) //make username lenght 20 or less { $v4 = substr($v4, 0, 20); } $u = 0; $foo = $v4; while(TRUE) //check if username already used { $sql = "SELECT * FROM $tablePlayers WHERE username = \"$foo\""; $result = mysqli_query($dbConn, $sql); $numrows = $result->num_rows; if($numrows > 0) { if(strlen($v4) > 18) { $v4 = substr($v4, 0, 18); } $foo = $v4 . "_$u"; //if used add _# $u++; } else { // free result set mysqli_free_result($result); break; } // free result set mysqli_free_result($result); } $v4 = $foo; } //insert player info into players table $sql = "INSERT INTO $tablePlayers (pid, super, name, username, login, phone, mobile, ptype, email, notify, contact, playerid, masterpts, partner, posn, status, prevstatus, seq, tablenum, tableposn, last_modified) VALUES ($v1, $v2, \"$v3\", \"$v4\", '$v5', '$v6', '$v7', $v8, '$v9', $v10, $v11, '$v12', $v13, '$s2', '$s3', '$s4', '$s5', '$s6', '$s7', '$s8', $lastmod)"; $result = mysqli_query($dbConn, $sql); if($result === false) { $err = mysqli_error($dbConn); $strLog = "\nMyImportV1DB: Cannot insert player $v3 ($v1) error: $err"; WriteToErrorLog($strLog, 'data'); return "MyImportV1DB: Cannot insert player $v3 ($v1) error: $err"; } // free result set mysqli_free_result($result); } //------------------------------ //Generate the systemdata table //------------------------------ $Zero = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"; //jdstart, date and dayname $j = explode(',', $Zero); $d = explode(',', $Zero); $n = explode(',', $Zero); $jd = $jds; $days = 0; $jdStart = -1; //jd number of next day of play $dow = (jddayofweek($jd,0)); // echo "
-------------------"; while($days < $SUSNoDays) { //for each day of play $dow = (jddayofweek($jd,0)); if($SUSDaysUsed[$dow] == 0) { //day not day of play $jd++; continue; } $md = jdtogregorian($jd); // returns month/day/year $md = substr($md,0,strrpos($md,"/")); //get month/day $j[$days] = $jd; $d[$days] = $md; $dn = $DayName[$dow]; $n[$days] = $dn; $days++; $jd++; } $v1 = implode(',', $j); $v2 = implode(',', $d); $v3 = implode(',', $n); //highseq and blocks $v4 = $Status[0][0]['seq']; $v5 = $Status[0][0]['partner']; for($i=1; $i<$SUSNoStatus; $i++) { $v4 .= ',' . $Status[0][$i]['seq']; $v5 .= ',' . $Status[0][$i]['partner']; } $sql = "INSERT INTO $tableSystemdata (row, jdstart, date, day, highseq, signupblock) VALUES (1, '$v1', '$v2', '$v3', '$v4', '$v5')"; $result = mysqli_query($dbConn, $sql); if($result === false) { $err = mysqli_error($dbConn); $strLog = "\nMyImportV1DB: Cannot insert $tableSystemdata: error: $err"; WriteToErrorLog($strLog, 'data'); return "MyImportV1DB: Cannot insert $tableSystemdata: error: $err"; } // free result set mysqli_free_result($result); MyUnlockTables($dbConn); return "V1 DB import completed"; } //==================PHP End ======================================================== ?>