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; } ?>