Ejemplo n.º 1
0
 static function menu_linkoptions($all = false, $unassigned = false)
 {
     $db = JFactory::getDbo();
     $query = $db->getQuery(true);
     // Get a list of the menu items
     $query->select('m.id, m.parent_id, m.title, m.menutype');
     $query->from($db->quoteName('#__menu') . ' AS m');
     $query->where($db->quoteName('m.published') . ' = 1');
     $query->order('m.menutype, m.parent_id');
     //, m.ordering'); //SC
     $db->setQuery($query);
     $mitems = $db->loadObjectList();
     if (!$mitems) {
         $mitems = array();
     }
     // Establish the hierarchy of the menu
     $children = array();
     // First pass - collect children
     foreach ($mitems as $v) {
         $pt = $v->parent_id;
         $list = @$children[$pt] ? $children[$pt] : array();
         array_push($list, $v);
         $children[$pt] = $list;
     }
     // Second pass - get an indent list of the items
     jimport('legacy.html.menu');
     //SC
     $list = JHtmlMenu::TreeRecurse((int) $mitems[0]->parent_id, '', array(), $children, 9999, 0, 0);
     //SC
     // Code that adds menu name to Display of Page(s)
     $mitems = array();
     if ($all | $unassigned) {
         $mitems[] = JHtml::_('select.option', '<OPTGROUP>', JText::_('JOPTION_MENUS'));
         if ($all) {
             $mitems[] = JHtml::_('select.option', 0, JText::_('JALL'));
         }
         if ($unassigned) {
             $mitems[] = JHtml::_('select.option', -1, JText::_('JOPTION_UNASSIGNED'));
         }
         $mitems[] = JHtml::_('select.option', '</OPTGROUP>');
     }
     $lastMenuType = null;
     $tmpMenuType = null;
     foreach ($list as $list_a) {
         if ($list_a->menutype != $lastMenuType) {
             if ($tmpMenuType) {
                 $mitems[] = JHtml::_('select.option', '</OPTGROUP>');
             }
             $mitems[] = JHtml::_('select.option', '<OPTGROUP>', $list_a->menutype);
             $lastMenuType = $list_a->menutype;
             $tmpMenuType = $list_a->menutype;
         }
         $mitems[] = JHtml::_('select.option', $list_a->id, $list_a->title);
     }
     if ($lastMenuType !== null) {
         $mitems[] = JHtml::_('select.option', '</OPTGROUP>');
     }
     return $mitems;
 }
Ejemplo n.º 2
0
 /**
  * Build the list representing the menu tree
  *
  * @param   integer  $id         Id of the menu item
  * @param   string   $indent     The indentation string
  * @param   array    $list       The list to process
  * @param   array    &$children  The children of the current item
  * @param   integer  $maxlevel   The maximum number of levels in the tree
  * @param   integer  $level      The starting level
  * @param   string   $type       Type of link: component, URL, alias, separator
  *
  * @return  array
  *
  * @since   11.1
  */
 public static function treerecurse($id, $indent, $list, &$children, $maxlevel = 9999, $level = 0, $type = 1)
 {
     if (@$children[$id] && $level <= $maxlevel) {
         foreach ($children[$id] as $v) {
             $id = $v->id;
             if ($type) {
                 $pre = '<sup>|_</sup>&#160;';
                 $spacer = '.&#160;&#160;&#160;&#160;&#160;&#160;';
             } else {
                 $pre = '- ';
                 $spacer = '&#160;&#160;';
             }
             if ($v->parent_id == 0) {
                 $txt = $v->title;
             } else {
                 $txt = $pre . $v->title;
             }
             $pt = $v->parent_id;
             $list[$id] = $v;
             $list[$id]->treename = "{$indent}{$txt}";
             $list[$id]->children = count(@$children[$id]);
             $list = JHtmlMenu::TreeRecurse($id, $indent . $spacer, $list, $children, $maxlevel, $level + 1, $type);
         }
     }
     return $list;
 }