Beispiel #1
0
 function get_group_children_tree($root_id = null, $root_name = null, $inclusive = true)
 {
     global $database;
     $tree = gacl_api::_getBelow('#__core_acl_aro_groups', 'g1.group_id, g1.name, COUNT(g2.name) AS level', 'g1.name', $root_id, $root_name, $inclusive);
     // first pass get level limits
     $n = count($tree);
     $min = $tree[0]->level;
     $max = $tree[0]->level;
     for ($i = 0; $i < $n; $i++) {
         $min = min($min, $tree[$i]->level);
         $max = max($max, $tree[$i]->level);
     }
     $indents = array();
     foreach (range($min, $max) as $i) {
         $indents[$i] = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
     }
     // correction for first indent
     $indents[$min] = '';
     $list = array();
     for ($i = $n - 1; $i >= 0; $i--) {
         $shim = '';
         foreach (range($min, $tree[$i]->level) as $j) {
             $shim .= $indents[$j];
         }
         if (@$indents[$tree[$i]->level + 1] == '.&nbsp;') {
             $twist = '&nbsp;';
         } else {
             $twist = "-&nbsp;";
         }
         //$list[$i] = $tree[$i]->level.$shim.$twist.$tree[$i]->name;
         $list[$i] = mosHTML::makeOption($tree[$i]->group_id, $shim . $twist . $tree[$i]->name);
         if ($tree[$i]->level < @$tree[$i - 1]->level) {
             $indents[$tree[$i]->level + 1] = '.&nbsp;';
         }
     }
     ksort($list);
     return $list;
 }