/** * Функция логирует входы в админку * Если вход выполнен успешно, вместо пароля будет записано true (в целях защиты инф-ции) * * @param array $arrData - массив данных, для записи в лог (array('login' => $_POST['login'], 'password' => $_POST['password'] or false)) * @param bool $status - признак авторизации. TRUE - успешно, FALSE - ошибка * * @return void */ static function logAdminAccess($arrData, $status) { /* $mess = "\n" . '================== ' . ($status ? 'SUCCESS' : 'FAIL') . ' (' . terms::currentDateTime() . ') ==================' . "\n" . 'LOGIN: '******'login'] . "\n" . 'PASSWORD: '******'yes' === $arrData['password'] ? 'true' : $arrData['password']) . "\n" //. '$_POST DATA: ' . serialize($_POST) . "\n\n" - отключил, т.к. массив содержит логин и пароль администратора, что недопустимо логировать. . 'USER IP: ' . $_SERVER['REMOTE_ADDR'] . "\n" . 'USER ID: ' . (!isset($_SESSION['sd_user']['data']) ? 'false' : $_SESSION['sd_user']['data']['id']) . "\n" . 'USER LOGIN: '******'sd_user']['data']) ? 'false' : $_SESSION['sd_user']['data']['email']) . "\n" . '============================================================================' . "\n\n"; @error_log($mess, 3, 'core/data/log/adm.access.log'); */ // Формируем данные для записи в MDA-файл $mdaData = filesys::getSerializedData('core/data/log/adm.access.mda'); $mdaData[] = array('login' => $arrData['login'], 'password' => 'yes' === $arrData['password'] ? 'true' : $arrData['password'], 'ip' => $_SERVER['REMOTE_ADDR'], 'user_id' => !isset($_SESSION['sd_user']['data']) ? 'false' : $_SESSION['sd_user']['data']['id'], 'user_login' => !isset($_SESSION['sd_user']['data']) ? 'false' : $_SESSION['sd_user']['data']['email'], 'datetime' => terms::currentDateTime()); filesys::putSerializedData('core/data/log/adm.access.mda', $mdaData); }
/** * метод проверят файл БД на наличие в нем всех значений массива $adPosition * если каких-либо значений не хватает, метод дописывает их * @return bool */ static function checkMDAFile() { $arrData = array('code' => false, 'htmlcode' => false, 'token' => 'disabled'); // проверяем, существует ли файл БД if (@file_exists(self::$dbFile)) { // Считываем данные из файла БД $dbData = filesys::getSerializedData(self::$dbFile); // Проверяем, чтобы в массиве были все необходимые ключи // если ключей не хватает, дописываем их foreach (self::$adPosition as $value) { //!isset($dbData[$value]) ? $dbData[$value] = $arrData : null; !isset($dbData[$value]) ? $dbData[$value] = array() : null; } // сохраняем файл БД. return filesys::putSerializedData(self::$dbFile, $dbData); } else { $dbData = array(); foreach (self::$adPosition as $value) { //$dbData[$value] = $arrData; $dbData[$value] = array(); } return filesys::putSerializedData(self::$dbFile, $dbData); } }
// обязательные $arrEducation['arrBindFields'] =& $_POST['arrEducation']['arrBindFields']; // вычисляем дополнительные поля анкеты // необязательные $arrExpire['arrNoBindFields'] = array_merge(array_diff_key($arrExpire['arrBindFields'], $_POST['arrExpire']['arrBindFields']), array_diff_key($arrExpire['arrNoBindFields'], $_POST['arrExpire']['arrBindFields'])); // обязательные $arrExpire['arrBindFields'] =& $_POST['arrExpire']['arrBindFields']; // вычисляем дополнительные поля анкеты // необязательные $arrLanguage['arrNoBindFields'] = array_merge(array_diff_key($arrLanguage['arrBindFields'], $_POST['arrLanguage']['arrBindFields']), array_diff_key($arrLanguage['arrNoBindFields'], $_POST['arrLanguage']['arrBindFields'])); // обязательные $arrLanguage['arrBindFields'] =& $_POST['arrLanguage']['arrBindFields']; /** * Сохраняем результаты */ if (filesys::putSerializedData('core/data/resume.bindfields.mda', $arrBindFields) && filesys::putSerializedData('core/data/resume.nobindfields.mda', $arrNoBindFields) && filesys::putSerializedData('core/data/resume.education.mda', $arrEducation) && filesys::putSerializedData('core/data/resume.expire.mda', $arrExpire) && filesys::putSerializedData('core/data/resume.language.mda', $arrLanguage)) { $resume = new resume(); $arrSearch = $arrRreplace = array(); /** * массив поиска/замены для основных полей анкеты */ // обязательные поля $arrBindFields = $resume->arrBindFields; foreach (array_keys($arrBindFields) as $alias) { array_push($arrSearch, 'arrNoBindFields[' . $alias . ']', '$arrNoBindFields.' . $alias, '$return_data.arrNoBindFields.' . $alias); array_push($arrRreplace, 'arrBindFields[' . $alias . ']', '$arrBindFields.' . $alias, '$return_data.arrBindFields.' . $alias); } // необязательные поля $arrNoBindFields = $resume->arrNoBindFields; $resume = new resume(); $arrSearch = $arrRreplace = array();
/** * Функция создает файл кэша * * @param (string) $file - путь к файлу * @param (array) $contents - данные, для записи * * @return (bool) */ static function setCaching($file, $contents) { !is_dir('caching') ? mkdir('caching', 0757) : null; return filesys::putSerializedData($file, $contents); }
/** * Функция настройки робота для удаления файлов кеша * * @param (array) $arrData - массив значений, содержащий список файлов кеша для удаления роботом * * @return bool */ static function putClearCacheData(&$arrData) { $arrRobotData = filesys::getSerializedData('core/data/robot.mda'); $arrRobotData['clear_cache'] = $arrData; return filesys::putSerializedData('core/data/robot.mda', $arrRobotData); }
/** * protected функция записывает в файл массив полей для сортировки объявлений в сериализованном виде * * @param (string) $arrData - данные для сериализации * * return bool */ protected function putSortFields(&$arrData) { if (is_array($arrData) && !array_diff_key($arrData, $this->arrSortFields)) { return filesys::putSerializedData('core/data/' . $this->retTableName() . '.list.sort.mda', $arrData); } else { return false; } }
static function saveLogData() { if (!empty(self::$logData)) { $logData = filesys::getSerializedData(CONF_UPDATES_PATH_TO_LOG_FILES . terms::currentDate() . '_update.log'); if (is_array($logData)) { self::$logData = array_merge($logData, self::$logData); } filesys::putSerializedData(CONF_UPDATES_PATH_TO_LOG_FILES . terms::currentDate() . '_update.log', self::$logData); self::clearLogData(); } }
/** * static функция получения данных кто онлайн * * @return array */ static function getWhoOnline(&$arrXmlTemplate, &$objUser) { $sides = array_merge($arrXmlTemplate['left_side'], $arrXmlTemplate['right_side']); if (false !== array_search('block.who.online.tpl', $sides)) { $currTime = time(); $currSessionId = session_id(); if (!($arrWhoOnline = filesys::getSerializedData('core/data/who.online.mda'))) { $arrWhoOnline = array('guests' => array(), 'users' => array()); } else { foreach ($arrWhoOnline as $type => $whoOnline) { foreach ($whoOnline as $key => $timestamp) { if ($currTime > $timestamp || $currSessionId === $key) { unset($arrWhoOnline[$type][$key]); } } } } $keyWhoOnline = !$objUser->getAuthorized() ? 'guests' : 'users'; $arrWhoOnline[$keyWhoOnline][$currSessionId] = $currTime + 180; filesys::putSerializedData('core/data/who.online.mda', $arrWhoOnline); $arrWhoOnline = array('guests' => count($arrWhoOnline['guests']), 'users' => count($arrWhoOnline['users'])); } else { $arrWhoOnline = false; } return $arrWhoOnline; }
/** * Функция выполнения импорта * * @return (string) - JSON-строка с описанием текущего состояния процесса импорта */ static function mdsDoImportDB() { if ($arrData = filesys::getSerializedData('core/data/mdsImport.mda')) { foreach ($arrData as $table => &$arrDataTable) { $arrQueryData = array_shift($arrDataTable); $oldId =& $arrQueryData['old_id']; unset($arrQueryData['old_id']); $newId = db::dbInsertTable($table, secure::escQuoteData($arrQueryData)); switch ($table) { case USR_PREFIX . 'city': $arrUpdateQuerys[DB_PREFIX . 'subscription'][] = array('arrData' => array('id_city' => $newId, 'token' => 'reserved'), 'strWhere' => "id_city IN ('{$oldId}') AND token IN ('active')"); $arrUpdateQuerys[DB_PREFIX . 'subscription'][] = array('arrData' => array('id_city' => $newId, 'token' => 'deleted'), 'strWhere' => "id_city IN ('{$oldId}') AND token IN ('archived')"); $arrUpdateQuerys[DB_PREFIX . 'vacancy'][] = array('arrData' => array('id_city' => $newId, 'token' => 'reserved'), 'strWhere' => "id_city IN ('{$oldId}') AND token IN ('active')"); $arrUpdateQuerys[DB_PREFIX . 'vacancy'][] = array('arrData' => array('id_city' => $newId, 'token' => 'deleted'), 'strWhere' => "id_city IN ('{$oldId}') AND token IN ('archived')"); $arrUpdateQuerys[DB_PREFIX . 'resume'][] = array('arrData' => array('id_city' => $newId, 'token' => 'reserved'), 'strWhere' => "id_city IN ('{$oldId}') AND token IN ('active')"); $arrUpdateQuerys[DB_PREFIX . 'resume'][] = array('arrData' => array('id_city' => $newId, 'token' => 'deleted'), 'strWhere' => "id_city IN ('{$oldId}') AND token IN ('archived')"); break; case USR_PREFIX . 'region': $arrUpdateQuerys[USR_PREFIX . 'city'][] = array('arrData' => array('parent_id' => $newId, 'token' => 'reserved'), 'strWhere' => "parent_id IN ('{$oldId}') AND token IN ('active')"); $arrUpdateQuerys[DB_PREFIX . 'subscription'][] = array('arrData' => array('id_region' => $newId, 'token' => 'reserved'), 'strWhere' => "id_region IN ('{$oldId}') AND token IN ('active')"); $arrUpdateQuerys[DB_PREFIX . 'subscription'][] = array('arrData' => array('id_region' => $newId, 'token' => 'deleted'), 'strWhere' => "id_region IN ('{$oldId}') AND token IN ('archived')"); $arrUpdateQuerys[DB_PREFIX . 'vacancy'][] = array('arrData' => array('id_region' => $newId, 'token' => 'reserved'), 'strWhere' => "id_region IN ('{$oldId}') AND token IN ('active')"); $arrUpdateQuerys[DB_PREFIX . 'vacancy'][] = array('arrData' => array('id_region' => $newId, 'token' => 'deleted'), 'strWhere' => "id_region IN ('{$oldId}') AND token IN ('archived')"); $arrUpdateQuerys[DB_PREFIX . 'resume'][] = array('arrData' => array('id_region' => $newId, 'token' => 'reserved'), 'strWhere' => "id_region IN ('{$oldId}') AND token IN ('active')"); $arrUpdateQuerys[DB_PREFIX . 'resume'][] = array('arrData' => array('id_region' => $newId, 'token' => 'deleted'), 'strWhere' => "id_region IN ('{$oldId}') AND token IN ('archived')"); break; case DB_PREFIX . 'profession': $arrUpdateQuerys[DB_PREFIX . 'subscription'][] = array('arrData' => array('id_profession' => $newId, 'token' => 'reserved'), 'strWhere' => "id_profession IN ('{$oldId}') AND token IN ('active')"); $arrUpdateQuerys[DB_PREFIX . 'subscription'][] = array('arrData' => array('id_profession' => $newId, 'token' => 'deleted'), 'strWhere' => "id_profession IN ('{$oldId}') AND token IN ('archived')"); $arrUpdateQuerys[DB_PREFIX . 'vacancy'][] = array('arrData' => array('id_profession' => $newId, 'token' => 'reserved'), 'strWhere' => "id_profession IN ('{$oldId}') AND token IN ('active')"); $arrUpdateQuerys[DB_PREFIX . 'vacancy'][] = array('arrData' => array('id_profession' => $newId, 'token' => 'deleted'), 'strWhere' => "id_profession IN ('{$oldId}') AND token IN ('archived')"); $arrUpdateQuerys[DB_PREFIX . 'resume'][] = array('arrData' => array('id_profession' => $newId, 'token' => 'reserved'), 'strWhere' => "id_profession IN ('{$oldId}') AND token IN ('active')"); $arrUpdateQuerys[DB_PREFIX . 'resume'][] = array('arrData' => array('id_profession' => $newId, 'token' => 'deleted'), 'strWhere' => "id_profession IN ('{$oldId}') AND token IN ('archived')"); break; case DB_PREFIX . 'section': $arrUpdateQuerys[DB_PREFIX . 'profession'][] = array('arrData' => array('parent_id' => $newId, 'token' => 'reserved'), 'strWhere' => "parent_id IN ('{$oldId}') AND token IN ('active')"); $arrUpdateQuerys[DB_PREFIX . 'subscription'][] = array('arrData' => array('id_section' => $newId, 'token' => 'reserved'), 'strWhere' => "id_section IN ('{$oldId}') AND token IN ('active')"); $arrUpdateQuerys[DB_PREFIX . 'subscription'][] = array('arrData' => array('id_section' => $newId, 'token' => 'deleted'), 'strWhere' => "id_section IN ('{$oldId}') AND token IN ('archived')"); $arrUpdateQuerys[DB_PREFIX . 'vacancy'][] = array('arrData' => array('id_section' => $newId, 'token' => 'reserved'), 'strWhere' => "id_section IN ('{$oldId}') AND token IN ('active')"); $arrUpdateQuerys[DB_PREFIX . 'vacancy'][] = array('arrData' => array('id_section' => $newId, 'token' => 'deleted'), 'strWhere' => "id_section IN ('{$oldId}') AND token IN ('archived')"); $arrUpdateQuerys[DB_PREFIX . 'resume'][] = array('arrData' => array('id_section' => $newId, 'token' => 'reserved'), 'strWhere' => "id_section IN ('{$oldId}') AND token IN ('active')"); $arrUpdateQuerys[DB_PREFIX . 'resume'][] = array('arrData' => array('id_section' => $newId, 'token' => 'deleted'), 'strWhere' => "id_section IN ('{$oldId}') AND token IN ('archived')"); break; case DB_PREFIX . 'vacancy': $arrUpdateQuerys[DB_PREFIX . 'subscription'][] = array('arrData' => array('id_announce' => $newId, 'token' => 'reserved'), 'strWhere' => "id_announce IN ('{$oldId}') AND token IN ('active')"); $arrUpdateQuerys[DB_PREFIX . 'subscription'][] = array('arrData' => array('id_announce' => $newId, 'token' => 'deleted'), 'strWhere' => "id_announce IN ('{$oldId}') AND token IN ('archived')"); break; case DB_PREFIX . 'resume': $arrUpdateQuerys[DB_PREFIX . 'subscription'][] = array('arrData' => array('id_announce' => $newId, 'token' => 'reserved'), 'strWhere' => "id_announce IN ('{$oldId}') AND token IN ('active')"); $arrUpdateQuerys[DB_PREFIX . 'subscription'][] = array('arrData' => array('id_announce' => $newId, 'token' => 'deleted'), 'strWhere' => "id_announce IN ('{$oldId}') AND token IN ('archived')"); break; case USR_PREFIX . 'users': $arrData[DB_PREFIX . 'conf_users'][$oldId]['id'] = $newId; $arrUpdateQuerys[DB_PREFIX . 'subscription'][] = array('arrData' => array('id_user' => $newId, 'token' => 'reserved'), 'strWhere' => "id_user IN ('{$oldId}') AND token IN ('active')"); $arrUpdateQuerys[DB_PREFIX . 'subscription'][] = array('arrData' => array('id_user' => $newId, 'token' => 'deleted'), 'strWhere' => "id_user IN ('{$oldId}') AND token IN ('archived')"); $arrUpdateQuerys[DB_PREFIX . 'vacancy'][] = array('arrData' => array('id_user' => $newId, 'token' => 'reserved'), 'strWhere' => "id_user IN ('{$oldId}') AND token IN ('active')"); $arrUpdateQuerys[DB_PREFIX . 'vacancy'][] = array('arrData' => array('id_user' => $newId, 'token' => 'deleted'), 'strWhere' => "id_user IN ('{$oldId}') AND token IN ('archived')"); $arrUpdateQuerys[DB_PREFIX . 'resume'][] = array('arrData' => array('id_user' => $newId, 'token' => 'reserved'), 'strWhere' => "id_user IN ('{$oldId}') AND token IN ('active')"); $arrUpdateQuerys[DB_PREFIX . 'resume'][] = array('arrData' => array('id_user' => $newId, 'token' => 'deleted'), 'strWhere' => "id_user IN ('{$oldId}') AND token IN ('archived')"); break; case DB_PREFIX . 'conf_users': 'competitor' !== $arrQueryData['user_type'] ? $arrUpdateQuerys[DB_PREFIX . 'vacancy'][] = array('arrData' => array('user_type' => $arrQueryData['user_type']), 'strWhere' => "id_user IN ('" . $arrQueryData['id'] . "')") : null; break; default: break; } if (!empty($arrUpdateQuerys)) { foreach ($arrUpdateQuerys as $keyT => &$valueT) { foreach ($valueT as &$arrUpdData) { db::dbUpdateTable($keyT, secure::escQuoteData($arrUpdData['arrData']), $arrUpdData['strWhere']); } db::dbUpdateTable($keyT, secure::escQuoteData(array('token' => 'active')), "token IN ('reserved')"); db::dbUpdateTable($keyT, secure::escQuoteData(array('token' => 'archived')), "token IN ('deleted')"); } } if (empty($arrDataTable)) { unset($arrData[$table]); } DB_PREFIX . 'conf_users' == $table ? $table = USR_PREFIX . 'users' : null; if (!empty($arrData)) { filesys::putSerializedData('core/data/mdsImport.mda', $arrData); $result = array('onProgress' => true, 'table' => &$table); } else { @unlink('core/data/mdsImport.mda'); caching::dropCache(); $result = array('onProgress' => false, 'table' => &$table); } return ajax::sdgJSONencode($result); } } else { caching::dropCache(); return ajax::sdgJSONencode(array('onProgress' => false)); } }
} } if (!$flag) { $dbData[$_POST['ad_position']][] = array('code' => $_POST['advert'], 'htmlcode' => htmlentities($_POST['advert'], ENT_COMPAT, CONF_DEFAULT_CHARSET), 'token' => isset($_POST['token']) ? 'active' : 'disabled'); } } if (filesys::putSerializedData(adsimple::$dbFile, $dbData)) { messages::messageChangeSaved(MOD_ADSIMPLE_MESSAGE_CHANGE_SAVED, false, CONF_ADMIN_FILE . '?m=mods&s=adsimple'); } else { $arrErrors[] = MOD_ADSIMPLE_ERROR_CHANGE_NOT_SAVED; } } else { $arrErrors[] = MOD_ADSIMPLE_ERROR_EMPTY_FIELDS; $smarty->assign('return_data', array('ad_position' => $_POST['ad_position'], 'advert' => $_POST['advert'], 'token' => isset($_POST['token']) ? true : false)); } } if (isset($_POST['delete'])) { $dbData = filesys::getSerializedData(adsimple::$dbFile); foreach ($_POST as $key => $value) { if (is_array($value)) { $dbData[$key] = array_diff_key($dbData[$key], $value); } } if (filesys::putSerializedData(adsimple::$dbFile, $dbData)) { messages::messageChangeSaved(MOD_ADSIMPLE_MESSAGE_CHANGE_SAVED, false, CONF_ADMIN_FILE . '?m=mods&s=adsimple'); } else { $arrErrors[] = MOD_ADSIMPLE_ERROR_CHANGE_NOT_SAVED; } } $smarty->assign('advert', filesys::getSerializedData(adsimple::$dbFile)); $smarty->assign('errors', $arrErrors);
/** * функция удаления выбранных модов * @param (array) $arrMods - массив, содержащий id модов для удаления * @return bool * @deprecated не использовать эту фукнкцию, она устарела. * Для удаления мода нужно писать новую ф-ю */ protected function deleteMods($arrMods) { if (empty($arrMods)) { return false; } // получаем список модов из файла БД $dbData = $this->getMods(); // устанавливаем необходимые токены foreach ($arrMods as $value) { unset($dbData[$value]); filesys::removeDir($this->modsPath . $value); } return filesys::putSerializedData($this->dbFile, $dbData); }
powered by Script Developers Group (SD-Group) email: info@sd-group.org.ua url: http://sd-group.org.ua/ Copyright 2010-2015 (c) SD-Group All rights reserved ========================================================= Логи - Вход администратора ********************************************************/ /** * @package * @todo */ !defined('SDG') ? die('Triple protection!') : null; // инициируем "Наименование страницы" отображаемое в форме $arrNamePage = array(array('name' => MENU_ADMIN_MAIN, 'link' => CONF_ADMIN_FILE), array('name' => MENU_LOGS, 'link' => false), array('name' => MENU_LOGS_ADMIN_ACCESS, 'link' => false)); // Получаем данные из файла $logData = filesys::getSerializedData('core/data/log/adm.access.mda'); // действия if (isset($_POST['action'])) { // очистка логов if ('clear' === $_POST['action']) { if (@unlink('core/data/log/adm.access.mda')) { filesys::putSerializedData('core/data/log/adm.access.mda', array_slice($logData, -10)); messages::messageChangeSaved(MESSAGE_CHANGE_SAVED, false, CONF_ADMIN_FILE . '?m=logs&s=admin'); } else { $arrErrors[] = ERROR_FILES_NOT_DELETE; } } } $smarty->assignByRef('logData', $logData); $smarty->assignByRef('errors', $arrErrors);