Esempio n. 1
0
 /**
  * Функция логирует входы в админку
  * Если вход выполнен успешно, вместо пароля будет записано 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);
 }
Esempio n. 2
0
 /**
  * метод проверят файл БД на наличие в нем всех значений массива $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();
Esempio n. 4
0
 /**
  * Функция создает файл кэша
  *
  * @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);
 }
Esempio n. 5
0
 /**
  * Функция настройки робота для удаления файлов кеша
  * 
  * @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;
     }
 }
Esempio n. 7
0
 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();
     }
 }
Esempio n. 8
0
 /**
  * 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;
 }
Esempio n. 9
0
 /**
  * Функция выполнения импорта
  * 
  * @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);
Esempio n. 11
0
 /**
  * функция удаления выбранных модов
  * @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);
 }
Esempio n. 12
0
	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);