$ThemeDB->settingsTable, 'query' => ' CREATE TABLE '.$ThemeDB->settingsTable.' ( id int(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, user int(4) NOT NULL, name varchar(255) NOT NULL, value mediumtext NOT NULL, UNIQUE KEY UniqueSetting (user,name) ); ' ), // id int(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, array( 'name' => $ThemeDB->serverStatsTable, 'query' => ' CREATE TABLE '.$ThemeDB->serverStatsTable.' ( home_id int(4) NOT NULL, users_online int(4) NOT NULL, current_stamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ); ' ) ); // check if theme settings db exists and create if not foreach($themeTables AS $themeTable) { $sql = 'show tables like "'.$themeTable['name'].'"'; if($ThemeDB->query($sql) === false) { // create settings table $ThemeDBCreate = $ThemeDB->query($themeTable['query'], false); if($ThemeDBCreate===true) { // echo 'table "'.$themeTable['name'].'" successfully created'; } else { // throw error echo "
Error:"; print_r($ThemeDBCreate); echo ""; exit(); } } } // check & set admin if(isset($_SESSION['user_id'])) { $isadmin = $Theme->checkIsAdmin($_SESSION['user_id']); } if(isset($_GET['m'])) { if($_GET['m']=='global') { if(isset($_GET['p'])) { if($_GET['p']=='check') { if(isset($_GET['v'])) { if($_GET['v']=='maintenance') { $data = $ThemeDB->getMaintenanceMode(); header("Content-Type: application/json"); echo json_encode($data); exit(); } elseif($_GET['v']=='isadmin') { if($isadmin) { echo 1; }else { echo 0; } exit(); } elseif($_GET['v']=='updateserverstats') { if(isset($_GET['token'])) { echo $Theme->updateGameserverStats($_GET['token']); } } } } elseif($_GET['p']=='theme') { // check if user session exists if(isset($_SESSION['users_login'])) { if(isset($_GET['v']) && ($_GET['v']=='light' || $_GET['v']=='dark' || $_GET['v']=='mixed')) { // write new value to db $theme = $ThemeDB->setSetting('theme', $_GET['v']); } else { $theme = $ThemeDB->getSetting('theme'); if(empty($theme)) { // write default value to db $theme = $ThemeDB->setSetting('theme', 'dark'); } } header("Content-Type: application/json"); echo json_encode($theme); } exit(); } elseif($_GET['p']=='themeLogo') { // load global setting (id -1) $themeLogo = $ThemeDB->getSetting('themeLogo', -1); if(empty($themeLogo)) { echo 0; exit(); } header("Content-Type: application/json"); echo json_encode($themeLogo); exit(); } elseif($_GET['p']=='themeNavWidth') { if(isset($_SESSION['users_login'])) { // load global setting (id -1) $themeNavWidth = $ThemeDB->getSetting('themeNavWidth', -1); if(empty($themeNavWidth)) { $themeNavWidth = 250; } header("Content-Type: application/json"); echo json_encode($themeNavWidth); } exit(); } elseif($_GET['p']=='themeServerstats') { if(isset($_SESSION['users_login'])) { if(isset($_GET['v']) && $_GET['v']=='displayNum') { $themeServerstatsNum = $ThemeDB->getSetting('themeServerstatsNum', -1); if(empty($themeServerstatsNum) || $themeServerstatsNum<1 || $themeServerstatsNum>20) { $themeServerstatsNum = 10; } echo $themeServerstatsNum; }else { // check if token is set to check if themeServerstats are enabled or not $themeServerstats = $ThemeDB->getSetting('updateToken', -1); echo empty($themeServerstats) ? 'remove' : 'activate'; } } exit(); } } } elseif($_GET['m']=='user') { // check if user session exists if(isset($_SESSION['users_login'])) { if(isset($_GET['p'])) { if($_GET['p']=='getavatar') { if(isset($_GET['userid']) && is_numeric($_GET['userid'])) { $avatar = $ThemeDB->getSetting('avatar', $_GET['userid']); if(empty($avatar)) { $avatarPath = "themes/AdminLTE/dist/img/default-avatar.png"; }else { $avatarPath = $avatar; } echo $avatarPath; exit; } }elseif($_GET['p']=='setavatar') { if(isset($_GET['userid']) && is_numeric($_GET['userid'])) { // security; for now, only allow upload for own user id if($_GET['userid']==$_SESSION['user_id']) { echo _NewFileUpload($_FILES['userAvatar'], $_GET['userid'], 'avatar'); exit; } } } } } } elseif($_GET['m']=='dashboard') { // check if user session exists if(isset($_SESSION['users_login'])) { if(isset($_GET['p'])) { if($_GET['p']=='columnsettings') { $columns = $ThemeDB->getSetting('dashboard_columns'); if(empty($columns)) { // no column settings available, set default settings $newColumns = array(); // select remote server $newColumns[] = array('item' => 'item6', 'section' => 'column4', 'collapsed' => 0); // server status $newColumns[] = array('item' => 'item7', 'section' => 'column5', 'collapsed' => 0); // process monitor $newColumns[] = array('item' => 'item8', 'section' => 'column6', 'collapsed' => 0); // server status $newColumns[] = array('item' => 'item9', 'section' => 'column4', 'collapsed' => 0); // write default value to db $setSetting = $ThemeDB->setSetting('dashboard_columns', $newColumns); $columns = $newColumns; } header("Content-Type: application/json"); echo json_encode($columns); exit(); } elseif($_GET['p']=='updatecolumnsettings') { // only allow new generated items from theme $allowedItems = array('item6', 'item7', 'item8', 'item9'); // decode all items $items = json_decode($_POST['data'], 1)['items']; // specify new columns $newColumns = array(); foreach($items AS $item) { if(in_array($item['id'], $allowedItems)) { $newColumns[] = array('item' => $item['id'], 'section' => $item['column'], 'collapsed' => $item['collapsed']); } } // write to db $setSetting = $ThemeDB->setSetting('dashboard_columns', $newColumns); echo "success"; exit(); } elseif($_GET['p']=='listservers') { echo $Theme->listServersFromDB(); exit(); } } } } elseif($_GET['m']=='settings') { if($isadmin) { if(isset($_GET['p'])) { if($_GET['p']=='fileUpload') { echo _NewFileUpload($_FILES['themeLogo'], 'themeLogo', 'themeLogo', true); exit; } elseif($_GET['p']=='themeLogo') { if(isset($_GET['v']) && ($_GET['v']=='remove')) { // load global setting (id -1) $themeLogo = $ThemeDB->getSetting('themeLogo', -1); if(!empty($themeLogo)) { // build direct path $oldLogo = $uploadsFolder."/".basename($themeLogo); // delete old logo if exists if(file_exists($oldLogo)) { unlink($oldLogo); } // remove logo from db echo $ThemeDB->removeSetting('themeLogo', -1); } } } elseif($_GET['p']=='themeNavWidth') { if(isset($_GET['v']) && is_numeric($_GET['v']) && $_GET['v']>=250 && $_GET['v']<=350) { // save new width $setSetting = $ThemeDB->setSetting('themeNavWidth', $_GET['v'], -1); echo $_GET['v']; exit; }else { // invalid value - return default width echo 250; exit; } } elseif($_GET['p']=='themeServerstats') { if(isset($_GET['v'])) { if($_GET['v']=='activate') { // generate token $newToken = bin2hex(random_bytes(20)); // set token $ThemeDB->setSetting('updateToken', $newToken, -1); // set cronjob $Theme->checkForCronjob(); } elseif($_GET['v']=='remove') { // remove token $ThemeDB->removeSetting('updateToken', -1); // remove cronjob $Theme->checkForCronjob(true); } elseif($_GET['v']=='setNum') { if(isset($_GET['num']) && is_numeric($_GET['num'])) { $setNum = $_GET['num']; if($setNum<1 || $setNum>20) { $setNum = 10; } // set num $ThemeDB->setSetting('themeServerstatsNum', $setNum, -1); } } } exit; } } } } } // file upload function function _NewFileUpload($filesField, $uploadName, $settingName, $systemSetting = false) { Global $uploadsFolder, $ThemeDB, $themeUploadsPath; if(isset($filesField)) { // check if uploads folder is writable if(!is_writable($uploadsFolder)) { $retArr = array( 'code' => 'error', 'data' => 'Error: Uploads Folder is not writable.