0 ? " checked" : ''; $bacChecked = $backup > 0 ? " checked" : ''; $resChecked = $restore > 0 ? " checked" : ''; $evtChecked = $events > 0 ? " checked" : ''; $delChecked = $delEvt > 0 ? " checked" : ''; $undChecked = !$delEvt > 0 ? " checked" : ''; echo "
\n {$ax['mdb_dbm_functions']}\n




    

:         \n
      {$ax['mdb_between_dates']}: 📅 📅
\n \n
\n"; } function processFunctions() { global $ax, $compact, $backup, $restore, $events, $delEvt, $fromD, $tillD, $lcI; $fName = false; if ($compact) { compactDb(); } if ($backup) { $fName = backupTables(); } if ($restore) { restoreTables(); } if ($events) { delEvents($delEvt, $fromD, $tillD); } echo "
\n"; if ($fName) { echo "    \n"; } echo "
\n"; } /* Compact database */ function compactDb() { global $ax, $dbType; echo "
{$ax['mdb_compact']}\n"; $deleteDT = date('Y-m-d H:i', time() - 86400*30); //remove if deleted more than 30 days ago //remove deleted events from db $stH = dbQuery("DELETE FROM `events` WHERE `status` = -1 and `mDateTime` <= '{$deleteDT}'"); echo "{$ax['mdb_purge_done']}.
\n"; if ($dbType == 'SQLite') { //SQLite db $stH = dbQuery("VACUUM"); } else { //MySQL db $stH = dbQuery('OPTIMIZE TABLE `'.implode('`,`',getTables()).'`'); } if ($stH) { echo "{$ax['mdb_compact_done']}.
\n"; } else { echo "{$ax['mdb_compact_error']}.
\n"; } echo "
\n"; } /* Backup db tables*/ function backupTables() { global $ax, $calID, $set, $lcV; echo "
{$ax['mdb_backup']}\n"; //get table names $tables = getTables(); if (empty($tables)) { echo "{$ax['mdb_noshow_tables']}\n"; $result = false; } else { $sqlFile = backupDatabase($tables,true); //create backup file //save .sql dump file $fName = "./files/{$calID}-dump-".date('Ymd-His').'.sql'; echo "
{$ax['mdb_file_name']}: {$fName}
\n"; if (file_put_contents($fName, $sqlFile) !== false) { echo "{$ax['mdb_file_saved']}
\n"; $result = basename($fName); } else { echo "

{$ax['mdb_write_error']}
\n"; $result = false; } } echo "
\n"; return $result; } /* Restore db tables */ function restoreTables() { global $ax, $calID, $lcV, $dbType; echo "
{$ax['mdb_restore']}\n"; do { if (empty($_FILES['fName']['tmp_name'])) { echo "{$ax['mdb_noshow_restore']}\n"; break; //abort restore } if (substr($_FILES['fName']['name'],-4) != '.sql') { echo "{$ax['mdb_file_not_sql']}\n"; break; //abort restore } $buFile = $_FILES['fName']['tmp_name']; //get backup file name //Read SQL queries from $buFile $sqlArray = file($buFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); unlink($buFile); //check version of backup file foreach ($sqlArray as $qLine) { //search 1st comment block if ($qLine[0] != '-' or preg_match('~LuxCal version:\s*(\d.\d)~i',$qLine,$matches)) { break; } } if (!empty($matches) and $matches[1] != substr($lcV,0,3)) { //version found but not matching echo "{$ax['mdb_no_bup_match']}
\n"; break; //abort restore } echo "{$ax['mdb_backup_file']}: '{$_FILES['fName']['name']}'

"; $count = importSqlFile($sqlArray); //import SQL file upgradeDb(); //recreate db schema echo "{$ax['mdb_restore_table']} 'events' - {$count['eve']} {$ax['mdb_inserted']}
{$ax['mdb_restore_table']} 'users' - {$count['use']} {$ax['mdb_inserted']}
{$ax['mdb_restore_table']} 'groups' - {$count['gro']} {$ax['mdb_inserted']}
{$ax['mdb_restore_table']} 'categories' - {$count['cat']} {$ax['mdb_inserted']}
{$ax['mdb_restore_table']} 'settings' - {$count['set']} {$ax['mdb_inserted']}
{$ax['mdb_restore_table']} 'styles' - {$count['sty']} {$ax['mdb_inserted']}
\n"; if ($count['cat'] > 0 and $count['use'] > 0 and $count['gro'] > 0 and $count['set'] > 0 and $count['sty'] > 0) { echo "
{$ax['mdb_db_restored']}
\n"; } } while (0); //end of: restore tables echo "
\n"; } /* (Un)delete events */ function delEvents($delEvt, $fromD, $tillD) { global $ax; $where = $delEvt ? "WHERE `status` >= 0 " : "WHERE `status` = -1 "; if ($fromD) { $where .= " AND `sDate` >= '$fromD'"; } if ($tillD) { $where .= " AND (CASE WHEN `rType` > 0 THEN `rUntil` ELSE CASE WHEN `eDate` LIKE '9%' THEN `sDate` ELSE `eDate` END END <= '$tillD')"; } if ($delEvt) { $stH = dbQuery("UPDATE `events` SET `status` = -1, `mDateTime` = '".date("Y-m-d H:i")."' $where"); //delete } else { $stH = dbQuery("UPDATE `events` SET `status` = 0, `mDateTime` = '".date("Y-m-d H:i")."' $where"); //undelete } $nrAffected = $stH->rowCount(); echo "
{$ax['mdb_events']}\n"; echo ($delEvt ? $ax['mdb_deleted'] : $ax['mdb_undeleted']).": {$nrAffected}"; echo "
\n"; } //init $msg = ''; $compact = empty($_POST["compact"]) ? 0 : 1; $backup = empty($_POST["backup"]) ? 0 : 1; $restore = empty($_POST["restore"]) ? 0 : 1; $events = empty($_POST["events"]) ? 0 : 1; $delEvt = empty($_POST["delEvt"]) ? 0 : 1; $fromD = (isset($_POST['fromD'])) ? DDtoID($_POST['fromD']) : ''; //from event date $tillD = (isset($_POST['tillD'])) ? DDtoID($_POST['tillD']) : ''; //untill event date if ($fromD and $tillD and $fromD > $tillD) { $temp = $fromD; $fromD = $tillD; $tillD = $temp; } $exe = !empty($_POST["exe"]) ? 1 : 0; //control logic if ($usr['privs'] == 9) { if ($exe and (!$compact and !$backup and !$restore and !$events)) { $msg = $ax['mdb_no_function_checked']; } echo "

{$msg}

\n"; if (!$exe or (!$compact and !$backup and !$restore and !$events)) { echo "
\n"; mdbForm(); //manage db form echo "
\n"; } else { echo "
\n"; processFunctions(); echo "
\n"; } echo "
\n"; } else { echo "

{$ax['no_way']}

\n"; } ?>