Bug #2720 » 2720-pt1.patch
administrator/components/com_comprofiler/library/cb/cb.acl.php | ||
---|---|---|
function get_groups_below_me() {
|
||
global $_CB_framework;
|
||
|
||
static $gids = array();
|
||
static $gids = array();
|
||
|
||
$myId = $_CB_framework->myId();
|
||
$myId = $_CB_framework->myId();
|
||
|
||
if ( ! isset( $gids[$myId] ) ) {
|
||
if ( checkJversion() == 2 ) {
|
||
$my_groups = $this->get_object_groups( $myId );
|
||
$my_groups = $_CB_framework->acl->get_object_groups( $myId );
|
||
} elseif ( checkJversion() == 1 ) {
|
||
$aro_id = $this->get_object_id( 'users', $myId, 'ARO' );
|
||
$my_groups = $this->get_object_groups( $aro_id, 'ARO' );
|
||
$aro_id = $_CB_framework->acl->get_object_id( 'users', $myId, 'ARO' );
|
||
$my_groups = $_CB_framework->acl->get_object_groups( $aro_id, 'ARO' );
|
||
} else {
|
||
$my_groups = $this->get_object_groups( 'users', $myId, 'ARO' );
|
||
$my_groups = $_CB_framework->acl->get_object_groups( 'users', $myId, 'ARO' );
|
||
}
|
||
|
||
if ( is_array( $my_groups ) && count( $my_groups ) > 0 ) {
|
||
$ex_groups = $this->get_group_children( $my_groups[0], 'ARO', 'RECURSE' );
|
||
$my_gids = array();
|
||
|
||
if ( $my_groups ) foreach ( $my_groups as $gid ) {
|
||
$my_gids = array_unique( array_merge( $my_gids, $_CB_framework->acl->get_group_children_ids( $gid ) ) );
|
||
|
||
if ( checkJversion() == 2 ) {
|
||
$my_gids = array_unique( array_merge( $my_gids, $_CB_framework->acl->get_object_groups( $myId, null, 'RECURSE' ) ) );
|
||
}
|
||
}
|
||
|
||
if ( ( ! is_array( $my_gids ) ) || empty( $my_gids ) ) {
|
||
$my_gids = array();
|
||
} else {
|
||
$ex_groups = array();
|
||
cbArrayToInts( $my_gids );
|
||
}
|
||
|
||
$groups = $this->get_group_children_tree( null, 'USERS', false );
|
||
$tree = $_CB_framework->acl->get_group_children_tree( null, 'USERS', false );
|
||
|
||
$i = 0;
|
||
|
||
if ( is_array( $ex_groups ) && ( count( $ex_groups ) > 0 ) ) {
|
||
while ( $i < count( $groups ) ) {
|
||
if ( in_array( $groups[$i]->value, $ex_groups ) ) {
|
||
array_splice( $groups, $i, 1 );
|
||
} else {
|
||
$i++;
|
||
}
|
||
if ( $tree ) foreach ( $tree as $k => $v ) {
|
||
if ( ! in_array( (int) $v->value, $my_gids ) ) {
|
||
unset( $tree[$k] );
|
||
}
|
||
}
|
||
$gids[$myId] = $groups;
|
||
|
||
$gids[$myId] = array_values( $tree );
|
||
}
|
||
|
||
return $gids[$myId];
|