unset($user['chat']); } unset($user['olFrns']); $spv = shm_put_var($shmId, $key, $user); $sr = sem_release($semId); $sd = shm_detach($shmId); //$shr = shm_remove($shmId); $userStr = serialize($user); $f = fopen("{$_SERVER['DOCUMENT_ROOT']}/userFiles/" . $_SESSION['username'] . "/live.shm", 'r+'); $fw = fwrite($f, $userStr); $fc = fclose($f); } //close live tables if (isset($_SESSION['tables'])) { foreach ($_SESSION['tables'] as $tid => $value) { $liveDBTable = getLiveTable($tid); foreach ($liveDBTable['dbtUpdates'] as $key => &$update) { if ($update['data']['swallowedBy'][$_SESSION['uid']]) { unset($update['data']['swallowedBy'][$_SESSION['uid']]); } if (count($sdbtu['data']['swallowedBy']) == count($liveDBTable['usersData']) - 1) { unset($liveDBTable['dbtUpdates'][$key]); } } if ($liveDBTable['usersData'][$_SESSION['uid']] and count($liveDBTable['usersData']) == 1) { $liveDBTable = null; closeLiveTable($tid, $liveDBTable); removeLiveTable($tid); } else { unset($liveDBTable['usersData'][$_SESSION['uid']]); closeLiveTable($tid, $liveDBTable);
function updateLiveTable(&$liveDBTable, &$dbtUpdate, $updateOp) { $dbTable = $liveDBTable['name']; if ($dbtUpdate['op'] and $updateOp) { foreach ($dbtUpdate['op'] as $opid => $op) { if ($opid == 'renametableName') { $newName = $dbtUpdate['op']['renametableName']['newName']; removeLiveTable($dbTable); getLiveTable($newName); $liveDBTable['name'] = $newName; } elseif ($opid == 'renamecolName') { foreach ($dbtUpdate['op']['renamecolName'] as $colName => $newProps) { $newName = $newProps['newName']; foreach ($liveDBTable['cells']['tHR'] as $cid => $col) { if ($cid == $colName) { $tHR[$newName] = $col; $tHR[$newName]['Type'] = $newProps['Type']; $tHR[$newName]['Size'] = $newProps['Size']; $tHR[$newName]['Null'] = $newProps['Null']; $tHR[$newName]['Default'] = $newProps['Default']; //$tHR[$newName]['Key'] = $newProps['Key']; //$tHR[$newName]['Comment'] = $dbtUpdate['cells']['tHR'][$newName]['Comment']; //$tHR[$newName]['Extra'] = $dbtUpdate['cells']['tHR'][$newName]['Extra']; } else { $tHR[$cid] = $col; } } $liveDBTable['cells']['tHR'] =& $tHR; unset($row); foreach ($liveDBTable['cells'] as $rid => &$row) { if ($row[$colName] && $rid != 'tHR') { $row[$newName] =& $row[$colName]; unset($row[$colName]); } } } } elseif ($opid == 'delTable') { if ($op) { $liveDBTable = null; removeLiveTable($dbTable); } } elseif ($opid == 'delRow') { foreach ($dbtUpdate['op']['delRow'] as $rid => $info) { unset($liveDBTable['cells'][$rid]); } } elseif ($opid == 'updateFormula') { } elseif ($opid == 'delColumn') { $columnName = $dbtUpdate['op']['delColumn']['columnName']; foreach ($liveDBTable['cells'] as $rid => &$row) { unset($row[$columnName]); } } elseif ($opid == 'insColumn') { foreach ($dbtUpdate['op']['insColumn'] as $columnName => $value) { $cols = $liveDBTable['cells']['tHR']; $liveDBTable['cells']['tHR'] = array(); foreach ($cols as $colName => &$col) { $liveDBTable['cells']['tHR'][$colName] = $col; if ($colName == $value['after']) { $liveDBTable['cells']['tHR'][$columnName]['Type'] = $dbtUpdate['cells']['tHR'][$columnName]['Type']; $liveDBTable['cells']['tHR'][$columnName]['Size'] = $dbtUpdate['cells']['tHR'][$columnName]['Size']; $liveDBTable['cells']['tHR'][$columnName]['Null'] = $dbtUpdate['cells']['tHR'][$columnName]['Null']; $liveDBTable['cells']['tHR'][$columnName]['Default'] = $dbtUpdate['cells']['tHR'][$columnName]['Default']; $liveDBTable['cells']['tHR'][$columnName]['Key'] = $dbtUpdate['cells']['tHR'][$columnName]['Key']; //$liveDBTable['cells']['tHR'][$columnName]['Comment'] = $dbtUpdate['cells']['tHR'][$columnName]['Comment']; //$liveDBTable['cells']['tHR'][$columnName]['Extra'] = $dbtUpdate['cells']['tHR'][$columnName]['Extra']; } } } } } } foreach ($dbtUpdate['cells'] as $rid => &$row) { foreach ($row as $cid => &$cell) { foreach ($cell as $pid => $prop) { $liveDBTable['cells'][$rid][$cid][$pid] = $prop; } } } }
} elseif ($cQuery[strpos($cQuery, $filters[$i], $start) - 1] == '$' and $cQuery[strpos($cQuery, $filters[$i], $start) - 2] == '@' and !$sString) { $sString = $filters[$i]; $matchCase = true; } else { echo 'More than one filter of single type. ~&|~'; die; } $filterCount++; $start += strlen($filters[$i]); } /* $dbtKey = ftok("$root/dbTableData/$dbTable", 'c'); $dbtSemId = sem_get($dbtKey); $dbtShmId = shm_attach($dbtKey,1000000); $sa = sem_acquire($dbtSemId); $liveDBTable = shm_get_var($dbtShmId, $dbtKey); */ $liveDBTable = getLiveTable($dbTable); $cQuery = str_replace('CCZZCC', ':', str_replace('ZZCCZZ', '?', $cQuery)); if (!$liveDBTable) { $liveDBTable['liveD'] = FALSE; $query = "SHOW FULL COLUMNS FROM `" . $dbTable . "`"; $result = mysql_query($query, $dbc); $error1 = mysql_error($dbc); if ($error1 and authorizeTransit($_SESSION['adminLevel'], 'Zz0')) { require '../adminScripts/db_login.php'; $query = "SHOW FULL COLUMNS FROM `" . $dbTable . "`"; $result = mysql_query($query, $dbc); $error1 = mysql_error($dbc) ? TRUE : FALSE; if (!$error1) { $liveDBTable['adminTable'] = $adminTable = true; } }