Exemple #1
0
	static function populateLookupTable($language)
	{
		// Set language menu items if not already done
		if ( !isset(self::$menuitems[$language]) ) {
			FlexicontentHelperRoute::_setMenuitems($language);
		}
		$component_menuitems = & self::$menuitems[$language];
		
		// Every VIEW may have a different variable for the lookup table in which we will add the menu items
		static $view_varnames = array(FLEXI_ITEMVIEW=>'id', 'category'=>'cid', 'tags'=>'id', 'flexicontent'=>'rootcatid');
		
		self::$lookup[$language] = array();
		$user = JFactory::getUser();
		
		foreach($component_menuitems as $menuitem)
		{
			if ( !isset($menuitem->query) || !isset($menuitem->query['view']) ) continue;  // view not set
			if ( FLEXI_J16GE && $menuitem->language != $language && $menuitem->language!='*') continue;   // wrong menu item language, neither item's language, nor '*' = ALL
			
			if ( @$menuitem->query['view'] == 'category' ) {     // CHECK if category menu items ... need to be skipped
				
				if (@$menuitem->query['layout']=='author' && $menuitem->query['authorid']!=$user->id)
					// Do not match "author" if specific author is not current user
					continue;
			
				else if (@$menuitem->query['layout']=='myitems' && !$user->id)
					// Do not match "myitems" if current user is unlogged
					continue;
				
				else if (@$menuitem->query['layout'])
					// Do not match custom layouts, limited to a category id
					continue;
				
				// Do not match menu items that override category configuration parameters, these items will be selectable only
				// (a) via direct click on the menu item or
				// (b) if their specific Itemid is passed to getCategoryRoute(), getItemRoute()
				// (c) they are currently active ...
				//if (!isset($menuitem->jparams)) $menuitem->jparams = FLEXI_J16GE ? $menuitem->params : new JParameter($menuitem->params);
				//if ( $menuitem->jparams->get('override_defaultconf',0) ) continue;
			}
			
			// Create lookup table for view if it does not exist already
			$view = $menuitem->query['view'];
			if (!isset(self::$lookup[$language][$view]))  self::$lookup[$language][$view] = array();
			
			// Check if view 's variable (used in lookup table) exists in the menu item
			if ( !isset($view_varnames[$view]) ) continue;
			$_index_name = $view_varnames[$view];
			if ( empty($menuitem->query[$_index_name]) ) continue;
			$_index_val = $menuitem->query[$_index_name];
			
			// Only a specific language menu item can override an existing lookup entry
			if ( isset(self::$lookup[$language][$view][$_index_val]) && FLEXI_J16GE && $menuitem->language == '*' ) continue;
			
			// Finally set new lookup entry or override existing lookup entry with language specific menu item
			self::$lookup[$language][$view][$_index_val] = (int) $menuitem->id;
		}
	}
 static function populateLookupTable($language)
 {
     // Set language menu items if not already done
     if (!isset(self::$menuitems[$language])) {
         FlexicontentHelperRoute::_setMenuitems($language);
     }
     $component_menuitems =& self::$menuitems[$language];
     // Every VIEW may have a different variable for the lookup table in which we will add the menu items
     static $view_varnames = array(FLEXI_ITEMVIEW => 'id', 'category' => 'cid', 'tags' => 'id', 'flexicontent' => 'rootcatid');
     static $layout_idvars = array('tags' => 'tagid', 'author' => 'authorid');
     self::$lookup[$language] = array();
     $user = JFactory::getUser();
     foreach ($component_menuitems as $menuitem) {
         if (!isset($menuitem->query) || !isset($menuitem->query['view'])) {
             continue;
         }
         // view not set
         if ($menuitem->language != $language && $menuitem->language != '*') {
             continue;
         }
         // wrong menu item language, neither item's language, nor '*' = ALL
         $view = $menuitem->query['view'];
         $layout = $view == 'category' && !empty($menuitem->query['layout']) ? $menuitem->query['layout'] : false;
         // Create lookup table for view if it does not exist already
         $i_view = $view . ($layout && $view == 'category' ? '_' . $layout : '');
         if (!isset(self::$lookup[$language][$i_view])) {
             self::$lookup[$language][$i_view] = array();
         }
         // Check if view 's variable (used in lookup table) exists in the menu item
         if (!isset($view_varnames[$view])) {
             continue;
         }
         $i_name = $view_varnames[$view];
         if (empty($menuitem->query[$i_name]) && !$layout) {
             continue;
         }
         $i_val = !empty($menuitem->query[$i_name]) ? (int) $menuitem->query[$i_name] : 0;
         if ($layout) {
             $i_name = @$layout_idvars[$layout];
             $i_val = (int) ($i_name ? @$menuitem->query[$i_name] : '0') . '_' . $i_val;
         }
         // Only a specific language menu item can override an existing lookup entry
         if (isset(self::$lookup[$language][$i_view][$i_val]) && $menuitem->language == '*') {
             continue;
         }
         // Finally set new lookup entry or override existing lookup entry with language specific menu item
         self::$lookup[$language][$i_view][$i_val] = (int) $menuitem->id;
     }
     //echo "<pre>";  print_r(self::$lookup);  echo "</pre>"; exit;
 }