AVE.CMS v3.28
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

974 lines
39 KiB

7 years ago
<?php
/**
6 years ago
* AVE.cms
*
* @package AVE.cms
* @version 3.x
* @filesource
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
7 years ago
*
*/
6 years ago
class AVE_Request
{
7 years ago
6 years ago
/**
* Количество Запросов на странице
*
* @public int
*/
public $_limit = 25;
7 years ago
6 years ago
/**
* Метод, предназначенный для получения и вывода списка Запросов
*
* @param boolean $pagination признак формирования постраничного списка
5 years ago
*
* @return array
6 years ago
*/
function _requestListGet($pagination = true)
7 years ago
{
6 years ago
global $AVE_DB, $AVE_Template;
7 years ago
6 years ago
$limit = '';
7 years ago
6 years ago
// Если используется постраничная навигация
if ($pagination)
7 years ago
{
6 years ago
// Определяем лимит записей на страницу и начало диапазона выборки
$limit = $this->_limit;
$start = get_current_page() * $limit - $limit;
7 years ago
6 years ago
// Получаем общее количество запросов
$num = $AVE_DB->Query("SELECT COUNT(*) FROM " . PREFIX . "_request")->GetCell();
7 years ago
6 years ago
// Если количество больше, чем установленный лимит, тогда формируем постраничную навигацию
if ($num > $limit)
{
$page_nav = "<li><a href=\"index.php?do=request&page={s}&amp;cp=" . SESSION . "\">{t}</a></li>";
$page_nav = get_pagination(ceil($num / $limit), 'page', $page_nav);
$AVE_Template->assign('page_nav', $page_nav);
}
7 years ago
6 years ago
$limit = $pagination ? "LIMIT " . $start . "," . $limit : '';
}
7 years ago
6 years ago
// Выполняем запрос к БД на получение списка запросов с учетом лимита вывода на страницу (если необходимо)
$items = array();
7 years ago
6 years ago
$sql = $AVE_DB->Query("
6 years ago
SELECT
*
FROM
" . PREFIX . "_request
6 years ago
ORDER BY Id ASC
" . $limit . "
");
7 years ago
6 years ago
// Формируем массив из полученных данных
while ($row = $sql->FetchRow())
{
$row->request_author = get_username_by_id($row->request_author_id);
array_push($items, $row);
}
7 years ago
6 years ago
// Возвращаем массив
return $items;
7 years ago
}
5 years ago
6 years ago
/**
* Получить наименование и описание Запроса по идентификатору
*
* @param int $request_id идентификатор Запроса
* @return object наименование Запроса
*/
function get_request_by_id($request_id = 0)
{
global $AVE_DB;
7 years ago
6 years ago
static $requests = array();
7 years ago
6 years ago
if (! isset($requests[$request_id]))
6 years ago
{
$requests[$request_id] = $AVE_DB->Query("
SELECT
rubric_id,
request_title,
request_description
6 years ago
FROM
" . PREFIX . "_request
WHERE
Id = '" . $request_id . "'
6 years ago
LIMIT 1
")->FetchRow();
}
7 years ago
6 years ago
return $requests[$request_id];
}
7 years ago
5 years ago
6 years ago
/**
* Проверка алиаса тега на валидность и уникальность
5 years ago
*
* @param string $alias
* @param int $id
*
* @return bool|string
6 years ago
*/
function requestValidate ($alias = '', $id = 0)
{
global $AVE_DB;
//-- Соответствие требованиям
if (empty ($alias) || preg_match('/^[A-Za-z0-9-_]{1,20}$/i', $alias) !== 1 || is_numeric($alias))
return 'syn';
//-- Уникальность
return !(bool)$AVE_DB->Query("
SELECT 1
FROM
" . PREFIX . "_request
WHERE
request_alias = '" . $alias . "'
AND
Id != '" . $id . "'
")->GetCell();
}
7 years ago
6 years ago
/**
* Метод, предназначенный для формирования списка Запросов
*
*/
function requestListFetch()
{
global $AVE_Template;
7 years ago
6 years ago
$AVE_Template->assign('conditions', $this->_requestListGet(false));
}
7 years ago
5 years ago
6 years ago
/**
* Метод, предназначенный для отображения списка Запросов
*
*/
function requestListShow()
7 years ago
{
6 years ago
global $AVE_Template;
7 years ago
6 years ago
$AVE_Template->assign('rid', 0);
7 years ago
6 years ago
// Получаем список запросов
$AVE_Template->assign('items', $this->_requestListGet());
7 years ago
6 years ago
// Передаем в шаблон и отображаем страницу со списком
$AVE_Template->assign('content', $AVE_Template->fetch('request/list.tpl'));
}
7 years ago
5 years ago
6 years ago
/**
* Метод, предназначенный для создания нового Запроса
*
*/
function requestNew()
{
global $AVE_DB, $AVE_Template;
7 years ago
6 years ago
// Определяем действие пользователя
switch ($_REQUEST['sub'])
{
// Действие не определено
case '':
$AVE_Template->assign('rid', 0);
// Отображаем пустую форму для создания нового запроса
7 years ago
$AVE_Template->assign('formaction', 'index.php?do=request&action=new&sub=save&cp=' . SESSION);
$AVE_Template->assign('content', $AVE_Template->fetch('request/form.tpl'));
6 years ago
break;
// Нажата кнопка Сохранить запрос
case 'save':
$save = true;
$errors = array();
5 years ago
$row = new stdClass();
$row->request_template_item = stripslashes(pretty_chars($_REQUEST['request_template_item']));
$row->request_template_main = stripslashes(pretty_chars($_REQUEST['request_template_main']));
$row->request_title = stripslashes($_REQUEST['request_title']);
$row->rubric_id = stripslashes($_REQUEST['rubric_id']);
$row->request_items_per_page = stripslashes($_REQUEST['request_items_per_page']);
$row->request_order_by = stripslashes($_REQUEST['request_order_by']);
$row->request_order_by_nat = stripslashes($_REQUEST['request_order_by_nat']);
$row->request_asc_desc = stripslashes($_REQUEST['request_asc_desc']);
$row->request_description = stripslashes($_REQUEST['request_description']);
$row->request_show_pagination = (isset($_REQUEST['request_show_pagination']) ? (int)($_REQUEST['request_show_pagination']) : 0);
$row->request_pagination = (isset($_REQUEST['request_pagination']) ? (int)($_REQUEST['request_pagination']) : 1);
$row->request_only_owner = (isset($_REQUEST['request_only_owner']) ? (int)($_REQUEST['request_only_owner']) : 0);
$row->request_cache_lifetime = (int)($_REQUEST['request_cache_lifetime']);
$row->request_lang = (isset($_REQUEST['request_lang']) ? (int)$_REQUEST['request_lang'] : 0);
$row->request_cache_elements = (isset($_REQUEST['request_cache_elements']) ? (int)$_REQUEST['request_cache_elements'] : 0);
$row->request_external = (isset($_REQUEST['request_external']) ? (int)$_REQUEST['request_external'] : 0);
$row->request_ajax = (isset($_REQUEST['request_ajax']) ? (int)$_REQUEST['request_ajax'] : 0);
$row->request_show_sql = (isset($_REQUEST['request_show_sql']) ? (int)$_REQUEST['request_show_sql'] : 0);
6 years ago
if (empty($_REQUEST['rubric_id']))
{
$save = false;
$message = $AVE_Template->get_config_vars('REQUEST_REPORT_ERR_RUBRIC');
$errors[] = $AVE_Template->get_config_vars('REQUEST_REPORT_ERR_RUBRIC');
}
if (empty($_REQUEST['request_title']))
{
$save = false;
$errors[] = $AVE_Template->get_config_vars('REQUEST_REPORT_ERR_TITLE');
}
7 years ago
6 years ago
if (empty($_REQUEST['request_template_main']))
{
$save = false;
$errors[] = $AVE_Template->get_config_vars('REQUEST_REPORT_ERR_TEXT');
}
7 years ago
6 years ago
$check_code_template_item = strtolower($_REQUEST['request_template_item']);
$check_code_template_main = strtolower($_REQUEST['request_template_main']);
7 years ago
6 years ago
if ((is_php_code($check_code_template_item) || is_php_code($check_code_template_main)) && !check_permission('request_php'))
7 years ago
{
6 years ago
$save = false;
$message = $AVE_Template->get_config_vars('REQUEST_REPORT_ERR_PHP');
$errors[] = $AVE_Template->get_config_vars('REQUEST_REPORT_ERR_PHP');
reportLog($AVE_Template->get_config_vars('REQUEST_REPORT_ERR_PHP_N') . ' (' . stripslashes(htmlspecialchars($_REQUEST['request_title'], ENT_QUOTES)) . ')');
}
if ($save === false)
{
$AVE_Template->assign('row', $row);
$AVE_Template->assign('errors', $errors);
$AVE_Template->assign('formaction', 'index.php?do=request&action=new&sub=save&cp=' . SESSION);
$AVE_Template->assign('content', $AVE_Template->fetch('request/form.tpl'));
7 years ago
}
else
{
5 years ago
$sql = "
6 years ago
INSERT " . PREFIX . "_request
SET
5 years ago
rubric_id = '" . (int)$_REQUEST['rubric_id'] . "',
request_alias = '" . (isset($_REQUEST['request_alias']) ? stripslashes($_REQUEST['request_alias']) : '') . "',
request_title = '" . (isset($_REQUEST['request_title']) ? stripslashes($_REQUEST['request_title']) : '') . "',
request_items_per_page = '" . (isset($_REQUEST['request_items_per_page']) ? stripslashes($_REQUEST['request_items_per_page']) : 0) . "',
request_template_item = '" . (isset($_REQUEST['request_template_item']) ? stripslashes(pretty_chars($_REQUEST['request_template_item'])) : '') . "',
request_template_main = '" . (isset($_REQUEST['request_template_main']) ? stripslashes(pretty_chars($_REQUEST['request_template_main'])) : '') . "',
request_order_by = '" . (isset($_REQUEST['request_order_by']) ? stripslashes($_REQUEST['request_order_by']) : '') . "',
request_order_by_nat = '" . (isset($_REQUEST['request_order_by_nat']) ? (int)trim($_REQUEST['request_order_by_nat']) : 0) . "',
request_description = '" . (isset($_REQUEST['request_description']) ? stripslashes($_REQUEST['request_description']) : '') . "',
request_author_id = '" . (int)$_SESSION['user_id'] . "',
request_created = '" . time() . "',
request_asc_desc = '" . (isset($_REQUEST['request_asc_desc']) ? stripslashes($_REQUEST['request_asc_desc']) : 'DESC') . "',
request_show_pagination = '" . (isset($_REQUEST['request_show_pagination']) ? (int)$_REQUEST['request_show_pagination'] : 0) . "',
request_pagination = '" . (isset($_REQUEST['request_pagination']) ? (int)$_REQUEST['request_pagination'] : 1) . "',
request_use_query = '" . (isset($_REQUEST['request_use_query']) ? (int)$_REQUEST['request_use_query'] : 0) . "',
request_count_items = '" . (isset($_REQUEST['request_count_items']) ? (int)$_REQUEST['request_count_items'] : 0) . "',
request_hide_current = '" . (isset($_REQUEST['request_hide_current']) ? (int)($_REQUEST['request_hide_current']) : 0) . "',
request_only_owner = '" . (isset($_REQUEST['request_only_owner']) ? (int)($_REQUEST['request_only_owner']) : 0) . "',
request_cache_lifetime = '" . (isset($_REQUEST['request_cache_lifetime']) ? (int)($_REQUEST['request_cache_lifetime']) : 0) . "',
request_lang = '" . (isset($_REQUEST['request_lang']) ? (int)$_REQUEST['request_lang'] : 0). "',
request_cache_elements = '" . (isset($_REQUEST['request_cache_elements']) ? (int)$_REQUEST['request_cache_elements'] : 0). "',
request_show_statistic = '" . (isset($_REQUEST['request_show_statistic']) ? (int)$_REQUEST['request_show_statistic'] : 0). "',
request_external = '" . (isset($_REQUEST['request_external']) ? (int)$_REQUEST['request_external'] : 0). "',
request_ajax = '" . (isset($_REQUEST['request_ajax']) ? (int)$_REQUEST['request_ajax'] : 0). "',
request_show_sql = '" . (isset($_REQUEST['request_show_sql']) ? (int)$_REQUEST['request_show_sql'] : 0). "',
request_changed = '" . time() . "',
request_changed_elements = '" . time() . "'
";
// Выполняем запрос к БД и сохраняем введенную пользователем информацию
$AVE_DB->Query($sql);
6 years ago
// Получаем id последней записи
$iid = $AVE_DB->InsertId();
// Сохраняем системное сообщение в журнал
reportLog($AVE_Template->get_config_vars('REQUEST_ADD_NEW_SUC') . ' (' . stripslashes(htmlspecialchars($_REQUEST['request_title'], ENT_QUOTES)) . ') (' . $iid . ')');
// Если в запросе пришел параметр на продолжение редактирования запроса
if ($_REQUEST['reedit'] == 1)
{
// Выполняем переход на страницу с редактированием запроса
header('Location:index.php?do=request&action=edit&Id=' . $iid . '&rubric_id=' . $_REQUEST['rubric_id'] . '&cp=' . SESSION);
}
else
{
// В противном случае выполняем переход к списку запросов
6 years ago
if (!$_REQUEST['next_edit'])
6 years ago
header('Location:index.php?do=request&cp=' . SESSION);
6 years ago
else
6 years ago
header('Location:index.php?do=request&action=edit&Id=' . $iid . '&rubric_id='.$_REQUEST['rubric_id'].'&cp=' . SESSION);
7 years ago
}
6 years ago
6 years ago
exit;
7 years ago
}
}
6 years ago
}
7 years ago
5 years ago
6 years ago
/**
* Метод, предназначенный для редактирования Запроса
*
* @param int $request_id идентификатор запроса
*/
function requestEdit($request_id)
7 years ago
{
6 years ago
global $AVE_DB, $AVE_Template;
7 years ago
6 years ago
// Определяем действие пользователя
switch ($_REQUEST['sub'])
{
// Если действие не определено
case '':
// Выполняем запрос к БД и получаем всю информацию о запросе
$sql = $AVE_DB->Query("
SELECT *
6 years ago
FROM
" . PREFIX . "_request
WHERE
Id = '" . $request_id . "'
OR
request_alias = '" . $request_id . "'
6 years ago
");
7 years ago
6 years ago
if ($sql->_result->num_rows == 0)
{
header('Location:index.php?do=request&cp=' . SESSION);
exit;
}
7 years ago
6 years ago
$row = $sql->FetchRow();
7 years ago
6 years ago
// Получаем постраничную навигацию
$sql = $AVE_DB->Query("
SELECT
id,
pagination_name
FROM
" . PREFIX . "_paginations
");
7 years ago
6 years ago
$paginations = array();
7 years ago
6 years ago
while ($pages = $sql->FetchRow())
array_push($paginations, $pages);
7 years ago
6 years ago
// Передаем данные в шаблон и отображаем страницу с редактированием запроса
if (! isset($_REQUEST['rubric_id']))
$_REQUEST['rubric_id'] = $row->rubric_id;
6 years ago
$AVE_Template->assign('row', $row);
$AVE_Template->assign('rid', $row->Id);
6 years ago
$AVE_Template->assign('paginations', $paginations);
$AVE_Template->assign('formaction', 'index.php?do=request&action=edit&sub=save&Id=' . $row->Id . '&cp=' . SESSION);
6 years ago
$AVE_Template->assign('content', $AVE_Template->fetch('request/form.tpl'));
7 years ago
6 years ago
break;
7 years ago
6 years ago
// Пользователь нажал кнопку Сохранить изменения
case 'save':
7 years ago
6 years ago
$sql = $AVE_DB->Query("
SELECT *
6 years ago
FROM
" . PREFIX . "_request
WHERE
Id = '" . $request_id . "'
6 years ago
");
7 years ago
6 years ago
if ($sql->_result->num_rows == 0)
{
6 years ago
header('Location:index.php?do=request&cp=' . SESSION);
exit;
}
7 years ago
6 years ago
$save = true;
$errors = array();
$row = new stdClass();
$row->request_template_item = (isset($_REQUEST['request_template_item']) ? stripslashes(pretty_chars($_REQUEST['request_template_item'])) : '');
$row->request_template_main = (isset($_REQUEST['request_template_main']) ? stripslashes(pretty_chars($_REQUEST['request_template_main'])) : '');
$row->request_title = (isset($_REQUEST['request_title']) ? stripslashes($_REQUEST['request_title']) : '');
$row->rubric_id = (isset($_REQUEST['rubric_id']) ? stripslashes($_REQUEST['rubric_id']) : 0);
$row->request_items_per_page = (isset($_REQUEST['request_items_per_page']) ? stripslashes($_REQUEST['request_items_per_page']) : 0);
$row->request_order_by = (isset($_REQUEST['request_order_by']) ? stripslashes($_REQUEST['request_order_by']) : '');
5 years ago
$row->request_order_by_nat = (isset($_REQUEST['request_order_by_nat']) ? (int)trim($_REQUEST['request_order_by_nat']) : 0);
6 years ago
$row->request_asc_desc = (isset($_REQUEST['request_asc_desc']) ? stripslashes($_REQUEST['request_asc_desc']) : 'DESC');
$row->request_description = (isset($_REQUEST['request_description']) ? stripslashes($_REQUEST['request_description']) : '');
$row->request_show_pagination = (isset($_REQUEST['request_show_pagination']) ? $_REQUEST['request_show_pagination'] : 0);
$row->request_pagination = (isset($_REQUEST['request_pagination']) ? (int)($_REQUEST['request_pagination']) : 1);
$row->request_use_query = (isset($_REQUEST['request_use_query']) ? $_REQUEST['request_use_query'] : 0);
6 years ago
$row->request_count_items = (isset($_REQUEST['request_count_items']) ? $_REQUEST['request_count_items'] : 0);
6 years ago
$row->request_only_owner = (isset($_REQUEST['request_only_owner']) ? (int)($_REQUEST['request_only_owner']) : 0);
$row->request_cache_lifetime = (isset($_REQUEST['request_cache_lifetime']) ? (int)($_REQUEST['request_cache_lifetime']) : 0);
$row->request_lang = (isset($_REQUEST['request_lang']) ? (int)$_REQUEST['request_lang'] : 0);
$row->request_cache_elements = (isset($_REQUEST['request_cache_elements']) ? (int)$_REQUEST['request_cache_elements'] : 0);
$row->request_show_statistic = (isset($_REQUEST['request_show_statistic']) ? (int)$_REQUEST['request_show_statistic'] : 0);
$row->request_external = (isset($_REQUEST['request_external']) ? (int)$_REQUEST['request_external'] : 0);
$row->request_ajax = (isset($_REQUEST['request_ajax']) ? (int)$_REQUEST['request_ajax'] : 0);
$row->request_show_sql = (isset($_REQUEST['request_show_sql']) ? (int)$_REQUEST['request_show_sql'] : 0);
5 years ago
$message = '';
6 years ago
if (empty($_REQUEST['rubric_id']))
{
$save = false;
$message = $AVE_Template->get_config_vars('REQUEST_REPORT_ERR_RUBRIC');
$errors[] = $AVE_Template->get_config_vars('REQUEST_REPORT_ERR_RUBRIC');
}
7 years ago
6 years ago
if (empty($_REQUEST['request_title']))
{
$save = false;
$message = $AVE_Template->get_config_vars('REQUEST_REPORT_ERR_TITLE');
$errors[] = $AVE_Template->get_config_vars('REQUEST_REPORT_ERR_TITLE');
}
7 years ago
6 years ago
if (empty($_REQUEST['request_template_main']))
{
$save = false;
$message = $AVE_Template->get_config_vars('REQUEST_REPORT_ERR_TEXT');
$errors[] = $AVE_Template->get_config_vars('REQUEST_REPORT_ERR_TEXT');
}
7 years ago
6 years ago
$check_code_template_item = strtolower($_REQUEST['request_template_item']);
$check_code_template_main = strtolower($_REQUEST['request_template_main']);
7 years ago
6 years ago
if ((is_php_code($check_code_template_item) || is_php_code($check_code_template_main)) && !check_permission('request_php'))
7 years ago
{
6 years ago
$save = false;
$message = $AVE_Template->get_config_vars('REQUEST_REPORT_ERR_PHP');
$errors[] = $AVE_Template->get_config_vars('REQUEST_REPORT_ERR_PHP');
reportLog($AVE_Template->get_config_vars('REQUEST_REPORT_ERR_PHP_E') . ' (' . stripslashes(htmlspecialchars($_REQUEST['request_title'], ENT_QUOTES)) . ') (Id:' . $request_id . ')');
7 years ago
}
6 years ago
if ($save === false)
{
6 years ago
if (isAjax())
6 years ago
{
$header = $AVE_Template->get_config_vars('REQUEST_ERROR');
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => 'error'));
exit;
}
7 years ago
6 years ago
$AVE_Template->assign('row', $row);
$AVE_Template->assign('errors', $errors);
$AVE_Template->assign('formaction', 'index.php?do=request&action=edit&sub=save&Id=' . $request_id . '&cp=' . SESSION);
$AVE_Template->assign('content', $AVE_Template->fetch('request/form.tpl'));
}
else
{
// Выполняем запрос к БД и обновляем имеющиеся данные
5 years ago
$sql = "
6 years ago
UPDATE " . PREFIX . "_request
SET
5 years ago
rubric_id = '" . (int)$_REQUEST['rubric_id'] . "',
request_alias = '" . (isset($_REQUEST['request_alias']) ? $_REQUEST['request_alias'] : '') . "',
request_title = '" . (isset($_REQUEST['request_title']) ? $_REQUEST['request_title'] : '') . "',
request_items_per_page = '" . (isset($_REQUEST['request_items_per_page']) ? $_REQUEST['request_items_per_page'] : 0) . "',
request_template_item = '" . (isset($_REQUEST['request_template_item']) ? $_REQUEST['request_template_item'] : '') . "',
request_template_main = '" . (isset($_REQUEST['request_template_main']) ? $_REQUEST['request_template_main'] : '') . "',
request_order_by = '" . (isset($_REQUEST['request_order_by']) ? $_REQUEST['request_order_by'] : '') . "',
request_order_by_nat = '" . (isset($_REQUEST['request_order_by_nat']) ? (int)trim($_REQUEST['request_order_by_nat']) : 0) . "',
request_description = '" . (isset($_REQUEST['request_description']) ? $_REQUEST['request_description'] : '') . "',
request_asc_desc = '" . (isset($_REQUEST['request_asc_desc']) ? $_REQUEST['request_asc_desc'] : 'DESC') . "',
request_show_pagination = '" . (isset($_REQUEST['request_show_pagination']) ? (int)$_REQUEST['request_show_pagination'] : 0) . "',
request_pagination = '" . (isset($_REQUEST['request_pagination']) ? (int)$_REQUEST['request_pagination'] : 1) . "',
request_use_query = '" . (isset($_REQUEST['request_use_query']) ? (int)$_REQUEST['request_use_query'] : 0) . "',
request_count_items = '" . (isset($_REQUEST['request_count_items']) ? (int)$_REQUEST['request_count_items'] : 0) . "',
request_hide_current = '" . (isset($_REQUEST['request_hide_current']) ? (int)($_REQUEST['request_hide_current']) : 0) . "',
request_only_owner = '" . (isset($_REQUEST['request_only_owner']) ? (int)($_REQUEST['request_only_owner']) : 0) . "',
request_cache_lifetime = '" . (isset($_REQUEST['request_cache_lifetime']) ? (int)($_REQUEST['request_cache_lifetime']) : '-1') . "',
request_lang = '" . (isset($_REQUEST['request_lang']) ? (int)$_REQUEST['request_lang'] : 0). "',
request_cache_elements = '" . (isset($_REQUEST['request_cache_elements']) ? (int)$_REQUEST['request_cache_elements'] : 0). "',
request_show_statistic = '" . (isset($_REQUEST['request_show_statistic']) ? (int)$_REQUEST['request_show_statistic'] : 0). "',
request_external = '" . (isset($_REQUEST['request_external']) ? (int)$_REQUEST['request_external'] : 0). "',
request_ajax = '" . (isset($_REQUEST['request_ajax']) ? (int)$_REQUEST['request_ajax'] : 0). "',
request_show_sql = '" . (isset($_REQUEST['request_show_sql']) ? (int)$_REQUEST['request_show_sql'] : 0). "',
request_changed = '" . time() . "',
request_changed_elements = '" . time() . "'
6 years ago
WHERE
Id = '" . $request_id . "'
5 years ago
";
$AVE_DB->Query($sql);
7 years ago
6 years ago
$AVE_DB->clearRequest($request_id);
7 years ago
5 years ago
// ToDO Сделать проверку на сохранение
6 years ago
// Сохраняем системное сообщение в журнал
reportLog($AVE_Template->get_config_vars('REQUEST_SAVE_CHA_SUC') . ' (' . stripslashes(htmlspecialchars($_REQUEST['request_title'], ENT_QUOTES)) . ') (Id:' . $request_id . ')');
// В противном случае выполняем переход к списку запросов
if (! isAjax())
{
header('Location:index.php?do=request&cp=' . SESSION);
exit;
6 years ago
}
else
{
6 years ago
$message = $AVE_Template->get_config_vars('REQUEST_TEMPLATE_SAVED');
$header = $AVE_Template->get_config_vars('REQUEST_SUCCESS');
$theme = 'accept';
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
exit;
}
7 years ago
}
6 years ago
break;
}
7 years ago
}
5 years ago
6 years ago
/**
* Метод, предназначенный для создания копии Запроса
*
* @param int $request_id идентификатор запроса
*/
function requestCopy($request_id)
{
global $AVE_DB, $AVE_Template;
7 years ago
6 years ago
// Выполняем запрос к БД на получение информации о копиреумом запросе
$sql = $AVE_DB->Query("
SELECT *
6 years ago
FROM
" . PREFIX . "_request
WHERE
Id = '" . $request_id . "'
6 years ago
");
7 years ago
6 years ago
if ($sql->_result->num_rows == 0)
{
6 years ago
header('Location:index.php?do=request&cp=' . SESSION);
exit;
}
7 years ago
6 years ago
$row = $sql->FetchRow();
// Выполняем запрос к БД на добавление нового запроса на основании полученных ранее данных
7 years ago
$AVE_DB->Query("
6 years ago
INSERT " . PREFIX . "_request
7 years ago
SET
6 years ago
rubric_id = '" . (int)$row->rubric_id . "',
request_items_per_page = '" . $row->request_items_per_page . "',
request_title = '" . $_REQUEST['cname'] . "',
request_template_item = '" . addslashes($row->request_template_item) . "',
request_template_main = '" . addslashes($row->request_template_main) . "',
request_order_by = '" . addslashes($row->request_order_by) . "',
request_order_by_nat = '" . addslashes($row->request_order_by_nat) . "',
request_author_id = '" . (int)$_SESSION['user_id'] . "',
request_created = '" . time() . "',
request_description = '" . addslashes($row->request_description) . "',
request_asc_desc = '" . $row->request_asc_desc . "',
request_show_pagination = '" . $row->request_show_pagination . "',
request_use_query = '" . $row->request_use_query . "',
6 years ago
request_count_items = '" . $row->request_count_items . "',
6 years ago
request_hide_current = '" . $row->request_hide_current . "',
request_lang = '" . $row->request_lang . "',
request_cache_elements = '" . (isset($row->request_cache_elements) ? $row->request_cache_elements : 0) . "'
7 years ago
");
6 years ago
// Получаем id добавленной записи
$iid = $AVE_DB->InsertId();
7 years ago
6 years ago
// Сохраняем системное сообщение в журнал
reportLog($AVE_Template->get_config_vars('REQUEST_COPY_SUC') . ' (' . stripslashes(htmlspecialchars($this->get_request_by_id($request_id)->request_title, ENT_QUOTES)) . ') ( Id:'.$iid.' )');
7 years ago
6 years ago
// Выполняем запрос к БД и получаем все условия запроса для копируемого запроса
$sql = $AVE_DB->Query("
SELECT *
6 years ago
FROM
" . PREFIX . "_request_conditions
WHERE
request_id = '" . $request_id . "'
6 years ago
");
7 years ago
6 years ago
// Обрабатываем полученные данные и
while ($row_cond = $sql->FetchRow())
{
// Выполняем запрос к БД на добавление условий для нового, скопированного запроса
$AVE_DB->Query("
6 years ago
INSERT
" . PREFIX . "_request_conditions
6 years ago
SET
request_id = '" . $iid . "',
condition_compare = '" . $row_cond->condition_compare . "',
condition_field_id = '" . $row_cond->condition_field_id . "',
condition_value = '" . $row_cond->condition_value . "',
condition_join = '" . $row_cond->condition_join . "'
7 years ago
");
6 years ago
}
7 years ago
6 years ago
// Выполянем переход к списку запросов
header('Location:index.php?do=request&cp=' . SESSION);
exit;
}
7 years ago
5 years ago
6 years ago
/**
* Метод, предназначенный для удаления запроса
*
* @param int $request_id идентификатор запроса
*/
function requestDelete($request_id)
{
global $AVE_DB, $AVE_Template;
7 years ago
6 years ago
$request_name = $this->get_request_by_id($request_id)->request_title;
7 years ago
6 years ago
// Выполняем запрос к БД на удаление общей информации о запросе
$AVE_DB->Query("
6 years ago
DELETE FROM
" . PREFIX . "_request
WHERE
Id = '" . $request_id . "'
6 years ago
");
// Выполняем запрос к БД на удаление условий запроса
$AVE_DB->Query("
6 years ago
DELETE FROM
" . PREFIX . "_request_conditions
WHERE
request_id = '" . $request_id . "'
6 years ago
");
7 years ago
6 years ago
$AVE_DB->clearRequest($request_id);
6 years ago
// Сохраняем системное сообщение в журнал
reportLog($AVE_Template->get_config_vars('REQUEST_DELETE_SUC') . ' (' . stripslashes(htmlspecialchars($request_name, ENT_QUOTES)) . ') ( Id:' . $request_id . ' )');
7 years ago
6 years ago
// Выполянем переход к списку запросов
header('Location:index.php?do=request&cp=' . SESSION);
exit;
}
7 years ago
5 years ago
6 years ago
/**
* Метод, предназначенный для редактирования условий Запроса
*
* @param int $request_id идентификатор запроса
*/
function requestConditionEdit($request_id)
{
global $AVE_DB, $AVE_Template;
7 years ago
6 years ago
// Определяем действие пользователя
switch ($_REQUEST['sub'])
{
// Если действие не определено
case '':
$fields = array();
// Выполняем запрос к БД и получаем список полей у той рубрики, к которой относится данный запрос
$sql = $AVE_DB->Query("
SELECT *
6 years ago
FROM
" . PREFIX . "_rubric_fields
WHERE
rubric_id = '" . $_REQUEST['rubric_id'] . "'
6 years ago
ORDER BY rubric_field_position ASC
7 years ago
");
6 years ago
// Обрабатываем полученные данные и формируем массив
while ($row = $sql->FetchRow())
array_push($fields, $row);
7 years ago
6 years ago
$conditions = array();
7 years ago
6 years ago
// Выполняем запрос к БД и получаем условия запроса
$sql = $AVE_DB->Query("
SELECT *
6 years ago
FROM
" . PREFIX . "_request_conditions
WHERE
request_id = '" . $request_id . "'
6 years ago
ORDER BY condition_position ASC
");
7 years ago
6 years ago
// Обрабатываем полученные данные и формируем массив
while ($row = $sql->FetchRow())
array_push($conditions, $row);
7 years ago
6 years ago
// Передаем данные в шаблон и отображаем страницу с редактированием условий
$AVE_Template->assign('request_title', $this->get_request_by_id($request_id)->request_title);
$AVE_Template->assign('fields', $fields);
$AVE_Template->assign('conditions', $conditions);
6 years ago
if (isAjax() && (isset($_REQUEST['ajax']) && $_REQUEST['ajax'] == 1))
6 years ago
$AVE_Template->assign('content', $AVE_Template->fetch('request/cond_list.tpl'));
6 years ago
else
6 years ago
$AVE_Template->assign('content', $AVE_Template->fetch('request/conditions.tpl'));
6 years ago
6 years ago
break;
case 'sort':
7 years ago
6 years ago
foreach ($_REQUEST['sort'] as $position => $cond_id)
7 years ago
{
$AVE_DB->Query("
6 years ago
UPDATE
" . PREFIX . "_request_conditions
7 years ago
SET
6 years ago
condition_position = '" . (int)$position . "'
7 years ago
WHERE
6 years ago
Id = '" . (int)$cond_id . "'
7 years ago
");
6 years ago
}
7 years ago
6 years ago
if (isAjax())
{
6 years ago
$message = $AVE_Template->get_config_vars('REQUEST_SORTED');
$header = $AVE_Template->get_config_vars('REQUEST_SUCCESS');
$theme = 'accept';
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
7 years ago
}
6 years ago
exit;
// Если пользователь нажал кнопку Сохранить изменения
case 'save':
// Если существует хотя бы одно условие, тогда
if (isset($_REQUEST['conditions']) && is_array($_POST['conditions']))
7 years ago
{
6 years ago
$condition_edited = false;
// Обрабатываем данные полей
foreach ($_REQUEST['conditions'] as $condition_id => $val)
{
// Выполняем запрос к БД на обновление информации об условиях
$AVE_DB->Query("
UPDATE
" . PREFIX . "_request_conditions
SET
request_id = '" . $request_id . "',
condition_compare = '" . $val['condition_compare'] . "',
condition_field_id = '" . $val['condition_field_id'] . "',
condition_value = '" . (! empty($val['condition_value']) ? $val['condition_value'] : '') . "',
condition_join = '" . $val['condition_join'] . "',
condition_status = '" . ((! empty($val['condition_value'])) ? (($val['condition_status'] == '1') ? '1' : '0') : ''). "'
WHERE
Id = '" . $condition_id . "'
");
$condition_edited = true;
}
7 years ago
6 years ago
// Если изменения были, сохраняем системное сообщение в журнал
if ($condition_edited)
{
reportLog('' . $AVE_Template->get_config_vars('REQUEST_COND_CHA_SUC') . ' (' . stripslashes(htmlspecialchars($this->get_request_by_id($request_id)->request_title, ENT_QUOTES)) . ') - ( Id: '.$request_id.' )');
$message = $AVE_Template->get_config_vars('REQUEST_COND_POST_OK');
$header = $AVE_Template->get_config_vars('REQUEST_SUCCESS');
$theme = 'accept';
}
else
{
$message = $AVE_Template->get_config_vars('REQUEST_COND_POST_ERR');
$header = $AVE_Template->get_config_vars('REQUEST_ERROR');
$theme = 'error';
}
7 years ago
}
else
{
6 years ago
$message = $AVE_Template->get_config_vars('REQUEST_COND_NO_POST');
7 years ago
$header = $AVE_Template->get_config_vars('REQUEST_ERROR');
$theme = 'error';
}
6 years ago
// Если некоторые из условий были помечены на удаление
if (isset($_POST['del']) && is_array($_POST['del']))
7 years ago
{
6 years ago
// Обрабатываем все поля помеченные на удаление
foreach ($_POST['del'] as $condition_id => $val)
{
// Выполняем запрос к БД на удаление условий
$AVE_DB->Query("
6 years ago
DELETE FROM
" . PREFIX . "_request_conditions
WHERE
Id = '" . $condition_id . "'
6 years ago
");
}
// Сохраняем системное сообщение в журнал
reportLog('' . $AVE_Template->get_config_vars('REQUEST_COND_DEL_SUC') . ' (' . stripslashes(htmlspecialchars($this->get_request_by_id($request_id)->request_title, ENT_QUOTES)) . ') - ( Id: '.$request_id.' )');
7 years ago
}
6 years ago
// Нет смысла каждый раз формировать SQL-запрос с условиями Запроса
// поэтому формируем SQL-запрос только при изменении условий
// require(BASE_DIR . '/functions/func.parserequest.php');
request_get_condition_sql_string($request_id, true);
7 years ago
6 years ago
$AVE_DB->Query("
UPDATE
6 years ago
" . PREFIX . "_request
6 years ago
SET
request_changed = '" . time() . "'
WHERE
Id = '" . $request_id . "'
");
$AVE_DB->clearRequest($request_id);
5 years ago
if (! isAjax())
6 years ago
{
6 years ago
// Выполняем обновление страницы
header('Location:index.php?do=request&action=conditions&rubric_id=' . $_REQUEST['rubric_id'] . '&Id=' . $request_id . '&cp=' . SESSION . ($_REQUEST['pop'] ? '&pop=1' : ''));
exit;
6 years ago
}
else
{
6 years ago
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
exit;
}
6 years ago
6 years ago
break;
7 years ago
6 years ago
// Если пользователь добавил новое условие
case 'new':
if ($_POST['new_value'] !== '')
{
// Выполняем запрос к БД на добавление нового условия
$sql = $AVE_DB->Query("
6 years ago
INSERT
" . PREFIX . "_request_conditions
6 years ago
SET
request_id = '" . $request_id . "',
condition_compare = '" . $_POST['new_operator'] . "',
condition_field_id = '" . $_POST['field_new'] . "',
condition_value = '" . $_POST['new_value'] . "',
condition_join = '" . $_POST['oper_new'] . "'
");
6 years ago
if ($sql->_result === false)
{
6 years ago
$message = $AVE_Template->get_config_vars('REQUEST_COND_NEW_ERR');
$header = $AVE_Template->get_config_vars('REQUEST_ERROR');
$theme = 'error';
6 years ago
}
else
{
6 years ago
// Сохраняем системное сообщение в журнал
reportLog('' . $AVE_Template->get_config_vars('REQUEST_COND_ADD_SUC') . ' (' . stripslashes(htmlspecialchars($this->get_request_by_id($request_id)->request_title, ENT_QUOTES)) . ') - ( Id: '.$request_id.' )');
}
7 years ago
6 years ago
}
else
{
6 years ago
$message = $AVE_Template->get_config_vars('REQUEST_COND_VALUE_ERR');
7 years ago
$header = $AVE_Template->get_config_vars('REQUEST_ERROR');
$theme = 'error';
}
6 years ago
// Нет смысла каждый раз формировать SQL-запрос с условиями Запроса
// поэтому формируем SQL-запрос только при изменении условий
// require(BASE_DIR . '/functions/func.parserequest.php');
request_get_condition_sql_string($request_id, true);
7 years ago
6 years ago
$AVE_DB->Query("
UPDATE
6 years ago
" . PREFIX . "_request
6 years ago
SET
request_changed = '" . time() . "'
WHERE
Id = '" . $request_id . "'
");
$AVE_DB->clearRequest($request_id);
6 years ago
if (! isAjax())
6 years ago
{
6 years ago
header('Location:index.php?do=request&action=conditions&rubric_id=' . $_REQUEST['rubric_id'] . '&Id=' . $request_id . '&cp=' . SESSION);
exit;
7 years ago
}
6 years ago
else
{
if (! $message)
{
$message = $AVE_Template->get_config_vars('REQUEST_COND_NEW_SUC');
$header = $AVE_Template->get_config_vars('REQUEST_SUCCESS');
$theme = 'accept';
}
6 years ago
6 years ago
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
exit;
}
break;
}
7 years ago
}
6 years ago
5 years ago
/**
* @param $field_id
* @param $cond_id
*/
6 years ago
function conditionFieldChange($field_id, $cond_id)
{
global $AVE_DB, $AVE_Template;
7 years ago
6 years ago
// Передаем данные в шаблон и отображаем страницу с редактированием условий
$AVE_Template->assign('field_id', $field_id);
$AVE_Template->assign('cond_id', $cond_id);
$AVE_Template->assign('content', $AVE_Template->fetch('request/change.tpl'));
}
7 years ago
6 years ago
5 years ago
/**
* @param $field_id
* @param $cond_id
*/
6 years ago
function conditionFieldChangeSave($field_id, $cond_id)
{
global $AVE_DB, $AVE_Template;
5 years ago
// ToDo
6 years ago
$sql = $AVE_DB->Query("
6 years ago
UPDATE
" . PREFIX . "_request_conditions
6 years ago
SET
condition_field_id = '" . $field_id . "'
WHERE
Id = '" . $cond_id . "'
");
request_get_condition_sql_string((int)$_REQUEST['req_id'], true);
7 years ago
6 years ago
$request_id = $AVE_DB->Query("
SELECT
request_id
FROM
" . PREFIX . "_request_conditions
WHERE
Id = '" . $cond_id . "'
")->GetCell();
$AVE_DB->Query("
UPDATE
6 years ago
" . PREFIX . "_request
6 years ago
SET
request_changed = '" . time() . "'
WHERE
Id = '" . $request_id . "'
");
$AVE_DB->clearRequest($request_id);
6 years ago
// Передаем данные в шаблон и отображаем страницу с редактированием условий
$AVE_Template->assign('field_id', $field_id);
$AVE_Template->assign('cond_id', $cond_id);
$AVE_Template->assign('content', $AVE_Template->fetch('request/change.tpl'));
}
}
?>