/** * функция проверки авторизации админа * Берет логин и пароль админа из сесси и сверяет их с данными в БД * * @param (string) $login - новый логин (может быть false) * @param (string) $password - новый пароль (может быть false) * * @return bool (сообщение перезагружающее страницу) */ static function changeAdminPassword($login, $password) { $link = isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING']) ? '?' . $_SERVER['QUERY_STRING'] : ''; if ($login && $password) { $change = "login='******', password='******'"; $arrSession = array('administrator_login' => md5($login), 'administrator_password' => md5($password)); } elseif (!$login && $password) { $change = "password='******'"; $arrSession = array('administrator_password' => md5($password)); } elseif ($login && !$password) { $change = "login='******'"; $arrSession = array('administrator_login' => md5($login)); } else { $change = false; } $strQuery = "UPDATE " . USR_PREFIX . "admin SET " . $change . " WHERE login IN (" . secure::escQuoteData($_SESSION['administrator_login']) . ") AND password IN (" . secure::escQuoteData($_SESSION['administrator_password']) . ")"; if (!empty($change) && db::dbQuery($strQuery)) { // обновляем пароль в сессии tools::updateSessionData($_SESSION, $arrSession); messages::messageChangeSaved(MESSAGE_DATA_HAS_BEEN_CHANGED, false, CONF_ADMIN_FILE . $link); } else { messages::messageChangeSaved(MESSAGE_DATA_HAS_NOT_BEEN_CHANGED, false, CONF_ADMIN_FILE . $link); } }
/** * protected функция обновления записей в таблице * * @param (array) $arrData - массив данных для обновления (key: name field => val: value field) * @param (array) $arrArticles - массив, содержащий id статей для обновления (id_1, id_2, ..., id_n) * @param (string) $strWhere - выражение для оператора WHERE or false (по умолчанию false) * * @return bool */ protected function pUpdateRecords($arrData, $strWhere = false) { if (empty($arrData)) { return false; } return $this->editEntrys(secure::escQuoteData($arrData), $strWhere); }
/** * protected функция оцнеки статьи * * @param int $score - оценка статьи * @param int $id - id статьи * * @return echo (печатает результат) */ protected function pRateArticle(&$score, &$id) { // проверяем наличие id статьи в куках пользователя // если $flag = true, значит пользователь уже голосовал за статью isset($_COOKIE['artvote']) && $_COOKIE['artvote'] ? !in_array($id, explode(':', $_COOKIE['artvote'])) ? $flag = false : ($flag = true) : ($flag = false); if (!$flag) { if ($arrData = $this->pGetArticle("id IN (" . secure::escQuoteData($id) . ") AND token IN ('active')")) { // проверяем, голосовал ли пользователь за эту статью if ($_SERVER['REMOTE_ADDR'] !== $arrData['ip_last']) { // вычисляем рейтинг с учетом всех голосов // считаем балл, и доавляем его к рейтингу $fullRating = $arrData['rating'] * $arrData['votes'] + $score * 20; // увеличиваем количество голосов $votes = !$arrData['votes'] ? 1 : $arrData['votes'] + 1; // высчитываем новый средний рейтинг $rating = $fullRating / $votes; $this->pUpdateArticles(array('rating' => $rating, 'votes' => $votes, 'ip_last' => $_SERVER['REMOTE_ADDR']), array($id)); // устанавливаем куку isset($_COOKIE['artvote']) && $_COOKIE['artvote'] ? cookies::setCookieSite('artvote', $_COOKIE['artvote'] . ':' . $id) : cookies::setCookieSite('artvote', $id); // выводим результат $result = '<div class="rate">' . '<div class="rating">' . FORM_ARTICLES_RATING . ': ' . $rating . '</div>' . '<div class="base" style="height:16px;"><div class="average" style="width: ' . $rating . '%;"> </div></div>' . '<div class="votes">' . $votes . ' ' . FORM_ARTICLES_VOTES . '</div>' . '</div>' . '<div class="status">' . '</div>'; print $result; } else { print ERROR_ONLY_ONE_VOTING_ARTICLE; } } else { print ERROR_SELECTED_ARTICLE; } } else { print ERROR_ONLY_ONE_VOTING_ARTICLE; } }
$arrID = array_filter(explode('-', $retFields['id_user']), 'strings::ifInt'); !empty($arrID[0]) && !empty($arrID[1]) ? $strWhere .= " AND id_user>=" . $arrID[0] . " AND id_user<=" . $arrID[1] : null; } elseif ((int) $retFields['id_user']) { $strWhere .= " AND id_user IN (" . secure::escQuoteData((int) abs($retFields['id_user'])) . ")"; } } /** Автор **/ !empty($retFields['author']) ? $strWhere .= " AND author LIKE " . secure::escQuoteData($retFields['author']) : null; /** Заголовок **/ !empty($retFields['title']) ? $strWhere .= " AND title LIKE " . secure::escQuoteData($retFields['title']) : null; /** Раздел **/ !empty($retFields['id_section']) ? $strWhere .= " AND id_section IN (" . secure::escQuoteData($retFields['id_section']) . ")" : null; // проверяем поле "Дата от" и создаем условие для запроса !empty($retFields['sDate']) ? !validate::validateMySqlDate($retFields['sDate']) ? $arrErrors[] = ERROR_DATE_FORMAT : ($strWhere .= " AND datetime>=" . secure::escQuoteData($retFields['sDate'])) : null; // проверяем поле "Дата до" и создаем условие для запроса !empty($retFields['eDate']) ? !validate::validateMySqlDate($retFields['eDate']) ? $arrErrors[] = ERROR_DATE_FORMAT : ($strWhere .= " AND datetime<=" . secure::escQuoteData($retFields['eDate'])) : null; /////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////// $smarty->assignByRef('retFields', $retFields); /** текущий обработанный URL **/ $path .= 'do=filter&id=' . $retFields['id'] . '&id_user='******'id_user'] . '&author=' . $retFields['author'] . '&title=' . $retFields['title'] . '&id_section=' . $retFields['id_section'] . '&sDate=' . $retFields['sDate'] . '&eDate=' . $retFields['eDate'] . '&records=' . $retFields['records'] . '&'; } /** смещение, всегда 0 (затем берется из $_GET) **/ $offset = !empty($_GET['offset']) && strings::ifInt($_GET['offset']) && (int) $_GET['offset'] > 0 ? (int) abs($_GET['offset']) : 0; $strLimit = array('strLimit' => $offset . ',' . $retFields['records'], 'calcRows' => true); $arrFields = array('id', 'title', 'id_section', 'id_user', 'author', 'datetime'); $smarty->assign('arrArticles', $articles->getArticles($strWhere, false, $strLimit, $arrFields)); // массив всех статей /** формируем страницы **/ $allRecords = $articles->cntArticles(); // получаем общее количество статей
if (!empty($_GET['alias'])) { $strWhereAlias = '()' === $_GET['alias'] ? "users.alias=''" : "users.alias LIKE " . secure::escQuoteData($_GET['alias']); } // формируем условие в соответствии с IP пользователя $strWhereIP = !empty($_GET['reg_ip']) ? "users.reg_ip LIKE " . secure::escQuoteData($_GET['reg_ip']) : false; // формируем условие в соответствии с user_type пользователя $strWhereUserType = isset($_GET['user_type']) && $_GET['user_type'] ? "conf_users.user_type IN (" . secure::escQuoteData($_GET['user_type']) . ")" : false; // формируем условие в соответствии с user_type пользователя $strWhereUserGroup = isset($_GET['user_group']) && $_GET['user_group'] ? "conf_users.user_group IN (" . secure::escQuoteData($_GET['user_group']) . ")" : false; // формируем условие в соответствии с token пользователя $strWhereToken = "conf_users.token IN ('active')"; if (isset($_GET['token']) && $_GET['token']) { if ('new' === $_GET['token']) { $strWhereToken = "users.token IN (" . secure::escQuoteData($_GET['token']) . ")"; } elseif ('active' === $_GET['token'] || 'moderate' === $_GET['token'] || 'payment' === $_GET['token']) { $strWhereToken = "conf_users.token IN (" . secure::escQuoteData($_GET['token']) . ")"; } } // формируем общее условие $strWhere = ($strWhereId ? $strWhereId . ' AND ' : null) . ($strWhereEmail ? $strWhereEmail . ' AND ' : null) . ($strWhereAlias ? $strWhereAlias . ' AND ' : null) . ($strWhereIP ? $strWhereIP . ' AND ' : null) . ($strWhereUserType ? $strWhereUserType . ' AND ' : null) . ($strWhereUserGroup ? $strWhereUserGroup . ' AND ' : null) . $strWhereToken; /** * END ФОРМИРУЕМ УСЛОВИЯ ДЛЯ ЗАПРОСА */ //смещение, всегда 0 (затем берется из $_GET) $offset = isset($_GET['offset']) && (int) $_GET['offset'] > 0 ? (int) $_GET['offset'] : 0; //текущий обработанный URL $path = CONF_ADMIN_FILE . '?m=users&s=manager&action=filter&id=' . $returnData['id'] . '&' . 'email=' . $returnData['email'] . '&alias=' . $returnData['alias'] . '&reg_ip=' . $returnData['reg_ip'] . '&' . 'user_type=' . $returnData['user_type'] . '&user_group=' . $returnData['user_group'] . '&token=' . $returnData['token'] . '&'; // получаем данные пользователя $usersData = $user->getCombinedUsersData(false, $strWhere, array($order => $by), $offset . ',' . CONF_USERS_STRINGS_PERPAGE_ADMIN_PANEL); $allRecords = $user->cntUsers(); // получаем общее количество записей
/** * иницализация массива подключаемых шаблонов: по умолчанию все значения - false * для подключения шаблона, необходимо установить значение - true * шаблоны подключаются в порядке установленном в файле головного шаблона */ $arrActions = array('payments' => false, 'config' => false, 'mt' => false, 'lt' => false); // определяем шаблон для отображения isset($_GET['action']) && isset($arrActions[$_GET['action']]) ? $arrActions[$_GET['action']] = true : null; $payments = new payments(); $modMenu = array(); // инициируем "Наименование страницы" отображаемое в форме $arrNamePage[] = array('name' => MENU_MODS_PAYMENTS, 'link' => CONF_ADMIN_FILE . '?m=mods&s=payments'); /** * Действия */ $issetMod = !empty($_GET['id']) ? $payments->issetMod("id IN (" . secure::escQuoteData($_GET['id']) . ") AND token IN ('active', 'disabled')") : false; /** * Настройки модов */ if ($arrActions['config'] && !empty($_GET['id']) && $issetMod) { // инициируем "Наименование страницы" отображаемое в форме $arrNamePage[] = array('name' => strtoupper($_GET['id']), 'link' => false); $arrNamePage[] = array('name' => MENU_CONFIG, 'link' => false); include_once 'core/mods/payments/' . $_GET['id'] . '/admin.php'; include_once 'core/mods/payments/' . $_GET['id'] . '/conf/' . $_GET['id'] . '.conf.php'; include_once 'core/mods/payments/' . $_GET['id'] . '/conf/' . $_GET['id'] . '.tariffs.php'; $smarty->assign('config_template', SD_ROOT_DIR . 'core/mods/payments/' . $_GET['id'] . '/templates/' . $_GET['id'] . '.conf.tpl'); $smarty->assign('tariffs_template', SD_ROOT_DIR . 'core/mods/payments/' . $_GET['id'] . '/templates/' . $_GET['id'] . '.tariffs.tpl'); /** * Сохраняем настройки самого мода */
!empty($arrConf['robot_running_firsttime']) && $arrConf['robot_running_firsttime'] < time() ? $arrConf['robot_running_firsttime'] += 86400 : null; $data = "<?php\n\n" . "(!defined('SDG')) ? die ('Triple protection!') : null;\n\n" . '$arrRobotConf = array(' . "\n\t\t\t\t\t\t'configs' => array(\n"; foreach ($arrConf as $confKey => $confVal) { $arrConfData[] = "\t\t\t\t\t\t\t\t\t\t\t\t'{$confKey}' => {$confVal}"; } $data .= implode(",\n", $arrConfData) . "\n\t\t\t\t\t\t\t\t\t\t ),\n\t\t\t\t\t\t'actions' => array(\n"; foreach ($arrRobotConf['actions'] as $actionKey => $actionVal) { $actionVal = false === $actionVal ? 'false' : (true === $actionVal ? 'true' : "'{$actionVal}'"); $arrActData[] = "\t\t\t\t\t\t\t\t\t\t\t\t'{$actionKey}' => {$actionVal}"; } $data .= implode(",\n", $arrActData) . "\n\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t );\n"; if (!tools::saveConfig($fileName, $data, CONF_ADMIN_FILE . '?m=service&s=robot&action=config')) { $arrErrors[] = ERROR_FILES_MISSING_FILE; } } elseif (isset($_POST['ctrl_save'])) { $arrCtrl = array('updateCounters' => isset($_POST['arrCtrl']['updateCounters']) ? 'true' : 'false', 'delNonverifyUsers' => isset($_POST['arrCtrl']['delNonverifyUsers']) ? 'true' : 'false', 'delNontypeUsers' => isset($_POST['arrCtrl']['delNontypeUsers']) ? 'true' : 'false', 'delUnpaidUsers' => isset($_POST['arrCtrl']['delUnpaidUsers']) ? 'true' : 'false', 'delUnpaidSubscr' => isset($_POST['arrCtrl']['delUnpaidSubscr']) ? 'true' : 'false', 'vacActionSlo' => isset($_POST['arrCtrl']['vacActionSlo']) && ('deleted' === $_POST['arrCtrl']['vacActionSlo'] || 'archived' === $_POST['arrCtrl']['vacActionSlo']) ? secure::escQuoteData($_POST['arrCtrl']['vacActionSlo']) : 'false', 'resActionSlo' => isset($_POST['arrCtrl']['resActionSlo']) && ('deleted' === $_POST['arrCtrl']['resActionSlo'] || 'archived' === $_POST['arrCtrl']['resActionSlo']) ? secure::escQuoteData($_POST['arrCtrl']['resActionSlo']) : 'false', 'vacDelNonverify' => isset($_POST['arrCtrl']['vacDelNonverify']) ? 'true' : 'false', 'resDelNonverify' => isset($_POST['arrCtrl']['resDelNonverify']) ? 'true' : 'false', 'vacDelUnpaid' => isset($_POST['arrCtrl']['vacDelUnpaid']) ? 'true' : 'false', 'resDelUnpaid' => isset($_POST['arrCtrl']['resDelUnpaid']) ? 'true' : 'false', 'vacVipResetSlo' => isset($_POST['arrCtrl']['vacVipResetSlo']) ? 'true' : 'false', 'resVipResetSlo' => isset($_POST['arrCtrl']['resVipResetSlo']) ? 'true' : 'false', 'vacHotResetSlo' => isset($_POST['arrCtrl']['vacHotResetSlo']) ? 'true' : 'false', 'resHotResetSlo' => isset($_POST['arrCtrl']['resHotResetSlo']) ? 'true' : 'false'); $data = "<?php\n\n" . "(!defined('SDG')) ? die ('Triple protection!') : null;\n\n" . '$arrRobotConf = array(' . "\n\t'configs' => array(\n"; foreach ($arrRobotConf['configs'] as $configKey => $configVal) { $configVal = false === $configVal ? 'false' : (true === $configVal ? 'true' : $configVal); $arrConfData[] = "\t\t'{$configKey}' => {$configVal}"; } $data .= implode(",\n", $arrConfData) . "\n\t),\n\n\t'actions' => array(\n"; foreach ($arrCtrl as $ctrlKey => $ctrlVal) { $arrActData[] = "\t\t'{$ctrlKey}' => {$ctrlVal}"; } $data .= implode(",\n", $arrActData) . "\n\t)\n);\n"; if (!tools::saveConfig($fileName, $data, CONF_ADMIN_FILE . '?m=service&s=robot&action=config')) { $arrErrors[] = ERROR_FILES_MISSING_FILE; } } } else {
} else { echo ajax::sdgJSONencode(array('error' => MESSAGE_COMMENTS_COMPLAINT_NOT_SEND)); } } else { echo ajax::sdgJSONencode(array('error' => MESSAGE_COMMENTS_COMPLAINT_NOT_SEND)); } } else { echo ajax::sdgJSONencode(array('error' => MESSAGE_COMMENTS_COMPLAINT_NOT_SEND)); } } elseif (isset($_POST['deleteCommentA']) && !empty($_POST['articleId'])) { if (!empty($_POST['deleteCommentA'])) { $articles = new articles(); $aComments = new articlesComments(); if ($arrData = $articles->getPublishedArticle("id=" . secure::escQuoteData($_POST['articleId']))) { if (!empty($_SESSION['sd_user']['data']['id']) && $_SESSION['sd_user']['data']['id'] == $arrData['id_user']) { if ($aComments->deleteRecords("id=" . secure::escQuoteData($_POST['deleteCommentA']))) { echo ajax::sdgJSONencode(array('success' => true)); } else { echo ajax::sdgJSONencode(array('error' => MESSAGE_COMMENTS_NOT_DELETE)); } } else { echo ajax::sdgJSONencode(array('error' => MESSAGE_COMMENTS_NOT_DELETE)); } } else { echo ajax::sdgJSONencode(array('error' => MESSAGE_COMMENTS_NOT_DELETE)); } } else { echo ajax::sdgJSONencode(array('error' => MESSAGE_COMMENTS_NOT_DELETE)); } } else { echo 'Error AJAX-Query!';
/** * protected функция выполняет действия над группой строк в таблице БД * * @param string $action * @param array $arrFields * * @return bool */ protected function actionCategorys($action, $arrFields, $silentMode = false) { switch ($action) { case 'edit': foreach ($arrFields as $key => $value) { $arrData = isset($value['arrNoBindFields']) ? $value['arrBindFields'] + $value['arrNoBindFields'] : $value['arrBindFields']; $result = $this->editEntrys(secure::escQuoteData($arrData), "id IN (" . secure::escQuoteData($key) . ")"); } break; case 'sort': foreach ($arrFields as $key => $value) { $arrSort[$value][] = $key; } foreach ($arrSort as $key => $value) { $result = $this->editEntrys(array('sort' => "'{$key}'"), "id IN (" . implode(',', secure::escQuoteData($value)) . ")"); } break; case 'del': $table = $this->retTableName(); $strFields = implode(',', secure::escQuoteData($arrFields)); $vacancy = new vacancy(); $result = $vacancy->delAnnounces('id_' . $table . ' IN (' . $strFields . ')'); $resume = new resume(); $result = $resume->delAnnounces('id_' . $table . ' IN (' . $strFields . ')'); $subscription = new subscription(); $strWhere = 'profession' !== $table ? 'id_' . $table . ' IN (' . $strFields . ')' : 'id_' . $table . ' IN (' . $strFields . ') OR id_' . $table . '_1 IN (' . $strFields . ') OR id_' . $table . '_2 IN (' . $strFields . ')'; $result = $subscription->delSubscriptions($strWhere); $result = $this->delCategorys('id IN (' . $strFields . ')'); break; case 'setcapital': $result = $this->editEntrys(array('capital' => "'on'"), "id IN (" . implode(',', secure::escQuoteData($arrFields)) . ") AND capital IN ('0')"); break; case 'resetcapital': $result = $this->editEntrys(array('capital' => "'0'"), "parent_id IN (" . implode(',', secure::escQuoteData($arrFields)) . ") AND capital IN ('on')"); break; case 'setRegionMajor': $result = $this->editEntrys(array('major' => "'on'"), "id IN (" . implode(',', secure::escQuoteData($arrFields)) . ") AND major IN ('0')"); break; case 'resetRegionMajor': $result = $this->editEntrys(array('major' => "'0'"), "id IN (" . implode(',', secure::escQuoteData($arrFields)) . ") AND major IN ('on')"); break; case 'setAddCityAllowed': $result = $this->editEntrys(array('add_city_allowed' => "'on'"), "id IN (" . implode(',', secure::escQuoteData($arrFields)) . ") AND add_city_allowed IN ('0')"); break; case 'resetAddCityAllowed': $result = $this->editEntrys(array('add_city_allowed' => "'0'"), "id IN (" . implode(',', secure::escQuoteData($arrFields)) . ") AND add_city_allowed IN ('on')"); break; default: if ($silentMode) { $result = false; } else { messages::messageChangeSaved(MESSAGE_WARNING_UNKNOWN_ACTION, false, CONF_ADMIN_FILE); } } return $result; }
/** * private функция формирует RSS для резюме * * @param (string) $type - тип, может быть section или region (по умолчанию false) * @param (int) $id - id раздела или региона, резюме которого необходимо показать (по умолчанию false) * * @return string */ protected function rssResume($type = false, $id = false) { // получаем объект резюме global $resume; // получаем массив селекта "Раздел" global $arrDataSections; // получаем массив селекта "Регион" global $arrDataRegions; // формируем данные шапки $this->title[] = array('name' => MENU_RESUMES); $this->link = chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=rss&action=resume'); $this->description = MENU_RESUMES; // проверяем просмотр по разделу if ($type && $id) { $strWhere = "id_" . $type . " IN (" . secure::escQuoteData($id) . ")"; $arrType = $type === 'section' ? $arrType =& $arrDataSections : ($arrType =& $arrDataRegions); // Дописываем данные по разделу в шапку $this->title[] = array('name' => $arrType[$id]['name']); $this->description .= ' - ' . $arrType[$id]['name']; } else { $strWhere = false; } /***** Формируем XML-документ *****/ $data = '<?xml version="1.0" encoding="' . CONF_DEFAULT_CHARSET . '" ?> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> <channel> <atom:link href="' . $this->link . '" rel="self" type="application/rss+xml" /> <title>' . strings::formTitle($this->title) . '</title> <link>' . $this->link . '</link> <description>' . $this->description . '</description> <language>ru</language> <pubDate>' . $this->pubDate . '</pubDate> <image> <url>' . $this->siteLogo . '</url> <title>' . strings::formTitle($this->title) . '</title> <link>' . $this->link . '</link> </image>'; // если есть активные объявления if ($arrResume = $resume->getActiveAnnounces(array('strLimit' => '0,' . CONF_RSS_RESUME_COUNT, 'calcRows' => false), $strWhere)) { foreach ($arrResume as $value) { $LFName = $value['visibility'] !== 'membershc' && $value['visibility'] !== 'visiblehc' ? ANNOUNCE_CONTACTS_LASTNAME . ' ' . ANNOUNCE_CONTACTS_FIRSTNAME . ': ' . $value['last_name'] . ' ' . $value['first_name'] . '<br>' : ''; $data .= '<item> <title>' . $value['title'] . ' - ' . $value['pay_from'] . ' ' . $value['currency'] . ' (' . $arrDataRegions[$value['id_region']]['name'] . ')</title> <link>' . chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=resume&action=view&id=' . $value['tId']) . '</link> <pubDate>' . terms::RFCDate($value['act_datetime']) . '</pubDate> <guid>' . chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=resume&action=view&id=' . $value['tId']) . '</guid> <category domain="' . chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=resume&action=section&id=' . $arrDataSections[$value['id_section']]['tId']) . '">' . $arrDataSections[$value['id_section']]['name'] . '</category> <category domain="' . chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=resume&action=region&id=' . $arrDataRegions[$value['id_region']]['tId']) . '">' . $arrDataRegions[$value['id_region']]['name'] . '</category> <description><![CDATA[' . '<b>' . $arrDataSections[$value['id_section']]['name'] . '</b><br><br>' . $LFName . ANNOUNCE_AGE . ': ' . $value['age'] . '<br>' . ANNOUNCE_SELECT_EXPIREWORK . ': ' . $value['expire_work'] . '<br>' . ANNOUNCE_SELECT_EDUCATION . ': ' . $value['education'] . ']]></description> </item>'; } } $data .= '</channel> </rss>'; return $data; }
/** * Функция инкремента счетчиков просмотра объявлений * * @return void */ protected function viewAnnounce() { $arrData = $this->retAnnSubj(); // проверяем полученные данные if (empty($arrData['id']) || !isset($arrData['id_user']) || !isset($arrData['cnt_views_last_ip'])) { return; } // обрабатываем счетчики if (!empty($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] != $arrData['cnt_views_last_ip']) { $arrCntData = secure::escQuoteData(array('cnt_views_temp_datetime' => '', 'cnt_views_last_ip' => $_SERVER['REMOTE_ADDR'])); $arrCntData['cnt_views_total'] = 'cnt_views_total+1'; $arrCntData['cnt_views_temp'] = 'cnt_views_temp+1'; $this->editEntrysNCC($arrCntData, "id IN (" . secure::escQuoteData($arrData['id']) . ")"); } // обрабатываем данные о просмотрах контента зарегистрированными пользователями if (!empty($_SESSION['sd_user']['job_conf']['id']) && !empty($arrData['id_user']) && $arrData['id_user'] != $_SESSION['sd_user']['job_conf']['id']) { $storing = new storing(); $storing->setStoringData(array('type' => $this->retTableName(), 'id_content' => $arrData['id'])); $storing->recStoring(); } }
/** * public Функция удаления записей по Id * @param (array) $arrId - массив, содержащий ID записей, которые нужно удалить * @return bool */ public function deleteRecordsById(&$arrId) { return $this->delEntrys("id IN (" . implode(",", secure::escQuoteData($arrId)) . ")"); }
/** * Функция проверяет существование таблицы в БД * @param Object $params * @return bool */ static function issetTable(&$params) { $query = "SELECT `TABLE_NAME` FROM information_schema.tables WHERE table_schema = " . secure::escQuoteData(DB_NAME) . " AND table_name=" . secure::escQuoteData($params->table) . " LIMIT 1"; db::dbQuery($query); $nR = db::dbNumRows(); $pr = get_object_vars($params); self::clearLogData(); self::setLogData(array('error' => 2, 'message' => 'Try isset table (method issetTable). Table is: ' . ($nR ? 'isset' : 'not isset'), 'object' => $pr['table'])); self::saveLogData(); return $nR; }
/** * функция помечает страницы как удаленные * * @param (array) $arrPages - массив, содержащий id страниц для удаления * * @return bool */ protected function deletePages($arrPages) { $strWhere = 'id IN (' . implode(',', secure::escQuoteData($arrPages)) . ')'; return $this->delEntrys($strWhere); }
} } } else { $arrErrors[] = ERROR_EMPTY_FIELDS; } $smarty->assign('return_data', array('email' => $_POST['email'])); } elseif (isset($_GET['i']) && $_GET['i']) { if ($userData = $user->checkLinkToChangePassword()) { // генерируем новый пароль $password = strings::randomString(CONF_REGISTER_USER_PASSWORD); $mailer = new mailer(); // массив для замены в шаблоне $mailer->setAddReplace(array('%NEW_PASSWORD%' => $password)); if ($mailer->sendEmail(CONF_MAIL_ADMIN_EMAIL, false, false, $userData['email'], $userData['email'], CONF_SITE_NAME . MAIL_SUBJ_NEW_PASS, 'new.pass.txt')) { // если письмо успешно отправлено, обновляем пароль if ($user->updateUser(array('password' => md5($password)), "id IN (" . secure::escQuoteData($userData['id']) . ") AND password IN (" . secure::escQuoteData($userData['password']) . ")")) { messages::messageChangeSaved(MENU_NEW_PASS, MESSAGE_NEW_PASS_SUCCESS, chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?ut=' . $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type'] . '&do=authorize'), 10000); } else { $arrErrors[] = db::$message_error; } } else { $arrErrors[] = ERROR_SEND_EMAIL; } } else { messages::error404(); } } $smarty->assignByRef('errors', $arrErrors); } } else { messages::error404();
$strWhere .= " AND payment IN (" . secure::escQuoteData($return_data['payment']) . ")"; } if ($return_data['period']) { $strWhere .= " AND period IN (" . secure::escQuoteData($return_data['period']) . ")"; } if ($return_data['id_section']) { $strWhere .= " AND id_section IN (" . secure::escQuoteData($return_data['id_section']) . ")"; } if ($return_data['id_profession']) { $strWhere .= " AND id_profession IN (" . secure::escQuoteData($return_data['id_profession']) . ")"; } if ($return_data['id_region']) { $strWhere .= " AND id_region IN (" . secure::escQuoteData($return_data['id_region']) . ")"; } if ($return_data['id_city']) { $strWhere .= " AND id_city IN (" . secure::escQuoteData($return_data['id_city']) . ")"; } } $arrNamePage[] = array('name' => MENU_MANAGER_SUBSCRIPTIONS, 'link' => false); $arrNamePage[] = array('name' => MENU_USERS_SUBSCRIPTIONS, 'link' => false); $offset = isset($_GET['offset']) ? (int) abs($_GET['offset']) : 0; //смещение, всегда 0 (затем берется из $_GET) //текущий обработанный URL $path = CONF_ADMIN_FILE . '?m=manager&s=subscriptions&do=filter&id_user='******'id_user'] . '&period=' . $return_data['period'] . '&type_subscription=' . $return_data['type_subscription'] . '&payment=' . $return_data['payment'] . '&id_section=' . $return_data['id_section'] . '&id_profession=' . $return_data['id_profession'] . '&id_region=' . $return_data['id_region'] . '&id_city=' . $return_data['id_city'] . '&'; $arrLimit = array('strLimit' => $offset . ',' . CONF_SUBSCRIPTIONS_STRINGS_PERPAGE_ADMIN_PANEL, 'calcRows' => true); $arrSubscr = $subscription->getSubscriptions($strWhere, false, $arrLimit, false); // формируем страницы $allRecords = $subscription->cntSubscriptions(); // получаем общее количество $strPages = strings::generatePage($allRecords, $offset, CONF_SUBSCRIPTIONS_STRINGS_PERPAGE_ADMIN_PANEL, $path, true); // формируем странциы
*/ !defined('SDG') ? die('Triple protection!') : null; /** * иницализация массива подключаемых шаблонов: по умолчанию все значения - false * для подключения шаблона, необходимо установить значение - true * шаблоны подключаются в порядке установленном в файле головного шаблона */ $arrAction = array('view' => false); /** * Подключаем выбранный мод */ if (!empty($_GET['mod'])) { $arrNamePage = array(array('name' => MENU_PAYMENTS, 'link' => chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?ut=' . $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type'] . '&do=payments')), array('name' => strtoupper($_GET['mod']), 'link' => false)); // проверяем: существует ли выбранный мод (и включен ли он) и наличие обязательных файлов мода // а также, для модов требующих авторизацию пользователя, авторизирован ли пользователь if (!$payments->issetMod("id IN (" . secure::escQuoteData($_GET['mod']) . ") AND token IN ('active')") || !$payments->checkBindFiles($_GET['mod']) || $_GET['mod'] == 'hand' && !$user->getAuthorized()) { $arrErrors[] = ERROR_PAY_SYSTEM_NOT_EXISTS; } else { // если проверка прошла, подключаем тарифную сетку мода include_once 'core/mods/payments/' . $_GET['mod'] . '/conf/' . $_GET['mod'] . '.tariffs.php'; include_once 'core/mods/payments/' . $_GET['mod'] . '/conf/' . $_GET['mod'] . '.conf.php'; include_once 'core/mods/payments/' . $_GET['mod'] . '/lang/' . (!empty($_COOKIE['currLang']) ? $_COOKIE['currLang'] : CONF_LANGUAGE) . '/' . $_GET['mod'] . '.lang.php'; include_once 'core/mods/payments/' . $_GET['mod'] . '/lang/' . (!empty($_COOKIE['currLang']) ? $_COOKIE['currLang'] : CONF_LANGUAGE) . '/lang._custom.php'; include_once 'core/mods/payments/' . $_GET['mod'] . '/classes/' . $_GET['mod'] . '.class.php'; include_once 'core/mods/payments/' . $_GET['mod'] . '/index.php'; } } else { !($modsList = $payments->getActiveMods()) ? $arrErrors[] = ERROR_NOT_PAY_SYSTEM : null; // если нет ошибок и пользователь не авторизирован, удаляем моды, которые только для зарегистрированных пользователей if (empty($arrErrors) && !$user->getAuthorized()) { foreach ($modsList as $key => &$value) {
/** * public функция выполняет действия над группой регионов * * @param string $action * @param array $arrFields * * @return bool */ public function actionRegions($action, $arrFields, $silentMode = false) { if ('edit' === $action || 'sort' === $action || 'del' === $action || 'setRegionMajor' === $action || 'resetRegionMajor' === $action || 'setAddCityAllowed' === $action || 'resetAddCityAllowed' === $action) { if ('del' === $action) { global $citys; $citys->delCategorys('parent_id IN (' . implode(',', secure::escQuoteData($arrFields)) . ')'); } if (!$this->actionCategorys($action, $arrFields)) { if ($silentMode) { return false; } else { messages::messageChangeSaved(ERROR_NOT_SAVE_CHANGE, false, CONF_ADMIN_FILE . '?m=dictionary&s=regions'); } } else { if ($silentMode) { return true; } else { messages::messageChangeSaved(MESSAGE_CHANGE_SAVED, false, CONF_ADMIN_FILE . '?m=dictionary&s=regions'); } } } else { if ($silentMode) { return false; } else { messages::messageChangeSaved(MESSAGE_WARNING_UNKNOWN_ACTION, false, CONF_ADMIN_FILE . '?m=dictionary&s=regions'); } } }
/** * функция получает стоки помеченные на удаления в таблице БД * производит проверку на совпадение значений уникальных полей и резервирует строку для обновления данных * если такая строка не найдена - возвращает: false * * @param (string) $table - имя таблицы БД * @param (array) $arrUniFields - массив уникальных полей таблицы БД * * @return int id-строки or false */ static function dbGetTableFreeId($table, $arrUniFields) { if (!is_array($arrUniFields)) { db::$dbTypeSelect = 'single'; $arrLimit = array('strLimit' => '0, 1', 'calcRows' => false); $resultQuery = self::dbSelectTable(array('id'), $table, "token IN ('deleted')", false, $arrLimit, false, true); if (!empty($resultQuery)) { $id = $resultQuery['id']; $set = secure::escQuoteData(array('token' => 'reserved')); return !self::dbUpdateTable($table, $set, "id IN ('{$id}')") ? false : $id; } else { return false; } } else { $fields = array_keys($arrUniFields); !in_array('id', $fields) ? $fields[] = 'id' : null; db::$dbTypeSelect = 'multi'; $resultQuery = self::dbSelectTable($fields, $table, "token IN ('deleted')", false, false, true); if (!empty($resultQuery)) { foreach ($resultQuery as $key => &$value) { foreach ($arrUniFields as &$needle) { if (in_array($needle, $value)) { $id =& $resultQuery[$key]['id']; break 2; } } } if (empty($id)) { $resultQuery = reset($resultQuery); $id =& $resultQuery['id']; } $set = secure::escQuoteData(array('token' => 'reserved')); return !self::dbUpdateTable($table, $set, "id IN ('{$id}')") ? false : $id; } else { return false; } } }
JobExpert v1.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; if (!empty($_GET['action']) && 'view' === $_GET['action'] && !empty($_GET['id'])) { $strWhere = "id IN (" . secure::escQuoteData($_GET['id']) . ") AND token IN ('active')"; $fields = array('title', 'text', 'meta_keywords', 'meta_description'); if ($arrData = $pages->getPage($strWhere, $fields)) { $arrNamePage[] = array('name' => $arrData['title'], 'link' => false); $smarty->assignByRef('menu', $_GET['id']); // выбранный пункт меню // HEAD страницы $smarty->assignByRef('meta_keywords', $arrData['meta_keywords']); $smarty->assignByRef('meta_description', $arrData['meta_description']); $smarty->assignByRef('arrPage', $arrData); // параметры выбранной страницы } else { messages::error404(); } } else { messages::error404();
if (!empty($_POST['action'])) { // удаление if ('delete' === $_POST['action'] && !empty($_SESSION['sd_' . DB_PREFIX . 'codex']['rights']['del_articles']) && !empty($_POST['articles'])) { $strWhere = "id_user IN (" . secure::escQuoteData($arrUser['id']) . ")"; !$articles->deleteArticles(array_keys($_POST['articles']), $strWhere) ? $arrErrors[] = db::$message_error : messages::messageChangeSaved(MESSAGE_CHANGE_SAVED, false, chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?ut=' . $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type'] . '&do=user.articles&action=active')); } // архивация if ('archive' === $_POST['action'] && !empty($_SESSION['sd_' . DB_PREFIX . 'codex']['rights']['arc_articles']) && !empty($_POST['articles'])) { $arrData = array('token' => 'archived'); $strWhere = "id_user IN (" . secure::escQuoteData($arrUser['id']) . ")"; !$articles->updateArticles($arrData, array_keys($_POST['articles']), $strWhere) ? $arrErrors[] = db::$message_error : messages::messageChangeSaved(MESSAGE_CHANGE_SAVED, false, chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?ut=' . $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type'] . '&do=user.articles&action=active')); } } // инициируем "Наименование страницы" отображаемое в заголовке формы $arrNamePage[] = array('name' => constant('MENU_ACTION_ACTIVE'), 'link' => false); $strWhere = "id_user IN (" . secure::escQuoteData($arrUser['id']) . ") AND token IN ('active')"; if ($arrArticles = $articles->getArticles($strWhere, false, false, false)) { // если есть статьи, устанавливаем признак публикации foreach ($arrArticles as $key => &$value) { $value['link'] = strtotime($value['datetime']) > time() ? false : true; $arrArticles[$key] = $value; } } $smarty->assignByRef('arrArticles', $arrArticles); } else { messages::error404(); } $smarty->assignByRef('retFields', $retFields); $smarty->assignByRef('arrUser', $arrUser); $smarty->assignByRef('errors', $arrErrors); $smarty->assignByRef('warnings', $arrWarnings);
$arrUser = array_merge($_SESSION['sd_user']['data'], $_SESSION['sd_user'][DB_PREFIX . 'conf']); // объединяем данные пользователя /** * Действия */ if (isset($_GET['action'])) { /** * Редактирование личных данных */ if ('edit' === $_GET['action']) { /** * Сохранение личных данных пользователя */ if (isset($_POST['save'])) { if (!empty($_POST['alias'])) { if ($user->issetUser("id NOT IN (" . secure::escQuoteData($_SESSION['sd_user']['data']['id']) . ") AND alias IN (" . secure::escQuoteData($_POST['alias']) . ") AND token IN ('active','archived','moderate','new')")) { $arrErrors[] = ERROR_USER_ALIAS_EXISTS; } } else { $arrErrors[] = ERROR_EMPTY_BIND_FIELDS; } // массив основных данных пользователя $arrData = array('alias' => $_POST['alias'], 'middle_name' => !empty($_POST['middle_name']) ? $_POST['middle_name'] : ''); // Разрешаем пользователю изменять имя и фамилиию только если включена соотв. настройка if (CONF_USER_CHANGE_NAME) { if (!empty($_POST['first_name']) && !empty($_POST['last_name'])) { $arrData['first_name'] = $_POST['first_name']; $arrData['last_name'] = $_POST['last_name']; } else { $arrErrors[] = ERROR_EMPTY_NAME_OR_SURNAME; }
$new_password = md5($_POST['new_password']); if (md5($_POST['password']) !== $_SESSION['sd_user']['data']['password']) { $arrErrors[] = ERROR_PASSWORD; } if (strlen($_POST['new_password']) < CONF_REGISTER_USER_PASSWORD) { $arrErrors[] = ERROR_PASSWORD_SHORT; } if (md5($_POST['password']) === md5($_POST['new_password'])) { $arrErrors[] = ERROR_PASSWORD_NOT_NEW_PASSWORD; } if ($_POST['new_password'] !== $_POST['confirm_password']) { $arrErrors[] = ERROR_PASSWORD_NOT_CONFIRM_PASSWORD; } } else { $arrErrors[] = ERROR_EMPTY_FIELDS; } if (!$arrErrors) { $user->updateUser(array('password' => md5($_POST['new_password'])), "id IN (" . secure::escQuoteData($_SESSION['sd_user']['data']['id']) . ")"); // обновляем пароль в сессии tools::updateSessionData($_SESSION['sd_user']['data'], array('password' => md5($_POST['new_password']))); messages::messageChangeSaved(MESSAGE_PASSWORD_HAS_BEEEN_CHANGED, false, chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?ut=' . $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type'] . '&do=user.data')); } else { $smarty->assignByRef('errors', $arrErrors); } } } else { messages::error404(); } } else { messages::error404(); }
/** * protected функция помечает разделы и сатьи этих разделов как удаленные * * @param (array) $arrSections - массив, содержащий id разделов для удаления * * @return bool */ protected function pDeleteSections(&$arrSections) { // помечаем статьи разделов как удаленные foreach ($arrSections as &$value) { $articles = new articles(); $articles->deleteArticlesBySection($value); } $strWhere = 'id IN (' . implode(',', secure::escQuoteData($arrSections)) . ')'; caching::clearCache($this->retTableName()); return $this->delEntrys($strWhere); }
// массив всех новостей $smarty->assignByRef('news', $arrNews); // для блока боковой части $currMonth = terms::currentDateTime('n'); $smarty->assignByRef('currMonth', $currMonth); //$smarty->assignByRef('arrMonth', $arrAddDict['Month']['values']); } elseif (isset($_GET['month'])) { messages::error404(); } elseif (!empty($_GET['year']) && ($year = chpu::getId_out_tId($_GET['year'])) && 4 == strlen($year)) { $arrNamePage[] = array('name' => MENU_ACTION_ARCHIVED, 'link' => chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=news&action=archive')); $arrNamePage[] = array('name' => $year, 'link' => false); //смещение, всегда 0 (затем берется из $_GET) $offset = !empty($_GET['offset']) && validate::checkNaturalNumber($_GET['offset']) ? validate::checkNaturalNumber($_GET['offset']) : 0; //получаем массив, содержащий текущий обработанный URL $path = CONF_SCRIPT_URL . 'index.php?do=news&action=archive&year=' . $year . '&page=offset&'; $strWhere = "token IN ('archived') AND YEAR(`datetime`)=" . secure::escQuoteData($year); $arrOrderBy = array('datetime' => 'DESC'); $arrLimit = array('strLimit' => $offset . ',' . CONF_NEWS_PERPAGE, 'calcRows' => true); $arrNews = $news->getNewses($strWhere, $arrOrderBy, $arrLimit, false); // формируем страницы // получаем общее количество новостей $allRecords = $news->cntNews(); // формируем странциы $strPages = strings::generatePage($allRecords, $offset, CONF_NEWS_PERPAGE, $path); //передаем в шаблон строку сформированных страниц $smarty->assignByRef('string_page', $strPages); // массив всех новостей $smarty->assignByRef('news', $arrNews); // для блока боковой части $currMonth = terms::currentDateTime('n'); $smarty->assignByRef('currMonth', $currMonth);
} else { /** * действия с объявлениями */ isset($_POST['arrVacData']['action']) ? !$vacancy->actionAnnounces($_POST['arrVacData']) ? messages::messageChangeSaved(ERROR_NOT_SAVE_CHANGE, false, CONF_ADMIN_FILE . '?m=announces&s=vacancys') : messages::messageChangeSaved(MESSAGE_CHANGE_SAVED, false, CONF_ADMIN_FILE . '?m=announces&s=vacancys') : null; // инициируем "Наименование страницы" отображаемое в форме $arrNamePage[] = array('name' => MENU_ANNOUNCES_VACANCYS, 'link' => false); /** * передаем данные в шаблон */ $smarty->assign('professions', $professions->retCategorys()); $smarty->assign('citys', $citys->retCategorys()); /** * Проверяем фильтр */ $strWhere = isset($_GET['filter']) && ('company_name' === $_GET['filter'] || 'email' === $_GET['filter'] || 'user_type' === $_GET['filter'] || 'id_region' === $_GET['filter'] || 'id_city' === $_GET['filter'] || 'id_section' === $_GET['filter'] || 'id_profession' === $_GET['filter']) && isset($_GET['in']) && !empty($_GET['in']) ? $_GET['filter'] . " IN (" . secure::escQuoteData($_GET['in']) . ")" : false; /** * Проверяем сортировку */ $arrOrderBy = array(); isset($_GET['order']) && ('act_datetime' === $_GET['order'] || 'token_datetime' === $_GET['order']) && isset($_GET['by']) && ('ASC' === $_GET['by'] || 'DESC' === $_GET['by']) ? $arrOrderBy[$_GET['order']] = $_GET['by'] : ($arrOrderBy = false); /** * Формируем страницы и передаем полученные данные в шаблон */ $offset = isset($_GET['offset']) ? (int) abs($_GET['offset']) : 0; //смещение, всегда 0 (затем берется из $_GET) $arrLimit = array('strLimit' => $offset . ',' . CONF_ANNOUNCE_PERPAGE_ADMIN_PANEL, 'calcRows' => true); $smarty->assign('return_data', $vacancy->getAnnouncesByToken('active', $strWhere, $arrLimit, $arrOrderBy)); $allRecords = $vacancy->cntAnnounces(); // получаем общее количество объявлений $smarty->assignByRef('allRecords', $allRecords);
/** * Функция отправляет пользователю сообщение о том, что его статья удалена * * @param (array) $arrData - массив данных статьи * * @return void */ public function sendUserDeletedArticle(&$arrData) { /** Получаем данные пользователя **/ $user = new user(); if ($uData = $user->getUser("id IN (" . secure::escQuoteData($arrData['id']) . ")")) { $mailer = new mailer(); // массив для замены в шаблоне $mailer->setAddReplace(array('%ARTICLE_TITLE%' => $arrData['title'], '%COMMENTS%' => CONF_MAIL_FORMAT_HTML ? nl2br($arrData['comments']) : $arrData['comments'])); // отправляем письмо администратору $mailer->sendEmail(CONF_MAIL_ADMIN_EMAIL, CONF_SITE_NAME, false, $uData['email'], $uData['first_name'], MAIL_MODERATE_ARTICLES_DELETED . ': ' . $arrData['title'], 'user.article.deleted.txt'); unset($mailer); // уничтожаем объект } unset($user); // уничтожаем объект }
*/ if (!empty($_POST['action'])) { // отображение на главной if ('show' === $_POST['action'] && !empty($_POST['companies'])) { $user->updateConfUser(array('main_logo' => 1), 'id IN (' . implode(',', secure::escQuoteData(array_keys($_POST['companies']))) . ')'); messages::messageChangeSaved(MESSAGE_CHANGE_SAVED, false, CONF_ADMIN_FILE . '?m=users&s=companies'); } // удаление с главной if ('remove' === $_POST['action'] && !empty($_POST['companies'])) { $user->updateConfUser(array('main_logo' => 0), 'id IN (' . implode(',', secure::escQuoteData(array_keys($_POST['companies']))) . ')'); messages::messageChangeSaved(MESSAGE_CHANGE_SAVED, false, CONF_ADMIN_FILE . '?m=users&s=companies'); } // сортировка if ('sorting' === $_POST['action'] && !empty($_POST['sort'])) { foreach ($_POST['sort'] as $key => $value) { $user->updateConfUser(array('sort_logo' => $value), 'id IN (' . secure::escQuoteData($key) . ')'); } messages::messageChangeSaved(MESSAGE_CHANGE_SAVED, false, CONF_ADMIN_FILE . '?m=users&s=companies'); } } //смещение, всегда 0 (затем берется из $_GET) $offset = isset($_GET['offset']) ? (int) abs($_GET['offset']) : 0; //получаем массив, содержащий текущий обработанный URL $path = CONF_ADMIN_FILE . '?m=users&s=companies&&'; $strWhere = "conf_users.token IN ('active') AND conf_users.user_type IN ('company')"; $strLimit = $offset . ',' . CONF_COMPANIES_STRINGS_PERPAGE_ADMIN_PANEL; $arrOrderBy = array('conf_users.main_logo' => 'DESC', 'conf_users.sort_logo' => 'ASC', 'conf_users.logo' => 'DESC'); $arrCompanies = $user->getCombinedUsersData(false, $strWhere, $arrOrderBy, $strLimit); $allRecords = $user->cntUsers(); // формируем странциы $strPages = strings::generatePage($allRecords, $offset, CONF_COMPANIES_STRINGS_PERPAGE_ADMIN_PANEL, $path, true);
// если пользователь уже вошел на сайт, не пускаем его в форму авторизации if ($user->getAuthorized()) { messages::error404(); } else { $return_data = array('email' => false); // сохраняем в сесиию рефер-ссылку !isset($_SESSION['referer']) && secure::checkServerCalls() && isset($_GET['do']) && !strpos($_SERVER['HTTP_REFERER'], $_GET['do']) ? $_SESSION['referer'] = $_SERVER['HTTP_REFERER'] : null; if (!empty($_POST['email']) && !empty($_POST['password'])) { if (validate::postDataNotEmpty()) { // проверяем капчу if (isset($_POST['keystring'])) { $securimage = new securimage(); !$securimage->check($_POST['keystring']) ? $arrErrors[] = ERROR_CAPTCHA : null; } $_POST['remember'] = isset($_POST['remember']) ? true : false; if ($user->issetUser("email IN (" . secure::escQuoteData($_POST['email']) . ") AND password IN ('" . md5($_POST['password']) . "') AND token IN ('active', 'new')")) { if ($user->authorizeUser($_POST['email'], $_POST['password'], $_POST['remember'])) { unset($_SESSION['user_fail_auth']); if (isset($_SESSION['referer']) && !strstr($_SESSION['referer'], 'do=payments')) { $referer = $_SESSION['referer']; unset($_SESSION['referer']); die('<script type="text/javascript">window.location="' . $referer . '";</script>'); } else { die('<script type="text/javascript">window.location="' . chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=user.data') . '";</script>'); } } else { $arrErrors[] = ERROR_AUTHORIZE_ACCOUNT_NOT_ACTIVATE; } } else { $arrErrors[] = ERROR_DATA; }
/** * Метод получает данные из БД * * @param array $arrData - массив * * @return array or bool */ public function getStoringData($arrData) { if (is_array($arrData) && !empty($arrData)) { // валидация типа записи if (empty($arrData['type']) || !in_array($arrData['type'], $this->arrTypes)) { return false; } // валидация массива if (!isset($arrData['arrIds']) || !is_array($arrData['arrIds'])) { return false; } else { foreach ($arrData['arrIds'] as $index => $id) { if (!strings::ifInt($id)) { unset($arrData['arrIds'][$index]); } } // проверка на пустой массив if (empty($arrData['arrIds'])) { return false; } } // массивы - псевдонимы таблиц и поля, которые необходимо выбрать $arrConf['tableFields'] = array(array('storing', 'id'), array('storing', 'id_content'), array('storing', 'id_user'), array('storing', 'ip'), array('storing', 'datetime'), array('users', 'email'), array('users', 'first_name'), array('users', 'last_name'), array('users', 'middle_name'), array('users', 'phone'), array('conf_users', 'addition_phone_1'), array('conf_users', 'addition_phone_2'), array('conf_users', 'user_type'), array('conf_users', 'company_name'), array('conf_users', 'company_city'), array('conf_users', 'company_description'), array('conf_users', 'logo')); // джоины с условием $arrConf['leftJoins'] = array(array('table' => array(USR_PREFIX . 'users', 'users'), 'on' => "storing.id_user=users.id"), array('table' => array(DB_PREFIX . 'conf_users', 'conf_users'), 'on' => "storing.id_user=conf_users.id")); // условие запроса $arrConf['strWhere'] = "storing.type IN (" . secure::escQuoteData($arrData['type']) . ") " . "AND storing.id_content IN (" . implode(',', secure::escQuoteData($arrData['arrIds'])) . ") " . "AND conf_users.user_type IN ('company')"; // подсчет строк $arrConf['calcRows'] = false; // LIMIT $arrConf['strLimit'] = false; if ($this->getSubSelectEntrys(false, true, $arrConf)) { return $this->retData(); } else { return false; } } else { return false; } }