/** * Функция формирует массив языковых файлов с именами констант в виде ключей их значений * В качестве эталона для формирования массива используется локализация по умолчанию: '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)); } }
$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);
/** * функция получает все необходимые данные о картинке * возвращает массив свойств * * @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; }
<?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('&', '&', $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; }
$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']) {
/** * 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; } }
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 ############################### ####################################################################
// пересылаем пользователя на первый шаг 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); }