update v3.32 (add module aliases)
This commit is contained in:
@@ -99,150 +99,51 @@
|
||||
}
|
||||
break;
|
||||
|
||||
case 'alias_history':
|
||||
case 'alias_history':
|
||||
if (check_permission_acp('modules_system')) {
|
||||
$AVE_Module->getAliasHistory((int)$_GET['id']);
|
||||
$AVE_Module->getAliasHistory((int)$_GET['id']);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'alias_history_delete':
|
||||
if (check_permission_acp('modules_system') && $_REQUEST['ajax']) {
|
||||
$AVE_Module->deleteAliasHistory((int)$_POST['id']);
|
||||
$AVE_Module->deleteAliasHistory((int)$_POST['id']);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'aliases_all':
|
||||
if (check_permission_acp('modules_system')) {
|
||||
$modules_list = array();
|
||||
|
||||
$sql = "SELECT
|
||||
a.id,
|
||||
a.module_name as sys_name,
|
||||
a.module_link_name,
|
||||
a.module_action,
|
||||
a.module_link,
|
||||
a.module_url as alias_url,
|
||||
a.document_id as doc_id,
|
||||
a.module_admin,
|
||||
m.ModuleName as title
|
||||
FROM " . PREFIX . "_modules_aliases a
|
||||
LEFT JOIN " . PREFIX . "_module m ON m.ModuleSysName = a.module_name
|
||||
ORDER BY a.id DESC";
|
||||
|
||||
$q = $AVE_DB->Query($sql);
|
||||
|
||||
while ($row = $q->FetchAssocArray()) {
|
||||
|
||||
if (empty($row['title'])) {
|
||||
$row['title'] = $row['sys_name'];
|
||||
case 'aliases_all':
|
||||
if (check_permission_acp('modules_system')) {
|
||||
$AVE_Module->getAliasesAll();
|
||||
}
|
||||
$modules_list[] = $row;
|
||||
}
|
||||
break;
|
||||
|
||||
$all_docs = array();
|
||||
$doc_q = $AVE_DB->Query("SELECT Id, document_title FROM " . PREFIX . "_documents ORDER BY document_title ASC");
|
||||
while ($d = $doc_q->FetchAssocArray()) {
|
||||
$all_docs[$d['Id']] = $d['document_title'];
|
||||
}
|
||||
case 'aliases':
|
||||
if (check_permission_acp('modules_system')) {
|
||||
$alias_id = (int)($_REQUEST['id'] ?? 0);
|
||||
|
||||
$AVE_Template->assign(array(
|
||||
'modules_list' => $modules_list,
|
||||
'all_docs' => $all_docs,
|
||||
'sess' => SESSION
|
||||
));
|
||||
|
||||
$AVE_Template->assign('content', $AVE_Template->fetch('modules/all_modules_aliases.tpl'));
|
||||
}
|
||||
break;
|
||||
|
||||
case 'aliases':
|
||||
if (check_permission_acp('modules_system')) {
|
||||
$alias_id = (int)($_REQUEST['id'] ?? 0);
|
||||
|
||||
if (!empty($_POST['save_aliases'])) {
|
||||
$update_data = [
|
||||
'module_name' => $_POST['module_name'] ?? '',
|
||||
'module_url' => trim($_POST['module_url'], '/ ') . '/',
|
||||
'document_id' => (int)$_POST['document_id'],
|
||||
'module_action' => $_POST['module_action'] ?? '',
|
||||
'module_link' => $_POST['module_link'] ?? '',
|
||||
'module_link_name' => $_POST['module_link_name'] ?? '',
|
||||
'module_admin' => isset($_POST['module_admin']) ? '1' : '0'
|
||||
];
|
||||
|
||||
$res = $AVE_Module->moduleAliasSave($alias_id, $update_data);
|
||||
|
||||
if (function_exists('clear_cache')) clear_cache();
|
||||
|
||||
// Если это AJAX (сохранение из модального окна)
|
||||
if (isset($_REQUEST['ajax']) || isset($_REQUEST['onlycontent'])) {
|
||||
@ob_clean();
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$message = '';
|
||||
// Проверяем, какую именно ошибку вернул метод
|
||||
if ($res === 'error_duplicate_url') {
|
||||
$message = 'ВНИМАНИЕ: ЧПУ адрес "' . $_POST['module_url'] . '" уже занят другим модулем!';
|
||||
} elseif ($res === 'error_duplicate_link') {
|
||||
$message = 'ОШИБКА: Для этого оригинального URL уже существует запись. Не плодите дубликаты!';
|
||||
// Если идет сохранение
|
||||
if (!empty($_POST['save_aliases'])) {
|
||||
$AVE_Module->moduleAliasRequestSave($alias_id);
|
||||
}
|
||||
|
||||
if ($message) {
|
||||
echo json_encode([
|
||||
'status' => 'error',
|
||||
'message' => $message
|
||||
]);
|
||||
} else {
|
||||
echo json_encode(['status' => $res ? 'success' : 'error']);
|
||||
// В любом случае показываем форму (либо чистую, либо с данными)
|
||||
$AVE_Module->getAliasEdit($alias_id);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'alias_delete':
|
||||
if (check_permission_acp('modules_system')) {
|
||||
$id = (int)($_REQUEST['id'] ?? 0);
|
||||
|
||||
if ($id > 0) {
|
||||
$AVE_Module->moduleAliasDeleteById($id);
|
||||
if (function_exists('clear_cache')) clear_cache();
|
||||
}
|
||||
|
||||
header('Location: index.php?do=modules&action=aliases_all&cp=' . SESSION);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
$alias_data = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_modules_aliases WHERE id = '{$alias_id}'")->FetchAssocArray();
|
||||
if (!$alias_data) {
|
||||
$alias_data = [
|
||||
'module_name' => '', 'module_link_name' => '', 'module_action' => '',
|
||||
'module_link' => '', 'module_url' => '', 'document_id' => 0, 'module_admin' => '1'
|
||||
];
|
||||
}
|
||||
|
||||
// Получаем список документов для выпадающего списка
|
||||
$all_docs = array();
|
||||
$doc_q = $AVE_DB->Query("SELECT Id, document_title FROM " . PREFIX . "_documents ORDER BY document_title ASC");
|
||||
while ($d = $doc_q->FetchAssocArray()) {
|
||||
$all_docs[$d['Id']] = $d['document_title'];
|
||||
}
|
||||
|
||||
$AVE_Template->assign([
|
||||
'alias_id' => $alias_id,
|
||||
'alias_data' => $alias_data,
|
||||
'all_docs' => $all_docs,
|
||||
'sess' => SESSION
|
||||
]);
|
||||
|
||||
if (isset($_REQUEST['ajax']) || isset($_REQUEST['onlycontent'])) {
|
||||
echo $AVE_Template->fetch('modules/module_aliases.tpl');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'alias_delete':
|
||||
if (check_permission_acp('modules_system')) {
|
||||
$id = (int)($_REQUEST['id'] ?? 0);
|
||||
|
||||
if ($id > 0) {
|
||||
$AVE_Module->moduleAliasDeleteById($id);
|
||||
|
||||
if (function_exists('clear_cache')) clear_cache();
|
||||
}
|
||||
|
||||
// Возвращаем на страницу списка всех алиасов
|
||||
header('Location: index.php?do=modules&action=aliases_all&cp=' . SESSION);
|
||||
exit;
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
}
|
||||
?>
|
||||
@@ -771,10 +771,17 @@ public function moduleAliasDeleteById($id)
|
||||
global $AVE_DB;
|
||||
$id = (int)$id;
|
||||
if ($id > 0) {
|
||||
$AVE_DB->Query("DELETE FROM " . PREFIX . "_modules_aliases WHERE id = '{$id}'");
|
||||
// Чистим историю именно для этого ID, если она ведется
|
||||
$AVE_DB->Query("DELETE FROM " . PREFIX . "_modules_aliases_history WHERE id = '{$id}'");
|
||||
return true;
|
||||
// Сначала получаем имя модуля, чтобы знать, чью историю тереть
|
||||
$m_data = $AVE_DB->Query("SELECT module_name FROM " . PREFIX . "_modules_aliases WHERE id = '{$id}' LIMIT 1")->FetchAssocArray();
|
||||
|
||||
if ($m_data) {
|
||||
$m_name = addslashes($m_data['module_name']);
|
||||
// Удаляем историю для этого конкретного модуля
|
||||
$AVE_DB->Query("DELETE FROM " . PREFIX . "_modules_aliases_history WHERE module_name = '{$m_name}'");
|
||||
// Удаляем сам алиас
|
||||
$AVE_DB->Query("DELETE FROM " . PREFIX . "_modules_aliases WHERE id = '{$id}'");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -826,5 +833,134 @@ public function deleteAliasHistory($h_id)
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Метод для отображения списка всех алиасов
|
||||
*/
|
||||
public function getAliasesAll()
|
||||
{
|
||||
global $AVE_DB, $AVE_Template;
|
||||
|
||||
$modules_list = array();
|
||||
|
||||
$sql = "SELECT
|
||||
a.id,
|
||||
a.module_name as sys_name,
|
||||
a.module_link_name,
|
||||
a.module_action,
|
||||
a.module_link,
|
||||
a.module_url as alias_url,
|
||||
a.document_id as doc_id,
|
||||
a.module_admin,
|
||||
m.ModuleName as title
|
||||
FROM " . PREFIX . "_modules_aliases a
|
||||
LEFT JOIN " . PREFIX . "_module m ON m.ModuleSysName = a.module_name
|
||||
ORDER BY a.id DESC";
|
||||
|
||||
$q = $AVE_DB->Query($sql);
|
||||
|
||||
while ($row = $q->FetchAssocArray()) {
|
||||
if (empty($row['title'])) {
|
||||
$row['title'] = $row['sys_name'];
|
||||
}
|
||||
$modules_list[] = $row;
|
||||
}
|
||||
|
||||
$all_docs = array();
|
||||
$doc_q = $AVE_DB->Query("SELECT Id, document_title FROM " . PREFIX . "_documents ORDER BY document_title ASC");
|
||||
while ($d = $doc_q->FetchAssocArray()) {
|
||||
$all_docs[$d['Id']] = $d['document_title'];
|
||||
}
|
||||
|
||||
$AVE_Template->assign(array(
|
||||
'modules_list' => $modules_list,
|
||||
'all_docs' => $all_docs,
|
||||
'sess' => SESSION
|
||||
));
|
||||
|
||||
$AVE_Template->assign('content', $AVE_Template->fetch('modules/all_modules_aliases.tpl'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Метод для отображения формы редактирования
|
||||
*/
|
||||
public function getAliasEdit($alias_id)
|
||||
{
|
||||
global $AVE_DB, $AVE_Template;
|
||||
$alias_id = (int)$alias_id;
|
||||
|
||||
$alias_data = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_modules_aliases WHERE id = '{$alias_id}'")->FetchAssocArray();
|
||||
if (!$alias_data) {
|
||||
$alias_data = [
|
||||
'module_name' => '', 'module_link_name' => '', 'module_action' => '',
|
||||
'module_link' => '', 'module_url' => '', 'document_id' => 0, 'module_admin' => '1'
|
||||
];
|
||||
}
|
||||
|
||||
$all_docs = array();
|
||||
$doc_q = $AVE_DB->Query("SELECT Id, document_title FROM " . PREFIX . "_documents ORDER BY document_title ASC");
|
||||
while ($d = $doc_q->FetchAssocArray()) {
|
||||
$all_docs[$d['Id']] = $d['document_title'];
|
||||
}
|
||||
|
||||
$AVE_Template->assign([
|
||||
'alias_id' => $alias_id,
|
||||
'alias_data' => $alias_data,
|
||||
'all_docs' => $all_docs,
|
||||
'sess' => SESSION
|
||||
]);
|
||||
|
||||
if (isset($_REQUEST['ajax']) || isset($_REQUEST['onlycontent'])) {
|
||||
echo $AVE_Template->fetch('modules/module_aliases.tpl');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Метод для обработки сохранения алиаса
|
||||
*/
|
||||
public function moduleAliasRequestSave($alias_id)
|
||||
{
|
||||
$alias_id = (int)$alias_id;
|
||||
|
||||
$update_data = [
|
||||
'module_name' => $_POST['module_name'] ?? '',
|
||||
'module_url' => trim($_POST['module_url'], '/ ') . '/',
|
||||
'document_id' => (int)$_POST['document_id'],
|
||||
'module_action' => $_POST['module_action'] ?? '',
|
||||
'module_link' => $_POST['module_link'] ?? '',
|
||||
'module_link_name' => $_POST['module_link_name'] ?? '',
|
||||
'module_admin' => isset($_POST['module_admin']) ? '1' : '0'
|
||||
];
|
||||
|
||||
$res = $this->moduleAliasSave($alias_id, $update_data);
|
||||
|
||||
if (function_exists('clear_cache')) clear_cache();
|
||||
|
||||
// Обработка AJAX ответа
|
||||
if (isset($_REQUEST['ajax']) || isset($_REQUEST['onlycontent'])) {
|
||||
@ob_clean();
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$message = '';
|
||||
if ($res === 'error_duplicate_url') {
|
||||
$message = 'ВНИМАНИЕ: ЧПУ адрес "' . $_POST['module_url'] . '" уже занят другим модулем!';
|
||||
} elseif ($res === 'error_duplicate_link') {
|
||||
$message = 'ОШИБКА: Для этого оригинального URL уже существует запись. Не плодите дубликаты!';
|
||||
}
|
||||
|
||||
if ($message) {
|
||||
echo json_encode([
|
||||
'status' => 'error',
|
||||
'message' => $message
|
||||
]);
|
||||
} else {
|
||||
echo json_encode(['status' => $res ? 'success' : 'error']);
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
return $res;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user