236 lines
6.9 KiB
PHP
236 lines
6.9 KiB
PHP
<?php
|
||
|
||
/**
|
||
* AVE.cms
|
||
*
|
||
* @package AVE.cms
|
||
* @version 3.x
|
||
* @filesource
|
||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
|
||
*
|
||
* @license GPL v.2
|
||
*/
|
||
|
||
if (! defined('ACP'))
|
||
{
|
||
header('Location:index.php');
|
||
exit;
|
||
}
|
||
|
||
$AVE_Template->config_load(BASE_DIR . '/admin/lang/' . $_SESSION['admin_language'] . '/modules.txt', 'modules');
|
||
|
||
if (! empty($_REQUEST['moduleaction']))
|
||
{
|
||
if (! check_permission('mod_' . $_REQUEST['mod']))
|
||
{
|
||
echo $AVE_Template->get_config_vars('MAIN_NO_PERM_MODULES');
|
||
exit;
|
||
}
|
||
}
|
||
|
||
if (! empty($_REQUEST['module']))
|
||
{
|
||
$module_path = preg_replace('/[^\w]/', '', $_REQUEST['module']);
|
||
|
||
if (! empty($module_path))
|
||
define('MODULE_PATH', $module_path);
|
||
}
|
||
|
||
switch($_REQUEST['action'])
|
||
{
|
||
case '':
|
||
if (check_permission_acp('modules_view'))
|
||
{
|
||
$AVE_Module->moduleList();
|
||
}
|
||
break;
|
||
|
||
case 'quicksave':
|
||
if (check_permission_acp('modules_system'))
|
||
{
|
||
$AVE_Module->moduleOptionsSave();
|
||
}
|
||
break;
|
||
|
||
case 'install':
|
||
case 'reinstall':
|
||
if (check_permission_acp('modules_system'))
|
||
{
|
||
$AVE_Module->moduleInstall();
|
||
}
|
||
break;
|
||
|
||
case 'update':
|
||
if (check_permission_acp('modules_system'))
|
||
{
|
||
$AVE_Module->moduleUpdate();
|
||
}
|
||
break;
|
||
|
||
case 'delete':
|
||
if (check_permission_acp('modules_system'))
|
||
{
|
||
$AVE_Module->moduleDelete();
|
||
}
|
||
break;
|
||
|
||
case 'onoff':
|
||
if (check_permission_acp('modules_system'))
|
||
{
|
||
$AVE_Module->moduleStatusChange();
|
||
}
|
||
break;
|
||
|
||
case 'modedit':
|
||
if (check_permission_acp('modules_admin'))
|
||
{
|
||
$mod_path = preg_replace('/[^\w]/', '', $_REQUEST['mod']);
|
||
$mod_path = BASE_DIR . '/modules/' . $mod_path . '/module.php';
|
||
|
||
if (is_file($mod_path))
|
||
include($mod_path);
|
||
}
|
||
break;
|
||
|
||
case 'remove':
|
||
if (check_permission_acp('modules_system'))
|
||
{
|
||
$AVE_Module->moduleRemove($_REQUEST['module']);
|
||
}
|
||
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'];
|
||
}
|
||
$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'));
|
||
}
|
||
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 ($message) {
|
||
echo json_encode([
|
||
'status' => 'error',
|
||
'message' => $message
|
||
]);
|
||
} else {
|
||
echo json_encode(['status' => $res ? 'success' : 'error']);
|
||
}
|
||
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;
|
||
|
||
}
|
||
?>
|