/** * (POST only) */ protected function action_save() { foreach ($this->input->fetch_post('settings') as $k => $v) { nc_routing::set_setting($k, $v, $this->site_id); } $this->redirect_to_index_action(); }
/** * Инициализация модуля: * — Инициализация автоматической загрузки классов модуля * — Если модуль не разу не запускался, будут созданы стандартные * маршруты для всех сайтов * — Привязка слушателей создания и удаления сайтов */ public static function init() { nc_core()->register_class_autoload_path('nc_routing_', dirname(__FILE__) . "/classes"); if (!nc_routing::get_setting('IsInstalled', 0)) { nc_routing_route_defaults::create_for_all_sites(); self::set_setting('IsInstalled', 1, 0); } nc_routing_listener::init(); self::$SUB_FOLDER = nc_core::get_object()->SUB_FOLDER; }
/** * */ protected function action_index() { $this->ui_config->locationHash .= ".list({$this->site_id})"; $this->ui_config->add_create_button("route.add({$this->site_id})"); $routes = nc_routing::get_routes($this->site_id, true); if (!count($routes)) { nc_routing_route_defaults::create($this->site_id); $routes = nc_routing::get_routes($this->site_id, true, true); } $view = $this->view('route_list')->with('routes', $routes); return $view; }
/** * */ protected function get_path_string() { if (!$this->resource_parameters) { $resource_parameters = $this->prepare_resource_parameters(); if ($resource_parameters === false) { return ''; } else { $this->resource_parameters = $resource_parameters; } } $routes = nc_routing::get_routes_by_resource_type($this->resource_parameters['site_id'], $this->resource_type); /** @var nc_routing_route $route */ foreach ($routes as $route) { $path_string = $route->get_path_string_for($this); if ($path_string !== false) { return $path_string; } } return false; }
/** * Получить путь до раздела поиска на сайте с указанным идентификатором. * @global nc_db $db * @throws Exception @see nc_catalogue::get_by_id() * @param integer $site_id * @param boolean $with_host * @return string */ public function get_search_url($site_id, $with_host = true) { if ($with_host && isset($this->paths[$site_id])) { return $this->paths[$site_id]; } global $db, $nc_core; $folder_data = $db->get_row("SELECT sub.`Hidden_URL` AS `path`, sub.`Subdivision_ID` AS `id`\n FROM `Subdivision` AS `sub`, `Sub_Class` AS `c`\n WHERE c.`Class_ID` = " . (int) nc_search::get_setting("ComponentID") . "\n AND c.`Subdivision_ID` = sub.`Subdivision_ID`\n AND sub.`Catalogue_ID` = " . (int) $site_id . "\n LIMIT 1", ARRAY_A); if ($folder_data) { if (nc_module_check_by_keyword('routing')) { $path = nc_routing::get_folder_path($folder_data['id']); } else { $path = $nc_core->SUB_FOLDER . $folder_data['path']; } if ($with_host) { $host = $nc_core->catalogue->get_by_id($site_id, 'Domain'); if ($host) { $path = "http://{$host}{$path}"; } } $this->paths[$site_id] = $path; } else { $this->paths[$site_id] = false; } return $this->paths[$site_id]; }
/** * 'собственно функция для получения нужной информации' * @access private */ function fetch_by_query($qry) { global $db; $this->subclasses = $db->get_results($qry, ARRAY_A); if ($this->subclasses[0]) { $this->catalogue_id = $this->subclasses[0]['Catalogue_ID']; $this->subdivision_id = $this->subclasses[0]['Subdivision_ID']; $this->subdivision_name = $this->subclasses[0]['Subdivision_Name']; $this->subdivision_checked = $this->subclasses[0]['Checked']; $this->label_color = $this->subclasses[0]['LabelColor']; if (nc_module_check_by_keyword('routing')) { $this->subdivision_url = nc_routing::get_folder_path($this->subclasses[0]['Subdivision_ID']); } else { $this->subdivision_url = nc_core('SUB_FOLDER') . $this->subclasses[0]['Hidden_URL']; } $this->check_rights(); } }
function nc_browse_messages($cc_env, $range, $user_template = false) { if ($user_template) { $browse_msg = $user_template; } else { global $browse_msg; } global $classPreview, $admin_mode, $inside_admin; $nc_core = nc_Core::get_object(); if (isset($classPreview)) { $classPreview += 0; } if ($cc_env['cur_cc'] == $nc_core->input->fetch_get("cur_cc")) { $curPos = $cc_env['curPos'] + 0; } else { $curPos = 0; } $maxRows = $cc_env['maxRows']; $totRows = $cc_env['totRows']; if (!$maxRows || !$totRows) { return ''; } if ($cc_env['cur_cc']) { $cur_cc = $cc_env['cur_cc']; } $page_count = ceil($totRows / $maxRows); $half_range = ceil($range / 2); $cur_page = ceil($curPos / $maxRows) + 1; if ($page_count < 2) { return ''; } $maybe_from = $cur_page - $half_range; $maybe_to = $cur_page + $half_range - (is_even($range) ? 0 : 1); if ($maybe_from < 0) { $maybe_to = $maybe_to - $maybe_from; $maybe_from = 0; if ($maybe_to > $page_count) { $maybe_to = $page_count; } } if ($maybe_to > $page_count) { $maybe_from = $page_count - $range; $maybe_to = $page_count; if ($maybe_from < 0) { $maybe_from = 0; } } // формируем ссылку // const_url не меняется для каждой страницы $const_url = $cc_env['LocalQuery']; if ($const_url == '?') { $const_url = ''; } //$const_url = rawurlencode ($const_url); // добавим get-парметры $_get_arr = $nc_core->input->fetch_get(); $get_params = array(); // добавим в ссылку cur_cc if (isset($cur_cc)) { $get_params['cur_cc'] = $cur_cc; } if (!empty($_get_arr)) { $ignore_arr = array('sid', 'ced', 'inside_admin', 'catalogue', 'sub', 'cc', 'curPos', 'cur_cc', 'REQUEST_URI', 'srchPat'); if ($inside_admin || $admin_mode) { $ignore_arr[] = 'isNaked'; } foreach ($_get_arr as $k => $v) { if (!in_array($k, $ignore_arr)) { $get_params[$k] = $nc_core->input->recursive_striptags_escape($v); } } } $const_url .= count($get_params) ? (strstr($const_url, "?") ? "&" : "?") . $nc_core->url->build_url($get_params) : ""; if (!$admin_mode && nc_module_check_by_keyword('routing')) { $use_routing_module = true; $routing_parameters = nc_resolve_url($nc_core->url); $routing_parameters['variables'] = array_merge(nc_array_value($routing_parameters, 'variables', array()), $get_params, array('curPos' => null, 'nc_page' => null)); $routing_parameters['page'] = null; $routing_resource_type = $routing_parameters['resource_type']; if ($routing_resource_type == 'folder' && $routing_parameters['infoblock_id']) { $routing_resource_type = 'infoblock'; } } else { $use_routing_module = $routing_parameters = $routing_resource_type = false; } $array_result = array(); for ($i = $maybe_from; $i < $maybe_to; $i++) { $page_number = $i + 1; $page_from = $i * $maxRows; $page_to = $page_from + $maxRows; if ($use_routing_module) { $routing_parameters['variables']['curPos'] = $page_from ? $page_from : null; $routing_parameters['page'] = $page_number > 1 ? $page_number : null; $url = nc_routing::get_resource_path($routing_resource_type, $routing_parameters); } elseif ($page_from && !$admin_mode) { // ссылка не на первую страницу $url = $nc_core->url->get_parsed_url('path') . $const_url . (strpos($const_url, "?") !== false ? "&" : "?") . "curPos=" . $page_from; $url = $nc_core->SUB_FOLDER . $url; } elseif ($page_from && $admin_mode) { $url = $const_url . (strpos($const_url, "?") !== false ? "&" : "?") . "curPos=" . $page_from; } else { // ссылка на первую страницу, curPos не нужен $url = $const_url ? $const_url : $nc_core->url->get_parsed_url('path'); } // replace existing & with & then replace all & to & $url = nc_preg_replace(array("/&/", "/&/"), array("&", "&"), $url); if ($curPos == $page_from) { $array_result[$i] = $browse_msg['active']; } else { $array_result[$i] = $browse_msg['unactive']; } $array_result[$i] = str_replace("%URL", $url, $array_result[$i]); $array_result[$i] = str_replace("%PAGE", $page_number, $array_result[$i]); $array_result[$i] = str_replace("%FROM", $page_from + 1, $array_result[$i]); $array_result[$i] = str_replace("%TO", $page_to, $array_result[$i]); } $result = $browse_msg['prefix']; $result .= join($browse_msg['divider'], $array_result); $result .= $browse_msg['suffix']; return $result; }
function nc_quickbar_in_template_header($buffer, $File_Mode = false, $return_shortpage_update_array = false) { global $MODULE_VARS, $AUTH_USER_ID, $ADMIN_TEMPLATE, $HTTP_ROOT_PATH, $ADMIN_PATH, $perm; global $SUB_FOLDER, $REQUEST_URI, $REQUEST_METHOD, $ADMIN_AUTHTIME; global $current_catalogue, $current_sub, $current_cc, $current_user, $AUTHORIZE_BY; global $inside_admin, $admin_mode, $user_table_mode, $action, $message, $classID; /** @var int $message */ $nc_core = nc_Core::get_object(); if ($inside_admin || !nc_quickbar_permission()) { return $return_shortpage_update_array ? null : $buffer; } if (!$return_shortpage_update_array) { // reversive direction! $buffer = nc_insert_in_head($buffer, nc_js(), $nc_core->get_variable("admin_mode")); } if ($nc_core->modules->get_by_keyword('auth')) { $profile_url = nc_auth_profile_url($AUTH_USER_ID); } if (nc_module_check_by_keyword('routing')) { if ($message) { $view_link = nc_routing::get_object_path($classID, $message, 'full'); } else { $view_link = (string) nc_routing::get_folder_path($current_sub['Subdivision_ID']); if (!$view_link) { if ($current_cc) { $view_link = nc_routing::get_infoblock_path($current_cc['Sub_Class_ID'], $current_cc['DefaultAction']); } else { $view_link = '#'; } } } } else { $view_link = $SUB_FOLDER . ($current_sub['Hidden_URL'] != "/index/" ? $current_sub['Hidden_URL'] : "/") . ($message && $current_cc['EnglishName'] ? $current_cc['EnglishName'] . "_" . $message . ".html" : ""); } if (!$user_table_mode) { $edit_link = $SUB_FOLDER . $HTTP_ROOT_PATH . ($action == "change" ? "message" : $action) . ".php?catalogue=" . $current_catalogue['Catalogue_ID'] . ($current_sub['Subdivision_ID'] ? "&sub=" . $current_sub['Subdivision_ID'] : "") . ($current_cc['Sub_Class_ID'] ? "&cc=" . $current_cc['Sub_Class_ID'] : "") . ($message ? "&message=" . $message : ""); } else { $edit_link = $SUB_FOLDER . $HTTP_ROOT_PATH . "?catalogue=" . $current_catalogue['Catalogue_ID'] . ($current_sub['Subdivision_ID'] ? "&sub=" . $current_sub['Subdivision_ID'] : "") . ($current_cc['Sub_Class_ID'] ? "&cc=" . $current_cc['Sub_Class_ID'] : "") . ($message ? "&message=" . $message : ""); } $admin_link = ""; switch (true) { case $current_cc['System_Table_ID'] == 3 && $message: $admin_link = "#user.edit(" . $message . ")"; break; case $current_cc['Sub_Class_ID'] && $message: $admin_link = "#object.view(" . $current_cc['Sub_Class_ID'] . "," . $message . ")"; break; case $current_cc['Sub_Class_ID']: $admin_link = "#object.list(" . $current_cc['Sub_Class_ID'] . ")"; break; case $current_sub['Subdivision_ID']: $admin_link = "#subclass.list(" . $current_sub['Subdivision_ID'] . ")"; break; case $current_catalogue['Catalogue_ID']: $admin_link = "#site.map(" . $current_catalogue['Catalogue_ID'] . ")"; } $admin_link = $ADMIN_PATH . $admin_link; $sub_admin_limk = $ADMIN_PATH . "subdivision/index.php?phase=5&SubdivisionID={$current_sub['Subdivision_ID']}&view=all"; $template_admin_limk = $ADMIN_PATH . 'template/index.php?phase=4&TemplateID=' . $nc_core->template->get_current('Template_ID'); $sub_class_admin_link = $ADMIN_PATH . "subdivision/SubClass.php?SubdivisionID=" . $current_sub['Subdivision_ID']; $msg_img = $ADMIN_PATH . 'skins/default/img/msg.png'; $pass_admin_link = $ADMIN_PATH . 'user/index.php'; $lock_img = $ADMIN_PATH . 'skins/default/img/lock.png'; $right_img = $ADMIN_PATH . 'skins/default/img/right.png'; if ($return_shortpage_update_array) { return array('view_link' => $view_link, 'edit_link' => $edit_link, 'sub_admin_link' => $sub_admin_limk, 'template_admin_link' => $template_admin_limk, 'admin_link' => $admin_link); } $ANY_SYSTEM_MESSAGE = $nc_core->db->get_var("SELECT COUNT(*) FROM `SystemMessage` WHERE `Checked` = 0"); $lang = $nc_core->lang->detect_lang(1); if ($lang == 'ru') { $lang = $nc_core->NC_UNICODE ? "ru_utf8" : "ru_cp1251"; } if ($nc_core->modules->get_by_keyword('cache')) { $cache_link = $ADMIN_PATH . "#module.cache"; } $PermissionGroup_Name = $nc_core->db->get_col("SELECT PermissionGroup_Name FROM PermissionGroup WHERE PermissionGroup_ID IN (" . join(', ', (array) $current_user['Permission_Group']) . ")"); /*<script type='text/javascript' src='" . $SUB_FOLDER . $ADMIN_PATH . "js/sitemap.js'></script> <script type='text/javascript' src='" . $SUB_FOLDER . $ADMIN_PATH . "js/remind_save.js'></script>*/ //-------------------------------------------------------------------------- // Генерация панели инструментов (navbar) для front-end //-------------------------------------------------------------------------- $navbar = $nc_core->ui->navbar(); $lsDisplayType = $nc_core->get_display_type(); //-------------------------------------------------------------------------- // Просмотр $navbar->quickmenu->add_btn($SUB_FOLDER . $view_link, NETCAT_QUICKBAR_BUTTON_VIEWMODE)->active(!$admin_mode); if ($lsDisplayType != 'longpage_vertical') { // Редактирование $navbar->quickmenu->add_btn($edit_link, NETCAT_QUICKBAR_BUTTON_EDITMODE)->active($admin_mode); //-------------------------------------------------------------------------- // Пункт меню "Ещё" $navbar->more = $navbar->menu->add_btn('#', NETCAT_QUICKBAR_BUTTON_MORE)->submenu(); // echo $SubdivisionID;exit; if (!empty($current_sub['Subdivision_ID']) && $perm->isAccess(NC_PERM_ITEM_SUB, NC_PERM_ACTION_EDIT, $current_sub['Subdivision_ID'], 0)) { $navbar->more->add_btn($sub_admin_limk, NETCAT_QUICKBAR_BUTTON_SUBDIVISION_SETTINGS)->icon('settings')->click('nc_form(this.href); return false'); } if ($perm->isAccess(NC_PERM_TEMPLATE, 0, 0, 0)) { $navbar->more->add_btn($template_admin_limk, NETCAT_QUICKBAR_BUTTON_TEMPLATE_SETTINGS)->icon('dev-templates')->click('nc_form(this.href); return false'); } $navbar->more->add_btn($admin_link, NETCAT_QUICKBAR_BUTTON_ADMIN)->icon('mod-default'); //-------------------------------------------------------------------------- } else { $navbar->quickmenu->add_btn('#', NETCAT_QUICKBAR_BUTTON_EDITMODE)->disabled()->title(NETCAT_QUICKBAR_BUTTON_EDITMODE_UNAVAILABLE_FOR_LONGPAGE)->click('return false')->modificator('default-cursor'); } // AJAX Loader $navbar->tray->add_btn('#')->compact()->icon_large('navbar-loader')->id('nc-navbar-loader')->style('display:none'); // Иконка с сообщениями if ($perm->isAccess(NC_PERM_REPORT)) { $navbar->tray->add_btn($ADMIN_PATH . '#tools.systemmessages')->compact()->title($ANY_SYSTEM_MESSAGE ? BEGINHTML_ALARMON : BEGINHTML_ALARMOFF, true)->icon_large('system-message')->id('trayMessagesIcon')->disabled(!$ANY_SYSTEM_MESSAGE); } // Меню пользователя $logout_link = $MODULE_VARS['auth'] ? $SUB_FOLDER . $HTTP_ROOT_PATH . "modules/auth/?logoff=1&REQUESTED_FROM=" . $REQUEST_URI . "&REQUESTED_BY=" . $REQUEST_METHOD : $ADMIN_PATH . "unauth.php"; $navbar->tray->add_btn('#', $perm->getLogin())->click('return false')->title(BEGINHTML_USER . ': ' . $perm->getLogin())->htext(BEGINHTML_USER)->dropdown()->div(NETCAT_ADMIN_AUTH_PERM . " <span class='nc-text-grey'>" . str_replace('"', '\\"', join(', ', Permission::get_all_permission_names_by_id($AUTH_USER_ID))) . "</span><hr class='nc-hr'>" . $nc_core->ui->btn('#', NETCAT_ADMIN_AUTH_CHANGE_PASS)->click('nc_password_change(); return false')->light()->text_darken()->left() . $nc_core->ui->btn($logout_link, NETCAT_ADMIN_AUTH_LOGOUT)->red()->right())->class_name('nc-padding-10'); //-------------------------------------------------------------------------- // $navbar $navbar_html = (string) $navbar->fixed(); $navbar_html .= "\n<script type='text/javascript'>\n\nvar padding = Math.round(parseInt(jQuery('body').css('padding-top')) + parseInt(jQuery('body').css('margin-top')) + jQuery('div.nc-navbar').height());\njQuery('body').css({marginTop:padding+'px', position:'relative'});\n\njQuery('div.nc-navbar li.nc--dropdown > a').click(function(){\n jQuery(this.parentNode).addClass('nc--clicked');\n return false;\n}).parent().mouseleave(function(){\n var ob = this\n jQuery._navbar_menu_timeout = setTimeout(function(){\n jQuery(ob).removeClass('nc--clicked');\n }, 500);\n}).mouseover(function(){\n if (jQuery(this).hasClass('nc--clicked')) {\n try {clearTimeout(jQuery._navbar_menu_timeout)} catch(e) {};\n }\n}).find('li a').click(function(){\n jQuery('div.nc-navbar li.nc--dropdown').removeClass('nc--clicked');\n jQuery('div.nc-navbar li.nc--clicked').removeClass('nc--clicked');\n});\njQuery('body').click(function(){\n jQuery('div.nc-navbar>ul>li.nc--clicked').removeClass('nc--clicked')\n})\n</script>"; // Содержание модального окна быстрого изменения пароля //TODO: Сделать загрузку содержимого окна через ajax $navbar_html .= "\n<div id='nc_password_change' class='nc-shadow-large nc--hide nc-admin'>\n <form style='width:350px; line-height:20px' class='nc-form' method='post' action='" . $ADMIN_PATH . "user/index.php'>\n <div class='nc-padding-15'>\n <h2 class='nc-h2'>" . NETCAT_ADMIN_AUTH_CHANGE_PASS . "</h2>\n <hr class='nc-hr' style='margin:5px -15px 15px'>\n <div>\n <label>" . CONTROL_USER_NEWPASSWORD . "</label><br>\n <input class='nc--wide' type='password' name='Password1' maxlength='32' placeholder='" . CONTROL_USER_NEWPASSWORD . "' />\n </div>\n <div>\n <label>" . CONTROL_USER_NEWPASSWORDAGAIN . "</label><br>\n <input class='nc--wide' type='password' name='Password2' maxlength='32' placeholder='" . CONTROL_USER_NEWPASSWORDAGAIN . "' />\n </div>\n <input type='hidden' name='UserID' value='" . $AUTH_USER_ID . "' />\n <input type='hidden' name='phase' value='7' />\n " . $nc_core->token->get_input() . "\n </div>\n </form>\n <div class='nc-form-actions'>\n <script type='text/javascript'>function nc_password_change_submit(){jQuery('#nc_password_change form').submit();}</script>\n <button class='nc-btn nc--bordered nc--red nc--right' onclick='jQuery.modal.close()' type='button'>" . CONTROL_BUTTON_CANCEL . "</button>\n <button class='nc_admin_metro_button nc-btn nc--blue nc--right' onclick='nc_password_change_submit()'>" . NETCAT_REMIND_SAVE_SAVE . "</button>\n </div>\n</div>\n<!-- /#nc_password_change -->"; $addon = "<!-- Netcat QuickBar -->\n" . "<script type='text/javascript' src='" . $ADMIN_PATH . "js/classes/nc_cookies.class.js'></script>\n" . "<script type='text/javascript' src='" . $ADMIN_PATH . "js/classes/nc_drag.class.js'></script>\n" . "<script type='text/javascript' src='" . $ADMIN_PATH . "js/lang/" . $lang . ".js?" . $LAST_LOCAL_PATCH . "' charset='" . $nc_core->NC_CHARSET . "'></script>\n <link rel='stylesheet' href='" . $ADMIN_PATH . "/js/codemirror/lib/codemirror.css'>\n <script src='" . $ADMIN_PATH . "js/codemirror/lib/codemirror.js'></script>\n <script src='" . $ADMIN_PATH . "js/codemirror/mode/xml.js'></script>\n <script src='" . $ADMIN_PATH . "js/codemirror/mode/mysql.js'></script>\n <script src='" . $ADMIN_PATH . "js/codemirror/mode/javascript.js'></script>\n <script src='" . $ADMIN_PATH . "js/codemirror/mode/css.js'></script>\n <script src='" . $ADMIN_PATH . "js/codemirror/mode/clike.js'></script>\n <script src='" . $ADMIN_PATH . "js/codemirror/mode/php.js'></script>\n <script type='text/javascript'>\n var nc_token = '" . $nc_core->token->get(+$AUTH_USER_ID) . "';\n </script>\n <script type='text/javascript'>\n jQuery(function () {\n\n function getEditorTypeById(id) {\n if(id == 'Query') {\n return 'text/x-mysql';\n }\n return 'text/x-php';\n }\n\n if(true){\n\n window.CMEditors = [];\n\n function createCMEditor(ind, el) {\n var init = true;\n return function () {\n if(init) {\n var h = jQuery(el).height();\n window.CMEditors[ind] = CodeMirror.fromTextArea(el,{\n lineNumbers: true,\n mode: getEditorTypeById(jQuery(el).attr('id')),\n indentUnit: 4\n });\n window.CMEditors[ind].id = jQuery(el).attr('id');\n var scrollEl = jQuery(window.CMEditors[ind].getScrollerElement());\n scrollEl.height(h);\n }\n else {\n var h = jQuery(window.CMEditors[ind].getScrollerElement()).height();\n window.CMEditors[ind].toTextArea();\n jQuery(el).height(h);\n }\n init = !init;\n }\n }\n\n jQuery('textarea').each(function (ind, el) {\n return null;\n var prev0 = jQuery(el).prev(), prev = prev0.prev(), prevPrev = prev.prev(),\n prev0F = prev0.filter('div.resize_block').children(), prevF = prev.filter('div.resize_block').children(), prevPrevF = prevPrev.filter('div.resize_block').children();\n prevF.add(prev0F).add(prevPrevF).each(function (i, e) {\n jQuery(e).bind('click', function () {\n var idd = jQuery(this).attr('href').substr(1);\n for(var k in window.CMEditors) {\n if(window.CMEditors[k].id == idd) {\n var scrollEl = jQuery(window.CMEditors[k].getScrollerElement());\n if(jQuery(this).hasClass('textarea_shrink')) {\n scrollEl.height(scrollEl.height() + 20);\n }\n else if(scrollEl.height() > 120) {\n scrollEl.height(scrollEl.height() - 20);\n }\n break;\n }\n }\n });\n });\n jQuery(el).after(jQuery('<input>').attr({type: 'checkbox', id: 'cmtext'+ind})\n .click(createCMEditor(ind, el))\n .after(jQuery('<label>').attr('for', 'cmtext'+ind).html(' " . NETCAT_SETTINGS_CODEMIRROR_SWITCH . "')));\n });\n }\n });\n jQuery('body').attr('style', 'overflow-y: auto;');\n </script>\n <!-- для диалога генерации альтернативных форм -->\n <script type='text/javascript'>\n var SUB_FOLDER = '" . $SUB_FOLDER . "';\n var NETCAT_PATH = '" . $SUB_FOLDER . $HTTP_ROOT_PATH . "';\n var ADMIN_PATH = '" . $ADMIN_PATH . "';\n var ADMIN_LANG = '" . MAIN_LANG . "';\n var NC_CHARSET = '" . $nc_core->NC_CHARSET . "';\n var ICON_PATH = '" . $ADMIN_TEMPLATE . " + img/';\n var NETCAT_REMIND_SAVE_TEXT = '" . NETCAT_REMIND_SAVE_TEXT . "';\n </script>" . "<script>\n function showhide(val, val2) {\n var obj=document.getElementById(val)\n var obj2=document.getElementById(val2)\n obj.className=(obj.className=='show_add')? 'hide_add': 'show_add'\n obj2.className=(obj2.className=='blue')? 'white': 'blue'\n }\n </script>"; $addon .= $navbar_html; if ($File_Mode) { $addon = str_replace("\\\"", "\"", $addon); } switch (true) { case nc_preg_match("/\\<\\s*?frameset.*?\\>/im", $buffer): break; case nc_preg_match("/\\<\\s*?body.*?\\>/im", $buffer): $preg_pattern = "/(\\<\\s*?body.*?\\>){1}/im"; $preg_replacement = "\$1\n" . $addon; break; case nc_preg_match("/\\<\\s*?html\\s*?\\>/im", $buffer): $preg_pattern = "/(\\<\\s*?html\\s*?\\>){1}/im"; $preg_replacement = "\$1\n<body>" . $addon . "</body>"; break; } if ($preg_pattern && $preg_replacement) { $buffer = nc_preg_replace($preg_pattern, $preg_replacement, $buffer); } return $buffer; }
/** * Возвращает путь к объекту. * * @param int $component_id * @param int $object_id * @param string $action full|edit|delete|drop|checked|subscribe * @param string $format html|rss|xml * @param bool $add_date Если true и у компонента есть поле формата event, добавляет дату к пути * @param array $variables * @param bool $add_domain (недокументировано, существует для оптимизации — используйте nc_object_url()) * Если TRUE, возвращает URL с именем домена * @return string|nc_routing_path|false */ function nc_object_path($component_id, $object_id, $action = 'full', $format = 'html', $add_date = false, array $variables = null, $add_domain = false) { if (!$action) { $action = 'full'; } if (nc_module_check_by_keyword('routing')) { return nc_routing::get_object_path($component_id, $object_id, $action, $format, $add_date, $variables, $add_domain); } else { $object_id = (int) $object_id; $component_id = (int) $component_id; if (!$object_id || !$component_id) { return false; } $db = nc_db(); $nc_core = nc_core::get_object(); $date_field = false; if ($add_date) { $date_field = $nc_core->get_component($component_id)->get_date_field(); } // основной запрос для построения пути list($site_id, $object_path) = $db->get_row("SELECT sub.`Catalogue_ID`,\n CONCAT(\n sub.`Hidden_URL`, " . ($add_date && $date_field ? "DATE_FORMAT(`" . $db->escape($date_field) . "`, '%Y/%m/%d/'), " : "") . ($action && $action != 'full' ? "'" . $db->escape($action) . "_', " : "") . "\n IF(m.`Keyword` <> '', m.`Keyword`, CONCAT(cc.`EnglishName`, '_', m.`Message_ID`)),\n '." . $db->escape($format) . "'\n )\n FROM `Message{$component_id}` AS m\n LEFT JOIN `Subdivision` AS sub\n ON m.`Subdivision_ID` = sub.`Subdivision_ID`\n LEFT JOIN `Sub_Class` AS cc\n ON m.`Sub_Class_ID` = cc.`Sub_Class_ID`\n WHERE m.`Message_ID` = {$object_id}", ARRAY_N); if (!$object_path) { return false; } $object_path = $nc_core->SUB_FOLDER . $object_path . nc_array_to_url_query($variables); if ($add_domain) { $object_path = "//" . $nc_core->catalogue->get_by_id($site_id, 'Domain') . $object_path; } return $object_path; } }
public function delete_site($site_id) { nc_routing::get_routes($site_id, true)->each('delete'); }
/** * Формирование ссылки "просмотр раздела" внутри админки с учётом ExternalURL * (дерево слева, карта сайта, избранные разделы) * * @param array $data массив с данными по разделу из Subdivision * @param bool $sid_off принудительно выключить id сессии * @return string */ function nc_subdivision_preview_link($data, $sid_off = false) { global $DOMAIN_NAME, $SUB_FOLDER; if (!is_array($data)) { if (is_object($data)) { $data = (array) $data; } else { return false; } } if (!array_key_exists("Hidden_URL", $data)) { return false; } if ($data['ExternalURL']) { $result = strchr($data['ExternalURL'], ":") ? $data['ExternalURL'] : "http://" . ($data['Domain'] ? $data['Domain'] : $DOMAIN_NAME) . $SUB_FOLDER . (!preg_match("/^\\/.*\$/", $data['ExternalURL']) ? $data['Hidden_URL'] . $data['ExternalURL'] : $data['ExternalURL']); } else { if (nc_module_check_by_keyword('routing')) { $result = "http://" . ($data['Domain'] ? $data['Domain'] : $DOMAIN_NAME) . nc_routing::get_folder_path($data['Subdivision_ID']); } else { $result = "http://" . ($data['Domain'] ? $data['Domain'] : $DOMAIN_NAME) . $SUB_FOLDER . $data['Hidden_URL']; } } if (!$sid_off) { $sid_suffix = session_id() ? "?" . session_name() . "=" . session_id() : ""; if (isset($_GET[session_name()])) { $result .= $sid_suffix; } } return $result; }
<?php require_once dirname(__FILE__) . "/nc_routing.class.php"; nc_routing::init();
if ($routing_canonical_request['resource_type'] == 'object') { // Для объектов в качестве основного пути могут использоваться пути без даты $routing_canonical_request['date_is_optional'] = true; // Для объектов проверить наличие и значение поля типа event/event_date if (!$routing_canonical_request['date']) { try { $routing_object_component_id = (int) $nc_core->sub_class->get_by_id($routing_canonical_request['infoblock_id'], 'Class_ID'); $routing_object_date_field = $nc_core->get_component($routing_object_component_id)->get_date_field(); if ($routing_object_date_field) { $routing_canonical_request['date'] = $db->get_var("SELECT DATE_FORMAT(`{$routing_object_date_field}`, '%Y-%m-%d')\n FROM `Message{$routing_object_component_id}`\n WHERE `Message_ID` = " . (int) $routing_canonical_request['object_id']); } } catch (Exception $e) { } } } $routing_canonical_path = (string) nc_routing::get_resource_path($routing_canonical_request['resource_type'], $routing_canonical_request); if (parse_url($routing_canonical_path, PHP_URL_PATH) != $nc_core->SUB_FOLDER . $nc_core->url->get_parsed_url('path')) { // найден альтернативный путь if ($_SERVER['REQUEST_METHOD'] == 'GET' && $routing_duplicate_route_action == nc_routing::DUPLICATE_ROUTE_REDIRECT) { $routing_result['redirect_to_url'] = $routing_canonical_path; } else { $nc_core->page->set_canonical_link($routing_canonical_path); } } unset($routing_canonical_path, $routing_canonical_request, $routing_duplicate_route_action, $routing_object_component_id, $routing_object_date_field); } } if ($routing_result === false) { // Страница не найдена $page_not_found = true; } else {
function nc_browse_cc($browse_template) { global $db; global $admin_mode, $admin_url_prefix; global $current_cc, $current_sub; global $cc_in_sub, $cc_array, $cc_keyword, $use_multi_sub_class; global $REQUEST_URI, $SUB_FOLDER; // this happens when non-existent sub requested in admin mode if (!$current_sub["Subdivision_ID"]) { return ""; } // cache section if (nc_module_check_by_keyword("cache") && $current_cc['Cache_Access_ID'] == 1 && $browse_template['nocache'] != true) { $nc_cache_browse = nc_cache_browse::getObject(); try { // check cached data $cached_data = $nc_cache_browse->read($current_cc, $browse_template, $REQUEST_URI, $current_cc['Cache_Lifetime']); if ($cached_data != -1) { // debug info $cache_debug_info = "Read, catalogue[" . $current_cc['Catalogue_ID'] . "], sub[" . $current_cc['Subdivision_ID'] . "], cc[" . $current_cc['Sub_Class_ID'] . "], Access_ID[" . $current_cc['Cache_Access_ID'] . "], Lifetime[" . $current_cc['Cache_Lifetime'] . "], bytes[" . strlen($cached_data) . "]"; $nc_cache_browse->debugMessage($cache_debug_info, __FILE__, __LINE__); // return cache return $cached_data; } } catch (Exception $e) { // for debug $nc_cache_browse->errorMessage($e); } } $sort_by = $browse_template['sortby'] ? $browse_template['sortby'] : "`Priority`"; if (!$admin_mode) { $check_cond = " AND `Checked` = 1"; } else { $check_cond = ""; } // cc_in_sub has all templates in sub $data = array(); if ($sort_by == 'Priority' && $GLOBALS['sub'] == $current_sub["Subdivision_ID"]) { foreach ((array) $cc_in_sub as $row) { if ($admin_mode || $row["Checked"] == 1) { $data[] = $row; } } } if (empty($data)) { $data = $db->get_results("SELECT `Sub_Class_ID`, `Sub_Class_Name`, `EnglishName`\n FROM `Sub_Class`\n WHERE `Subdivision_ID` = '" . $current_sub["Subdivision_ID"] . "'" . $check_cond . " ORDER BY " . $sort_by, ARRAY_A); } $data_count = sizeof($data); if (!$data_count || $data_count < 2) { return null; } $result = $browse_template['prefix']; $array_result = array(); $routing_module_enabled = nc_module_check_by_keyword('routing'); $current_page_url = urldecode(strtok($REQUEST_URI, '?')); for ($i = 0; $i < $data_count; $i++) { $nav_name = $data[$i]["Sub_Class_Name"]; if ($admin_mode) { $nav_url = $admin_url_prefix . "?catalogue=" . $current_sub["Catalogue_ID"] . "&sub=" . $current_sub["Subdivision_ID"] . "&cc=" . $data[$i]["Sub_Class_ID"]; } else { if ($routing_module_enabled) { $nav_url = nc_routing::get_infoblock_path($data[$i]["Sub_Class_ID"]); } else { $nav_url = $SUB_FOLDER . $current_sub["Hidden_URL"] . $data[$i]["EnglishName"] . ".html"; } } if ($data[$i]["Sub_Class_ID"] == $current_cc["Sub_Class_ID"] && ($cc_keyword || !$use_multi_sub_class)) { if ($browse_template['active_link'] && ($nav_url == $REQUEST_URI || $nav_url == $current_page_url || $SUB_FOLDER . $current_sub['Hidden_URL'] . $current_cc['EnglishName'] . ".html" == $current_page_url)) { $current_template = $browse_template['active_link']; } else { $current_template = $browse_template['active']; } $array_result[$i] = $current_template; } else { $array_result[$i] = $browse_template['unactive']; } $array_result[$i] = str_replace("%NAME", $nav_name, $array_result[$i]); $array_result[$i] = str_replace("%URL", $nav_url, $array_result[$i]); } $result .= join($browse_template['divider'], $array_result); $result .= $browse_template['suffix']; // cache section if (nc_module_check_by_keyword("cache") && $current_cc['Cache_Access_ID'] == 1 && is_object($nc_cache_browse) && $browse_template['nocache'] != true) { try { $bytes = $nc_cache_browse->add($current_cc, $browse_template, $REQUEST_URI, $result); // debug info if ($bytes) { $cache_debug_info = "Written, catalogue[" . $current_cc['Catalogue_ID'] . "], sub[" . $current_cc['Subdivision_ID'] . "], cc[" . $current_cc['Sub_Class_ID'] . "], Access_ID[" . $current_cc['Cache_Access_ID'] . "], Lifetime[" . $current_cc['Cache_Lifetime'] . "], bytes[" . $bytes . "]"; $nc_cache_browse->debugMessage($cache_debug_info, __FILE__, __LINE__, "ok"); } } catch (Exception $e) { // for debug $nc_cache_browse->errorMessage($e); } } return $result; }
/** * @param nc_url|string $url Объект nc_url или строка * @param string $method GET|POST * @param int|null $site_id Если null — текущий сайт * @return array|false Массив с информацией об объекте, на который ссылается путь, * или FALSE. * array( * resource_type => folder|infoblock|object|script * site_id => идентификатор сайта * folder_id => идентификатор раздела * infoblock_id => [идентификатор инфоблока] * object_id => идентификатор объекта в инфоблоке * action => действие над инфоблоком или объектом * format => html|rss|xml * variables => массив с дополнительными переменными (только для модуля маршрутизации) * date => дата в пути * script_path => путь к скрипту от папки DOCUMENT_ROOT/SUB_FOLDER (только для модуля маршрутизации для resource_type=script) * redirect_to_url => при запросе всегда будет выполняться переадресация * ) */ function nc_resolve_url($url, $method = null, $site_id = null) { $nc_core = nc_core::get_object(); $routing_module_enabled = nc_module_check_by_keyword('routing'); // --- Приведение параметра $url к nc_url --- if (!$url instanceof nc_url) { $url = new nc_url($url); } else { if (!$routing_module_enabled) { // Создадим клон $url, так как в процессе работы будут изменяться свойства этого объекта $url = clone $url; } } // --- Определение сайта --- if (!$site_id) { $site_settings = $nc_core->catalogue->get_by_host_name($url->get_parsed_url('host')); if (isset($site_settings['Catalogue_ID'])) { $site_id = $site_settings['Catalogue_ID']; } else { $site_id = $nc_core->catalogue->id(); } } if (!$site_id) { return false; } // --- Использование модуля маршрутизации --- if ($routing_module_enabled) { $result = nc_routing::resolve(new nc_routing_request($site_id, $method, $url->get_parsed_url())); if ($result) { $result = $result->to_array(); $result['site_id'] = $site_id; return $result; } else { return false; } } // --- «Классическая» маршрутизация --- $result = array('resource_type' => 'folder', 'site_id' => $site_id, 'folder_id' => null, 'infoblock_id' => null, 'object_id' => null, 'action' => null, 'format' => 'html', 'variables' => array(), 'date' => null, 'redirect_to_url' => null); // Инициализация переменных $component_id = 0; $default_action = null; $page_not_found = false; // Имя «файла» $req_file = strrchr($url->get_parsed_url('path'), '/'); // Определяем раздел по пути $result['folder_id'] = $nc_core->subdivision->get_by_uri($url->get_parsed_url('path'), $site_id, 'Subdivision_ID', true, true); // Если раздел не найден, дальнейшая обработка адреса не имеет смысла, // так как мы в любом случае должны вернуть FALSE if (!$result['folder_id']) { return false; } $file_name = ''; $file_extension = ''; $uri_date = $url->get_uri_date(); if ($req_file != '/') { $req_file = substr($req_file, 1); if (strpos($req_file, '.')) { $req_file_parts = explode(".", $req_file); $file_name = $req_file_parts[0]; $file_extension = strtolower($req_file_parts[count($req_file_parts) - 1]); } if (in_array($file_extension, array('html', 'rss', 'xml'))) { // name without extension $url->set_parsed_url_item('path', substr($url->get_parsed_url('path'), 0, strlen($url->get_parsed_url('path')) - strlen($req_file))); } else { // append trailing slash $url->set_parsed_url_item('path', rtrim($url->get_parsed_url('path'), "/") . "/"); } // Адрес имеет расширение (.html, .rss, .xml) — это адрес объекта или инфоблока if (in_array($file_extension, array('html', 'rss', 'xml'))) { $result['format'] = $file_extension; $infoblocks_in_folder = $nc_core->sub_class->get_by_subdivision_id($result['folder_id']); // keyword.html — совпадение по ключевому слову объекта if (nc_preg_match("/^([_a-zа-я0-9-]+)\$/i", $file_name, $regs)) { if (!empty($infoblocks_in_folder)) { foreach ($infoblocks_in_folder as $infoblock_settings) { if ($file_extension == 'rss' && !$infoblock_settings['AllowRSS']) { continue; } if ($file_extension == 'xml' && !$infoblock_settings['AllowXML']) { continue; } // Находим объект, подходящий под имеющиеся параметры if ($object_id = ObjectExists($infoblock_settings['Class_ID'], $infoblock_settings['sysTbl'], $infoblock_settings['Sub_Class_ID'], $file_name, $uri_date)) { $component_id = $infoblock_settings['Class_ID']; $result['resource_type'] = 'object'; $result['infoblock_id'] = $_db_cc = $infoblock_settings['Sub_Class_ID']; $result['object_id'] = $object_id; $result['action'] = 'full'; break; } } } } // news.html — ключевое слово компонента, при условии, что нет такого объекта if (!$result['object_id'] && nc_preg_match("/^([a-zа-я0-9-]+)\$/i", $file_name, $regs)) { if (!empty($infoblocks_in_folder)) { foreach ($infoblocks_in_folder as $infoblock_settings) { if ($infoblock_settings['EnglishName'] == $regs[1]) { if ($file_extension == 'rss' && !$infoblock_settings['AllowRSS']) { continue; } if ($file_extension == 'xml' && !$infoblock_settings['AllowXML']) { continue; } $result['resource_type'] = 'infoblock'; $result['infoblock_id'] = $_db_cc = $infoblock_settings['Sub_Class_ID']; // action может быть задан в get'e или post'e if (!$result['action']) { $result['action'] = $infoblock_settings['DefaultAction']; } break; } } } } // add_news.html, search_news.html, subscribe_news.html — добавление, поиск, подписка в компоненте if (nc_preg_match("/^(add|search|subscribe)_((?i:[a-zа-я0-9-]+))\$/", $file_name, $regs)) { if (!empty($infoblocks_in_folder)) { foreach ($infoblocks_in_folder as $infoblock_settings) { if ($infoblock_settings['EnglishName'] != $regs[2]) { continue; } $result['resource_type'] = 'infoblock'; $result['infoblock_id'] = $_db_cc = $infoblock_settings['Sub_Class_ID']; $result['action'] = $regs[1]; break; } } } // news_5.html — отображение объекта по компоненту и идентификатору if (nc_preg_match("/^([a-zа-я0-9-]+)_([0-9]+)\$/i", $file_name, $regs) && $file_name == $regs[1] . "_" . $regs[2]) { if (!empty($infoblocks_in_folder)) { foreach ($infoblocks_in_folder as $infoblock_settings) { // check component in sub keyword if ($infoblock_settings['EnglishName'] != $regs[1]) { continue; } if ($file_extension == 'rss' && !$infoblock_settings['AllowRSS']) { continue; } if ($file_extension == 'xml' && !$infoblock_settings['AllowXML']) { continue; } // find message with requested params if ($object_id = ObjectExistsByID($infoblock_settings['Class_ID'], $infoblock_settings['sysTbl'], $regs[2], $uri_date)) { $component_id = $infoblock_settings['Class_ID']; $result['resource_type'] = 'object'; $result['infoblock_id'] = $_db_cc = $infoblock_settings['Sub_Class_ID']; $result['object_id'] = $object_id; $result['action'] = 'full'; break; } } } } // edit_object.html — изменение объекта по ДЕЙСТВИЮ и КЛЮЧЕВОМУ СЛОВУ, при условии, что нет объекта по компоненту и идентификатору if (!$result['object_id'] && nc_preg_match("/^(edit|delete|drop|checked|subscribe)_((?i:[_a-zа-я0-9-]+))\$/", $file_name, $regs)) { if (!empty($infoblocks_in_folder)) { foreach ($infoblocks_in_folder as $infoblock_settings) { // find message with need params if ($object_id = ObjectExists($infoblock_settings['Class_ID'], $infoblock_settings['sysTbl'], $infoblock_settings['Sub_Class_ID'], $regs[2])) { $component_id = $infoblock_settings['Class_ID']; $result['resource_type'] = 'object'; $result['infoblock_id'] = $_db_cc = $infoblock_settings['Sub_Class_ID']; $result['object_id'] = $object_id; $result['action'] = $regs[1]; break; } } } } // edit_news_5.html — изменение объекта по действию, компоненту и идентификатору объекта if (nc_preg_match("/^(edit|delete|drop|checked|subscribe)_((?i:[_a-zа-я0-9-]+))_([0-9]+)\$/", $file_name, $regs)) { if (!empty($infoblocks_in_folder)) { foreach ($infoblocks_in_folder as $infoblock_settings) { // check component in sub keyword if ($infoblock_settings['EnglishName'] != $regs[2]) { continue; } // find message with need params if ($object_id = ObjectExistsByID($infoblock_settings['Class_ID'], $infoblock_settings['sysTbl'], $regs[3])) { $component_id = $infoblock_settings['Class_ID']; $result['resource_type'] = 'object'; $result['infoblock_id'] = $_db_cc = $infoblock_settings['Sub_Class_ID']; $result['object_id'] = $object_id; $result['action'] = $regs[1]; break; } } } } } else { // У «файла» нет расширения, либо нестандартное расширение // Добавить "/" и сделать переадресацию $result['redirect_to_url'] = $url->source_url() . ($url->get_parsed_url('query') ? "?" . $url->get_parsed_url('query') : "") . ($url->get_parsed_url('fragment') ? "#" . $url->get_parsed_url('fragment') : ""); } } // Для разделов установить ID первого инфоблока if ($result['resource_type'] == 'folder' && !$file_name && $result['folder_id']) { if (empty($infoblocks_in_folder)) { $infoblocks_in_folder = $nc_core->sub_class->get_by_subdivision_id($result['folder_id']); } foreach ((array) $infoblocks_in_folder as $infoblock_settings) { if ($infoblock_settings['Checked'] || $infoblock_settings['sysTbl'] == 3) { $component_id = $infoblock_settings['Class_ID']; if ($uri_date && !$nc_core->get_component($component_id)->get_date_field()) { continue; } $result['infoblock_id'] = $infoblock_settings['Sub_Class_ID']; if (!$result['action']) { $result['action'] = $infoblock_settings['DefaultAction']; } break; } } } // Если есть «имя файла», но не определён по крайней мере ID инфоблока, то это неправильный путь if ($file_name && !$result['infoblock_id']) { $page_not_found = true; } // Дата в пути if (!$page_not_found && $uri_date) { if (!$result['infoblock_id'] || $result['infoblock_id'] && !$nc_core->get_component($component_id)->get_date_field()) { // if there is a date in URI segments and no "event" field in the corresponding component, it is an incorrect path $page_not_found = true; } else { $result['date'] = $uri_date; } } return $page_not_found ? false : $result; }
protected function make_subdivision_url(array $row) { $url = ''; if ($this->nc_core->admin_mode) { $url = $this->nc_core->SUB_FOLDER . $this->nc_core->HTTP_ROOT_PATH . '?catalogue=' . $this->site_id . '&sub=' . $row['Subdivision_ID']; } else { if ($row['ExternalURL']) { // Абсолютный путь: http://… или /… if (preg_match('@^(\\w{2,}://|/)@u', $row['ExternalURL'])) { $url = $row['ExternalURL']; } else { $url = $this->nc_core->SUB_FOLDER . $row['Hidden_URL'] . $row['ExternalURL']; } } elseif ($this->routing_module_enabled) { $url = nc_routing::get_folder_path($row['Subdivision_ID']); } else { $url = $this->nc_core->SUB_FOLDER . $row['Hidden_URL']; } } return $url; }
$nc_prev_object = $admin_url_prefix . "full.php?catalogue=" . $catalogue . "&sub=" . $sub . "&cc=" . $cc . "&message=" . $nc_res[$i - 1]['Message_ID']; } else { if ($routing_module_enabled) { $nc_prev_object = nc_routing::get_object_path($classID, array('site_id' => $catalogue, 'folder' => $cc_env['Hidden_URL'], 'folder_id' => $sub, 'infoblock_id' => $nc_res[$i - 1]['Sub_Class_ID'], 'object_id' => $nc_res[$i - 1]['Message_ID'], 'object_keyword' => $nc_res[$i - 1]['Keyword'])); } else { $nc_prev_object = $cc_env['Hidden_URL'] . ($nc_res[$i - 1]['Keyword'] ? $nc_res[$i - 1]['Keyword'] : $cc_env['EnglishName'] . "_" . $nc_res[$i - 1]['Message_ID']) . ".html"; } } } // следующий объект if ($i < $db->num_rows - 1) { if ($admin_mode) { $nc_next_object = $admin_url_prefix . "full.php?catalogue=" . $catalogue . "&sub=" . $sub . "&cc=" . $cc . "&message=" . $nc_res[$i + 1]['Message_ID']; } else { if ($routing_module_enabled) { $nc_next_object = nc_routing::get_object_path($classID, array('site_id' => $catalogue, 'folder' => $cc_env['Hidden_URL'], 'folder_id' => $sub, 'infoblock_id' => $nc_res[$i + 1]['Sub_Class_ID'], 'object_id' => $nc_res[$i + 1]['Message_ID'], 'object_keyword' => $nc_res[$i + 1]['Keyword'])); } else { $nc_next_object = $cc_env['Hidden_URL'] . ($nc_res[$i + 1]['Keyword'] ? $nc_res[$i + 1]['Keyword'] : $cc_env['EnglishName'] . "_" . $nc_res[$i + 1]['Message_ID']) . ".html"; } } } break; } } unset($nc_res); } // add form from the AddTemplate if (nc_strpos($component_body, '$addForm') !== false) { if ($cc_env['File_Mode']) { $nc_parent_field_path = $file_class->get_parent_fiend_path('AddTemplate'); $nc_field_path = $file_class->get_field_path('AddTemplate');
function nc_subclass_show_export($type, $sub_id, $cc_id, $show_name = 0, $from_sub = 0) { $nc_core = nc_Core::get_object(); $db = $nc_core->db; $sub_id = +$sub_id; $cc_id = +$cc_id; if (!in_array($type, array('rss', 'xml'))) { return; } $Array = $db->get_row("SELECT `Allow" . strtoupper($type) . "`, `Sub_Class_Name`,`Class_ID`, `EnglishName` FROM `Sub_Class` WHERE `Sub_Class_ID` = '" . $cc_id . "' ", ARRAY_A); $class_id = $Array['Class_ID']; $name = $show_name ? "<b>" . $Array['Sub_Class_Name'] . "</b> " : ""; $export_class_id = $db->get_var("SELECT `Class_ID` FROM `Class` WHERE `Type` = '" . $type . "' AND `ClassTemplate` = '" . $class_id . "' "); $File_Mode = nc_get_file_mode('Class', $class_id); $html = "<div>"; if (!$export_class_id) { $html .= "<font>" . sprintf(constant("CONTROL_CLASS_COMPONENT_TEMPLATE_FOR_" . strtoupper($type) . "_DOESNT_EXIST"), $name) . "</font>"; $html .= "<br/>"; $html .= "<a onClick='parent.nc_form(this.href); location.reload(); return false;' href='" . $nc_core->ADMIN_PATH . "class/index.php?fs={$File_Mode}&" . $nc_core->token->get_url() . "&from_sub=" . $sub_id . ($from_sub ? "" : "&from_cc=" . $cc_id) . "&Type=" . $type . "&base=auto&phase=1411&ClassID=" . $class_id . "'>" . constant("CONTROL_CLASS_COMPONENT_TEMPLATE_CREATE_FOR_" . strtoupper($type)) . "</a>"; } else { $host = $nc_core->catalogue->get_by_id($nc_core->sub_class->get_by_id($cc_id, 'Catalogue_ID'), 'Domain'); if (nc_module_check_by_keyword('routing')) { $link = "http://{$host}" . nc_routing::get_infoblock_path($cc_id, 'index', $type); } else { $link = $nc_core->SUB_FOLDER . $db->get_var("SELECT `Hidden_URL` FROM `Subdivision` WHERE `Subdivision_ID` = '" . $sub_id . "' "); $link = 'http://' . $host . $link . $Array['EnglishName'] . "." . $type; } $html .= "<input type='checkbox' id='Allow" . strtoupper($type) . "" . $cc_id . "' name='Allow" . strtoupper($type) . "" . $cc_id . "' value='1' " . ($Array["Allow" . strtoupper($type) . ""] ? " checked" : "") . " /><label for='Allow" . strtoupper($type) . "" . $cc_id . "'>" . constant("CONTROL_CLASS_COMPONENT_TEMPLATE_TURN_ON_" . strtoupper($type)) . " " . $name . "</label>"; $html .= " ( "; if ($Array["Allow" . strtoupper($type) . ""]) { $html .= "<a target='_blank' href='" . $link . "'>" . CONTROL_CLASS_COMPONENT_TEMPLATE_VIEW . "</a>, "; } $html .= " <a onClick='parent.nc_form(this.href); return false; ' href='" . $nc_core->ADMIN_PATH . "class/index.php?fs=" . $File_Mode . "&phase=4&ClassID=" . $export_class_id . "'>" . CONTROL_CLASS_COMPONENT_TEMPLATE_EDIT . "</a> )"; } $html .= "</div>"; return $html; }