protected static function _findItemId($needles) { // Prepare the reverse lookup array. if (self::$lookup === null) { self::$lookup = array(); $component =& JComponentHelper::getComponent('com_weblinks'); $menus =& JApplication::getMenu('site', array()); $items = $menus->getItems('component_id', $component->id); foreach ($items as &$item) { if (isset($item->query) && isset($item->query['view'])) { $view = $item->query['view']; if (!isset(self::$lookup[$view])) { self::$lookup[$view] = array(); } if (isset($item->query['id'])) { self::$lookup[$view][$item->query['id']] = $item->id; } } } } $match = null; foreach ($needles as $view => $id) { if (isset(self::$lookup[$view])) { if (isset(self::$lookup[$view][$id])) { return self::$lookup[$view][$id]; } } } return null; }
echo JText::_('JContent_No_Parents'); ?> </p> <?php } else { ?> <h3><?php echo JText::_('JContent_Parents'); ?> </h3> <ul> <?php foreach ($this->parents as &$item) { ?> <li> <a href="<?php echo JRoute::_(WeblinksRoute::category($item->slug)); ?> "> <?php echo $this->escape($item->title); ?> </a> </li> <?php } ?> </ul> <?php }
/** * Weblink Search method * * The sql must return the following fields that are used in a common display * routine: href, title, section, created, text, browsernav * @param string Target search string * @param string mathcing option, exact|any|all * @param string ordering option, newest|oldest|popular|alpha|category * @param mixed An array if the search it to be restricted to areas, null if search all */ function onSearch($text, $phrase = '', $ordering = '', $areas = null) { $db =& JFactory::getDbo(); $user =& JFactory::getUser(); $groups = implode(',', $user->authorisedLevels()); $searchText = $text; require_once JPATH_SITE . '/components/com_weblinks/router.php'; if (is_array($areas)) { if (!array_intersect($areas, array_keys(plgSearchWeblinksAreas()))) { return array(); } } // load plugin params info $plugin =& JPluginHelper::getPlugin('search', 'weblinks'); $pluginParams = new JParameter($plugin->params); $limit = $pluginParams->def('search_limit', 50); $text = trim($text); if ($text == '') { return array(); } $section = JText::_('WEB_LINKS'); $wheres = array(); switch ($phrase) { case 'exact': $text = $db->Quote('%' . $db->getEscaped($text, true) . '%', false); $wheres2 = array(); $wheres2[] = 'a.url LIKE ' . $text; $wheres2[] = 'a.description LIKE ' . $text; $wheres2[] = 'a.title LIKE ' . $text; $where = '(' . implode(') OR (', $wheres2) . ')'; break; case 'all': case 'any': default: $words = explode(' ', $text); $wheres = array(); foreach ($words as $word) { $word = $db->Quote('%' . $db->getEscaped($word, true) . '%', false); $wheres2 = array(); $wheres2[] = 'a.url LIKE ' . $word; $wheres2[] = 'a.description LIKE ' . $word; $wheres2[] = 'a.title LIKE ' . $word; $wheres[] = implode(' OR ', $wheres2); } $where = '(' . implode($phrase == 'all' ? ') AND (' : ') OR (', $wheres) . ')'; break; } switch ($ordering) { case 'oldest': $order = 'a.date ASC'; break; case 'popular': $order = 'a.hits DESC'; break; case 'alpha': $order = 'a.title ASC'; break; case 'category': $order = 'b.title ASC, a.title ASC'; break; case 'newest': default: $order = 'a.date DESC'; } $query = 'SELECT a.title AS title, a.description AS text, a.date AS created, a.url, ' . ' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(\':\', a.id, a.alias) ELSE a.id END as slug, ' . ' CASE WHEN CHAR_LENGTH(b.alias) THEN CONCAT_WS(\':\', b.id, b.alias) ELSE b.id END as catslug, ' . ' CONCAT_WS(" / ", ' . $db->Quote($section) . ', b.title) AS section,' . ' "1" AS browsernav' . ' FROM #__weblinks AS a' . ' INNER JOIN #__categories AS b ON b.id = a.catid' . ' WHERE (' . $where . ')' . ' AND a.state = 1' . ' AND b.published = 1' . ' AND b.access IN (' . $groups . ')' . ' ORDER BY ' . $order; $db->setQuery($query, 0, $limit); $rows = $db->loadObjectList(); foreach ($rows as $key => $row) { $rows[$key]->href = WeblinksRoute::weblink($row->slug, $row->catslug); } $return = array(); foreach ($rows as $key => $weblink) { if (searchHelper::checkNoHTML($weblink, $searchText, array('url', 'text', 'title'))) { $return[] = $weblink; } } return $return; }
$item->level_diff = isset($this->items[$i + 1]) ? $item->level - $this->items[$i + 1]->level : 0; } echo '<ul>'; for ($i = 0; $i < $itemcount; $i++) { $item =& $this->items[$i]; // The next item is deeper. if ($item->deeper) { echo "<li>"; } elseif ($item->shallower) { echo "<li>"; } else { echo "<li>"; } ?> <span class="jitem-title"><a href="<?php echo WeblinksRoute::category($this->escape($item->slug)); ?> "> <?php echo $this->escape($item->title); ?> </a> </span> <?php if ($item->description) { ?> <div class="jdescription"> <?php echo $item->description; ?> </div>