public static function _findItem($needles = null) { $app = JFactory::getApplication(); $menus = $app->getMenu('site'); // Prepare the reverse lookup array. if (self::$lookup === null) { self::$lookup = array(); $component = JComponentHelper::getComponent('com_djcatalog2'); $items = $menus->getItems('component_id', $component->id); if (count($items)) { 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 ($view == 'items') { $cid = 0; if (isset($item->query['cid'])) { $cid = $item->query['cid']; } $cid = isset($item->query['cid']) ? (int) $item->query['cid'] : 0; if (isset($item->query['pid']) && (int) $item->query['pid'] > 0) { $cid .= '-' . $item->query['pid']; } self::$lookup[$view][$cid] = $item->id; } else { if ($view == 'producer') { if (isset($item->query['pid'])) { self::$lookup[$view][$item->query['pid']] = $item->id; } } else { if ($view == 'item') { if (isset($item->query['id'])) { self::$lookup[$view][$item->query['id']] = $item->id; } } else { if ($view == 'myitems') { self::$lookup[$view][0] = $item->id; } else { if ($view == 'producers') { self::$lookup[$view][0] = $item->id; } else { self::$lookup[$view][0] = $item->id; } } } } } } } } } if ($needles) { foreach ($needles as $view => $ids) { if (isset(self::$lookup[$view])) { if (is_array($ids)) { foreach ($ids as $id) { if (isset(self::$lookup[$view][$id])) { return self::$lookup[$view][$id]; } } } else { if (isset(self::$lookup[$view][$ids])) { return self::$lookup[$view][$ids]; } } } } } //else { /*$active = $menus->getActive(); if ($active && $active->component == 'com_djcatalog2') { return $active->id; }*/ /*else { $default = $menus->getDefault(); return $default->id; }*/ //} return null; }
public static function _findItem($needles = null) { $app = JFactory::getApplication(); $menus = $app->getMenu('site'); $params = JComponentHelper::getParams('com_djcatalog2'); // Prepare the reverse lookup array. if (self::$lookup === null) { self::$lookup = array(); $component = JComponentHelper::getComponent('com_djcatalog2'); $items = $menus->getItems('component_id', $component->id); $seoMenus = $params->get('seo_menus', array()); $seoMenusLookup = count($seoMenus) > 0 ? true : false; $seoMenuItems = $params->get('seo_menuitems', array()); $seoMenuItemsLookup = count($seoMenuItems) > 0 ? true : false; $activeMenu = $menus->getActive(); $templateStyle = !empty($activeMenu) && isset($activeMenu->template_style_id) ? $activeMenu->template_style_id : 0; $keepTemplateStyle = (bool) $params->get('seo_style_consistency', false); if (count($items)) { foreach ($items as $item) { if ($seoMenusLookup && !in_array($item->menutype, $seoMenus) && !in_array($item->id, $seoMenuItems)) { continue; } if ($seoMenuItemsLookup && !in_array($item->id, $seoMenuItems)) { continue; } if ($keepTemplateStyle && $templateStyle != $item->template_style_id) { continue; } if (isset($item->query) && isset($item->query['view'])) { $view = $item->query['view']; if (!isset(self::$lookup[$view])) { self::$lookup[$view] = array(); } if ($view == 'items') { $cid = 0; if (isset($item->query['cid'])) { $cid = $item->query['cid']; } $cid = isset($item->query['cid']) ? (int) $item->query['cid'] : 0; if (isset($item->query['pid']) && (int) $item->query['pid'] > 0) { $cid .= '-' . $item->query['pid']; } self::$lookup[$view][$cid] = $item->id; } else { if ($view == 'producer') { if (isset($item->query['pid'])) { self::$lookup[$view][$item->query['pid']] = $item->id; } } else { if ($view == 'item') { if (isset($item->query['id'])) { self::$lookup[$view][$item->query['id']] = $item->id; } } else { if ($view == 'myitems') { self::$lookup[$view][0] = $item->id; } else { if ($view == 'producers') { self::$lookup[$view][0] = $item->id; } else { self::$lookup[$view][0] = $item->id; } } } } } } } } } if ($needles) { foreach ($needles as $view => $ids) { if (isset(self::$lookup[$view])) { if (is_array($ids)) { foreach ($ids as $id) { if (isset(self::$lookup[$view][$id])) { return self::$lookup[$view][$id]; } } } else { if (isset(self::$lookup[$view][$ids])) { return self::$lookup[$view][$ids]; } } } } } //else { /*$active = $menus->getActive(); if ($active && $active->component == 'com_djcatalog2') { return $active->id; }*/ /*else { $default = $menus->getDefault(); return $default->id; }*/ //} return null; }