|
|
|
<?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_footer_template = '" . addslashes($row->rubric_footer_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 rubricRulesShow($rubric_id = 0)
|
|
|
|
{
|
|
|
|
global $AVE_DB, $AVE_Template;
|
|
|
|
|
|
|
|
if (check_permission_acp('rubric_edit'))
|
|
|
|
{
|
|
|
|
// Права
|
|
|
|
$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
|
|
|
|
");
|
|
|
|
|
|
|
|
$rubric = $sql->FetchRow();
|
|
|
|
|
|
|
|
$AVE_Template->assign('rubric', $rubric);
|
|
|
|
$AVE_Template->assign('groups', $groups);
|
|
|
|
|
|
|
|
if (isAjax())
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
$AVE_Template->assign('content', $AVE_Template->fetch('rubs/rules.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 . "'
|
|
|
|
");
|
|
|
|
|
|
|
|
$AVE_DB->clearcache('rub_' . $rubric_id);
|
|
|
|
|
|
|
|
$sql = $AVE_DB->Query("
|
|
|
|
SELECT
|
|
|
|
Id,
|
|
|
|
document_alias
|
|
|
|
FROM
|
|
|
|
" . PREFIX . "_documents
|
|
|
|
WHERE
|
|
|
|
rubric_id = " . $rubric_id . "
|
|
|
|
");
|
|
|
|
|
|
|
|
while ($row = $sql->FetchRow())
|
|
|
|
{
|
|
|
|
if ($row->Id == 1)
|
|
|
|
$hash_url = md5('');
|
|
|
|
else
|
|
|
|
$hash_url = md5($row->document_alias);
|
|
|
|
|
|
|
|
$AVE_DB->clearCacheUrl('url_'.$hash_url);
|
|
|
|
$AVE_DB->clearcache('doc_' . $row->Id);
|
|
|
|
$AVE_DB->clearcompile('doc_' . $row->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_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=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,document_alias FROM " . PREFIX . "_documents WHERE rubric_id = ".$rubric_id);
|
|
|
|
|
|
|
|
while ($row = $sql->FetchRow())
|
|
|
|
{
|
|
|
|
if ($row->Id == 1)
|
|
|
|
$hash_url = md5('');
|
|
|
|
else
|
|
|
|
$hash_url = md5($row->document_alias);
|
|
|
|
|
|
|
|
$AVE_DB->clearCacheUrl('url_'.$hash_url);
|
|
|
|
$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,document_alias FROM " . PREFIX . "_documents WHERE rubric_id = ".$rubric_id);
|
|
|
|
|
|
|
|
while ($row = $sql->FetchRow())
|
|
|
|
{
|
|
|
|
if ($row->Id == 1)
|
|
|
|
$hash_url = md5('');
|
|
|
|
else
|
|
|
|
$hash_url = md5($row->document_alias);
|
|
|
|
|
|
|
|
$AVE_DB->clearCacheUrl('url_'.$hash_url);
|
|
|
|
$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_footer_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 = '', $Ftemplate = '')
|
|
|
|
{
|
|
|
|
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_footer_template = '" . $Ftemplate . "',
|
|
|
|
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, document_alias FROM " . PREFIX . "_documents WHERE rubric_id = ".$rubric_id);
|
|
|
|
|
|
|
|
while ($row = $sql->FetchRow())
|
|
|
|
{
|
|
|
|
if ($row->Id == 1)
|
|
|
|
$hash_url = md5('');
|
|
|
|
else
|
|
|
|
$hash_url = md5($row->document_alias);
|
|
|
|
|
|
|
|
$AVE_DB->clearCacheUrl('url_'.$hash_url);
|
|
|
|
$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, document_alias FROM " . PREFIX . "_documents WHERE rubric_id = '".$rubric_id."'");
|
|
|
|
|
|
|
|
while ($row = $sql->FetchRow())
|
|
|
|
{
|
|
|
|
if ($row->Id == 1)
|
|
|
|
$hash_url = md5('');
|
|
|
|
else
|
|
|
|
$hash_url = md5($row->document_alias);
|
|
|
|
|
|
|
|
$AVE_DB->clearCacheUrl('url_'.$hash_url);
|
|
|
|
$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,
|
|
|
|
document_alias
|
|
|
|
FROM
|
|
|
|
" . PREFIX . "_documents
|
|
|
|
WHERE
|
|
|
|
rubric_id = ".$rubric_id."
|
|
|
|
AND
|
|
|
|
rubric_tmpl_id = " . $tmpls_id
|
|
|
|
);
|
|
|
|
|
|
|
|
while ($row = $sql->FetchRow())
|
|
|
|
{
|
|
|
|
if ($row->Id == 1)
|
|
|
|
$hash_url = md5('');
|
|
|
|
else
|
|
|
|
$hash_url = md5($row->document_alias);
|
|
|
|
|
|
|
|
$AVE_DB->clearCacheUrl('url_'.$hash_url);
|
|
|
|
$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;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function _get_fields_type($type = null)
|
|
|
|
{
|
|
|
|
static $fields;
|
|
|
|
|
|
|
|
if (is_array($fields))
|
|
|
|
return $fields;
|
|
|
|
|
|
|
|
$arr = get_defined_functions();
|
|
|
|
|
|
|
|
$fields = array();
|
|
|
|
$field = array();
|
|
|
|
|
|
|
|
foreach ($arr['user'] as $v)
|
|
|
|
{
|
|
|
|
if (trim(substr($v, 0, strlen('get_field_'))) == 'get_field_')
|
|
|
|
{
|
|
|
|
$d = '';
|
|
|
|
|
|
|
|
$name = @$v('', 'name', '', '', 0, $d);
|
|
|
|
|
|
|
|
$id = substr($v, strlen('get_field_'));
|
|
|
|
|
|
|
|
if ($name != false && is_string($name))
|
|
|
|
$fields[] = array('id' => $id,'name' => (isset($fields_vars[$name])
|
|
|
|
? $fields_vars[$name]
|
|
|
|
: $name));
|
|
|
|
|
|
|
|
if (! empty($type) && $id == $type)
|
|
|
|
$field = array('id' => $id,'name' => (isset($fields_vars[$name])
|
|
|
|
? $fields_vars[$name]
|
|
|
|
: $name));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$fields = msort($fields, array('name'));
|
|
|
|
|
|
|
|
return (! empty($type)) ? $field : $fields;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function ShowFields()
|
|
|
|
{
|
|
|
|
global $AVE_DB, $AVE_Template;
|
|
|
|
|
|
|
|
$rubric_id = (int)$_REQUEST['Id'];
|
|
|
|
|
|
|
|
$sql = $AVE_DB->Query("
|
|
|
|
SELECT
|
|
|
|
rubric_field_type
|
|
|
|
FROM
|
|
|
|
" . PREFIX . "_rubric_fields
|
|
|
|
WHERE
|
|
|
|
rubric_id = '".$rubric_id."'
|
|
|
|
GROUP BY
|
|
|
|
rubric_field_type
|
|
|
|
");
|
|
|
|
|
|
|
|
$enable = array();
|
|
|
|
|
|
|
|
while ($row = $sql->FetchArray())
|
|
|
|
$enable[] = $row['rubric_field_type'];
|
|
|
|
|
|
|
|
$fields = $this->_get_fields_type();
|
|
|
|
|
|
|
|
foreach ($fields as $field)
|
|
|
|
{
|
|
|
|
$exists[$field['id']]['adm'] = file_exists(BASE_DIR . '/fields/' . $field['id'] . '/tpl/field.tpl');
|
|
|
|
$exists[$field['id']]['doc'] = file_exists(BASE_DIR . '/fields/' . $field['id'] . '/tpl/field-doc.tpl');
|
|
|
|
$exists[$field['id']]['req'] = file_exists(BASE_DIR . '/fields/' . $field['id'] . '/tpl/field-req.tpl');
|
|
|
|
}
|
|
|
|
|
|
|
|
$sql = $AVE_DB->Query("
|
|
|
|
SELECT
|
|
|
|
rubric_title,
|
|
|
|
rubric_linked_rubric,
|
|
|
|
rubric_description
|
|
|
|
FROM
|
|
|
|
" . PREFIX . "_rubrics
|
|
|
|
WHERE
|
|
|
|
id = '" . $rubric_id . "'
|
|
|
|
LIMIT 1
|
|
|
|
");
|
|
|
|
|
|
|
|
$rubric = $sql->FetchRow();
|
|
|
|
|
|
|
|
$AVE_Template->assign('rubric', $rubric);
|
|
|
|
$AVE_Template->assign("enable", $enable);
|
|
|
|
$AVE_Template->assign("exists", $exists);
|
|
|
|
$AVE_Template->assign("fields", $fields);
|
|
|
|
$AVE_Template->assign("content", $AVE_Template->fetch('rubs/_fields_list.tpl'));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function ShowFieldsByType($fld)
|
|
|
|
{
|
|
|
|
global $AVE_DB, $AVE_Template;
|
|
|
|
|
|
|
|
$rubric_id = (int)$_REQUEST['rubric_id'];
|
|
|
|
|
|
|
|
$sql = $AVE_DB->Query("
|
|
|
|
SELECT
|
|
|
|
a.Id,
|
|
|
|
a.rubric_id,
|
|
|
|
a.rubric_field_type,
|
|
|
|
a.rubric_field_title,
|
|
|
|
b.rubric_title
|
|
|
|
FROM
|
|
|
|
" . PREFIX . "_rubric_fields AS a
|
|
|
|
LEFT JOIN
|
|
|
|
" . PREFIX . "_rubrics AS b
|
|
|
|
ON a.rubric_id = b.Id
|
|
|
|
WHERE
|
|
|
|
a.rubric_field_type = '" . $fld ."'
|
|
|
|
AND
|
|
|
|
a.rubric_id = '".$rubric_id."'
|
|
|
|
ORDER BY
|
|
|
|
a.rubric_id
|
|
|
|
");
|
|
|
|
|
|
|
|
$rubrics = array();
|
|
|
|
|
|
|
|
while ($row = $sql->FetchRow())
|
|
|
|
{
|
|
|
|
$rubrics[$row->rubric_id]['rubric_id'] = $row->rubric_id;
|
|
|
|
$rubrics[$row->rubric_id]['rubric_title'] = $row->rubric_title;
|
|
|
|
$rubrics[$row->rubric_id]['rubric_field_type'] = $row->rubric_field_type;
|
|
|
|
$rubrics[$row->rubric_id]['fields'][$row->Id]['id'] = $row->Id;
|
|
|
|
$rubrics[$row->rubric_id]['fields'][$row->Id]['title'] = $row->rubric_field_title;
|
|
|
|
$rubrics[$row->rubric_id]['fields'][$row->Id]['adm_tpl'] = file_exists(BASE_DIR . '/fields/' . $fld . '/tpl/field-' . $row->Id . '.tpl');
|
|
|
|
$rubrics[$row->rubric_id]['fields'][$row->Id]['doc_tpl'] = file_exists(BASE_DIR . '/fields/' . $fld . '/tpl/field-doc-' . $row->Id . '.tpl');
|
|
|
|
$rubrics[$row->rubric_id]['fields'][$row->Id]['req_tpl'] = file_exists(BASE_DIR . '/fields/' . $fld . '/tpl/field-req-' . $row->Id . '.tpl');
|
|
|
|
$rubrics[$row->rubric_id]['fields'][$row->Id]['adm_main'] = file_exists(BASE_DIR . '/fields/' . $fld . '/tpl/field.tpl');
|
|
|
|
$rubrics[$row->rubric_id]['fields'][$row->Id]['doc_main'] = file_exists(BASE_DIR . '/fields/' . $fld . '/tpl/field-doc.tpl');
|
|
|
|
$rubrics[$row->rubric_id]['fields'][$row->Id]['req_main'] = file_exists(BASE_DIR . '/fields/' . $fld . '/tpl/field-req.tpl');
|
|
|
|
}
|
|
|
|
|
|
|
|
$sql = $AVE_DB->Query("
|
|
|
|
SELECT
|
|
|
|
rubric_title,
|
|
|
|
rubric_linked_rubric,
|
|
|
|
rubric_description
|
|
|
|
FROM
|
|
|
|
" . PREFIX . "_rubrics
|
|
|
|
WHERE
|
|
|
|
id = '" . $rubric_id . "'
|
|
|
|
LIMIT 1
|
|
|
|
");
|
|
|
|
|
|
|
|
$rubric = $sql->FetchRow();
|
|
|
|
|
|
|
|
$AVE_Template->assign('rubric', $rubric);
|
|
|
|
$AVE_Template->assign('main', $this->_get_fields_type($fld));
|
|
|
|
$AVE_Template->assign("rubrics", $rubrics);
|
|
|
|
$AVE_Template->assign("content", $AVE_Template->fetch('rubs/_field_list.tpl'));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function EditFieldTpl($id = '', $fld, $type)
|
|
|
|
{
|
|
|
|
global $AVE_DB, $AVE_Template, $_fm_dir;
|
|
|
|
|
|
|
|
switch ($type)
|
|
|
|
{
|
|
|
|
case 'adm':
|
|
|
|
$file = BASE_DIR . '/fields/' . $fld . '/tpl/field-' . $id . '.tpl';
|
|
|
|
$source = BASE_DIR . '/fields/' . $fld . '/tpl/field.tpl';
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'doc':
|
|
|
|
$file = BASE_DIR . '/fields/' . $fld . '/tpl/field-doc-' . $id . '.tpl';
|
|
|
|
$source = BASE_DIR . '/fields/' . $fld . '/tpl/field-doc.tpl';
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'req':
|
|
|
|
$file = BASE_DIR . '/fields/' . $fld . '/tpl/field-req-' . $id . '.tpl';
|
|
|
|
$source = BASE_DIR . '/fields/' . $fld . '/tpl/field-req.tpl';
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (empty($id))
|
|
|
|
$file = $source;
|
|
|
|
|
|
|
|
if (file_exists($file))
|
|
|
|
$code_text = file_get_contents($file);
|
|
|
|
else
|
|
|
|
$code_text = file_get_contents($source);
|
|
|
|
|
|
|
|
$sql = $AVE_DB->Query("
|
|
|
|
SELECT
|
|
|
|
a.rubric_field_title,
|
|
|
|
b.rubric_title
|
|
|
|
FROM
|
|
|
|
" . PREFIX . "_rubric_fields AS a
|
|
|
|
LEFT JOIN
|
|
|
|
" . PREFIX . "_rubrics AS b
|
|
|
|
ON a.rubric_id = b.Id
|
|
|
|
WHERE
|
|
|
|
a.rubric_field_type = '" . $fld ."'
|
|
|
|
AND
|
|
|
|
a.Id = '" . $id ."'
|
|
|
|
")->FetchAssocArray();
|
|
|
|
|
|
|
|
$params =
|
|
|
|
array(
|
|
|
|
'id' => $id,
|
|
|
|
'fld' => $fld,
|
|
|
|
'type' => $type,
|
|
|
|
'func' => (file_exists($file) ? 'edit' : 'new'),
|
|
|
|
'field' => $sql,
|
|
|
|
);
|
|
|
|
|
|
|
|
$AVE_Template->assign('main', $this->_get_fields_type($fld));
|
|
|
|
$AVE_Template->assign('params', $params);
|
|
|
|
$AVE_Template->assign('code_text', $code_text);
|
|
|
|
$AVE_Template->assign("content", $AVE_Template->fetch('rubs/_field_code.tpl'));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Сохранение шаблона
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
function SaveFieldTpl($id = '', $fld, $type, $func)
|
|
|
|
{
|
|
|
|
switch ($type)
|
|
|
|
{
|
|
|
|
case 'adm':
|
|
|
|
$file = (! empty($id))
|
|
|
|
? BASE_DIR . '/fields/' . $fld . '/tpl/field-' . $id . '.tpl'
|
|
|
|
: BASE_DIR . '/fields/' . $fld . '/tpl/field.tpl';
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'doc':
|
|
|
|
$file = (! empty($id))
|
|
|
|
? BASE_DIR . '/fields/' . $fld . '/tpl/field-doc-' . $id . '.tpl'
|
|
|
|
: BASE_DIR . '/fields/' . $fld . '/tpl/field-doc.tpl';
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'req':
|
|
|
|
$file = (! empty($id))
|
|
|
|
? BASE_DIR . '/fields/' . $fld . '/tpl/field-req-' . $id . '.tpl'
|
|
|
|
: BASE_DIR . '/fields/' . $fld . '/tpl/field-req.tpl';
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
$data = stripcslashes($_REQUEST['code_text']);
|
|
|
|
|
|
|
|
@file_put_contents($file, $data);
|
|
|
|
chmod($file, 0644);
|
|
|
|
|
|
|
|
$message = 'Шаблон успешнно сохранен';
|
|
|
|
$header = 'Выполнено';
|
|
|
|
$theme = 'accept';
|
|
|
|
|
|
|
|
echo json_encode(
|
|
|
|
array(
|
|
|
|
'message' => $message,
|
|
|
|
'header' => $header,
|
|
|
|
'theme' => $theme)
|
|
|
|
);
|
|
|
|
|
|
|
|
exit;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Удаление шаблона поля
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
function DeleteFieldTpl($id, $fld, $type, $func)
|
|
|
|
{
|
|
|
|
switch ($type)
|
|
|
|
{
|
|
|
|
case 'adm':
|
|
|
|
$file = BASE_DIR . '/fields/' . $fld . '/tpl/field-' . $id . '.tpl';
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'doc':
|
|
|
|
$file = BASE_DIR . '/fields/' . $fld . '/tpl/field-doc-' . $id . '.tpl';
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'req':
|
|
|
|
$file = BASE_DIR . '/fields/' . $fld . '/tpl/field-req-' . $id . '.tpl';
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
@unlink($file);
|
|
|
|
|
|
|
|
header('Location:' . get_referer_link());
|
|
|
|
exit;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
?>
|