/**
  * Функция формирует массив языковых файлов с именами констант в виде ключей их значений
  * В качестве эталона для формирования массива используется локализация по умолчанию: 'russian'
  * Возврашает массив языковых файлов и языковых констант в локализации по умолчанию.
  * Значения констант берутся в запрашиваемой локализациии, если они существуют. Иначе вместо значения устанавливается имя константы.
  *
  * @param (string) $localiz - запрашиваемая локализация (по умолчанию 'russian')
  *
  * @return (array) $arrConst - массив языковых файлов с именами констант в виде ключей их значений
  */
 static function getLocalizConst($localiz, $ownAdmin, $langDir = 'lang/')
 {
     $arrConst = array();
     $langDir = filesys::setPath($langDir);
     foreach (filesys::getFilesInDir($langDir . 'russian/') as $fileLocaliz) {
         if (empty($ownAdmin) && 0 === strpos($fileLocaliz, 'adm.') || !empty($ownAdmin) && 0 !== strpos($fileLocaliz, 'adm.')) {
             continue;
         }
         if ('russian' !== $localiz && file_exists($langDir . $localiz . '/' . $fileLocaliz)) {
             $currLocalizConst = self::getConstForParsingFile($langDir . $localiz . '/' . $fileLocaliz);
         }
         foreach (file($langDir . 'russian/' . $fileLocaliz) as $string) {
             if (false !== strpos($string, 'define(')) {
                 $arrExplode = explode(',', trim($string));
                 $constName = substr(array_shift($arrExplode), 8, -1);
                 if ('russian' !== $localiz) {
                     $arrConst[$fileLocaliz][$constName] = isset($currLocalizConst[$constName]) ? $currLocalizConst[$constName] : $constName;
                 } else {
                     $arrConst[$fileLocaliz][$constName] = substr(implode(', ', $arrExplode), 2, -3);
                 }
             }
         }
     }
     return $arrConst;
 }
 public function __construct()
 {
     if (!defined(CONF_SCRIPT_URL)) {
         $this->_host = 'http://' . filesys::setPath($_SERVER['HTTP_HOST']);
     } else {
         $this->_host = CONF_SCRIPT_URL;
     }
 }
 /**
  * конструктор
  */
 public function __construct(&$currLang)
 {
     $this->currLang = CONF_LANGUAGE;
     foreach (filesys::getChildDirs('lang/') as $value) {
         file_exists('lang/' . $value . '/lang.dictionarys.selects.php') ? $this->arrLangs[] = $value : null;
     }
     empty($currLang) && !empty($_COOKIE['langDictSelects']) ? $currLang =& $_COOKIE['langDictSelects'] : null;
     $this->setLangDict($currLang);
 }
 /**
  * Конструктор
  *
  * Вызывает конструктор родительского класса
  * Инициирует имя таблицы БД
  */
 public function __construct()
 {
     $arrBindFields = filesys::getSerializedData('core/data/vacancy.bindfields.mda') or $arrBindFields = array();
     $arrNoBindFields = filesys::getSerializedData('core/data/vacancy.nobindfields.mda') or $arrNoBindFields = array();
     $this->arrBindFields = array_merge($this->arrBindFields, $arrBindFields);
     $this->arrNoBindFields = array_merge($this->arrNoBindFields, $arrNoBindFields);
     $this->setTable('vacancy');
     parent::__construct(array('caching/vacancy.last.cache', 'caching/vacancy.api.last.cache'));
 }
 /**
  * Конструктор
  *
  * Вызывает конструктор родительского класса
  * Инициирует имя таблицы БД
  * Инициирует массив данных хранимых в XML-формате
  *
  */
 public function __construct()
 {
     $arrBindFields = filesys::getSerializedData('core/data/resume.bindfields.mda') or $arrBindFields = array();
     $arrNoBindFields = filesys::getSerializedData('core/data/resume.nobindfields.mda') or $arrNoBindFields = array();
     $this->arrBindFields = array_merge($this->arrBindFields, $arrBindFields);
     $this->arrNoBindFields = array_merge($this->arrNoBindFields, $arrNoBindFields);
     $this->arrFieldsXmlData['educations'][1] = filesys::getSerializedData('core/data/resume.education.mda') or $this->arrFieldsXmlData['educations'][1] = array();
     $this->arrFieldsXmlData['expires'][1] = filesys::getSerializedData('core/data/resume.expire.mda') or $this->arrFieldsXmlData['expires'][1] = array();
     $this->arrFieldsXmlData['languages'][2] = $this->arrFieldsXmlData['languages'][1] = filesys::getSerializedData('core/data/resume.language.mda') or $this->arrFieldsXmlData['languages'][2] = $this->arrFieldsXmlData['languages'][1] = array();
     $this->setTable('resume');
     parent::__construct(array('caching/resume_m.last.cache', 'caching/resume_v.last.cache', 'caching/resume.api.last.cache'));
 }
 /**
  * Получить все файлы SEO относящиеся к выбранному разделу
  * @param string $part раздел. Пример: agencies, companies
  * @param string $language текущий язык сайта (глобальная переменная $currLang)
  */
 public static function getSeoFiles($part, $language = 'russian')
 {
     $files = filesys::getFilesInDir('lang/' . $language . '/seo/');
     $resArray = array();
     if (!empty($files)) {
         foreach ($files as $value) {
             if (strpos($value, $part) !== false) {
                 $resArray[$value] = self::getSeo($value, $language);
             }
         }
     }
     return $resArray;
 }
 /**
  * Функция возвращает массив доступной для показа рекламы (active) по ключу
  * @param string $key (один из ключей расположения рекламы)
  * @return array
  */
 public function get($key)
 {
     if (!in_array($key, self::$adPosition)) {
         return array();
     }
     $dbData = filesys::getSerializedData(self::$dbFile);
     $ret = array();
     foreach ($dbData[$key] as $value) {
         if ('active' == $value['token']) {
             $ret[] = $value;
         }
     }
     return $ret;
 }
 /**
  * Функция логирует входы в админку
  * Если вход выполнен успешно, вместо пароля будет записано 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);
 }
         // Владение языками - обязательные поля
         $arrLanguage['arrBindFields'] = $resume->arrFieldsXmlData['languages'][1]['arrBindFields'];
         foreach (array_keys($arrLanguage['arrBindFields']) as $alias) {
             array_push($arrSearch, 'arrFieldsXmlData[languages][{$smarty.foreach.lang_foreach.iteration}][arrNoBindFields][' . $alias . ']', '$language.arrNoBindFields.' . $alias, 'added[languages][][arrNoBindFields][' . $alias . ']');
             array_push($arrRreplace, 'arrFieldsXmlData[languages][{$smarty.foreach.lang_foreach.iteration}][arrBindFields][' . $alias . ']', '$language.arrBindFields.' . $alias, 'added[languages][][arrBindFields][' . $alias . ']');
         }
         // Владение языками - необязательные поля
         $arrLanguage['arrNoBindFields'] = $resume->arrFieldsXmlData['languages'][1]['arrNoBindFields'];
         foreach (array_keys($arrLanguage['arrNoBindFields']) as $alias) {
             array_push($arrSearch, 'arrFieldsXmlData[languages][{$smarty.foreach.lang_foreach.iteration}][arrBindFields][' . $alias . ']', '$language.arrBindFields.' . $alias, 'added[languages][][arrBindFields][' . $alias . ']');
             array_push($arrRreplace, 'arrFieldsXmlData[languages][{$smarty.foreach.lang_foreach.iteration}][arrNoBindFields][' . $alias . ']', '$language.arrNoBindFields.' . $alias, 'added[languages][][arrNoBindFields][' . $alias . ']');
         }
         /**
          * Производим поиск/замену во всех шаблонах скрипта
          */
         foreach (filesys::getChildDirs('templates/site/') as $template) {
             $formFileName = 'templates/site/' . $template . '/resume.form.tpl';
             if (is_file($formFileName)) {
                 file_put_contents($formFileName, str_replace($arrSearch, $arrRreplace, file_get_contents($formFileName)));
             }
             $formFileName = 'templates/site/' . $template . '/resume.preview.tpl';
             if (is_file($formFileName)) {
                 file_put_contents($formFileName, str_replace($arrSearch, $arrRreplace, file_get_contents($formFileName)));
             }
         }
         file_put_contents('templates/admin/adm.announces.resume.edit.tpl', str_replace($arrSearch, $arrRreplace, file_get_contents('templates/admin/adm.announces.resume.edit.tpl')));
         messages::messageChangeSaved(MESSAGE_CHANGE_SAVED, false, CONF_ADMIN_FILE . '?m=announces&s=common&action=confQuestResume');
     } else {
         messages::printDie(ERROR_FILE_NOT_WRITE);
     }
 }
} elseif ($arrActions['logs']) {
    // удаление логов
    if (!empty($_POST['action'])) {
        if ('deleted' === $_POST['action'] && !empty($_POST['files']) && is_array($_POST['files'])) {
            foreach ($_POST['files'] as $key => $value) {
                unlink(CONF_UPDATES_PATH_TO_LOG_FILES . $key);
            }
            messages::messageChangeSaved(MESSAGE_CHANGE_SAVED, false, CONF_ADMIN_FILE . '?m=system&s=updates&action=logs');
        }
    }
    $arrNamePage[] = array('name' => MENU_UPDATES_LOGS, 'link' => false);
    $logFiles = filesys::getFilesInDir(CONF_UPDATES_PATH_TO_LOG_FILES);
    $arrData = array();
    if (!empty($logFiles) && is_array($logFiles)) {
        foreach ($logFiles as &$value) {
            $fData = filesys::getFileSystemData(CONF_UPDATES_PATH_TO_LOG_FILES . $value);
            if (!empty($fData) && is_array($fData)) {
                $arrData[$value] = $fData;
            }
        }
    }
    $smarty->assignByRef('arrData', $arrData);
} elseif ($arrActions['backup'] && !empty($_GET['file']) && file_exists(CONF_UPDATES_PATH_TO_FILES . $_GET['file'])) {
    // массив проверки обновлений. Указывает, где будут производиться изменения
    // на основании этих данных определятся какие бэкапы нужно делать
    $arrBackup = array('php' => true, 'sql' => false);
    $zip = new PclZip(CONF_UPDATES_PATH_TO_FILES . $_GET['file']);
    // получаем текст из файла обновления
    if ($update = $zip->extract(PCLZIP_OPT_BY_NAME, 'update.xml', PCLZIP_OPT_EXTRACT_AS_STRING)) {
        $xml = new SimpleXMLElement($update[0]['content'], LIBXML_NOCDATA);
        //(property_exists($xml, 'php') || property_exists($xml, 'delfiles')) ? $arrBackup['php'] = true : null;
 /**
  * Функция полностью очишает кеш шаблонов сайта
  *
  * @return bool
  */
 static function dropTmplCache()
 {
     $result = true;
     foreach (filesys::getFilesInDir(TEMPLATE_COMPILE_DIR) as $cacheFile) {
         if (!unlink(TEMPLATE_COMPILE_DIR . $cacheFile)) {
             $result = false;
         }
     }
     return $result;
 }
// инициируем "Наименование страницы" отображаемое в форме
$arrNamePage = array(array('name' => MENU_ADMIN_MAIN, 'link' => CONF_ADMIN_FILE), array('name' => MENU_MANAGER_MAILER, 'link' => false));
/**
* иницализация массива подключаемых шаблонов: по умолчанию все значения - false
* для подключения шаблона, необходимо установить значение - true
* шаблоны подключаются в порядке установленном в файле головного шаблона
*/
$arrActions = array('config' => false, 'templates' => false);
// определяем шаблон для отображения
isset($_GET['action']) && isset($arrActions[$_GET['action']]) ? $arrActions[$_GET['action']] = true : null;
/** Строка запроса из адресной строки браузера **/
$qString = !empty($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : 'm=manager&s=mailer';
$arrTemplates = array();
// путь к файлам шаблонов писем
$path = filesys::setPath(CONF_ROOT_DIR) . 'core/data/templates/mailer/';
$arrFiles = filesys::getFilesInDir($path);
foreach ($arrFiles as &$value) {
    if (file_exists($path . $value)) {
        $arrTemplates[$value]['name'] = substr($value, 0, strlen($value) - 4);
    }
}
/**
* Настройки рассылки
*/
if ($arrActions['config']) {
    // инициируем "Наименование страницы" отображаемое в форме
    $arrNamePage[] = array('name' => MENU_CONFIG, 'link' => false);
} elseif ($arrActions['templates']) {
    // инициируем "Наименование страницы" отображаемое в форме
    $arrNamePage[] = array('name' => MENU_ACTION_TEMPLATE, 'link' => false);
} else {
            $arrData[] = "define('" . strtoupper($constName) . "', '" . (!empty($constValue) ? $constValue : strtoupper($constName)) . "');";
        }
        $data = "<?php\n\n" . "(!defined('SDG')) ? die ('Triple protection!') : null;\n\n" . implode("\n\n", $arrData) . "\n";
        if (file_put_contents($langDir . $currLang . '/' . $fileNameLocaliz, $data)) {
            messages::messageChangeSaved(MESSAGE_CHANGE_SAVED, false, $formUrl);
        } else {
            messages::messageChangeSaved(MESSAGE_CHANGE_NOT_SAVED, false, $formUrl);
        }
    }
    $smarty->assignByRef('formUrl', $formUrl);
    $smarty->assignByRef('modId', $_GET['id']);
    $smarty->assignByRef('currLang', $currLang);
    // текущая локализация
    // получаем список доступных дирректорий языков
    $arrLangs = array();
    foreach (filesys::getChildDirs($langDir) as $value) {
        $arrLangs[] = $value;
    }
    $smarty->assignByRef('langs', $arrLangs);
    // список доступных локализаций
    // инициируем "Наименование страницы" отображаемое в форме
    $arrNamePage[] = array('name' => strtoupper($_GET['id']), 'link' => false);
    $arrNamePage[] = array('name' => MENU_LANGUAGE_MANAGER, 'link' => false);
    include_once 'core/mods/payments/' . $_GET['id'] . '/admin.php';
    $smarty->assign('ltTemplate', 'adm.mods.payments.language.manager.tpl');
    $smarty->assign('defLocalizConst', localiz::getLocalizConst('russian', false, $langDir));
    $smarty->assign('currLocalizConst', localiz::getLocalizConst($currLang, false, $langDir));
} else {
    // инициируем "Наименование страницы" отображаемое в форме
    $arrNamePage[] = array('name' => MENU_MODS_PAYMENTS, 'link' => false);
    /**
} elseif (!empty($_COOKIE['adm_currTmplManage']) && is_dir('templates/site/' . $_COOKIE['adm_currTmplManage'])) {
    $currTemplate =& $_COOKIE['adm_currTmplManage'];
} else {
    $currTemplate = CONF_TEMPLATE;
}
// устанавливаем кукисы
cookies::setCookieSite('adm_currTmplManage', $currTemplate);
// передаем текуший шаблон в Smarty
$smarty->assignByRef('currTemplate', $currTemplate);
// текущий шаблон
// формируем данные - Список файлов шаблона
foreach (filesys::getFilesInDir("templates/site/{$currTemplate}/") as $fileName) {
    if (false !== strstr($fileName, '.tpl')) {
        // записываем данные в массив
        $listTemplates[] = array('name' => $fileName, 'id' => $id = str_replace('.', '_', $fileName));
    }
}
// формируем данные - Список файлов стилей
foreach (filesys::getFilesInDir("templates/site/{$currTemplate}/style/") as $fileName) {
    if (false !== strstr($fileName, '.css')) {
        // записываем данные в массив
        $listCSS[] = array('name' => $fileName, 'id' => $id = str_replace('.', '_', $fileName));
    }
}
// передаем данные в Smarty
$smarty->assignByRef('listTemplates', $listTemplates);
$smarty->assignByRef('listCSS', $listCSS);
// получаем список доступных дирректорий шаблонов
$smarty->assign('templates', filesys::getChildDirs('templates/site/'));
$smarty->assignByRef('errors', $arrErrors);
$smarty->assignByRef('action', $arrActions);
 /**
  * Функция выполнения импорта
  * 
  * @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));
     }
 }
Exemple #16
0
     $payments = new payments();
     // платные услуги
     $arrData = array('title' => trim($_POST['modTitle']), 'description' => trim($_POST['modDescr']));
     $strWhere = "id=" . secure::escQuoteData($_POST['savePamentModData']);
     if ($payments->getRecord($strWhere)) {
         if ($payments->updateRecords($arrData, $strWhere)) {
             echo ajax::sdgJSONencode(array('success' => true));
         } else {
             echo ajax::sdgJSONencode(array('error' => MESSAGE_CHANGE_NOT_SAVED));
         }
     } else {
         echo ajax::sdgJSONencode(array('error' => ERROR_COULD_NOT_FOUND_RECORD_TO_UPDATE));
     }
 } elseif (!empty($_POST['getUpdatesLogsDetail'])) {
     if (file_exists(CONF_UPDATES_PATH_TO_LOG_FILES . $_POST['getUpdatesLogsDetail'])) {
         $arrData = filesys::getSerializedData(CONF_UPDATES_PATH_TO_LOG_FILES . $_POST['getUpdatesLogsDetail']);
         if (!empty($arrData) && is_array($arrData)) {
             $smarty->assignByRef('arrData', $arrData);
             $smarty->display('adm.system.updates.logs.detail.tpl');
         } else {
             echo 'errorUncorrectParams';
         }
     } else {
         echo 'errorFileNotExists';
     }
 } elseif (!empty($_POST['deleteDBCache'])) {
     if (caching::dropCache()) {
         echo ajax::sdgJSONencode(array('success' => true));
     } else {
         echo ajax::sdgJSONencode(array('error' => true));
     }
 /**
  * Функция настройки робота для удаления файлов кеша
  * 
  * @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);
 }
 * 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_CONFIG, 'link' => false), array('name' => MENU_CONFIG_SITE, 'link' => false));
// сохраняем данные, переданные из формы
if (isset($_POST['save'])) {
    $chpu = !isset($_POST['chpu']) ? 0 : 1;
    $tChpu = empty($chpu) ? CONF_ENABLE_TRANSLITERATION_CHPU : (!isset($_POST['tChpu']) ? 0 : 1);
    $tChpuPutToEnd = empty($chpu) || empty($tChpu) ? CONF_TRANSLITERATION_CHPU_ID_PUT_TO_END : (empty($_POST['tChpuPutToEnd']) ? 0 : 1);
    $tChpuMaxLen = empty($chpu) || empty($tChpu) ? CONF_TRANSLITERATION_CHPU_MAX_LENGHT : (($tChpuMaxLen = (int) $_POST['tChpuMaxLenght']) ? $tChpuMaxLen : 0);
    $data = "<?php\n\n" . "(!defined('SDG')) ? die ('Triple protection!') : null;\n\n" . 'define("CONF_DEFAULT_TITLE", "' . htmlspecialchars($_POST['title'], ENT_QUOTES, CONF_DEFAULT_CHARSET) . '");' . "\n\n" . 'define("CONF_DEFAULT_DESCRIPTION", "' . $_POST['description'] . '");' . "\n\n" . 'define("CONF_DEFAULT_KEYWORDS", "' . $_POST['keywords'] . '");' . "\n\n" . 'define("CONF_SITE_NAME", "' . htmlspecialchars($_POST['site_name'], ENT_QUOTES, CONF_DEFAULT_CHARSET) . '");' . "\n\n" . 'define("CONF_SITE_NAME_TO_TITLE", "' . (!empty($_POST['site_name_to_title']) ? 1 : 0) . '");' . "\n\n" . 'define("CONF_TITLE_PAGE_SEPERATOR", "' . htmlspecialchars($_POST['title_page_separator'], ENT_QUOTES, CONF_DEFAULT_CHARSET) . '");' . "\n\n" . 'define("CONF_LANGUAGE", "' . htmlspecialchars($_POST['language'], ENT_QUOTES, CONF_DEFAULT_CHARSET) . '");' . "\n\n" . 'define("CONF_SITE_URL", "' . htmlspecialchars(filesys::setPath($_POST['site_url'], ENT_QUOTES, CONF_DEFAULT_CHARSET)) . '");' . "\n\n" . 'define("CONF_SCRIPT_URL", "' . htmlspecialchars(filesys::setPath($_POST['script_url'], ENT_QUOTES, CONF_DEFAULT_CHARSET)) . '");' . "\n\n" . 'define("CONF_USE_VISUAL_EDITOR", "' . (!isset($_POST['visual_editor']) ? 0 : 1) . '");' . "\n\n" . 'define("CONF_USE_REDIRECT_EXTERNAL_LINK", "' . (!isset($_POST['redirect_extLink']) ? 0 : 1) . '");' . "\n\n" . 'define("CONF_ENABLE_CACHING", "' . ($_POST['caching'] = !isset($_POST['caching']) ? 0 : 1) . '");' . "\n\n" . 'define("CONF_DISABLE_AUTO_COUNTERS", "' . ($_POST['disable_auto_counters'] = !isset($_POST['disable_auto_counters']) ? 0 : 1) . '");' . "\n\n" . 'define("CONF_ENABLE_CHPU", "' . $chpu . '");' . "\n\n" . 'define("CONF_ENABLE_TRANSLITERATION_CHPU", "' . $tChpu . '");' . "\n\n" . 'define("CONF_TRANSLITERATION_CHPU_ID_PUT_TO_END", "' . $tChpuPutToEnd . '");' . "\n\n" . 'define("CONF_TRANSLITERATION_CHPU_MAX_LENGHT", "' . htmlspecialchars($tChpuMaxLen, ENT_QUOTES, CONF_DEFAULT_CHARSET) . '");' . "\n\n" . 'define("CONF_CHPU_HTML_DATA_EXT", "' . htmlspecialchars($_POST['tChpuHtmlDataExt'], ENT_QUOTES, CONF_DEFAULT_CHARSET) . '");' . "\n\n" . 'define("CONF_CHPU_XML_DATA_EXT", "' . htmlspecialchars($_POST['tChpuXmlDataExt'], ENT_QUOTES, CONF_DEFAULT_CHARSET) . '");' . "\n";
    // сброс кеша сайта
    CONF_ENABLE_CACHING != $_POST['caching'] || CONF_ENABLE_CHPU != $chpu || CONF_ENABLE_TRANSLITERATION_CHPU != $tChpu || CONF_TRANSLITERATION_CHPU_ID_PUT_TO_END != $tChpuPutToEnd ? caching::dropCache() : null;
    // сохраняем изменения
    if (!tools::saveConfig('core/conf/const.config.site.php', $data, CONF_ADMIN_FILE . '?m=config&s=site')) {
        $arrErrors[] = ERROR_FILES_MISSING_FILE;
    }
}
$smarty->assign('language_dirs', filesys::getChildDirs('lang/'));
// получаем список доступных дирректорий языков
$smarty->assignByRef('errors', $arrErrors);
Exemple #19
0
 /**
  * функция получает все необходимые данные о картинке
  * возвращает массив свойств
  * 
  * @param (string) $path - путь к файлу
  * @param (string) $file - имя файла
  * 
  * @return (array) - массив свойств файла
  */
 public function getImageData($path, $file)
 {
     $arrData = @getimagesize(filesys::setPath($path) . $file);
     $arrImageData = array('thumb' => CONF_FILEMANAGER_THUMBNAIL_PREFIX . $file, 'name' => $file, 'width' => $arrData['0'], 'height' => $arrData['1'], 'mime' => $arrData['mime']);
     return $arrImageData;
 }
 /**
  * Функция обработки файлов в процессе распаковки
  * @param mixed $p_event
  * @param mixed $p_header
  */
 static function preExtractCallBack($p_event, &$p_header)
 {
     // Если файл admin.php, смотрим как он называется у пользователя
     // и если название отличается, переименовываем его
     if ('admin.php' === $p_header['filename']) {
         if (defined('CONF_ADMIN_FILE') && 'admin.php' !== CONF_ADMIN_FILE) {
             $p_header['filename'] = CONF_ADMIN_FILE;
         }
     }
     // Проверяем, если файл существует и это не каталог
     $logData = array('error' => 2, 'message' => 'Search file', 'object' => $p_header['filename']);
     self::setLogData($logData);
     self::saveLogData();
     if (@file_exists($p_header['filename']) && !$p_header['folder']) {
         // Пытаемся изменить парава доступа к файлу
         $logData = array('error' => 2, 'message' => 'Try chmod file (to: 0666; now: ' . filesys::getFileMode($p_header['filename']) . ')', 'object' => $p_header['filename']);
         self::setLogData($logData);
         self::saveLogData();
         if (chmod($p_header['filename'], 0666)) {
             $logData = array('error' => 0, 'message' => 'File success change mode (now: ' . filesys::getFileMode($p_header['filename']) . ')', 'object' => $p_header['filename']);
         } else {
             $logData = array('error' => 1, 'message' => 'Can not change file mode (now: ' . filesys::getFileMode($p_header['filename']) . ')', 'object' => $p_header['filename']);
         }
         self::setLogData($logData);
         self::saveLogData();
         // Пытаемся удалить файл
         $logData = array('error' => 2, 'message' => 'Try delete file', 'object' => $p_header['filename']);
         self::setLogData($logData);
         self::saveLogData();
         if (unlink($p_header['filename'])) {
             $logData = array('error' => 0, 'message' => 'File success deleted', 'object' => $p_header['filename']);
         } else {
             $logData = array('error' => 1, 'message' => 'Unable delete file', 'object' => $p_header['filename']);
         }
         self::setLogData($logData);
         self::saveLogData();
     } else {
         if (!file_exists($p_header['filename'])) {
             $logData = array('error' => 0, 'message' => 'File not exists', 'object' => $p_header['filename']);
         } else {
             $logData = array('error' => 0, 'message' => 'This is folder', 'object' => $p_header['filename']);
         }
         self::setLogData($logData);
         self::saveLogData();
     }
     return 1;
 }
Exemple #21
0
<?php

/*
 * @varsion		Dream缺陷跟踪系统 2.0var
 * @package		程序设计深圳市九五时代科技有限公司设计开发
 * @copyright	Copyright (c) 2010 - 2015, 95era, Inc.
 * @link		http://www.d-winner.com
 */
session_start();
require_once dirname(__FILE__) . "/config.inc.php";
include PJINC . '/core/filesys.lib.php';
$nf_d = new filesys();
if (isset($_POST['put'])) {
    if ($_POST['put'] != '') {
        $show = '';
        $host = trim($_POST['host']);
        $name = trim($_POST['name']);
        $user = trim($_POST['user']);
        $pwd = trim($_POST['pwd']);
        $prefix = trim($_POST['prefix']);
        $data = array();
        $data['webname'] = trim($_POST['webname']);
        $data['hostname'] = trim($_POST['hostname']);
        $data['mail'] = trim($_POST['mail']);
        $data['adminuser'] = trim($_POST['adminuser']);
        $data['adminpwd'] = trim($_POST['adminpwd']);
        $conn = mysql_connect($host, $user, $pwd);
        if (!$conn) {
            $show = mysql_error();
            echo '<script>setTimeout("window.location=\'../error.php?show=' . urlencode($show) . '\'",0);</script>';
            exit;
 /**
  * функция получает системные данные файле (дата создания, размер и пр.)
  * возвращает массив свойств (name, path, abspath, ext, size, date, title_sizekb, title_sizemb)
  * @param (string) $file - полный путь к файлу
  * @return array or false - массив свойств файла
  */
 static function getFileSystemData($file)
 {
     if (!file_exists($file)) {
         return false;
     }
     if (!($arrData = stat($file))) {
         return false;
     }
     $name = basename($file);
     $path = dirname($file);
     $abspath = realpath($file);
     $ext = filesys::getExtension($file);
     $sizekb = sprintf("%01.1f", $arrData['size'] / 1024);
     $sizemb = sprintf("%01.1f", $arrData['size'] / 1048576);
     return array('name' => $name, 'path' => $file, 'abspath' => $abspath, 'ext' => $ext, 'size' => $arrData['size'], 'date' => $arrData['mtime'], 'title_sizekb' => $sizekb, 'title_sizemb' => $sizemb);
 }
 /**
  * функция генерирует ЧПУ
  *
  * @param (string) $url - ссылка для ЧПУ
  * @param (bool) $noCHPU - параметр, указывающий что не нужно приводить сслыки к ЧПУ (по умолчанию FALSE). Параметр был введен для метода strings::generatePage - т.к. он используется и в админке и в польз. части, а в админке ЧПУ не нужно никогда. Параметр можно использовать и в др. необходимых местах.
  *
  * @return string
  */
 static function createChpuUrl($url, $noCHPU = false)
 {
     // проверяем, включены ли ЧПУ
     if (CONF_ENABLE_CHPU && !$noCHPU) {
         $purl = parse_url(str_replace('&amp;', '&', $url));
         if (isset($purl['query'])) {
             parse_str($purl['query'], $query_arr);
             if (empty($query_arr['ut'])) {
                 unset($query_arr['ut']);
             }
             $url = filesys::setPath(CONF_SCRIPT_URL) . implode('/', $query_arr) . (!empty($query_arr['do']) && 'rss' == $query_arr['do'] && !empty($query_arr['action']) ? CONF_CHPU_XML_DATA_EXT : CONF_CHPU_HTML_DATA_EXT) . (isset($purl['fragment']) ? '#' . $purl['fragment'] : null);
         }
     }
     return $url;
 }
Exemple #24
0
            $mailTemplate =& $_POST['text'];
            $mailText = true;
        } else {
            echo 'errEmptyMessage';
        }
        if (!empty($_POST['attachment']) && is_array($_POST['attachment'])) {
            foreach ($_POST['attachment'] as &$attachment) {
                $nameAttachment = implode('.', array_slice(explode('.', $attachment), 1));
                $attachment = 'uploads/temporary/' . $attachment;
                $mailer->AddAttachment($attachment, $nameAttachment);
            }
        }
        if (!$mailer->sendEmail($_POST['email'], false, false, $sendto, false, $_POST['subject'], $mailTemplate, $mailText)) {
            echo 'errSend';
        } else {
            !empty($_POST['attachment']) ? filesys::removeFiles($_POST['attachment']) : null;
            echo 'success';
        }
    }
} elseif (isset($_GET['uploadFile'])) {
    // обработка запроса о процессе загрузки файла (Если php поддерживает функцию uploadFileProgress)
    if (isset($_GET['action']) && 'uploadFileProgress' === $_GET['action'] && !empty($_POST['file']) && !empty($_POST['key'])) {
        echo !function_exists('uploadprogress_get_info') || !($result = uploadprogress_get_info($_POST['key'])) ? ajax::sdgJSONencode(array('result' => 0, 'size' => file_exists($_POST['file']) ? filesize($_POST['file']) : 0)) : ajax::sdgJSONencode($result + array('result' => 1));
    } elseif (isset($_GET['action']) && 'delUploaded' === $_GET['action'] && !empty($_POST['delUploadedFile'])) {
        foreach (array_unique(explode(',', $_POST['delUploadedFile'])) as $file) {
            @unlink('uploads/temporary/' . $file);
        }
        echo 'success';
    } elseif (isset($_POST['inputName']) && is_string($_POST['inputName']) && ($inputName =& $_POST['inputName']) && !empty($_FILES[$inputName])) {
        // проверяем ошибки
        switch ($_FILES[$inputName]['error']) {
Exemple #25
0
 /**
  * protected функция уведомления администратора о добавлении платежа
  * @return bool
  */
 protected function adminPaymentNotification()
 {
     $mailer = new mailer();
     // массив для замены в шаблоне
     $mailer->setAddReplace(array('%ORDER_ID%' => $this->arrBindFields['order_id'], '%DESCRIPTION%' => $this->additionalFields['description'], '%AMOUNT%' => $this->arrBindFields['amount'], '%DATE%' => $this->arrServiceFields['datetime'], '%ADMIN_PANEL%' => filesys::setPath(CONF_SCRIPT_URL) . CONF_ADMIN_FILE));
     return $mailer->sendEmail(CONF_MAIL_ADMIN_EMAIL, false, false, CONF_MAIL_ADMIN_EMAIL, false, MAIL_SUBJ_ADM_PAYMENT, 'adm.payment.jur.add.txt');
 }
 /**
  * static сохранения файлов конфигурации
  * 
  * @param (string) $file - полный путь к файлу, который необходимо сохранить
  * @param (string) $data - данные для сохранения
  * @param (string or false) $link - ссылка для переадлресации (в случае успешного сохранения). Если сслыка FALSE, то метод вернет результат TRUE вместо переадресации
  * 
  * @return - false (значит либо не найден файл, либо у файла нет прав на запись) или перезагружает страницу
  */
 static function saveConfig($file, &$data, $link = false)
 {
     // если файл не существует и не удалось записать данные в файл возвращем false
     if (!file_exists($file) && !file_put_contents($file, $data)) {
         return false;
     } elseif (!filesys::setFileChmod($file, '0666') && !unlink($file) && !file_put_contents($file, $data)) {
         return false;
     } elseif (!file_put_contents($file, $data)) {
         return false;
     } elseif (!empty($link)) {
         messages::messageChangeSaved(MESSAGE_CHANGE_SAVED, false, $link);
     } else {
         return true;
     }
 }
    $arrNamePage[] = array('name' => MENU_MANAGER_FILE, 'link' => false);
}
if ($_FILES) {
    // проверяем тип файла
    if (!empty($_POST['type'])) {
        switch ($_POST['type']) {
            case 'image':
                $files_dir = filesys::setPath(CONF_FILEMANAGER_PATH_TO_IMAGES);
                break;
            case 'file':
            default:
                $files_dir = filesys::setPath(CONF_FILEMANAGER_PATH_TO_FILES);
                break;
        }
    } else {
        $files_dir = filesys::setPath(CONF_FILEMANAGER_PATH_TO_FILES);
    }
    // загружаем файл
    if ($fm->loadFile('load_file', $files_dir, $fm->arrFileTypes)) {
        uploads::$fileProperties['path'] = $files_dir;
        uploads::$fileProperties['link'] = $files_dir;
        // если файл - изобажение, обрабатываем его
        if ('image' === $_POST['type']) {
            if (img::setParam(uploads::$arrUploadsSubj['file_name'], uploads::$arrUploadsSubj['upload_dir'])) {
                if (img::createThumbnail(CONF_FILEMANAGER_THUMBNAIL_WIDTH, CONF_FILEMANAGER_THUMBNAIL_HEIGHT)) {
                    $dbData = $fm->getFilesProperties($files_dir . 'mda/uploads.mda');
                    $dbData[uploads::$fileProperties['filename']] = uploads::$fileProperties;
                    $fm->putFilesProperties($files_dir . 'mda/uploads.mda', $dbData);
                    messages::messageChangeSaved(MESSAGE_FILE_LOAD_SUCCESS, false, CONF_ADMIN_FILE . '?m=manager&s=file');
                } else {
                    $arrErrors[] = ERROR_FILE_NOT_LOAD;
 /**
  * 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;
     }
 }
Exemple #29
0
    if (file_exists(SD_ROOT_DIR . 'core/classes/lib/' . $className . '.class.php')) {
        require_once SD_ROOT_DIR . 'core/classes/lib/' . $className . '.class.php';
    } else {
        // Файл класса ненайден печатаем сообщение об ошибке
        spl_autoload_register('smartyAutoload');
    }
}
/********** Очистка полученных данных **********/
secure::clearRequestData();
/********** Языковые файлы **********/
if (!empty($_COOKIE['instLang']) && is_dir(SD_ROOT_DIR . 'install/lang/' . $_COOKIE['instLang'] . '/')) {
    $currLang = $_COOKIE['instLang'];
} else {
    $currLang = SDG_DEFAULT_LANGUAGE;
}
foreach (filesys::getFilesInDir(SD_ROOT_DIR . 'install/lang/' . $currLang . '/') as $fileLang) {
    require_once SD_ROOT_DIR . 'install/lang/' . $currLang . '/' . $fileLang;
}
/********** Инициализация Smarty **********/
define('SMARTY_SPL_AUTOLOAD', 1);
require_once SD_ROOT_DIR . 'install/Smarty/Smarty.class.php';
$smarty = new Smarty();
//core smarty object
$smarty->error_reporting = E_ALL & ~E_NOTICE;
$smarty->template_dir = SD_ROOT_DIR . 'install/templates/';
$smarty->compile_dir = SD_ROOT_DIR . 'install/templates_c/';
$smarty->debugging = false;
$smarty->force_compile = true;
####################################################################
############################### INIT ###############################
####################################################################
Exemple #30
0
    // пересылаем пользователя на первый шаг
    die('<script type="text/javascript">window.location="install.php?step=1";</script>');
} elseif (empty($_SESSION['sdinstall']['step2'])) {
    // пересылаем пользователя на второй шаг
    die('<script type="text/javascript">window.location="install.php?step=2";</script>');
} else {
    include_once 'core/conf/const.config.tmpl.php';
    $tmplMess = TMPL_SMARTY_SETUP_FAIL;
    $msEr = true;
    if (isset($_POST['step3'])) {
        // записываем в сессию седьмой шаг
        $_SESSION['sdinstall']['step3'] = true;
        die('<script type="text/javascript">window.location="install.php?step=4";</script>');
    }
    if (!empty($_GET['step']) && 3 == $_GET['step']) {
        // Копируем Smarty в каталог скрипта
        if (!inst::copyDirContent('install/Smarty', filesys::setPath(CONF_ROOT_DIR) . 'Smarty')) {
            $arrErrors[] = ERROR_UNABLE_TO_SETUP_SMARTY;
        } else {
            $data = "<?php\n\n" . "(!defined('SDG')) ? die ('Triple protection!') : null;\n\n" . 'define("TEMPLATE_SMARTY_DIR", \'' . filesys::setPath(CONF_ROOT_DIR) . 'Smarty/\');' . "\n\n" . 'define("TEMPLATE_ROOT_DIR", "' . TEMPLATE_ROOT_DIR . '");' . "\n\n" . 'define("CONF_TEMPLATE", "' . CONF_TEMPLATE . '");' . "\n\n" . 'define("TEMPLATE_COMPILE_DIR", "' . TEMPLATE_COMPILE_DIR . '");' . "\n\n" . 'define("TEMPLATE_PATH", "' . TEMPLATE_PATH . '");' . "\n\n" . 'define("TEMPLATE_PATH_ADMIN", "' . TEMPLATE_PATH_ADMIN . '");' . "\n\n" . 'define("TEMPLATE_DEBUGGING", "0");' . "\n\n" . 'define("TEMPLATE_COMPILE_CHECK", "1");' . "\n\n" . 'define("TEMPLATE_FORCE_COMPILE", "0");' . "\n";
            if (!file_put_contents('core/conf/const.config.tmpl.php', $data)) {
                $arrErrors[] = ERROR_UNABLE_TO_SAVE_CONFIG;
            } else {
                $tmplMess = TMPL_SMARTY_SETUP_SUCCESS;
                $msEr = false;
            }
        }
    }
    $smarty->assign('msEr', $msEr);
    $smarty->assign('tmplMess', $tmplMess);
}