Example #1
0
 protected static function _findItem($needles = null)
 {
     $app = JFactory::getApplication();
     $menus = $app->getMenu('site');
     $active = $menus->getActive();
     $component = JComponentHelper::getComponent('com_tz_pinboard');
     $items = $menus->getItems('component_id', $component->id);
     // Prepare the reverse lookup array.
     if (self::$lookup === null) {
         self::$lookup = array();
         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 ($active && $active->component == 'com_tz_pinboard') {
                     if (isset($active->query) && isset($active->query['view'])) {
                         if (isset($active->query['id'])) {
                             self::$lookup[$active->query['view']][$active->query['id']] = $active->id;
                         }
                     }
                 }
             }
         }
     }
     if ($needles) {
         foreach ($needles as $view => $ids) {
             if (isset(self::$lookup[$view])) {
                 if ($view == 'manageruser') {
                     foreach ($items as $item) {
                         if ($view == $item->query['view']) {
                             $Itemid = $item->id;
                             return $Itemid;
                         }
                     }
                 } else {
                     if ($view == 'tags') {
                         foreach ($items as $item) {
                             if (isset($item->query['id_tag']) && !empty($item->query['id_tag'])) {
                                 foreach ($ids as $id) {
                                     if ($id == (int) $item->query['id_tag']) {
                                         $Itemid = $item->id;
                                         return $Itemid;
                                     }
                                 }
                             }
                         }
                         return $component->params->get('mymenuitem');
                     } else {
                         if ($view == 'addpinboards') {
                             foreach ($items as $item) {
                                 if ($view == $item->query['view']) {
                                     $Itemid = $item->id;
                                     return $Itemid;
                                 }
                             }
                         } else {
                             if ($view == "detail") {
                                 foreach ($items as $item) {
                                     if ($view == $item->query['view']) {
                                         $Itemid = $item->id;
                                         return $Itemid;
                                     }
                                 }
                             }
                         }
                     }
                 }
                 foreach ($ids as $id) {
                     if (isset(self::$lookup[$view][(int) $id])) {
                         return self::$lookup[$view][(int) $id];
                     }
                 }
             }
         }
     } else {
         if ($active && $active->component == 'com_tz_pinboard') {
             return $active->id;
         }
     }
     return null;
 }