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