/** * @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); } Консультации для родителей

О Правилах Дорожного Движения

Легко ли научить ребёнка правильно вести себя на дороге?

 На первый взгляд легко. Надо только познакомить его с основными требованиями Правил дорожного движения и никаких проблем.

 На самом деле очень трудно. Ведь мы, родители, каждый день на глазах родного чада нарушаем эти самые пресловутые Правила, и не задумываемся, что ставим перед ребёнком неразрешимую задачу: как правильно? Как говорят или как делают?

Подробнее...

Правила безопасности на льду водоёма

Опасный лед

С началом первых заморозков начинается процесс ледообразования на водных объектах. Водоемы покрываются льдом, который по началу еще непрочен и легко ломается под ногами человека или тяжестью техники.

Очень опасен осенний, ноздреватый лед , который представляет собой замерзший во время метели снег. На участки такого льда ступать нельзя ни в коем случае. Надо помнить, что Осенний лед безопасен для одного человека при толщине не меньше 10 сантиметров.

Подробнее...

Закаливающие мероприятия для детей в детском саду

Закаливание — это система специальной тренировки терморегуляторных процессов организма, включающая в себя процедуры, действие которых направлено на повышение устойчивости организма к переохлаждению или перегреванию.
 Цель закаливания – тренировка защитных сил организма, выработка способности быстро адаптироваться к новым условиям.
 Основная задача: осуществлять комплексный подход к оздоровлению дошкольника средствами природы с учетом уровня его индивидуального здоровья при активном включении ребенка в процесс его формирования.
 Закаливание детей дошкольного возраста в ДОУ состоит из системы мероприятий, включающих элементы закаливания в повседневной жизни, которые включены в режимные моменты и специальные мероприятия: воздушные ванны, солнечные ванны, водные процедуры, правильно организованную прогулку, являются частью физкультурных занятий.

Подробнее...

Какие игрушки нужны детям?

Развитие богатого эмоционального мира ребёнка немыслимо без игрушек. Именно они позволяют ребёнку выразить свои чувства, исследовать окружающий мир, учат общаться и познавать себя. Вспомните свои любимые игрушки! Это не обязательно дорогие и шикарные куклы и машины. У кого-то это невзрачный мишка, переданный по наследству мамой, малюсенький пупсик с огромным количеством немыслимых нарядов из тюля ит.д. Выбор игрушек для ребёнка – очень важное и серьёзное дело. Только сам ребёнок способен выбрать из огромного количества игрушек именно то, что ему необходимо. Этот выбор внутренне обусловлен теми же эмоциональными побудителями, что и выбор взрослыми друзей и любимых.

Подробнее...