mirror of https://github.com/avecms/AVE.cms.git
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.
2027 lines
55 KiB
2027 lines
55 KiB
8 years ago
|
<?php
|
||
|
|
||
|
/**
|
||
|
* AVE.cms
|
||
|
*
|
||
|
* @package AVE.cms
|
||
|
* @version 3.x
|
||
|
* @filesource
|
||
|
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Класс работы с рубриками
|
||
|
*/
|
||
|
class AVE_Rubric
|
||
|
{
|
||
|
|
||
|
/**
|
||
|
* СВОЙСТВА
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Количество рубрик на странице
|
||
|
*
|
||
|
* @public int
|
||
|
*/
|
||
|
public $_limit = 30;
|
||
|
|
||
|
/**
|
||
|
* ВНУТРЕННИЕ МЕТОДЫ
|
||
|
*/
|
||
|
|
||
|
function get_rubric_fields_group($rubric_id)
|
||
|
{
|
||
|
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
*
|
||
|
FROM
|
||
|
" . PREFIX . "_rubric_fields_group
|
||
|
WHERE
|
||
|
rubric_id = '" . $rubric_id . "'
|
||
|
ORDER BY
|
||
|
group_position ASC
|
||
|
");
|
||
|
|
||
|
$groups = array();
|
||
|
|
||
|
while($row = $sql->FetchRow())
|
||
|
{
|
||
|
array_push($groups, $row);
|
||
|
}
|
||
|
|
||
|
return $groups;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* ВНЕШНИЕ МЕТОДЫ
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Вывод списка рубрик
|
||
|
*
|
||
|
*/
|
||
|
function rubricList()
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
$rubrics = array();
|
||
|
$num = $AVE_DB->Query("SELECT COUNT(*) FROM " . PREFIX . "_rubrics")->GetCell();
|
||
|
|
||
|
$page_limit = $this->_limit;
|
||
|
$pages = ceil($num / $page_limit);
|
||
|
$set_start = get_current_page() * $page_limit - $page_limit;
|
||
|
|
||
|
if ($num > $page_limit)
|
||
|
{
|
||
|
$page_nav = " <a class=\"pnav\" href=\"index.php?do=rubs&page={s}&cp=" . SESSION . "\">{t}</a> ";
|
||
|
$page_nav = get_pagination($pages, 'page', $page_nav);
|
||
|
$AVE_Template->assign('page_nav', $page_nav);
|
||
|
}
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
rub.*,
|
||
|
COUNT(doc.Id) AS doc_count,
|
||
|
(SELECT count(*) FROM " . PREFIX . "_rubric_fields AS fld WHERE fld.rubric_id = rub.Id) AS fld_count,
|
||
|
(SELECT count(*) FROM " . PREFIX . "_rubric_templates AS tmpls WHERE tmpls.rubric_id = rub.Id) AS tmpls_count
|
||
|
FROM
|
||
|
" . PREFIX . "_rubrics AS rub
|
||
|
LEFT JOIN
|
||
|
" . PREFIX . "_documents AS doc
|
||
|
ON rubric_id = rub.Id
|
||
|
GROUP BY rub.Id
|
||
|
ORDER BY rub.rubric_position
|
||
|
LIMIT " . $set_start . "," . $page_limit
|
||
|
);
|
||
|
|
||
|
while ($row = $sql->FetchRow())
|
||
|
{
|
||
|
array_push($rubrics, $row);
|
||
|
}
|
||
|
|
||
|
$AVE_Template->assign('rubrics', $rubrics);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* создание рубрики
|
||
|
*
|
||
|
*/
|
||
|
function rubricNew()
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
switch ($_REQUEST['sub'])
|
||
|
{
|
||
|
case '':
|
||
|
$AVE_Template->assign('content', $AVE_Template->fetch('rubs/rubnew.tpl'));
|
||
|
break;
|
||
|
|
||
|
case 'save':
|
||
|
$errors = array();
|
||
|
|
||
|
if (empty($_POST['rubric_title']))
|
||
|
{
|
||
|
array_push($errors, $AVE_Template->get_config_vars('RUBRIK_NO_NAME'));
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$name_exist = $AVE_DB->Query("
|
||
|
SELECT 1
|
||
|
FROM " . PREFIX . "_rubrics
|
||
|
WHERE rubric_title = '" . $_POST['rubric_title'] . "'
|
||
|
LIMIT 1
|
||
|
")->NumRows();
|
||
|
|
||
|
if ($name_exist) array_push($errors, $AVE_Template->get_config_vars('RUBRIK_NAME_EXIST'));
|
||
|
|
||
|
if (!empty($_POST['rubric_alias']))
|
||
|
{
|
||
|
if (preg_match(TRANSLIT_URL ? '/[^\%HYa-z0-9\/_-]+/' : '/[^\%HYa-zа-яА-Яёїєі0-9\/_-]+/u', $_POST['rubric_alias']))
|
||
|
{
|
||
|
array_push($errors, $AVE_Template->get_config_vars('RUBRIK_PREFIX_BAD_CHAR'));
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$prefix_exist = $AVE_DB->Query("
|
||
|
SELECT 1
|
||
|
FROM " . PREFIX . "_rubrics
|
||
|
WHERE rubric_alias = '" . $_POST['rubric_alias'] . "'
|
||
|
LIMIT 1
|
||
|
")->NumRows();
|
||
|
|
||
|
if ($prefix_exist) array_push($errors, $AVE_Template->get_config_vars('RUBRIK_PREFIX_EXIST'));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (!empty($errors))
|
||
|
{
|
||
|
$AVE_Template->assign('errors', $errors);
|
||
|
$AVE_Template->assign('templates', get_all_templates());
|
||
|
$AVE_Template->assign('content', $AVE_Template->fetch('rubs/rubnew.tpl'));
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$position = (int)$AVE_DB->Query("
|
||
|
SELECT MAX(rubric_position)
|
||
|
FROM " . PREFIX . "_rubrics
|
||
|
")->GetCell() + 1;
|
||
|
|
||
|
$AVE_DB->Query("
|
||
|
INSERT " . PREFIX . "_rubrics
|
||
|
SET
|
||
|
rubric_title = '" . $_POST['rubric_title'] . "',
|
||
|
rubric_alias = '" . $_POST['rubric_alias'] . "',
|
||
|
rubric_template_id = '" . intval($_POST['rubric_template_id']) . "',
|
||
|
rubric_author_id = '" . $_SESSION['user_id'] . "',
|
||
|
rubric_created = '" . time() . "',
|
||
|
rubric_position = '" . $position . "'
|
||
|
");
|
||
|
|
||
|
$iid = $AVE_DB->InsertId();
|
||
|
|
||
|
// Выставляем всем право на просмотр рубрики, админу - все права
|
||
|
$sql_user = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
grp.*,
|
||
|
COUNT(usr.Id) AS UserCount
|
||
|
FROM
|
||
|
" . PREFIX . "_user_groups AS grp
|
||
|
LEFT JOIN
|
||
|
" . PREFIX . "_users AS usr
|
||
|
ON usr.user_group = grp.user_group
|
||
|
GROUP BY grp.user_group
|
||
|
");
|
||
|
while ($row = $sql_user->FetchRow())
|
||
|
{
|
||
|
$AVE_DB->Query("
|
||
|
INSERT " . PREFIX . "_rubric_permissions
|
||
|
SET
|
||
|
rubric_id = '" . $iid . "',
|
||
|
user_group_id = '" . $row->user_group . "',
|
||
|
rubric_permission = '". (($row->user_group == 1) ? "alles|docread|new|newnow|editown|editall|delrev" : "docread")."'
|
||
|
");
|
||
|
}
|
||
|
|
||
|
// Сохраняем системное сообщение в журнал
|
||
|
reportLog($AVE_Template->get_config_vars('RUBRIK_LOG_NEW_RUBRIC') . ' - ' . stripslashes(htmlspecialchars($_POST['rubric_title'], ENT_QUOTES)) . ' (id: '.$iid.')');
|
||
|
|
||
|
header('Location:index.php?do=rubs&action=edit&Id=' . $iid . '&cp=' . SESSION);
|
||
|
exit;
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Запись настроек рубрики
|
||
|
*
|
||
|
*/
|
||
|
function quickSave()
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
if (check_permission_acp('rubric_edit'))
|
||
|
{
|
||
|
foreach ($_POST['rubric_title'] as $rubric_id => $rubric_title)
|
||
|
{
|
||
|
if (!empty($rubric_title))
|
||
|
{
|
||
|
$set_rubric_title = '';
|
||
|
$set_rubric_alias = '';
|
||
|
|
||
|
$name_exist = $AVE_DB->Query("
|
||
|
SELECT 1
|
||
|
FROM " . PREFIX . "_rubrics
|
||
|
WHERE
|
||
|
rubric_title = '" . $rubric_title . "'
|
||
|
AND
|
||
|
Id != '" . $rubric_id . "'
|
||
|
LIMIT 1
|
||
|
")->NumRows();
|
||
|
|
||
|
if (!$name_exist)
|
||
|
{
|
||
|
$set_rubric_title = "rubric_title = '" . $rubric_title . "',";
|
||
|
}
|
||
|
|
||
|
if (isset($_POST['rubric_alias'][$rubric_id]) && $_POST['rubric_alias'][$rubric_id] != '')
|
||
|
{
|
||
|
$pattern = TRANSLIT_URL ? '/[^\%HYa-z0-9\/_-]+/' : '/[^\%HYa-zа-яА-Яёїєі0-9\/_-]+/u';
|
||
|
if (!(preg_match($pattern, $_POST['rubric_alias'][$rubric_id])))
|
||
|
{
|
||
|
$prefix_exist = $AVE_DB->Query("
|
||
|
SELECT 1
|
||
|
FROM " . PREFIX . "_rubrics
|
||
|
WHERE
|
||
|
rubric_alias = '" . $_POST['rubric_alias'][$rubric_id] . "'
|
||
|
AND
|
||
|
Id != '" . $rubric_id . "'
|
||
|
LIMIT 1
|
||
|
")->NumRows();
|
||
|
|
||
|
if (!$prefix_exist)
|
||
|
{
|
||
|
$set_rubric_alias = "rubric_alias = '" . trim(preg_replace($pattern, '', $_POST['rubric_alias'][$rubric_id]), '/') . "',";
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$set_rubric_alias = "rubric_alias = '',";
|
||
|
}
|
||
|
|
||
|
$AVE_DB->Query("
|
||
|
UPDATE " . PREFIX . "_rubrics
|
||
|
SET
|
||
|
" . $set_rubric_title . "
|
||
|
" . $set_rubric_alias . "
|
||
|
rubric_meta_gen = '" . (isset($_POST['rubric_meta_gen'][$rubric_id]) ? $_POST['rubric_meta_gen'][$rubric_id] : '0') . "',
|
||
|
rubric_alias_history = '" . (isset($_POST['rubric_alias_history'][$rubric_id]) ? $_POST['rubric_alias_history'][$rubric_id] : '0') . "',
|
||
|
rubric_template_id = '" . (int)$_POST['rubric_template_id'][$rubric_id] . "',
|
||
|
rubric_docs_active = '" . (isset($_POST['rubric_docs_active'][$rubric_id]) ? $_POST['rubric_docs_active'][$rubric_id] : '0') . "'
|
||
|
WHERE
|
||
|
Id = '" . $rubric_id . "'
|
||
|
");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$message = $AVE_Template->get_config_vars('RUBRIK_REP_QUICKSAVE_T');
|
||
|
$header = $AVE_Template->get_config_vars('RUBRIK_REP_QUICKSAVE_H');
|
||
|
$theme = 'accept';
|
||
|
|
||
|
reportLog($AVE_Template->get_config_vars('RUBRIK_REPORT_QUICKSAVE'));
|
||
|
|
||
|
if (isset($_REQUEST['ajax']) && $_REQUEST['ajax'] = 'run') {
|
||
|
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
|
||
|
exit;
|
||
|
} else {
|
||
|
$page = !empty($_REQUEST['page']) ? '&page=' . $_REQUEST['page'] : '' ;
|
||
|
header('Location:index.php?do=rubs' . $page . '&cp=' . SESSION);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Копирование рубрики
|
||
|
*
|
||
|
*/
|
||
|
function rubricCopy()
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
$rubric_id = (int)$_REQUEST['Id'];
|
||
|
|
||
|
$errors = array();
|
||
|
|
||
|
if (empty($_REQUEST['rubric_title']))
|
||
|
{
|
||
|
array_push($errors, $AVE_Template->get_config_vars('RUBRIK_NO_NAME'));
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$name_exist = $AVE_DB->Query("
|
||
|
SELECT 1
|
||
|
FROM " . PREFIX . "_rubrics
|
||
|
WHERE rubric_title = '" . $_POST['rubric_title'] . "'
|
||
|
LIMIT 1
|
||
|
")->NumRows();
|
||
|
|
||
|
if ($name_exist) array_push($errors, $AVE_Template->get_config_vars('RUBRIK_NAME_EXIST'));
|
||
|
}
|
||
|
|
||
|
if (!empty($_POST['rubric_alias']))
|
||
|
{
|
||
|
if (preg_match(TRANSLIT_URL ? '/[^\%HYa-z0-9\/-]+/' : '/[^\%HYa-zа-яёїєі0-9\/_-]+/', $_POST['rubric_alias']))
|
||
|
{
|
||
|
array_push($errors, $AVE_Template->get_config_vars('RUBRIK_PREFIX_BAD_CHAR'));
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$prefix_exist = $AVE_DB->Query("
|
||
|
SELECT 1
|
||
|
FROM " . PREFIX . "_rubrics
|
||
|
WHERE rubric_alias = '" . $_POST['rubric_alias'] . "'
|
||
|
LIMIT 1
|
||
|
")->NumRows();
|
||
|
|
||
|
if ($prefix_exist) array_push($errors, $AVE_Template->get_config_vars('RUBRIK_PREFIX_EXIST'));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$row = $AVE_DB->Query("
|
||
|
SELECT *
|
||
|
FROM " . PREFIX . "_rubrics
|
||
|
WHERE Id = '" . $rubric_id . "'
|
||
|
")->FetchRow();
|
||
|
|
||
|
if (!$row) array_push($errors, $AVE_Template->get_config_vars('RUBRIK_NO_RUBRIK'));
|
||
|
|
||
|
if (!empty($errors))
|
||
|
{
|
||
|
$AVE_Template->assign('errors', $errors);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$AVE_DB->Query("
|
||
|
INSERT " . PREFIX . "_rubrics
|
||
|
SET
|
||
|
rubric_title = '" . $_POST['rubric_title'] . "',
|
||
|
rubric_alias = '" . $_POST['rubric_alias'] . "',
|
||
|
rubric_template = '" . addslashes($row->rubric_template) . "',
|
||
|
rubric_template_id = '" . addslashes($row->rubric_template_id) . "',
|
||
|
rubric_author_id = '" . (int)$_SESSION['user_id'] . "',
|
||
|
rubric_created = '" . time() . "',
|
||
|
rubric_teaser_template = '" . addslashes($row->rubric_teaser_template) . "',
|
||
|
rubric_header_template = '" . addslashes($row->rubric_header_template) . "',
|
||
|
rubric_admin_teaser_template = '" . addslashes($row->rubric_admin_teaser_template) . "'
|
||
|
");
|
||
|
$iid = $AVE_DB->InsertId();
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
user_group_id,
|
||
|
rubric_permission
|
||
|
FROM " . PREFIX . "_rubric_permissions
|
||
|
WHERE rubric_id = '" . $rubric_id . "'
|
||
|
");
|
||
|
while ($row = $sql->FetchRow())
|
||
|
{
|
||
|
$AVE_DB->Query("
|
||
|
INSERT " . PREFIX . "_rubric_permissions
|
||
|
SET
|
||
|
rubric_id = '" . $iid . "',
|
||
|
user_group_id = '" . (int)$row->user_group_id . "',
|
||
|
rubric_permission = '" . addslashes($row->rubric_permission) . "'
|
||
|
");
|
||
|
}
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
rubric_field_title,
|
||
|
rubric_field_alias,
|
||
|
rubric_field_type,
|
||
|
rubric_field_position,
|
||
|
rubric_field_default,
|
||
|
rubric_field_template,
|
||
|
rubric_field_template_request,
|
||
|
rubric_field_description
|
||
|
FROM " . PREFIX . "_rubric_fields
|
||
|
WHERE rubric_id = '" . $rubric_id . "'
|
||
|
ORDER BY rubric_field_position ASC
|
||
|
");
|
||
|
while ($row = $sql->FetchRow())
|
||
|
{
|
||
|
$AVE_DB->Query("
|
||
|
INSERT " . PREFIX . "_rubric_fields
|
||
|
SET
|
||
|
rubric_id = '" . $iid . "',
|
||
|
rubric_field_title = '" . addslashes($row->rubric_field_title) . "',
|
||
|
rubric_field_alias = '" . addslashes($row->rubric_field_alias) . "',
|
||
|
rubric_field_type = '" . addslashes($row->rubric_field_type) . "',
|
||
|
rubric_field_position = '" . (int)$row->rubric_field_position . "',
|
||
|
rubric_field_default = '" . addslashes($row->rubric_field_default) . "',
|
||
|
rubric_field_template = '" . addslashes($row->rubric_field_template) . "',
|
||
|
rubric_field_template_request = '" . addslashes($row->rubric_field_template_request) . "',
|
||
|
rubric_field_description = '" . addslashes($row->rubric_field_description) . "'
|
||
|
");
|
||
|
}
|
||
|
|
||
|
reportLog($AVE_Template->get_config_vars('RUBRIK_REPORT_COPY') . ' - ' . stripslashes(htmlspecialchars($this->rubricNameByIdGet($rubric_id)->rubric_title, ENT_QUOTES)) . ' (id: '.$rubric_id.')');
|
||
|
|
||
|
echo '<script>window.opener.location.reload();window.close();</script>';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Удаление рубрики
|
||
|
*
|
||
|
*/
|
||
|
function rubricDelete()
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
$rubric_id = (int)$_REQUEST['Id'];
|
||
|
|
||
|
if ($rubric_id <= 1)
|
||
|
{
|
||
|
header('Location:index.php?do=rubs&cp=' . SESSION);
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
$rubric_not_empty = $AVE_DB->Query("
|
||
|
SELECT 1
|
||
|
FROM " . PREFIX . "_documents
|
||
|
WHERE rubric_id = '" . $rubric_id . "'
|
||
|
LIMIT 1
|
||
|
")->GetCell();
|
||
|
|
||
|
if (!$rubric_not_empty)
|
||
|
{
|
||
|
$AVE_DB->Query("
|
||
|
DELETE
|
||
|
FROM " . PREFIX . "_rubrics
|
||
|
WHERE Id = '" . $rubric_id . "'
|
||
|
");
|
||
|
$AVE_DB->Query("
|
||
|
DELETE
|
||
|
FROM " . PREFIX . "_rubric_fields
|
||
|
WHERE rubric_id = '" . $rubric_id . "'
|
||
|
");
|
||
|
$AVE_DB->Query("
|
||
|
DELETE
|
||
|
FROM " . PREFIX . "_rubric_permissions
|
||
|
WHERE rubric_id = '" . $rubric_id . "'
|
||
|
");
|
||
|
// Очищаем кэш шаблона документов рубрики
|
||
|
$AVE_DB->Query("
|
||
|
DELETE
|
||
|
FROM " . PREFIX . "_rubric_template_cache
|
||
|
WHERE rub_id = '" . $rubric_id . "'
|
||
|
");
|
||
|
|
||
|
// Сохраняем системное сообщение в журнал
|
||
|
reportLog($AVE_Template->get_config_vars('RUBRIK_LOG_DEL_RUBRIC') . ' - ' . stripslashes(htmlspecialchars($this->rubricNameByIdGet($rubric_id)->rubric_title, ENT_QUOTES)) . ' (id: '.$rubric_id.')');
|
||
|
}
|
||
|
|
||
|
header('Location:index.php?do=rubs&cp=' . SESSION);
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Вывод списка полей рубрики
|
||
|
*
|
||
|
* @param int $rubric_id идентификатор рубрики
|
||
|
*/
|
||
|
function rubricFieldShow($rubric_id = 0, $ajax)
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
if(check_permission_acp('rubric_edit'))
|
||
|
{
|
||
|
// Поля
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
a.*, b.group_title, b.group_description, b.group_position
|
||
|
FROM
|
||
|
" . PREFIX . "_rubric_fields AS a
|
||
|
LEFT JOIN
|
||
|
" . PREFIX . "_rubric_fields_group AS b
|
||
|
ON a.rubric_field_group = b.Id
|
||
|
WHERE
|
||
|
a.rubric_id = '" . $rubric_id . "'
|
||
|
ORDER BY
|
||
|
b.group_position ASC, a.rubric_field_position ASC
|
||
|
");
|
||
|
|
||
|
$fields_list = array();
|
||
|
|
||
|
while ($row = $sql->FetchRow())
|
||
|
{
|
||
|
$group_id = ($row->rubric_field_group) ? $row->rubric_field_group : 0;
|
||
|
|
||
|
$fields_list[$group_id]['group_position'] = ($row->group_position) ? $row->group_position : 100;
|
||
|
$fields_list[$group_id]['group_title'] = $row->group_title;
|
||
|
$fields_list[$group_id]['group_description'] = $row->group_description;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['Id'] = $row->Id;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['rubric_id'] = $row->rubric_id;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['rubric_field_group'] = $row->rubric_field_group;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['rubric_field_alias'] = $row->rubric_field_alias;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['rubric_field_title'] = $row->rubric_field_title;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['rubric_field_type'] = $row->rubric_field_type;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['rubric_field_numeric'] = $row->rubric_field_numeric;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['rubric_field_default'] = $row->rubric_field_default;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['rubric_field_search'] = $row->rubric_field_search;
|
||
|
}
|
||
|
|
||
|
$fields_list = msort($fields_list, 'group_position');
|
||
|
|
||
|
$AVE_Template->assign('groups_count', count($fields_list));
|
||
|
$AVE_Template->assign('fields_list', $fields_list);
|
||
|
|
||
|
// Группы полей
|
||
|
$fields_groups = array();
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT *
|
||
|
FROM " . PREFIX . "_rubric_fields_group
|
||
|
WHERE rubric_id = '" . $rubric_id . "'
|
||
|
ORDER BY group_position ASC
|
||
|
");
|
||
|
|
||
|
while ($row = $sql->FetchRow())
|
||
|
{
|
||
|
array_push($fields_groups, $row);
|
||
|
}
|
||
|
|
||
|
$AVE_Template->assign('fields_groups', $fields_groups);
|
||
|
|
||
|
|
||
|
// Права
|
||
|
$groups = array();
|
||
|
|
||
|
$sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_user_groups");
|
||
|
|
||
|
while ($row = $sql->FetchRow())
|
||
|
{
|
||
|
$row->doall = ($row->user_group == 1) ? ' disabled="disabled" checked="checked"' : '';
|
||
|
$row->doall_h = ($row->user_group == 1) ? 1 : '';
|
||
|
|
||
|
$rubric_permission = $AVE_DB->Query("
|
||
|
SELECT rubric_permission
|
||
|
FROM " . PREFIX . "_rubric_permissions
|
||
|
WHERE user_group_id = '" . $row->user_group . "'
|
||
|
AND rubric_id = '" . $rubric_id . "'
|
||
|
")->GetCell();
|
||
|
|
||
|
$row->permissions = @explode('|', $rubric_permission);
|
||
|
|
||
|
array_push($groups,$row);
|
||
|
}
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT rubric_title, rubric_linked_rubric, rubric_description
|
||
|
FROM " . PREFIX . "_rubrics
|
||
|
WHERE id = '" . $rubric_id . "'
|
||
|
LIMIT 1
|
||
|
");
|
||
|
|
||
|
$rubrik = $sql->FetchRow();
|
||
|
|
||
|
$rubrik->rubric_linked_rubric = ($rubrik->rubric_linked_rubric != '0') ? unserialize($rubrik->rubric_linked_rubric) : array();
|
||
|
|
||
|
$AVE_Template->assign('rubric', $rubrik);
|
||
|
$AVE_Template->assign('groups', $groups);
|
||
|
$AVE_Template->assign('fields', get_field_type());
|
||
|
$AVE_Template->assign('rubs', $this->rubricShow());
|
||
|
|
||
|
if (isAjax())
|
||
|
{
|
||
|
$AVE_Template->assign('content', $AVE_Template->fetch('rubs/fields.tpl'));
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$AVE_Template->assign('content', $AVE_Template->fetch('rubs/fields_list.tpl'));
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
header('Location:index.php?do=rubs&cp=' . SESSION);
|
||
|
exit;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Вывод списка рубрик
|
||
|
*
|
||
|
* @param int $rubric_id идентификатор текущей рубрики
|
||
|
*/
|
||
|
function rubricShow($RubLink=null)
|
||
|
{
|
||
|
global $AVE_DB;
|
||
|
|
||
|
if ($RubLink!==null) {
|
||
|
$AVE_DB->Query("
|
||
|
UPDATE " . PREFIX . "_rubrics
|
||
|
SET
|
||
|
rubric_linked_rubric = '" . serialize($_REQUEST['rubric_linked']) . "'
|
||
|
WHERE
|
||
|
Id = '" . (int)$_REQUEST['Id'] . "'
|
||
|
");
|
||
|
header('Location:index.php?do=rubs&action=edit&Id=' . (int)$_REQUEST['Id'] . '&cp=' . SESSION);
|
||
|
exit;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$rubs = array();
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT rubric_title, Id
|
||
|
FROM " . PREFIX . "_rubrics
|
||
|
ORDER BY rubric_position ASC
|
||
|
");
|
||
|
|
||
|
while ($row = $sql->FetchRow())
|
||
|
{
|
||
|
array_push($rubs,$row);
|
||
|
}
|
||
|
return $rubs;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Создание нового поля рубрики
|
||
|
*
|
||
|
* @param int $rubric_id идентификатор рубрики
|
||
|
*/
|
||
|
function rubricFieldNew($rubric_id = 0, $ajax)
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
if (!empty($_POST['title_new']))
|
||
|
{
|
||
|
$position = (int)$AVE_DB->Query("
|
||
|
SELECT MAX(rubric_field_position)
|
||
|
FROM " . PREFIX . "_rubric_fields
|
||
|
WHERE rubric_id = '" . $rubric_id . "'
|
||
|
")->GetCell() + 1;
|
||
|
|
||
|
if ($_POST['rub_type_new'] == 'dropdown')
|
||
|
{
|
||
|
$rubric_field_default = trim($_POST['default_value']);
|
||
|
$rubric_field_default = preg_split('/\s*,\s*/', $rubric_field_default);
|
||
|
$rubric_field_default = implode(',', $rubric_field_default);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$rubric_field_default = $_POST['default_value'];
|
||
|
}
|
||
|
|
||
|
$AVE_DB->Query("
|
||
|
INSERT " . PREFIX . "_rubric_fields
|
||
|
SET
|
||
|
rubric_id = '" . $rubric_id . "',
|
||
|
rubric_field_group = '" . (($_POST['group_new'] != '') ? (int)$_POST['group_new'] : '0') . "',
|
||
|
rubric_field_title = '" . $_POST['title_new'] . "',
|
||
|
rubric_field_type = '" . $_POST['rub_type_new'] . "',
|
||
|
rubric_field_position = '" . $position . "',
|
||
|
rubric_field_default = '" . $rubric_field_default . "',
|
||
|
rubric_field_numeric = '" . (($_POST['rubric_field_numeric'] == 1) ? $_POST['rubric_field_numeric'] : '0') . "',
|
||
|
rubric_field_search = '" . (($_POST['rubric_field_search'] == 1) ? $_POST['rubric_field_search'] : '0') . "'
|
||
|
");
|
||
|
|
||
|
$UpdateRubricField = $AVE_DB->InsertId();
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT Id
|
||
|
FROM " . PREFIX . "_documents
|
||
|
WHERE rubric_id = '" . $rubric_id . "'
|
||
|
");
|
||
|
|
||
|
while ($row = $sql->FetchRow())
|
||
|
{
|
||
|
$AVE_DB->Query("
|
||
|
INSERT " . PREFIX . "_document_fields
|
||
|
SET
|
||
|
rubric_field_id = '" . $UpdateRubricField . "',
|
||
|
document_id = '" . $row->Id . "'
|
||
|
");
|
||
|
}
|
||
|
|
||
|
// Сохраняем системное сообщение в журнал
|
||
|
reportLog($AVE_Template->get_config_vars('RUBRIK_LOG_NEW_FIELD').' (' . stripslashes(htmlspecialchars($_POST['title_new'], ENT_QUOTES)) . ') '. stripslashes(htmlspecialchars($this->rubricNameByIdGet($rubric_id)->rubric_title, ENT_QUOTES)). ' (id: '.$rubric_id.')');
|
||
|
} else {
|
||
|
|
||
|
if (!$ajax){
|
||
|
|
||
|
header('Location:index.php?do=rubs&action=edit&Id=' . $rubric_id . '&cp=' . SESSION);
|
||
|
exit;
|
||
|
|
||
|
}else{
|
||
|
|
||
|
$message = $AVE_Template->get_config_vars('RUBRIK_EMPTY_MESSAGE');
|
||
|
$header = $AVE_Template->get_config_vars('RUBRIK_FILDS_SUCCESS');
|
||
|
$theme = 'error';
|
||
|
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
|
||
|
exit;
|
||
|
}
|
||
|
}
|
||
|
if (!$ajax){
|
||
|
|
||
|
header('Location:index.php?do=rubs&action=edit&Id=' . $rubric_id . '&cp=' . SESSION);
|
||
|
exit;
|
||
|
|
||
|
}else{
|
||
|
|
||
|
$message = $AVE_Template->get_config_vars('RUBRIK_FILD_SAVED');
|
||
|
$header = $AVE_Template->get_config_vars('RUBRIK_FILDS_SUCCESS');
|
||
|
$theme = 'accept';
|
||
|
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
|
||
|
exit;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Редактирование кода для рубрики
|
||
|
*
|
||
|
* @param int $rubric_id идентификатор рубрики
|
||
|
*/
|
||
|
function rubricCodeEdit($rubric_id = 0)
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
switch ($_REQUEST['sub']) {
|
||
|
|
||
|
case '':
|
||
|
$code = $AVE_DB->Query("
|
||
|
SELECT rubric_code_start, rubric_code_end, rubric_start_code
|
||
|
FROM " . PREFIX . "_rubrics
|
||
|
WHERE
|
||
|
Id = '" . $rubric_id . "'
|
||
|
")->FetchRow();
|
||
|
|
||
|
$AVE_Template->assign('code', $code);
|
||
|
$AVE_Template->assign('rubric_title', $this->rubricNameByIdGet($rubric_id)->rubric_title);
|
||
|
$AVE_Template->assign('formaction', 'index.php?do=rubs&action=code&sub=save&Id=' . $rubric_id . '&cp=' . SESSION);
|
||
|
$AVE_Template->assign('content', $AVE_Template->fetch('rubs/code.tpl'));
|
||
|
break;
|
||
|
|
||
|
case 'save':
|
||
|
$sql = $AVE_DB->Query("
|
||
|
UPDATE " . PREFIX . "_rubrics
|
||
|
SET
|
||
|
rubric_start_code = '" . $_POST['rubric_start_code'] . "',
|
||
|
rubric_code_start = '" . $_POST['rubric_code_start'] . "',
|
||
|
rubric_code_end = '" . $_POST['rubric_code_end'] . "'
|
||
|
WHERE
|
||
|
Id = '" . $rubric_id . "'
|
||
|
");
|
||
|
|
||
|
if ($sql->_result === false) {
|
||
|
$message = $AVE_Template->get_config_vars('RUBRIK_CODE_SAVED_ERR');
|
||
|
$header = $AVE_Template->get_config_vars('RUBRIK_CODE_ERROR');
|
||
|
$theme = 'error';
|
||
|
}else{
|
||
|
$message = $AVE_Template->get_config_vars('RUBRIK_CODE_SAVED');
|
||
|
$header = $AVE_Template->get_config_vars('RUBRIK_CODE_SUCCESS');
|
||
|
$theme = 'accept';
|
||
|
reportLog($AVE_Template->get_config_vars('RUBRIK_CODE_UPDATE') . " (" . stripslashes(htmlspecialchars($this->rubricNameByIdGet($rubric_id)->rubric_title, ENT_QUOTES)) . ") (id: $rubric_id)");
|
||
|
}
|
||
|
|
||
|
if (isAjax()) {
|
||
|
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
|
||
|
} else {
|
||
|
header('Location:index.php?do=rubs&action=code&Id=' . $rubric_id . '&cp=' . SESSION);
|
||
|
}
|
||
|
exit;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Редактирование кода для рубрики
|
||
|
*
|
||
|
* @param int $rubric_id идентификатор рубрики
|
||
|
*/
|
||
|
function rubricCode($rubric_id = 0)
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
UPDATE " . PREFIX . "_rubrics
|
||
|
SET
|
||
|
rubric_code_start = '" . $_POST['rubric_code_start'] . "',
|
||
|
rubric_code_end = '" . $_POST['rubric_code_end'] . "'
|
||
|
WHERE
|
||
|
Id = '" . $rubric_id . "'
|
||
|
");
|
||
|
|
||
|
if ($sql->_result === false) {
|
||
|
$message = $AVE_Template->get_config_vars('RUBRIK_CODE_SAVED_ERR');
|
||
|
$header = $AVE_Template->get_config_vars('RUBRIK_CODE_ERROR');
|
||
|
$theme = 'error';
|
||
|
}else{
|
||
|
$message = $AVE_Template->get_config_vars('RUBRIK_CODE_SAVED');
|
||
|
$header = $AVE_Template->get_config_vars('RUBRIK_CODE_SUCCESS');
|
||
|
$theme = 'accept';
|
||
|
reportLog($AVE_Template->get_config_vars('RUBRIK_CODE_UPDATE') . " (" . stripslashes(htmlspecialchars($this->rubricNameByIdGet($rubric_id)->rubric_title, ENT_QUOTES)) . ") (id: $rubric_id)");
|
||
|
}
|
||
|
|
||
|
if (isset($_REQUEST['ajax']) && $_REQUEST['ajax'] = '1') {
|
||
|
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
|
||
|
} else {
|
||
|
header('Location:index.php?do=rubs&action=edit&Id=' . $rubric_id . '&cp=' . SESSION);
|
||
|
}
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Редактирование описания рубрики
|
||
|
*
|
||
|
* @param int $rubric_id идентификатор рубрики
|
||
|
*/
|
||
|
function rubricDesc($rubric_id = 0)
|
||
|
{
|
||
|
global $AVE_DB;
|
||
|
|
||
|
$AVE_DB->Query("
|
||
|
UPDATE " . PREFIX . "_rubrics
|
||
|
SET
|
||
|
rubric_description = '" . $_POST['rubric_description'] . "'
|
||
|
WHERE
|
||
|
Id = '" . $rubric_id . "'
|
||
|
");
|
||
|
|
||
|
header('Location:index.php?do=rubs&action=edit&Id=' . $rubric_id . '&cp=' . SESSION);
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Управление полями рубрики
|
||
|
*
|
||
|
* @param int $rubric_id идентификатор рубрики
|
||
|
*/
|
||
|
function rubricFieldSave($rubric_id = 0)
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
foreach ($_POST['title'] as $id => $title)
|
||
|
{
|
||
|
if (!empty($title))
|
||
|
{
|
||
|
$AVE_DB->Query("
|
||
|
UPDATE " . PREFIX . "_rubric_fields
|
||
|
SET
|
||
|
rubric_field_title = '" . $title . "',
|
||
|
rubric_field_numeric = '" . $_POST['rubric_field_numeric'][$id] . "',
|
||
|
rubric_field_search = '" . $_POST['rubric_field_search'][$id] . "'
|
||
|
WHERE
|
||
|
Id = '" . $id . "'
|
||
|
");
|
||
|
// Очищаем кэш шаблона документов рубрики
|
||
|
$AVE_DB->Query("
|
||
|
DELETE
|
||
|
FROM " . PREFIX . "_rubric_template_cache
|
||
|
WHERE rub_id = '" . $rubric_id . "'
|
||
|
");
|
||
|
|
||
|
$sql = $AVE_DB->Query("SELECT Id FROM " . PREFIX . "_documents WHERE rubric_id = ".$rubric_id);
|
||
|
|
||
|
while ($row = $sql->FetchRow())
|
||
|
{
|
||
|
$AVE_DB->clearcache('doc_'.$row->Id);
|
||
|
$AVE_DB->clearcompile('doc_'.$row->Id);
|
||
|
$AVE_DB->clearcacherequest('doc_'.$row->Id);
|
||
|
}
|
||
|
|
||
|
reportLog($AVE_Template->get_config_vars('RUBRIK_REPORT_FIELD_EDIT') . ' (' . stripslashes($title) . ') '.$AVE_Template->get_config_vars('RUBRIK_REPORT_RUB').' (' . stripslashes(htmlspecialchars($this->rubricNameByIdGet($rubric_id)->rubric_title)) . ') (Id:' . $rubric_id . ')');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
foreach ($_POST['del'] as $id => $Del)
|
||
|
{
|
||
|
if (!empty($Del))
|
||
|
{
|
||
|
$AVE_DB->Query("
|
||
|
DELETE
|
||
|
FROM " . PREFIX . "_rubric_fields
|
||
|
WHERE Id = '" . $id . "'
|
||
|
AND rubric_id = '" . $rubric_id . "'
|
||
|
");
|
||
|
$AVE_DB->Query("
|
||
|
DELETE
|
||
|
FROM " . PREFIX . "_document_fields
|
||
|
WHERE rubric_field_id = '" . $id . "'
|
||
|
");
|
||
|
// Очищаем кэш шаблона документов рубрики
|
||
|
$AVE_DB->Query("
|
||
|
DELETE
|
||
|
FROM " . PREFIX . "_rubric_template_cache
|
||
|
WHERE rub_id = '" . $rubric_id . "'
|
||
|
");
|
||
|
|
||
|
reportLog($AVE_Template->get_config_vars('RUBRIK_REPORT_FIELD_DEL') . ' (' . stripslashes($_POST['title'][$id]) . ') '.$AVE_Template->get_config_vars('RUBRIK_REPORT_RUB').' (' . stripslashes(htmlspecialchars($this->rubricNameByIdGet($rubric_id)->rubric_title)) . ') (Id:' . $rubric_id . ')');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$AVE_DB->clearcache('rub_'.$rubric_id);
|
||
|
|
||
|
$sql = $AVE_DB->Query("SELECT Id FROM " . PREFIX . "_documents WHERE rubric_id = ".$rubric_id);
|
||
|
|
||
|
while ($row = $sql->FetchRow())
|
||
|
{
|
||
|
$AVE_DB->clearcache('doc_'.$row->Id);
|
||
|
$AVE_DB->clearcompile('doc_'.$row->Id);
|
||
|
}
|
||
|
|
||
|
$message = $AVE_Template->get_config_vars('RUBRIK_FILDS_SAVED');
|
||
|
$header = $AVE_Template->get_config_vars('RUBRIK_FILDS_SUCCESS');
|
||
|
$theme = 'accept';
|
||
|
|
||
|
reportLog($AVE_Template->get_config_vars('RUBRIK_FILDS_REPORT') . ' (' . stripslashes(htmlspecialchars($this->rubricNameByIdGet($rubric_id)->rubric_title)) . ') (Id:' . $rubric_id . ')');
|
||
|
|
||
|
if (isset($_REQUEST['ajax']) && $_REQUEST['ajax'] = '1') {
|
||
|
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
|
||
|
} else {
|
||
|
$AVE_Template->assign('message', $message);
|
||
|
header('Location:index.php?do=rubs&action=edit&Id=' . $rubric_id . '&cp=' . SESSION);
|
||
|
}
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Сортировка полей рубрики
|
||
|
*
|
||
|
* @param array $sorted последовательность id полей
|
||
|
*/
|
||
|
function rubricFieldsSort()
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
foreach ($_REQUEST['sort'] as $position => $field_id)
|
||
|
{
|
||
|
$AVE_DB->Query("
|
||
|
UPDATE " . PREFIX . "_rubric_fields
|
||
|
SET
|
||
|
rubric_field_position = '" . (int)$position . "'
|
||
|
WHERE
|
||
|
Id = '" . (int)$field_id . "'
|
||
|
");
|
||
|
}
|
||
|
|
||
|
reportLog($AVE_Template->get_config_vars('RUBRIK_REPORT_SORTE_FIELDS'));
|
||
|
|
||
|
if (isAjax()){
|
||
|
$message = $AVE_Template->get_config_vars('RUBRIK_SORTED');
|
||
|
$header = $AVE_Template->get_config_vars('RUBRIK_FILDS_SUCCESS');
|
||
|
$theme = 'accept';
|
||
|
|
||
|
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Сортировка рубрик
|
||
|
*
|
||
|
* @param array $sorted последовательность id полей
|
||
|
*/
|
||
|
function rubricsSort()
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
foreach ($_REQUEST['sort'] as $position => $rub_id)
|
||
|
{
|
||
|
$AVE_DB->Query("
|
||
|
UPDATE " . PREFIX . "_rubrics
|
||
|
SET
|
||
|
rubric_position = '" . (int)$position . "'
|
||
|
WHERE
|
||
|
Id = '" . (int)$rub_id . "'
|
||
|
");
|
||
|
}
|
||
|
|
||
|
reportLog($AVE_Template->get_config_vars('RUBRIK_REPORT_SORTE'));
|
||
|
|
||
|
if (isAjax()){
|
||
|
$message = $AVE_Template->get_config_vars('RUBRIK_SORTED');
|
||
|
$header = $AVE_Template->get_config_vars('RUBRIK_FILDS_SUCCESS');
|
||
|
$theme = 'accept';
|
||
|
|
||
|
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Вывод шаблона рубрики
|
||
|
*
|
||
|
* @param int $show
|
||
|
* @param int $extern
|
||
|
*/
|
||
|
function rubricTemplateShow($show = '', $extern = '0')
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
if ($extern == 1)
|
||
|
{
|
||
|
$fetchId = (isset($_REQUEST['rubric_id']) && is_numeric($_REQUEST['rubric_id'])) ? $_REQUEST['rubric_id'] : 0;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$fetchId = (isset($_REQUEST['Id']) && is_numeric($_REQUEST['Id'])) ? $_REQUEST['Id'] : 0;
|
||
|
}
|
||
|
|
||
|
$rubric = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
rubric_title,
|
||
|
rubric_template,
|
||
|
rubric_header_template,
|
||
|
rubric_teaser_template,
|
||
|
rubric_admin_teaser_template,
|
||
|
rubric_description
|
||
|
FROM " . PREFIX . "_rubrics
|
||
|
WHERE Id = '" . $fetchId . "'
|
||
|
")
|
||
|
->FetchRow();
|
||
|
|
||
|
// Поля
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
a.*, b.group_title, b.group_description, b.group_position
|
||
|
FROM
|
||
|
" . PREFIX . "_rubric_fields AS a
|
||
|
LEFT JOIN
|
||
|
" . PREFIX . "_rubric_fields_group AS b
|
||
|
ON a.rubric_field_group = b.Id
|
||
|
WHERE
|
||
|
a.rubric_id = '" . $fetchId . "'
|
||
|
ORDER BY
|
||
|
b.group_position ASC, a.rubric_field_position ASC
|
||
|
");
|
||
|
|
||
|
$fields_list = array();
|
||
|
$drop_down_fields = array();
|
||
|
|
||
|
while ($row = $sql->FetchRow())
|
||
|
{
|
||
|
$group_id = ($row->rubric_field_group) ? $row->rubric_field_group : 0;
|
||
|
|
||
|
if ($row->rubric_field_type == 'drop_down' || $row->rubric_field_type == 'drop_down_key')
|
||
|
array_push($drop_down_fields, $row->Id);
|
||
|
|
||
|
$fields_list[$group_id]['group_position'] = ($row->group_position) ? $row->group_position : 100;
|
||
|
$fields_list[$group_id]['group_title'] = $row->group_title;
|
||
|
$fields_list[$group_id]['group_description'] = $row->group_description;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['Id'] = $row->Id;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['rubric_id'] = $row->rubric_id;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['rubric_field_group'] = $row->rubric_field_group;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['rubric_field_alias'] = $row->rubric_field_alias;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['rubric_field_title'] = $row->rubric_field_title;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['rubric_field_type'] = $row->rubric_field_type;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['rubric_field_numeric'] = $row->rubric_field_numeric;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['rubric_field_default'] = $row->rubric_field_default;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['rubric_field_search'] = $row->rubric_field_search;
|
||
|
}
|
||
|
|
||
|
$fields_list = msort($fields_list, 'group_position');
|
||
|
|
||
|
$AVE_Template->assign('groups_count', count($fields_list));
|
||
|
$AVE_Template->assign('fields_list', $fields_list);
|
||
|
|
||
|
$AVE_Template->assign('field_array', get_field_type());
|
||
|
|
||
|
if ($show == 1 )
|
||
|
$rubric->rubric_template = stripslashes($_POST['rubric_template']);
|
||
|
|
||
|
if ($extern == 1)
|
||
|
{
|
||
|
$AVE_Template->assign('ddid', implode(',', $drop_down_fields));
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$AVE_Template->assign('rubric', $rubric);
|
||
|
$AVE_Template->assign('formaction', 'index.php?do=rubs&action=template&sub=save&Id=' . $fetchId . '&cp=' . SESSION);
|
||
|
$AVE_Template->assign('content', $AVE_Template->fetch('rubs/form.tpl'));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Редактирование шаблона рубрики
|
||
|
*
|
||
|
* @param string $data
|
||
|
*/
|
||
|
function rubricTemplateSave($Rtemplate, $Htemplate = '', $Ttemplate = '', $Atemplate = '')
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
$rubric_id = (int)$_REQUEST['Id'];
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
UPDATE " . PREFIX . "_rubrics
|
||
|
SET
|
||
|
rubric_template = '" . ($Rtemplate) . "',
|
||
|
rubric_header_template = '" . $Htemplate . "',
|
||
|
rubric_teaser_template = '" . $Ttemplate . "',
|
||
|
rubric_admin_teaser_template = '" . $Atemplate . "'
|
||
|
WHERE Id = '" . $rubric_id . "'
|
||
|
");
|
||
|
|
||
|
// Очищаем кэш шаблона документов рубрики
|
||
|
$AVE_DB->Query("
|
||
|
DELETE
|
||
|
FROM " . PREFIX . "_rubric_template_cache
|
||
|
WHERE rub_id = '" . $rubric_id . "'
|
||
|
");
|
||
|
|
||
|
if ($sql === false) {
|
||
|
$message = $AVE_Template->get_config_vars('RUBRIC_SAVED_TPL_ERR');
|
||
|
$header = $AVE_Template->get_config_vars('RUBRIK_ERROR');
|
||
|
$theme = 'error';
|
||
|
} else {
|
||
|
$message = $AVE_Template->get_config_vars('RUBRIC_SAVED_TPL');
|
||
|
$header = $AVE_Template->get_config_vars('RUBRIC_SUCCESS');
|
||
|
$theme = 'accept';
|
||
|
reportLog($AVE_Template->get_config_vars('RUBRIK_REPORT_TEMPL_RUB') . ' (' . stripslashes(htmlspecialchars($this->rubricNameByIdGet($rubric_id)->rubric_title)) . ') (Id:' . $rubric_id . ')');
|
||
|
}
|
||
|
|
||
|
$sql = $AVE_DB->Query("SELECT Id FROM " . PREFIX . "_documents WHERE rubric_id = ".$rubric_id);
|
||
|
|
||
|
while ($row = $sql->FetchRow())
|
||
|
{
|
||
|
$AVE_DB->clearcache('doc_'.$row->Id);
|
||
|
$AVE_DB->clearcompile('doc_'.$row->Id);
|
||
|
}
|
||
|
|
||
|
if (isAjax()) {
|
||
|
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
|
||
|
exit;
|
||
|
} else {
|
||
|
$AVE_Template->assign('message', $message);
|
||
|
header('Location:index.php?do=rubs&cp=' . SESSION);
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Управление правами доступа к документам рубрик
|
||
|
*
|
||
|
* @param int $rubric_id идентификатор рубрики
|
||
|
*/
|
||
|
function rubricPermissionSave($rubric_id = 0)
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
if (check_permission_acp('rubric_perms') && is_numeric($rubric_id) && $rubric_id > 0)
|
||
|
{
|
||
|
foreach ($_POST['user_group'] as $key => $user_group_id)
|
||
|
{
|
||
|
$exist = $AVE_DB->Query("
|
||
|
SELECT 1
|
||
|
FROM " . PREFIX . "_rubric_permissions
|
||
|
WHERE user_group_id = '" . $user_group_id . "'
|
||
|
AND rubric_id = '" . $rubric_id . "'
|
||
|
LIMIT 1
|
||
|
")->NumRows();
|
||
|
|
||
|
$rubric_permission = @implode('|', $_POST['perm'][$key]);
|
||
|
if ($exist)
|
||
|
{
|
||
|
$AVE_DB->Query("
|
||
|
UPDATE " . PREFIX . "_rubric_permissions
|
||
|
SET rubric_permission = '" . $rubric_permission . "'
|
||
|
WHERE user_group_id = '" . $user_group_id . "'
|
||
|
AND rubric_id = '" . $rubric_id . "'
|
||
|
");
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$AVE_DB->Query("
|
||
|
INSERT " . PREFIX . "_rubric_permissions
|
||
|
SET
|
||
|
rubric_id = '" . $rubric_id . "',
|
||
|
user_group_id = '" . $user_group_id . "',
|
||
|
rubric_permission = '" . $rubric_permission . "'
|
||
|
");
|
||
|
}
|
||
|
}
|
||
|
$message = $AVE_Template->get_config_vars('RUBRIC_SAVED_PERMS');
|
||
|
$header = $AVE_Template->get_config_vars('RUBRIC_SUCCESS');
|
||
|
$theme = 'accept';
|
||
|
reportLog($AVE_Template->get_config_vars('RUBRIK_REPORT_PERMISION') . ' (' . stripslashes(htmlspecialchars($this->rubricNameByIdGet($rubric_id)->rubric_title)) . ') (Id:' . $rubric_id . ')');
|
||
|
|
||
|
if (isAjax()) {
|
||
|
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
|
||
|
exit;
|
||
|
} else {
|
||
|
header('Location:index.php?do=rubs&action=edit&Id=' . $rubric_id . '&cp=' . SESSION);
|
||
|
exit;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Получить наименование и URL-префикс Рубрики по идентификатору
|
||
|
*
|
||
|
* @param int $rubric_id идентификатор Рубрики
|
||
|
* @return object наименование Рубрики
|
||
|
*/
|
||
|
function rubricNameByIdGet($rubric_id = 0)
|
||
|
{
|
||
|
global $AVE_DB;
|
||
|
|
||
|
static $rubrics = array();
|
||
|
|
||
|
if (!isset($rubrics[$rubric_id]))
|
||
|
{
|
||
|
$rubrics[$rubric_id] = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
rubric_title,
|
||
|
rubric_alias,
|
||
|
rubric_description
|
||
|
FROM " . PREFIX . "_rubrics
|
||
|
WHERE Id = '" . $rubric_id . "'
|
||
|
LIMIT 1
|
||
|
")->FetchRow();
|
||
|
}
|
||
|
|
||
|
return $rubrics[$rubric_id];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Формирование прав доступа Групп пользователей на все Рубрики
|
||
|
*
|
||
|
*/
|
||
|
function rubricPermissionFetch()
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Document, $AVE_Template;
|
||
|
|
||
|
$items = array();
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
Id,
|
||
|
rubric_title,
|
||
|
rubric_docs_active
|
||
|
FROM
|
||
|
" . PREFIX . "_rubrics
|
||
|
ORDER
|
||
|
BY rubric_position
|
||
|
");
|
||
|
|
||
|
while ($row = $sql->FetchRow())
|
||
|
{
|
||
|
$AVE_Document->documentPermissionFetch($row->Id);
|
||
|
|
||
|
if (defined('UGROUP') && UGROUP == 1) $row->Show = 1;
|
||
|
elseif (isset($_SESSION[$row->Id . '_editown']) && $_SESSION[$row->Id . '_editown'] == 1) $row->Show = 1;
|
||
|
elseif (isset($_SESSION[$row->Id . '_editall']) && $_SESSION[$row->Id . '_editall'] == 1) $row->Show = 1;
|
||
|
elseif (isset($_SESSION[$row->Id . '_new']) && $_SESSION[$row->Id . '_new'] == 1) $row->Show = 1;
|
||
|
elseif (isset($_SESSION[$row->Id . '_newnow']) && $_SESSION[$row->Id . '_newnow'] == 1) $row->Show = 1;
|
||
|
elseif (isset($_SESSION[$row->Id . '_alles']) && $_SESSION[$row->Id . '_alles'] == 1) $row->Show = 1;
|
||
|
|
||
|
array_push($items, $row);
|
||
|
}
|
||
|
|
||
|
$AVE_Template->assign('rubrics', $items);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Получить
|
||
|
*/
|
||
|
function rubricAliasAdd()
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
a.rubric_title,
|
||
|
b.rubric_field_title,
|
||
|
b.rubric_field_alias
|
||
|
FROM
|
||
|
" . PREFIX . "_rubrics AS a
|
||
|
JOIN
|
||
|
" . PREFIX . "_rubric_fields AS b
|
||
|
WHERE
|
||
|
a.Id = '" . $_REQUEST['rubric_id'] . "'
|
||
|
AND
|
||
|
b.Id = '" . $_REQUEST['field_id'] . "'
|
||
|
")->FetchAssocArray();
|
||
|
|
||
|
$AVE_Template->assign($sql);
|
||
|
$AVE_Template->assign('content', $AVE_Template->fetch('rubs/alias.tpl'));
|
||
|
}
|
||
|
|
||
|
function rubricAliasCheck($rubric_id, $field_id, $value)
|
||
|
{
|
||
|
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
$errors = array();
|
||
|
|
||
|
if(!intval($rubric_id)>0){
|
||
|
$errors[] = $AVE_Template->get_config_vars('RUBRIK_ALIAS_RUBID');
|
||
|
}
|
||
|
|
||
|
if(!intval($field_id)>0) {
|
||
|
$errors[] = $AVE_Template->get_config_vars('RUBRIK_ALIAS_FIELDID');
|
||
|
};
|
||
|
|
||
|
if(!preg_match('/^[A-Za-z][[:word:]]{0,19}$/', $value)) {
|
||
|
$errors[] = $AVE_Template->get_config_vars('RUBRIK_ALIAS_MATCH');
|
||
|
};
|
||
|
|
||
|
//Проверяем есть такой алиас уже
|
||
|
$res = $AVE_DB->Query("
|
||
|
SELECT COUNT(*)
|
||
|
FROM
|
||
|
" . PREFIX . "_rubric_fields
|
||
|
WHERE
|
||
|
Id <> " . intval($field_id) . "
|
||
|
AND rubric_id = " . intval($rubric_id) . "
|
||
|
AND rubric_field_alias = '" . addslashes($value) . "'
|
||
|
")->GetCell();
|
||
|
|
||
|
if($res>0){
|
||
|
$errors[] = $AVE_Template->get_config_vars('RUBRIK_ALIAS_MATCH');
|
||
|
};
|
||
|
|
||
|
if (empty($errors))
|
||
|
{
|
||
|
$AVE_DB->Query("
|
||
|
UPDATE " . PREFIX . "_rubric_fields
|
||
|
SET
|
||
|
rubric_field_alias = '" . addslashes($value) . "'
|
||
|
WHERE
|
||
|
Id = '" . intval($field_id) . "'
|
||
|
AND rubric_id = '" . intval($rubric_id) . "'
|
||
|
");
|
||
|
$AVE_Template->assign('success', true);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$AVE_Template->assign('errors', $errors);
|
||
|
}
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
a.rubric_title,
|
||
|
b.rubric_field_title,
|
||
|
b.rubric_field_alias
|
||
|
FROM " . PREFIX . "_rubrics AS a
|
||
|
JOIN
|
||
|
" . PREFIX . "_rubric_fields AS b
|
||
|
WHERE a.Id = '" . $_REQUEST['rubric_id'] . "'
|
||
|
AND b.Id = '" . $_REQUEST['field_id'] . "'
|
||
|
")->FetchAssocArray();
|
||
|
|
||
|
$AVE_Template->assign($sql);
|
||
|
$AVE_Template->assign('content', $AVE_Template->fetch('rubs/alias.tpl'));
|
||
|
}
|
||
|
|
||
|
function rubricFieldTemplate() {
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
$field = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
a.rubric_title,
|
||
|
b.rubric_field_default,
|
||
|
b.rubric_field_title,
|
||
|
b.rubric_field_template,
|
||
|
b.rubric_field_template_request,
|
||
|
b.rubric_field_description
|
||
|
FROM " . PREFIX . "_rubrics AS a
|
||
|
JOIN
|
||
|
" . PREFIX . "_rubric_fields AS b
|
||
|
WHERE a.Id = '" . $_REQUEST['rubric_id'] . "'
|
||
|
AND b.Id = '" . $_REQUEST['field_id'] . "'
|
||
|
")->FetchAssocArray();
|
||
|
|
||
|
$AVE_Template->assign($field);
|
||
|
$AVE_Template->assign('content', $AVE_Template->fetch('rubs/field_template.tpl'));
|
||
|
}
|
||
|
|
||
|
function rubricFieldTemplateSave($id, $rubric_id) {
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
UPDATE " . PREFIX . "_rubric_fields
|
||
|
SET
|
||
|
rubric_field_default = '" . $_POST['rubric_field_default'] . "',
|
||
|
rubric_field_template = '" . $_POST['rubric_field_template'] . "',
|
||
|
rubric_field_template_request = '" . $_POST['rubric_field_template_request'] . "',
|
||
|
rubric_field_description = '" . $_POST['rubric_field_description'] . "'
|
||
|
WHERE
|
||
|
Id = '" . $id . "'
|
||
|
");
|
||
|
|
||
|
if ($sql->_result === false) {
|
||
|
$message = $AVE_Template->get_config_vars('RUBRIC_SAVED_FLDTPL_ERR');
|
||
|
$header = $AVE_Template->get_config_vars('RUBRIK_ERROR');
|
||
|
$theme = 'error';
|
||
|
|
||
|
if (isAjax() && !$_REQUEST['save']) {
|
||
|
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
|
||
|
exit;
|
||
|
} else {
|
||
|
$this->rubricFieldTemplate();
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
}else{
|
||
|
|
||
|
$AVE_DB->clearcache('rub_'.$rubric_id);
|
||
|
|
||
|
$sql = $AVE_DB->Query("SELECT Id FROM " . PREFIX . "_documents");
|
||
|
|
||
|
while ($row = $sql->FetchRow())
|
||
|
{
|
||
|
$AVE_DB->clearcache('doc_'.$row->Id);
|
||
|
$AVE_DB->clearcompile('doc_'.$row->Id);
|
||
|
$AVE_DB->clearcacherequest('doc_'.$row->Id);
|
||
|
}
|
||
|
|
||
|
// Очищаем кэш шаблона документов рубрики
|
||
|
$AVE_DB->Query("
|
||
|
DELETE
|
||
|
FROM " . PREFIX . "_rubric_template_cache
|
||
|
WHERE rub_id = '" . $rubric_id . "'
|
||
|
");
|
||
|
|
||
|
$message = $AVE_Template->get_config_vars('RUBRIC_SAVED_FLDTPL');
|
||
|
$header = $AVE_Template->get_config_vars('RUBRIC_SUCCESS');
|
||
|
$theme = 'accept';
|
||
|
|
||
|
if (isAjax()) {
|
||
|
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
|
||
|
exit;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
function rubricFieldChange($field_id, $rubric_id)
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
*
|
||
|
FROM
|
||
|
" . PREFIX . "_rubric_fields
|
||
|
WHERE
|
||
|
rubric_id = '" . $rubric_id . "'
|
||
|
AND
|
||
|
Id = " . $field_id . "
|
||
|
")->FetchAssocArray();
|
||
|
|
||
|
$AVE_Template->assign('rf', $sql);
|
||
|
$AVE_Template->assign('fields', get_field_type());
|
||
|
$AVE_Template->assign('content', $AVE_Template->fetch('rubs/change.tpl'));
|
||
|
}
|
||
|
|
||
|
function rubricFieldChangeSave($field_id, $rubric_id)
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
$AVE_DB->Query("
|
||
|
UPDATE " . PREFIX . "_rubric_fields
|
||
|
SET
|
||
|
rubric_field_type = '" . trim($_POST['rubric_field_type']) . "'
|
||
|
WHERE
|
||
|
Id = '" . $field_id . "'
|
||
|
AND
|
||
|
rubric_id = '" . $rubric_id . "'
|
||
|
");
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
*
|
||
|
FROM
|
||
|
" . PREFIX . "_rubric_fields
|
||
|
WHERE
|
||
|
rubric_id = '" . $rubric_id . "'
|
||
|
AND
|
||
|
Id = " . $field_id . "
|
||
|
")->FetchAssocArray();
|
||
|
|
||
|
$AVE_Template->assign('rf', $sql);
|
||
|
$AVE_Template->assign('fields', get_field_type());
|
||
|
$AVE_Template->assign('content', $AVE_Template->fetch('rubs/change.tpl'));
|
||
|
}
|
||
|
|
||
|
|
||
|
function rubricFieldsGroups($rubric_id)
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
*
|
||
|
FROM
|
||
|
" . PREFIX . "_rubric_fields_group
|
||
|
WHERE
|
||
|
rubric_id = '" . $rubric_id . "'
|
||
|
ORDER BY
|
||
|
group_position
|
||
|
");
|
||
|
|
||
|
$groups = array();
|
||
|
|
||
|
while($row = $sql->FetchRow())
|
||
|
{
|
||
|
array_push($groups, $row);
|
||
|
}
|
||
|
|
||
|
$AVE_Template->assign('rubric', $this->rubricNameByIdGet($rubric_id));
|
||
|
$AVE_Template->assign('groups', $groups);
|
||
|
$AVE_Template->assign('content', $AVE_Template->fetch('rubs/fields_groups.tpl'));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Сортировка групп полей рубрики
|
||
|
*
|
||
|
* @param array $sorted последовательность id полей
|
||
|
*/
|
||
|
function rubricFieldsGroupsSort()
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
foreach ($_REQUEST['sort'] as $position => $group_id)
|
||
|
{
|
||
|
$position++;
|
||
|
$AVE_DB->Query("
|
||
|
UPDATE
|
||
|
" . PREFIX . "_rubric_fields_group
|
||
|
SET
|
||
|
group_position = '" . (int)$position . "'
|
||
|
WHERE
|
||
|
Id = '" . (int)$group_id . "'
|
||
|
");
|
||
|
}
|
||
|
|
||
|
if (isAjax())
|
||
|
{
|
||
|
$message = $AVE_Template->get_config_vars('RUBRIK_SORTED');
|
||
|
$header = $AVE_Template->get_config_vars('RUBRIK_FILDS_SUCCESS');
|
||
|
$theme = 'accept';
|
||
|
|
||
|
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
function rubricNewGroupFields($rubric_id)
|
||
|
{
|
||
|
global $AVE_DB;
|
||
|
|
||
|
$position = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
MAX(group_position)
|
||
|
FROM
|
||
|
" . PREFIX . "_rubric_fields_group
|
||
|
WHERE
|
||
|
rubric_id = '" . $rubric_id . "'
|
||
|
")->GetCell();
|
||
|
|
||
|
$position++;
|
||
|
|
||
|
$AVE_DB->Query("
|
||
|
INSERT
|
||
|
" . PREFIX . "_rubric_fields_group
|
||
|
SET
|
||
|
rubric_id = '" . $rubric_id . "',
|
||
|
group_position = '" . $position . "',
|
||
|
group_title= '" . $_REQUEST['group_title'] . "'
|
||
|
");
|
||
|
|
||
|
header('Location:index.php?do=rubs&action=fieldsgroups&Id=' . $rubric_id . '&cp=' . SESSION);
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
|
||
|
function rubricEditGroupFields($rubric_id)
|
||
|
{
|
||
|
global $AVE_DB;
|
||
|
|
||
|
foreach($_REQUEST['group_title'] as $k => $v)
|
||
|
{
|
||
|
$AVE_DB->Query("
|
||
|
UPDATE
|
||
|
" . PREFIX . "_rubric_fields_group
|
||
|
SET
|
||
|
group_title= '" . $v . "'
|
||
|
WHERE
|
||
|
Id = '" . $k . "'
|
||
|
");
|
||
|
}
|
||
|
|
||
|
header('Location:index.php?do=rubs&action=fieldsgroups&Id=' . $rubric_id . '&cp=' . SESSION);
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
function rubricDelGroupFields($Id, $rubric_id)
|
||
|
{
|
||
|
global $AVE_DB;
|
||
|
|
||
|
$AVE_DB->Query("
|
||
|
DELETE FROM
|
||
|
" . PREFIX . "_rubric_fields_group
|
||
|
WHERE
|
||
|
Id = '" . $Id . "'
|
||
|
");
|
||
|
|
||
|
$AVE_DB->Query("
|
||
|
UPDATE
|
||
|
" . PREFIX . "_rubric_fields
|
||
|
SET
|
||
|
rubric_field_group = '0'
|
||
|
WHERE
|
||
|
rubric_field_group = '" . $Id . "'
|
||
|
AND
|
||
|
rubric_id = '" . $rubric_id . "'
|
||
|
");
|
||
|
|
||
|
header('Location:index.php?do=rubs&action=fieldsgroups&Id=' . $rubric_id . '&cp=' . SESSION);
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
|
||
|
function rubricFieldGroupChange($field_id, $rubric_id)
|
||
|
{
|
||
|
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
*
|
||
|
FROM
|
||
|
" . PREFIX . "_rubric_fields
|
||
|
WHERE
|
||
|
rubric_id = '" . $rubric_id . "'
|
||
|
AND
|
||
|
Id = " . $field_id . "
|
||
|
")->FetchAssocArray();
|
||
|
|
||
|
$AVE_Template->assign('rf', $sql);
|
||
|
$AVE_Template->assign('groups', $this->get_rubric_fields_group($rubric_id));
|
||
|
$AVE_Template->assign('content', $AVE_Template->fetch('rubs/groups.tpl'));
|
||
|
}
|
||
|
|
||
|
function rubricFieldGroupChangeSave($field_id, $rubric_id)
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
$AVE_DB->Query("
|
||
|
UPDATE " . PREFIX . "_rubric_fields
|
||
|
SET
|
||
|
rubric_field_group = '" . trim($_POST['rubric_field_group']) . "'
|
||
|
WHERE
|
||
|
Id = '" . $field_id . "'
|
||
|
AND
|
||
|
rubric_id = '" . $rubric_id . "'
|
||
|
");
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
*
|
||
|
FROM
|
||
|
" . PREFIX . "_rubric_fields
|
||
|
WHERE
|
||
|
rubric_id = '" . $rubric_id . "'
|
||
|
AND
|
||
|
Id = " . $field_id . "
|
||
|
")->FetchAssocArray();
|
||
|
|
||
|
$AVE_Template->assign('rf', $sql);
|
||
|
$AVE_Template->assign('groups', $this->get_rubric_fields_group($rubric_id));
|
||
|
$AVE_Template->assign('content', $AVE_Template->fetch('rubs/groups.tpl'));
|
||
|
}
|
||
|
|
||
|
// Список дополнительных шаблон для данной рубрики
|
||
|
function tmplsList()
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
$templates = array();
|
||
|
|
||
|
$num = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
COUNT(*)
|
||
|
FROM
|
||
|
" . PREFIX . "_rubric_templates
|
||
|
WHERE
|
||
|
rubric_id = '" . $_REQUEST['Id'] . "'
|
||
|
")->GetCell();
|
||
|
|
||
|
$page_limit = $this->_limit;
|
||
|
|
||
|
$pages = ceil($num / $page_limit);
|
||
|
|
||
|
$set_start = get_current_page() * $page_limit - $page_limit;
|
||
|
|
||
|
if ($num > $page_limit)
|
||
|
{
|
||
|
$page_nav = " <a class=\"pnav\" href=\"index.php?do=rubs&action=tmpls&page={s}&cp=" . SESSION . "\">{t}</a> ";
|
||
|
$page_nav = get_pagination($pages, 'page', $page_nav);
|
||
|
$AVE_Template->assign('page_nav', $page_nav);
|
||
|
}
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
rub.*,
|
||
|
rubrics.rubric_title,
|
||
|
COUNT(doc.Id) AS doc_count
|
||
|
FROM
|
||
|
" . PREFIX . "_rubric_templates AS rub
|
||
|
LEFT JOIN
|
||
|
" . PREFIX . "_rubrics AS rubrics
|
||
|
ON rubrics.Id = rub.rubric_id
|
||
|
LEFT JOIN
|
||
|
" . PREFIX . "_documents AS doc
|
||
|
ON (doc.rubric_id = rub.rubric_id AND doc.rubric_tmpl_id = rub.id)
|
||
|
WHERE
|
||
|
rub.rubric_id = '" . (int)$_REQUEST['Id'] . "'
|
||
|
GROUP
|
||
|
BY rub.id
|
||
|
ORDER
|
||
|
BY rub.id
|
||
|
LIMIT
|
||
|
" . $set_start . "," . $page_limit
|
||
|
);
|
||
|
|
||
|
while ($row = $sql->FetchRow())
|
||
|
{
|
||
|
$row->author_id = get_username_by_id($row->author_id);
|
||
|
array_push($templates, $row);
|
||
|
}
|
||
|
|
||
|
$rubric = $this->rubricNameByIdGet((int)$_REQUEST['Id']);
|
||
|
|
||
|
$AVE_Template->assign('rubric', $rubric);
|
||
|
$AVE_Template->assign('templates', $templates);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Вывод шаблона рубрики
|
||
|
*
|
||
|
* @param int $show
|
||
|
* @param int $extern
|
||
|
*/
|
||
|
function tmplsEdit()
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
$tmpls_id = (isset($_REQUEST['id']) && is_numeric($_REQUEST['id'])) ? $_REQUEST['id'] : 0;
|
||
|
$rubric_id = (int)$_REQUEST['rubric_id'];
|
||
|
|
||
|
if ($tmpls_id)
|
||
|
{
|
||
|
$template = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
title,
|
||
|
template
|
||
|
FROM
|
||
|
" . PREFIX . "_rubric_templates
|
||
|
WHERE
|
||
|
id = '" . $tmpls_id . "'
|
||
|
")
|
||
|
->FetchRow();
|
||
|
}
|
||
|
|
||
|
if ($_REQUEST['action'] == 'tmpls_from')
|
||
|
{
|
||
|
$template = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
rubric_title as title,
|
||
|
rubric_template as template
|
||
|
FROM
|
||
|
" . PREFIX . "_rubrics
|
||
|
WHERE
|
||
|
Id = '" . $rubric_id . "'
|
||
|
")
|
||
|
->FetchRow();
|
||
|
}
|
||
|
|
||
|
if ($_REQUEST['action'] == 'tmpls_copy')
|
||
|
{
|
||
|
$template = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
title,
|
||
|
template
|
||
|
FROM
|
||
|
" . PREFIX . "_rubric_templates
|
||
|
WHERE
|
||
|
id = '" . $_REQUEST['tmpls_id'] . "'
|
||
|
")
|
||
|
->FetchRow();
|
||
|
}
|
||
|
|
||
|
// Поля
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
a.*, b.group_title, b.group_description, b.group_position
|
||
|
FROM
|
||
|
" . PREFIX . "_rubric_fields AS a
|
||
|
LEFT JOIN
|
||
|
" . PREFIX . "_rubric_fields_group AS b
|
||
|
ON a.rubric_field_group = b.Id
|
||
|
WHERE
|
||
|
a.rubric_id = '" . $rubric_id . "'
|
||
|
ORDER BY
|
||
|
b.group_position ASC, a.rubric_field_position ASC
|
||
|
");
|
||
|
|
||
|
$fields_list = array();
|
||
|
$drop_down_fields = array();
|
||
|
|
||
|
while ($row = $sql->FetchRow())
|
||
|
{
|
||
|
$group_id = ($row->rubric_field_group) ? $row->rubric_field_group : 0;
|
||
|
|
||
|
if ($row->rubric_field_type == 'drop_down' || $row->rubric_field_type == 'drop_down_key')
|
||
|
array_push($drop_down_fields, $row->Id);
|
||
|
|
||
|
$fields_list[$group_id]['group_position'] = ($row->group_position) ? $row->group_position : 100;
|
||
|
$fields_list[$group_id]['group_title'] = $row->group_title;
|
||
|
$fields_list[$group_id]['group_description'] = $row->group_description;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['Id'] = $row->Id;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['rubric_id'] = $row->rubric_id;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['rubric_field_group'] = $row->rubric_field_group;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['rubric_field_alias'] = $row->rubric_field_alias;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['rubric_field_title'] = $row->rubric_field_title;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['rubric_field_type'] = $row->rubric_field_type;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['rubric_field_numeric'] = $row->rubric_field_numeric;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['rubric_field_default'] = $row->rubric_field_default;
|
||
|
$fields_list[$group_id]['fields'][$row->Id]['rubric_field_search'] = $row->rubric_field_search;
|
||
|
}
|
||
|
|
||
|
$fields_list = msort($fields_list, 'group_position');
|
||
|
|
||
|
$AVE_Template->assign('groups_count', count($fields_list));
|
||
|
$AVE_Template->assign('fields_list', $fields_list);
|
||
|
|
||
|
$AVE_Template->assign('field_array', get_field_type());
|
||
|
|
||
|
$rubric = $this->rubricNameByIdGet($rubric_id);
|
||
|
|
||
|
$AVE_Template->assign('rubric', $rubric);
|
||
|
|
||
|
$AVE_Template->assign('template', $template);
|
||
|
|
||
|
$AVE_Template->assign('formaction', 'index.php?do=rubs&action=tmpls_edit&sub=save&id=' . $tmpls_id . '&rubric_id=' . $_REQUEST['rubric_id'] . '&cp=' . SESSION);
|
||
|
$AVE_Template->assign('content', $AVE_Template->fetch('rubs/tmpls_form.tpl'));
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Редактирование шаблона рубрики
|
||
|
*
|
||
|
* @param string $data
|
||
|
*/
|
||
|
function tmplsSave($template = '', $title = '')
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
$tmpls_id = (int)$_REQUEST['id'];
|
||
|
$rubric_id = (int)$_REQUEST['rubric_id'];
|
||
|
|
||
|
if ($tmpls_id)
|
||
|
{
|
||
|
$sql = $AVE_DB->Query("
|
||
|
UPDATE
|
||
|
" . PREFIX . "_rubric_templates
|
||
|
SET
|
||
|
title = '" . $title . "',
|
||
|
template = '" . $template . "'
|
||
|
WHERE
|
||
|
id = '" . $tmpls_id . "'
|
||
|
");
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$sql = $AVE_DB->Query("
|
||
|
INSERT INTO
|
||
|
" . PREFIX . "_rubric_templates
|
||
|
SET
|
||
|
title = '" . $title . "',
|
||
|
template = '" . $template . "',
|
||
|
rubric_id = '" . $rubric_id . "',
|
||
|
author_id = '" . UID . "',
|
||
|
created = '" . time() . "'
|
||
|
");
|
||
|
|
||
|
$tmpls_id = $AVE_DB->InsertId();
|
||
|
}
|
||
|
|
||
|
// Очищаем кэш шаблона документов рубрики
|
||
|
$AVE_DB->Query("
|
||
|
DELETE
|
||
|
FROM
|
||
|
" . PREFIX . "_rubric_template_cache
|
||
|
WHERE
|
||
|
rub_id = '" . $rubric_id . "'
|
||
|
AND
|
||
|
rub_tmpl_id = '" . $tmpls_id . "'
|
||
|
");
|
||
|
|
||
|
if ($sql === false)
|
||
|
{
|
||
|
$message = $AVE_Template->get_config_vars('RUBRIC_SAVED_TPL_ERR');
|
||
|
$header = $AVE_Template->get_config_vars('RUBRIK_ERROR');
|
||
|
$theme = 'error';
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$message = $AVE_Template->get_config_vars('RUBRIC_SAVED_TPL');
|
||
|
$header = $AVE_Template->get_config_vars('RUBRIC_SUCCESS');
|
||
|
$theme = 'accept';
|
||
|
reportLog($AVE_Template->get_config_vars('RUBRIC_TEMPL_REPORT') . ' ' . stripslashes(htmlspecialchars($this->rubricNameByIdGet($rubric_id)->rubric_title)) . ' (Id шаблона:' . $tmpls_id . ')');
|
||
|
}
|
||
|
|
||
|
$sql = $AVE_DB->Query("
|
||
|
SELECT
|
||
|
Id
|
||
|
FROM
|
||
|
" . PREFIX . "_documents
|
||
|
WHERE
|
||
|
rubric_id = ".$rubric_id."
|
||
|
AND
|
||
|
rubric_tmpl_id = " . $tmpls_id
|
||
|
);
|
||
|
|
||
|
while ($row = $sql->FetchRow())
|
||
|
{
|
||
|
$AVE_DB->clearcache('doc_'.$row->Id);
|
||
|
$AVE_DB->clearcompile('doc_'.$row->Id);
|
||
|
}
|
||
|
|
||
|
if (isAjax())
|
||
|
{
|
||
|
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
|
||
|
exit;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$AVE_Template->assign('message', $message);
|
||
|
header('Location:index.php?do=rubs&action=tmpls&Id='.$rubric_id.'&cp=' . SESSION);
|
||
|
exit;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function tmplsDelete()
|
||
|
{
|
||
|
global $AVE_DB, $AVE_Template;
|
||
|
|
||
|
$rubric_id = (int)$_REQUEST['rubric_id'];
|
||
|
$tmpls_id = (int)$_REQUEST['tmpls_id'];
|
||
|
|
||
|
$rubric_not_empty = $AVE_DB->Query("
|
||
|
SELECT 1
|
||
|
FROM " . PREFIX . "_documents
|
||
|
WHERE
|
||
|
rubric_id = '" . $rubric_id . "'
|
||
|
AND
|
||
|
rubric_tmpl_id = '" . $tmpls_id . "'
|
||
|
LIMIT 1
|
||
|
")->GetCell();
|
||
|
|
||
|
if (! $rubric_not_empty)
|
||
|
{
|
||
|
$AVE_DB->Query("
|
||
|
DELETE
|
||
|
FROM
|
||
|
" . PREFIX . "_rubric_templates
|
||
|
WHERE
|
||
|
id = '" . $tmpls_id . "'
|
||
|
AND
|
||
|
rubric_id = '" . $rubric_id . "'
|
||
|
");
|
||
|
|
||
|
// Очищаем кэш шаблона документов рубрики
|
||
|
$AVE_DB->Query("
|
||
|
DELETE
|
||
|
FROM
|
||
|
" . PREFIX . "_rubric_template_cache
|
||
|
WHERE
|
||
|
rub_id = '" . $rubric_id . "'
|
||
|
AND
|
||
|
rub_tmpl_id = '" . $tmpls_id . "'
|
||
|
");
|
||
|
|
||
|
// Сохраняем системное сообщение в журнал
|
||
|
reportLog($AVE_Template->get_config_vars('RUBRIC_TMPLS_LOG_DEL') . ' - ' . stripslashes(htmlspecialchars($this->rubricNameByIdGet($rubric_id)->rubric_title, ENT_QUOTES)) . ' (Id шаблона: '.$rubric_id.')');
|
||
|
}
|
||
|
|
||
|
header('Location:index.php?do=rubs&action=tmpls&Id='.$rubric_id.'&cp=' . SESSION);
|
||
|
exit;
|
||
|
}
|
||
|
}
|
||
|
?>
|