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

Здоровье всему голова

Запомни:

Здоровье дороже богатства
Здоровым будешь – всё добудешь
Здоровье не купишь
В здоровом теле – здоровый дух
Режим приёма, а также дозы лекарственных средств надо обязательно согласовывать с врачом.

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

Воспитание ответственности у детей

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

Истина проста: чувство ответственности нельзя навязать, оно должно проявиться «изнутри», на основе ценностной ориентации, полученной дома, а также вне семьи.

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

Ребёнок и книга

Книга - не учебник, она не даёт готовых рецептов, как научить ребёнка любить литературу, потому что научить сложному искусству чтения и понимания книги очень трудно. Ребенок должен ярко, эмоционально откликаться на прочитанное, видеть изображенные события, страстно переживать их. Только приученный к книге ребёнок обладает бесценным даром легко «входить» в содержание услышанного или прочитанного. Малыш рисует в воображении любые сюжеты, плачет и смеётся, представляет (видит, слышит, обоняет и осязает) прочитанное так ярко, что чувствует себя участником событий. Книга вводит ребёнка в самое сложное в жизни - в мир человеческих чувств, радостей и страданий, отношений, побуждений, мыслей, поступков, характеров. Книга учит «вглядываться» в человека, видеть и понимать его, воспитывает человечность. Прочитанная в детстве книга, оставляет более сильный след, чем книга, прочитанная в зрелом возрасте.

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