/** * @package Joomla.Administrator * @subpackage Weblinks * * @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Routing class from com_weblinks * * @since 3.3 */ class WeblinksRouter extends JComponentRouterBase { /** * Build the route for the com_weblinks component * * @param array &$query An array of URL arguments * * @return array The URL arguments to use to assemble the subsequent URL. * * @since 3.3 */ public function build(&$query) { $segments = array(); // Get a menu item based on Itemid or currently active $app = JFactory::getApplication(); $menu = $app->getMenu(); $params = JComponentHelper::getParams('com_weblinks'); $advanced = $params->get('sef_advanced_link', 0); // We need a menu item. Either the one specified in the query, or the current active one if none specified if (empty($query['Itemid'])) { $menuItem = $menu->getActive(); } else { $menuItem = $menu->getItem($query['Itemid']); } $mView = (empty($menuItem->query['view'])) ? null : $menuItem->query['view']; $mId = (empty($menuItem->query['id'])) ? null : $menuItem->query['id']; if (isset($query['view'])) { $view = $query['view']; if (empty($query['Itemid']) || empty($menuItem) || $menuItem->component != 'com_weblinks') { $segments[] = $query['view']; } // We need to keep the view for forms since they never have their own menu item if ($view != 'form') { unset($query['view']); } } // Are we dealing with an weblink that is attached to a menu item? if (isset($query['view']) && ($mView == $query['view']) and (isset($query['id'])) and ($mId == (int) $query['id'])) { unset($query['view']); unset($query['catid']); unset($query['id']); return $segments; } if (isset($view) and ($view == 'category' or $view == 'weblink')) { if ($mId != (int) $query['id'] || $mView != $view) { if ($view == 'weblink' && isset($query['catid'])) { $catid = $query['catid']; } elseif (isset($query['id'])) { $catid = $query['id']; } $menuCatid = $mId; $categories = JCategories::getInstance('Weblinks'); $category = $categories->get($catid); if ($category) { // TODO Throw error that the category either not exists or is unpublished $path = $category->getPath(); $path = array_reverse($path); $array = array(); foreach ($path as $id) { if ((int) $id == (int) $menuCatid) { break; } if ($advanced) { list($tmp, $id) = explode(':', $id, 2); } $array[] = $id; } $segments = array_merge($segments, array_reverse($array)); } if ($view == 'weblink') { if ($advanced) { list($tmp, $id) = explode(':', $query['id'], 2); } else { $id = $query['id']; } $segments[] = $id; } } unset($query['id']); unset($query['catid']); } if (isset($query['layout'])) { if (!empty($query['Itemid']) && isset($menuItem->query['layout'])) { if ($query['layout'] == $menuItem->query['layout']) { unset($query['layout']); } } else { if ($query['layout'] == 'default') { unset($query['layout']); } } } $total = count($segments); for ($i = 0; $i < $total; $i++) { $segments[$i] = str_replace(':', '-', $segments[$i]); } return $segments; } /** * Parse the segments of a URL. * * @param array &$segments The segments of the URL to parse. * * @return array The URL attributes to be used by the application. * * @since 3.3 */ public function parse(&$segments) { $total = count($segments); $vars = array(); for ($i = 0; $i < $total; $i++) { $segments[$i] = preg_replace('/-/', ':', $segments[$i], 1); } // Get the active menu item. $app = JFactory::getApplication(); $menu = $app->getMenu(); $item = $menu->getActive(); $params = JComponentHelper::getParams('com_weblinks'); $advanced = $params->get('sef_advanced_link', 0); // Count route segments $count = count($segments); // Standard routing for weblinks. if (!isset($item)) { $vars['view'] = $segments[0]; $vars['id'] = $segments[$count - 1]; return $vars; } // From the categories view, we can only jump to a category. $id = (isset($item->query['id']) && $item->query['id'] > 1) ? $item->query['id'] : 'root'; $category = JCategories::getInstance('Weblinks')->get($id); $categories = $category->getChildren(); $found = 0; foreach ($segments as $segment) { foreach ($categories as $category) { if (($category->slug == $segment) || ($advanced && $category->alias == str_replace(':', '-', $segment))) { $vars['id'] = $category->id; $vars['view'] = 'category'; $categories = $category->getChildren(); $found = 1; break; } } if ($found == 0) { if ($advanced) { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select($db->quoteName('id')) ->from('#__weblinks') ->where($db->quoteName('catid') . ' = ' . (int) $vars['catid']) ->where($db->quoteName('alias') . ' = ' . $db->quote(str_replace(':', '-', $segment))); $db->setQuery($query); $id = $db->loadResult(); } else { $id = $segment; } $vars['id'] = $id; $vars['view'] = 'weblink'; break; } $found = 0; } return $vars; } } /** * Weblinks router functions * * @param array &$query An array of URL arguments * * @return array The URL arguments to use to assemble the subsequent URL. * * Note. These functions are proxies for the new router interface * for old SEF extensions. * * @deprecated 4.0 Use Class based routers instead */ function WeblinksBuildRoute(&$query) { $router = new WeblinksRouter; return $router->build($query); } /** * Weblinks router functions * * @param array $segments The segments of the URL to parse. * * @return array The URL attributes to be used by the application. * * Note. These functions are proxies for the new router interface * for old SEF extensions. * * @deprecated 4.0 Use Class based routers instead */ function WeblinksParseRoute($segments) { $router = new WeblinksRouter; return $router->parse($segments); } Тротуарная плитка, укладка в СПб и Лен обл

Задать вопрос

Задать вопрос

Ваше сообщение отправлено!

Тротуарная плитка, укладка в СПб и Лен обл

Тротуарная плитка, брусчатка, укладка и мощение в СПб и Лен обл от производителя: ПИТЕРПЛИТ- производство тротуарной плитки, предоставление сопутствующих услуг. Варианты укладки, расчёт тротуарной плитки, разработка вариантов дизайна, фото выполненных работ дачных дорожек, укладка дачных дорожек, площадка под автомобиль, благоустройство участка у коттеджа или загородного дома тротуарной плиткой или брусчаткой...Наша компания сэкономит Ваше время, и предлагает услугу "Специалист - бесплатно"*, включено: выезд специалиста с образцами, анализ грунта, разработка дизайна вариантов укладки, доставка сопутствующих материалов, специальная цена для Заказчика. Тротуарная плитка брусчатка купить и заказать укладку, мощение в СПб и Лен области.  Акция *"Специалист - бесплатно" действительна для населенных пунктов:

Курортный район, Всеволожский район:  

Рапполово, Санкт-Петербург, Всеволожск, Красная Горка, Екатериновка, Маслово, Пески, лен обл, Дубровка, Бор, Каменка, Коркино, Зеленогорск, Павлово, Лаппелово, Чёрная Речка, Борисова Грива, Плинтовка, Карьер Мяглово, Дранишники, Мяглово, Юкки, Ёксолово, Шереметьевка, Куялово, Тавры, Ушково, Вуолы, Агалатово, Кавголово, Морье, Корабсельки, Заневка, Токкари, Змеиный, Малая Романовка, Суоранда, Репино, Оранжерейка, Мурино, Романовка, Верхние Осельки, Вартемяги, Мендсары, Молодёжное, Варзолово, Осельки, Лепсари, Грузино, Кирполье, Колясово, Рахья, Старая, Невский Парклесхоз, Ладожское Озеро, Сярьги, Скотное, Ладожский Трудпосёлок, Западная Лица, Кузьмолово, Пятый Километр, Разметелево, Островки, Токсово, Кискелово, Сестрорецк, Посёлок имени Морозова, Рохма, Лаврики, Лесное, Лесколово, Резвых, Хиттолово, Ленинградская область, Новое Девяткино, Матокса, Гапсары, Углово, Коккорево, Новосергиевка, Янино, Стеклянный, Керро, Солнечное, Проба, Колтуши, Ненимяки, Лехтуси, Красная Заря, Шестнадцатый Километр, Заводской, Пери, Щеглово, Орово, Кальтино, Канисты, Сертолово, Бугры, Кудрово, Всеволожский район, Нижние Осельки, Кошкино, Порошкино, Вирки, Касимово, Колбино, Минулово, Комарово, Ганнибаловка, Лупполово, Серово, Елизаветинка, Рыжики, Савочкино, Большие Пороги, Воейково, Новое Токсово, Сарженка, Шестой Километр, Манушкино, Белоостров, Новосаратовка, Капитолово, Аньялово, Песочный, Курортный район, Энколово, Рабочий, Дунай, Новая Пустошь, Варкалово, Лиголамби, Ваганово, Смолячково, Мистолово, Ириновка, Вьюн, Озерки, Кузьминка, Хязельки, Куйворы, Корнево, Кирпичный Завод, Старая Пустошь, Посёлок имени Свердлова, Гарболово, Куйвози, Васкелово, Медный Завод, Ковалёво, Хапо, Лемболово, Хирвости, Кузьмоловский, Никитилово

Карта проезда