function array_to_tree($nodes, $parent_id = 0)
 {
     $tree = array();
     $position = 0;
     for ($i = 0, $cnt = count($nodes); $i < $cnt; $i++) {
         if ($nodes[$i]['superior'] == $parent_id) {
             $tree[$position] = $nodes[$i];
             $tree[$position++]['children'] = array_to_tree($nodes, $nodes[$i]['uid']);
         }
     }
     return $tree;
 }
Beispiel #2
0
 /**
  * 获取指定用户,及其权限信息
  *
  * @param array $conditions
  */
 function getUserWithPermissions($conditions)
 {
     $tableUsers =& FLEA::getSingleton($this->_tableClass['users']);
     /* @var $tableUsers FLEA_Acl_Table_Users */
     $user = $tableUsers->find($conditions);
     if (empty($user)) {
         return false;
     }
     // 取得用户所在用户组的层次数据
     $tableUserGroups =& FLEA::getSingleton($this->_tableClass['userGroups']);
     /* @var $tableUserGroups FLEA_Acl_Table_UserGroups */
     $rowset = $tableUserGroups->getPath($user['group']);
     // 找出用户组的单一路径
     FLEA::loadHelper('array');
     $ret = array_to_tree($rowset, 'user_group_id', 'parent_id', 'subgroups', true);
     $tree =& $ret['tree'];
     $refs =& $ret['refs'];
     $groupid = $user['user_group_id'];
     $path = array();
     while (isset($refs[$groupid])) {
         array_unshift($path, $refs[$groupid]);
         $groupid = $refs[$groupid]['parent_id'];
     }
     // 整理角色信息
     $userRoles = array();
     foreach ($path as $group) {
         $roles = $group['roles'];
         foreach ($roles as $role) {
             $roleid = $role['role_id'];
             if ($role['_join_is_include']) {
                 $userRoles[$roleid] = array('role_id' => $roleid, 'name' => $role['name']);
             } else {
                 unset($userRoles[$roleid]);
             }
         }
     }
     foreach ((array) $user['roles'] as $role) {
         $roleid = $role['role_id'];
         if ($role['_join_is_include']) {
             $userRoles[$roleid] = array('role_id' => $roleid, 'name' => $role['name']);
         } else {
             unset($userRoles[$roleid]);
         }
     }
     // 整理权限信息
     $user['roles'] = $userRoles;
     return $user;
 }
Beispiel #3
0
function array_to_tree($_array, $root)
{
    $result = array();
    foreach ($_array as $key => $value) {
        if ($_SESSION['debug_mode']) {
            var_dump($key);
            var_dump($value);
        }
        if (!is_array($value)) {
            if ($_SESSION['debug_mode']) {
                var_dump("is Not Array!");
            }
            if (!strpos($key, "_Main_Key")) {
                $cutpos = strpos($key, "_number");
                $key = substr($key, 0, $cutpos);
                if ($root == NULL) {
                    $result[$key] = array("root", $key, $key . "[" . $value . "]", true, "bfly.gif");
                } else {
                    $result[$key] = array($root, $key, $key . "[" . $value . "]", true, "bfly.gif");
                }
                if ($_SESSION['debug_mode']) {
                    var_dump($result[$key]);
                }
            }
        } else {
            if ($_SESSION['debug_mode']) {
                var_dump("is Array!");
            }
            $result[$key] = array_to_tree($value, $key);
        }
    }
    if ($_SESSION['debug_mode']) {
        var_dump("Returned result!:");
        var_dump($result);
    }
    return $result;
}