コード例 #1
0
ファイル: load_balancing.inc.php プロジェクト: skdong/nfs-ovd
 public function get()
 {
     $used = 0;
     $total = 0;
     if (Preferences::moduleIsEnabled('ProfileDB')) {
         $profiledb = ProfileDB::getInstance();
         $total += $profiledb->count();
         $used += $profiledb->countOnServer($this->server->fqdn);
     }
     if (Preferences::moduleIsEnabled('SharedFolderDB')) {
         $sharedfolderdb = SharedFolderDB::getInstance();
         $total += $sharedfolderdb->count();
         $used += $sharedfolderdb->countOnServer($this->server->fqdn);
     }
     if ($total == 0) {
         return 0;
     } else {
         return 1.0 - (double) $used / (double) $total;
     }
 }
コード例 #2
0
ファイル: sql.php プロジェクト: skdong/nfs-ovd
 public function remove($usergroup_)
 {
     Logger::debug('main', "USERGROUPDB::remove({$usergroup_})");
     if (array_key_exists($usergroup_->id, $this->cache)) {
         unset($this->cache[$usergroup_->id]);
     }
     // first we delete liaisons
     $sql2 = SQL::getInstance();
     Abstract_Liaison::delete('UsersGroupApplicationsGroup', $usergroup_->getUniqueID(), NULL);
     Abstract_Liaison::delete('UsersGroup', NULL, $usergroup_->getUniqueID());
     // second we delete sharedfolder acls for the group
     if (Preferences::moduleIsEnabled('SharedFolderDB')) {
         $sharedfolderdb = SharedFolderDB::getInstance();
         $networkfolders = $sharedfolderdb->importFromUsergroup($usergroup_->getUniqueID());
         if (is_array($networkfolders) && count($networkfolders) > 0) {
             foreach ($networkfolders as $networkfolder) {
                 $networkfolder->delUserGroup($usergroup_);
             }
         }
     }
     // third remove the preferences if it is default
     if ($usergroup_->isDefault()) {
         // unset the default usergroup
         $prefs = new Preferences_admin();
         $mods_enable = $prefs->set('general', 'user_default_group', '');
         $prefs->backup();
     }
     // fourth we delete the group
     $res = $sql2->DoQuery('DELETE FROM @1 WHERE @2 = %3', $this->table, 'id', $usergroup_->id);
     return $res !== false;
 }
コード例 #3
0
ファイル: User.class.php プロジェクト: bloveing/openulteo
 public function getSharedFolders()
 {
     if (Preferences::moduleIsEnabled('SharedFolderDB') == false) {
         return array();
     }
     $session_settings_defaults = $this->getSessionSettings('session_settings_defaults');
     if (array_key_exists('enable_sharedfolders', $session_settings_defaults)) {
         $enable_sharedfolders = $session_settings_defaults['enable_sharedfolders'];
         if ($enable_sharedfolders == 0) {
             return array();
         }
     }
     $sharedfolderdb = SharedFolderDB::getInstance();
     $publications = $sharedfolderdb->get_publications();
     $users_group_id = array();
     foreach ($publications as $publication) {
         if (in_array($publication['group'], $users_group_id)) {
             continue;
         }
         array_push($users_group_id, $publication['group']);
     }
     // from this group, which are these I am into
     $users_groups_mine_ids = $this->get_my_usersgroups_from_list($users_group_id);
     $sharedfolders = array();
     foreach ($publications as $publication) {
         if (!in_array($publication['group'], $users_groups_mine_ids)) {
             continue;
         }
         if (array_key_exists($publication['share'], $sharedfolders)) {
             if ($publication['mode'] == 'rw' && $sharedfolders[$publication['share']]['mode'] != 'rw') {
                 $sharedfolders[$publication['share']]['mode'] = $publication['mode'];
             }
             continue;
         }
         $share = $sharedfolderdb->import($publication['share']);
         if (is_null($share)) {
             continue;
         }
         $sharedfolders[$publication['share']] = array('share' => $share, 'mode' => $publication['mode']);
     }
     return $sharedfolders;
 }
コード例 #4
0
 public function delUserGroup($usergroup_)
 {
     $sharedfolderdb = SharedFolderDB::getInstance();
     return $sharedfolderdb->delUserGroupToSharedFolder($usergroup_, $this);
 }
コード例 #5
0
                if ($serverStatus !== Session::SESSION_STATUS_DESTROYED) {
                    Logger::info('main', "Session " . $session->id . " switch status " . Session::SESSION_STATUS_DESTROYED . " on " . $server->fqdn);
                    $session->setServerStatus($server->id, Session::SESSION_STATUS_DESTROYED);
                }
            }
        }
    }
}
if (array_key_exists('shares', $ret) && is_array($ret['shares'])) {
    $profiledb = null;
    if (Preferences::moduleIsEnabled('ProfileDB')) {
        $profiledb = ProfileDB::getInstance();
    }
    $sharedfolderdb = null;
    if (Preferences::moduleIsEnabled('SharedFolderDB')) {
        $sharedfolderdb = SharedFolderDB::getInstance();
    }
    $disabled_users = array();
    foreach ($ret['shares'] as $share) {
        if (is_object($sharedfolderdb) && $sharedfolderdb->exists($share['id'])) {
            $buf = $sharedfolderdb->import($share['id']);
            $db = $sharedfolderdb;
        } else {
            if (is_object($profiledb) && $profiledb->exists($share['id'])) {
                $buf = $profiledb->import($share['id']);
                $db = $profiledb;
            } else {
                $buf = false;
            }
        }
        if (!$buf) {
コード例 #6
0
ファイル: actions.php プロジェクト: skdong/nfs-ovd
function action_del_sharedfolder_acl($sharedfolder_id_, $usergroup_id_)
{
    $sharedfolderdb = SharedFolderDB::getInstance();
    $sharedfolder = $sharedfolderdb->import($sharedfolder_id_);
    if (!$sharedfolder) {
        popup_error(_('Unable to delete this shared folder access'));
        return false;
    }
    $usergroupDB = UserGroupDB::getInstance();
    $group = $usergroupDB->import($usergroup_id_);
    if (is_object($group) === false) {
        popup_error(_('Unable to load usergroup'));
        return false;
    }
    $ret = $sharedfolder->delUserGroup($group);
    if ($ret === true) {
        popup_info(_('Shared folder successfully modified'));
        return true;
    } else {
        popup_error(sprintf(_("Unable to modify shared folder named '%s'"), $sharedfolder->name));
        return false;
    }
}
コード例 #7
0
ファイル: Server.class.php プロジェクト: skdong/nfs-ovd
 public function updateNetworkFolders()
 {
     if (!is_array($this->roles) || !array_key_exists(Server::SERVER_ROLE_FS, $this->roles)) {
         Logger::critical('main', 'Server::updateNetworkFolders - Not an FS');
         return false;
     }
     if (!$this->isOnline()) {
         Logger::debug('main', 'Server::updateNetworkFolders server "' . $this->fqdn . ':' . $this->web_port . '" is not online');
         return false;
     }
     $forders_on_server = $this->getNetworkFoldersList();
     if (is_array($forders_on_server) === false) {
         Logger::error('main', 'Server::updateNetworkFolders getNetworkFoldersList failed for fqdn=' . $this->fqdn);
         return false;
     }
     $folders_on_sm1 = array();
     if (Preferences::moduleIsEnabled('ProfileDB')) {
         $profiledb = ProfileDB::getInstance();
         $folders_on_sm1 = $profiledb->importFromServer($this->fqdn);
     }
     $folders_on_sm2 = array();
     if (Preferences::moduleIsEnabled('SharedFolderDB')) {
         $sharedfolderdb = SharedFolderDB::getInstance();
         $folders_on_sm2 = $sharedfolderdb->importFromServer($this->fqdn);
     }
     $folders_on_sm = array();
     if (is_array($folders_on_sm1)) {
         $folders_on_sm = array_merge($folders_on_sm, $folders_on_sm1);
     }
     if (is_array($folders_on_sm2)) {
         $folders_on_sm = array_merge($folders_on_sm, $folders_on_sm2);
     }
     foreach ($forders_on_server as $folder_id) {
         if (Preferences::moduleIsEnabled('SharedFolderDB')) {
             $folder = $sharedfolderdb->import($folder_id);
             if ($folder) {
                 $db = $sharedfolderdb;
             }
         }
         if (Preferences::moduleIsEnabled('ProfileDB')) {
             if (!$folder) {
                 $folder = $profiledb->import($folder_id);
                 $db = $profiledb;
             }
         }
         if (is_object($folder) === false) {
             // networkfolder does not exist
             $folder = new NetworkFolder();
             $folder->id = $folder_id;
             $folder->name = $folder_id;
             $folder->server = $this->fqdn;
             $profiledb->remove($folder);
             $sharedfolderdb->remove($folder);
         }
     }
     return true;
 }
コード例 #8
0
 public static function load_orphans()
 {
     Logger::debug('main', 'Starting Abstract_Network_Folder::load_orphans()');
     $sharedfolderdb = null;
     if (Preferences::moduleIsEnabled('SharedFolderDB')) {
         $sharedfolderdb = SharedFolderDB::getInstance();
     }
     $profiles = null;
     if (Preferences::moduleIsEnabled('ProfileDB')) {
         $profiledb = ProfileDB::getInstance();
     }
     $SQL = SQL::getInstance();
     if (is_null($sharedfolderdb) && is_null($profiledb)) {
         $SQL->DoQuery('SELECT * FROM #1;', self::$table);
     } else {
         if (is_null($sharedfolderdb)) {
             $SQL->DoQuery('SELECT * FROM #1 WHERE @2 NOT IN ( SELECT @2 FROM #3 );', self::$table, 'id', ProfileDB_internal::$table);
         } else {
             if (is_null($profiledb)) {
                 $SQL->DoQuery('SELECT * FROM #1 WHERE @2 NOT IN ( SELECT @2 FROM #3 );', self::$table, 'id', SharedFolderDB_internal::$table);
             } else {
                 $SQL->DoQuery('SELECT * FROM #1 WHERE @2 NOT IN ( SELECT @2 FROM #3 ) AND @2 NOT IN ( SELECT @2 FROM #4 )', self::$table, 'id', ProfileDB_internal::$table, SharedFolderDB_internal::$table);
             }
         }
     }
     $rows = $SQL->FetchAllResults();
     $network_folders = array();
     foreach ($rows as $row) {
         $Network_Folder = self::generateFromRow($row);
         if (!is_object($Network_Folder)) {
             continue;
         }
         $network_folders[] = $Network_Folder;
     }
     return $network_folders;
 }
コード例 #9
0
ファイル: User.class.php プロジェクト: skdong/nfs-ovd
 public function getSharedFolders()
 {
     $sharedfolders = array();
     if (Preferences::moduleIsEnabled('SharedFolderDB') == false) {
         return array();
     }
     $session_settings_defaults = $this->getSessionSettings('session_settings_defaults');
     if (array_key_exists('enable_sharedfolders', $session_settings_defaults)) {
         $enable_sharedfolders = $session_settings_defaults['enable_sharedfolders'];
         if ($enable_sharedfolders == 0) {
             return $sharedfolders;
         }
     }
     $usergroups = $this->usersGroups();
     if (is_array($usergroups) === false) {
         Logger::error('main', 'User::getSharedFolders usersGroups failed for user (login='******'login') . ')');
     } else {
         $sharedfolderdb = SharedFolderDB::getInstance();
         foreach ($usergroups as $group) {
             $prefs_of_a_group_unsort = Abstract_UserGroup_Preferences::loadByUserGroupId($group->getUniqueID(), 'general', 'session_settings_defaults');
             if (array_key_exists('enable_sharedfolders', $prefs_of_a_group_unsort)) {
                 $pref = $prefs_of_a_group_unsort['enable_sharedfolders'];
                 $element = $pref->toConfigElement();
                 $enable_sharedfolders = $element->content;
                 if ($enable_sharedfolders == 0) {
                     continue;
                 }
             }
             $networkfolders = $sharedfolderdb->importFromUsergroup($group->getUniqueID());
             foreach ($networkfolders as $a_networkfolder) {
                 $sharedfolders[] = $a_networkfolder;
             }
         }
     }
     return array_unique($sharedfolders);
 }
コード例 #10
0
ファイル: sharedfolders.php プロジェクト: skdong/nfs-ovd
function show_manage($sharedfolder_id_)
{
    $sharedfolderdb = SharedFolderDB::getInstance();
    $sharedfolder = $sharedfolderdb->import($sharedfolder_id_);
    if (!is_object($sharedfolder)) {
        popup_error(sprintf(_("Failed to import shared folder '%s'"), $sharedfolder_id_));
        redirect('sharedfolders.php');
    }
    $userGroupDB = UserGroupDB::getInstance();
    $all_groups = $userGroupDB->getList(true);
    $available_groups = array();
    $used_groups = $sharedfolder->getUserGroups();
    foreach ($all_groups as $group) {
        if (array_key_exists($group->getUniqueID(), $used_groups) === false) {
            $available_groups[$group->getUniqueID()] = $group;
        }
    }
    $can_manage_sharedfolders = isAuthorized('manageSharedFolders');
    page_header();
    echo '<div id="sharedfolders_div">';
    echo '<h1>' . $sharedfolder->name . '</h1>';
    echo '<div>';
    echo '<h2>' . _('Server') . '</h2>';
    echo '<a href="servers.php?action=manage&fqdn=' . $sharedfolder->server . '"> ' . $sharedfolder->server . '</a>';
    echo '</div>';
    echo '<br />';
    echo '<div>';
    echo '<h2>' . _('Configuration') . '</h2>';
    echo '<table>';
    echo '<tr><td>';
    echo _('Name') . ': ';
    echo '</td><td>';
    if ($can_manage_sharedfolders) {
        echo '<form action="actions.php" method="post">';
        echo '<input type="hidden" name="name" value="SharedFolder" />';
        echo '<input type="hidden" name="action" value="rename" />';
        echo '<input type="hidden" name="id" value="' . $sharedfolder->id . '" />';
    }
    echo '<input type="text" name="sharedfolder_name" value="' . $sharedfolder->name . '" />';
    if ($can_manage_sharedfolders) {
        echo ' <input type="submit" value="' . _('Rename') . '" />';
        echo '</form>';
    }
    echo '</td></tr>';
    echo '</table>';
    echo '</div>';
    echo '<br />';
    echo '<div>';
    echo '<h2>' . _('ACL') . '</h2>';
    echo '<table border="0" cellspacing="1" cellpadding="3">';
    foreach ($used_groups as $group) {
        echo '<tr>';
        echo '<td><a href="usersgroup.php?action=manage&amp;id=' . $group->getUniqueID() . '">' . $group->name . '</a></td>';
        if ($can_manage_sharedfolders) {
            echo '<td><form action="actions.php" method="post" onsubmit="return confirm(\'' . _('Are you sure you want to delete this shared folder access?') . '\');">';
            echo '<input type="hidden" name="name" value="SharedFolder_ACL" />';
            echo '<input type="hidden" name="action" value="del" />';
            echo '<input type="hidden" name="sharedfolder_id" value="' . $sharedfolder->id . '" />';
            echo '<input type="hidden" name="usergroup_id" value="' . $group->getUniqueID() . '" />';
            echo '<input type="submit" value="' . _('Delete access to this shared folder') . '" />';
            echo '</form></td>';
        }
        echo '</tr>';
    }
    if (count($available_groups) > 0 and $can_manage_sharedfolders) {
        echo '<tr><form action="actions.php" method="post"><td>';
        echo '<input type="hidden" name="name" value="SharedFolder_ACL" />';
        echo '<input type="hidden" name="action" value="add" />';
        echo '<input type="hidden" name="sharedfolder_id" value="' . $sharedfolder->id . '" />';
        echo '<select name="usergroup_id">';
        foreach ($available_groups as $group) {
            echo '<option value="' . $group->getUniqueID() . '" >' . $group->name . '</option>';
        }
        echo '</select>';
        echo '</td><td><input type="submit" value="' . _('Add access to this shared folder') . '" /></td>';
        echo '</form></tr>';
    }
    echo '</table>';
    echo '</div>';
    echo '</div>';
    page_footer();
}
コード例 #11
0
ファイル: checkup.php プロジェクト: skdong/nfs-ovd
function checkup_liaison($type_, $element_, $group_)
{
    switch ($type_) {
        case 'ApplicationServer':
            $applicationDB = ApplicationDB::getInstance();
            $buf = $applicationDB->import($element_);
            if (!is_object($buf)) {
                return 'Application "' . $element_ . '" does not exist';
            }
            $buf = Abstract_Server::load($group_);
            if (!$buf) {
                return 'Server "' . $group_ . '" does not exist';
            }
            break;
        case 'AppsGroup':
            $applicationDB = ApplicationDB::getInstance();
            $buf = $applicationDB->import($element_);
            if (!is_object($buf)) {
                return 'Application "' . $element_ . '" does not exist';
            }
            $applicationsGroupDB = ApplicationsGroupDB::getInstance();
            $buf = $applicationsGroupDB->import($group_);
            if (!is_object($buf)) {
                return 'ApplicationsGroup "' . $group_ . '" does not exist';
            }
            break;
        case 'ApplicationMimeType':
            $applicationDB = ApplicationDB::getInstance();
            $buf = $applicationDB->import($element_);
            if (!is_object($buf)) {
                return 'Application "' . $element_ . '" does not exist';
            }
            break;
        case 'ServerSession':
            $buf = Abstract_Server::load($element_);
            if (!$buf) {
                return 'Server "' . $element_ . '" does not exist';
            }
            $buf = Abstract_Session::load($group_);
            if (!$buf) {
                return 'Session "' . $group_ . '" does not exist';
            }
            break;
        case 'UserGroupSharedFolder':
            $sharedfolderdb = SharedFolderDB::getInstance();
            $userGroupDB = UserGroupDB::getInstance();
            $buf = $userGroupDB->import($element_);
            if (!is_object($buf)) {
                return 'UserGroup "' . $element_ . '" does not exist';
            }
            $buf = $sharedfolderdb->import($group_);
            if (!$buf) {
                return 'SharedFolder "' . $group_ . '" does not exist';
            }
            break;
        case 'UserProfile':
            $profiledb = ProfileDB::getInstance();
            $userDB = UserDB::getInstance();
            $buf = $userDB->import($element_);
            if (!is_object($buf)) {
                return 'User "' . $element_ . '" does not exist';
            }
            $buf = $profiledb->import($group_);
            if (!$buf) {
                return 'Profile "' . $group_ . '" does not exist';
            }
            break;
        case 'UsersGroup':
            $userDB = UserDB::getInstance();
            $buf = $userDB->import($element_);
            if (!is_object($buf)) {
                return 'User "' . $element_ . '" does not exist';
            }
            $userGroupDB = UserGroupDB::getInstance();
            $buf = $userGroupDB->import($group_);
            if (!is_object($buf)) {
                return 'UserGroup "' . $group_ . '" does not exist';
            }
            break;
        case 'UsersGroupApplicationsGroup':
            $userGroupDB = UserGroupDB::getInstance();
            $buf = $userGroupDB->import($element_);
            if (!is_object($buf)) {
                return 'UserGroup "' . $element_ . '" does not exist';
            }
            $applicationsGroupDB = ApplicationsGroupDB::getInstance();
            $buf = $applicationsGroupDB->import($group_);
            if (!is_object($buf)) {
                return 'ApplicationsGroup "' . $group_ . '" does not exist';
            }
            break;
        case 'UsersGroupCached':
            $userDB = UserDB::getInstance();
            $buf = $userDB->import($element_);
            if (!is_object($buf)) {
                return 'User "' . $element_ . '" does not exist';
            }
            $userGroupDB = UserGroupDB::getInstance();
            $buf = $userGroupDB->import($group_);
            if (!is_object($buf)) {
                return 'UserGroup "' . $group_ . '" does not exist';
            }
            break;
    }
    return true;
}
コード例 #12
0
ファイル: api.php プロジェクト: bloveing/openulteo
 public function shared_folder_remove_group($group_id_, $share_id_)
 {
     $this->check_authorized('manageSharedFolders');
     if (!Preferences::moduleIsEnabled('SharedFolderDB')) {
         Logger::error('api', 'Shared folder management is not enabled');
         return false;
     }
     $sharedfolderdb = SharedFolderDB::getInstance();
     $sharedfolder = $sharedfolderdb->import($share_id_);
     if (!is_object($sharedfolder)) {
         Logger::error('api', sprintf('Unknown shared folder "%s"', $share_id_));
         return false;
     }
     $usergroupDB = UserGroupDB::getInstance();
     $group = $usergroupDB->import($group_id_);
     if (is_object($group) === false) {
         Logger::error('api', sprintf('Unknown users group "%s"', $group_id_));
         return false;
     }
     $ret = $sharedfolder->delUserGroup($group);
     if (!$ret) {
         return false;
     }
     $this->log_action('shared_folder_remove_group', array('share_name' => $sharedfolder->name, 'group_name' => $group->name));
     return true;
 }
コード例 #13
0
ファイル: usersgroup.php プロジェクト: skdong/nfs-ovd
function show_manage($id)
{
    global $schedules;
    $prefs = Preferences::getInstance();
    if (!$prefs) {
        die_error('get Preferences failed', __FILE__, __LINE__);
    }
    $userGroupDB = UserGroupDB::getInstance();
    $group = $userGroupDB->import($id);
    if (!is_object($group)) {
        die_error(_('Failed to load usergroup'));
    }
    $usergroupdb_rw = $userGroupDB->isWriteable();
    $policy = $group->getPolicy();
    $policy_rule_enable = 0;
    $policy_rules_disable = 0;
    foreach ($policy as $key => $value) {
        if ($value === true) {
            $policy_rule_enable++;
        } else {
            $policy_rules_disable++;
        }
    }
    $buffer = $prefs_policy = $prefs->get('general', 'policy');
    $default_policy = $prefs_policy['default_policy'];
    if (!is_object($group)) {
        die_error('Group "' . $id . '" is not OK', __FILE__, __LINE__);
    }
    if ($group->published) {
        $status = '<span class="msg_ok">' . _('Enabled') . '</span>';
        $status_change = _('Block');
        $status_change_value = 0;
    } else {
        $status = '<span class="msg_error">' . _('Blocked') . '</span>';
        $status_change = _('Enable');
        $status_change_value = 1;
    }
    $userDB = UserDB::getInstance();
    $applicationsGroupDB = ApplicationsGroupDB::getInstance();
    if ($group->isDefault() == false) {
        $users = $group->usersLogin();
        sort($users);
        $has_users = count($users) > 0;
        if ($usergroupdb_rw) {
            $usersList = new UsersList($_REQUEST);
            $users_all = $usersList->search();
            $search_form = $usersList->getForm(array('action' => 'manage', 'id' => $id, 'search_user' => true));
            if (is_null($users_all)) {
                $users_all = array();
            }
            $users_available = array();
            foreach ($users_all as $user) {
                $found = false;
                foreach ($users as $user2) {
                    if ($user2 == $user->getAttribute('login')) {
                        $found = true;
                    }
                }
                if (!$found) {
                    $users_available[] = $user->getAttribute('login');
                }
            }
        } else {
            $users_available = array();
            $users_all = array();
            foreach ($users as $a_login) {
                $users_all[] = $userDB->import($a_login);
            }
            usort($users_all, "user_cmp");
        }
    } else {
        $users = array();
        $users_available = array();
        $users_all = array();
        $search_form = null;
    }
    // Default usergroup
    $is_default_group = $prefs->get('general', 'user_default_group') == $id;
    // Publications
    $groups_apps = array();
    foreach (Abstract_Liaison::load('UsersGroupApplicationsGroup', $id, NULL) as $group_a) {
        $obj = $applicationsGroupDB->import($group_a->group);
        if (is_object($obj)) {
            $groups_apps[] = $obj;
        }
    }
    $groups_apps_all = $applicationsGroupDB->getList();
    $groups_apps_available = array();
    foreach ($groups_apps_all as $group_apps) {
        if (!in_array($group_apps, $groups_apps)) {
            $groups_apps_available[] = $group_apps;
        }
    }
    $can_manage_usersgroups = isAuthorized('manageUsersGroups');
    $can_manage_publications = isAuthorized('managePublications');
    $can_manage_sharedfolders = isAuthorized('manageServers');
    $prefs_to_get_for_a_group = array('session_settings_defaults', 'remote_desktop_settings', 'remote_applications_settings');
    $prefs_of_a_group = array();
    $unuse_settings = array();
    $session_prefs = array();
    foreach ($prefs_to_get_for_a_group as $prefs_to_get_for_a_group_value) {
        $prefs_of_a_group[$prefs_to_get_for_a_group_value] = array();
        $unuse_settings[$prefs_to_get_for_a_group_value] = array();
        $session_prefs[$prefs_to_get_for_a_group_value] = $prefs->getElements('general', $prefs_to_get_for_a_group_value);
        $prefs_of_a_group_unsort = Abstract_UserGroup_Preferences::loadByUserGroupId($group->getUniqueID(), 'general', $prefs_to_get_for_a_group_value);
        foreach ($session_prefs[$prefs_to_get_for_a_group_value] as $k4 => $v4) {
            // we should use the ones from the group ($prefs_of_a_group_unsort) but we can display then if they are in $session_prefs
            if (array_key_exists($k4, $prefs_of_a_group_unsort)) {
                $prefs_of_a_group[$prefs_to_get_for_a_group_value][$k4] = $prefs_of_a_group_unsort[$k4];
            } else {
                $unuse_settings[$prefs_to_get_for_a_group_value][$k4] = $v4;
            }
        }
    }
    page_header();
    echo '<div id="users_div">';
    echo '<h1><a href="?">' . _('User groups management') . '</a> - ' . $group->name . '</h1>';
    echo '<table class="main_sub" border="0" cellspacing="1" cellpadding="5">';
    echo '<tr class="title">';
    echo '<th>' . _('Description') . '</th>';
    echo '<th>' . _('Status') . '</th>';
    echo '</tr>';
    echo '<tr class="content1">';
    echo '<td>' . $group->description . '</td>';
    echo '<td>' . $status . '</td>';
    echo '</tr>';
    echo '</table>';
    if ($can_manage_usersgroups) {
        echo '<div>';
        echo '<h2>' . _('Settings') . '</h1>';
        if ($group->type == 'static' and $can_manage_usersgroups and $usergroupdb_rw) {
            echo '<form action="actions.php" method="post">';
            if ($is_default_group) {
                echo '<input type="submit" value="' . _('Remove from default') . '"/>';
                echo '<input type="hidden" name="action" value="unset_default" />';
            } else {
                echo '<input type="submit" value="' . _('Define as default') . '"/>';
                echo '<input type="hidden" name="action" value="set_default" />';
            }
            echo '<input type="hidden" name="name" value="UserGroup" />';
            echo '<input type="hidden" name="id" value="' . $group->getUniqueID() . '" />';
            echo '</form>';
            echo '<br/>';
        }
        if ($usergroupdb_rw || $group->type != 'static') {
            echo '<form action="actions.php" method="post" onsubmit="return confirm(\'' . _('Are you sure you want to delete this group?') . '\');">';
            echo '<input type="submit" value="' . _('Delete this group') . '"/>';
            echo '<input type="hidden" name="name" value="UserGroup" />';
            echo '<input type="hidden" name="action" value="del" />';
            echo '<input type="hidden" name="checked_groups[]" value="' . $id . '" />';
            echo '</form>';
            echo '<br/>';
            echo '<form action="actions.php" method="post">';
            echo '<input type="hidden" name="name" value="UserGroup" />';
            echo '<input type="hidden" name="action" value="modify" />';
            echo '<input type="hidden" name="id" value="' . $id . '" />';
            echo '<input type="hidden" name="published" value="' . $status_change_value . '" />';
            echo '<input type="submit" value="' . $status_change . '"/>';
            echo '</form>';
            echo '<br/>';
            echo '<form action="actions.php" method="post">';
            echo '<input type="hidden" name="name" value="UserGroup" />';
            echo '<input type="hidden" name="action" value="modify" />';
            echo '<input type="hidden" name="id" value="' . $id . '" />';
            echo '<input type="text" name="name_group"  value="' . $group->name . '" size="50" /> ';
            echo '<input type="submit" value="' . _('Update the name') . '"/>';
            echo '</form>';
            echo '<br/>';
            echo '<form action="actions.php" method="post">';
            echo '<input type="hidden" name="name" value="UserGroup" />';
            echo '<input type="hidden" name="action" value="modify" />';
            echo '<input type="hidden" name="id" value="' . $id . '" />';
            echo '<input type="text" name="description"  value="' . $group->description . '" size="50" /> ';
            echo '<input type="submit" value="' . _('Update the description') . '"/>';
            echo '</form>';
        }
        if ($group->type == 'dynamiccached') {
            echo '<br />';
            echo '<form action="actions.php" method="post">';
            echo '<input type="hidden" name="name" value="UserGroup" />';
            echo '<input type="hidden" name="action" value="modify" />';
            echo '<input type="hidden" name="id" value="' . $id . '" />';
            echo ' <select name="schedule">';
            foreach ($schedules as $interval => $text) {
                echo '<option value="' . $interval . '"';
                if ($group->schedule == $interval) {
                    echo ' selected="selected"';
                }
                echo '>' . $text . '</option>';
            }
            echo '</select>';
            echo '<input type="submit" value="' . _('Update the schedule') . '"/>';
            echo '</form>';
        }
        echo '</div>';
        echo '<br/>';
    }
    if (str_startswith($group->type, 'dynamic')) {
        echo '<div>';
        echo '<h2>' . _('Rules') . '</h1>';
        if ($can_manage_usersgroups) {
            echo '<form action="actions.php" method="post">';
            echo '<input type="hidden" name="name" value="UserGroup" />';
            echo '<input type="hidden" name="action" value="modify_rules" />';
            echo '<input type="hidden" name="id" value="' . $id . '" />';
        }
        echo '<table class="main_sub" border="0" cellspacing="1" cellpadding="3">';
        echo '<tr class="content1">';
        echo '<th>' . _('Validation type') . '</th>';
        echo '<td><input type="radio" name="validation_type" value="and"';
        if ($group->validation_type == 'and') {
            echo ' checked="checked"';
        }
        echo ' /> ' . _('All') . ' <input type="radio" name="validation_type" value="or"';
        if ($group->validation_type == 'or') {
            echo ' checked="checked"';
        }
        echo ' /> ' . _('At least one') . '</td>';
        echo '</tr>';
        echo '<tr class="content2">';
        echo '<th>' . _('Filters') . '</th>';
        echo '<td>';
        $i = 0;
        $filter_attributes = $userDB->getAttributesList();
        foreach ($filter_attributes as $key1 => $value1) {
            if ($value1 == 'password') {
                unset($filter_attributes[$key1]);
            }
        }
        $filter_types = UserGroup_Rule::$types;
        echo '<table border="0" cellspacing="1" cellpadding="3">';
        $i = 0;
        foreach ($group->rules as $rule) {
            echo '<tr>';
            echo '<td><select name="rules[' . $i . '][attribute]">';
            foreach ($filter_attributes as $filter_attribute) {
                echo '<option value="' . $filter_attribute . '"';
                if ($rule->attribute == $filter_attribute) {
                    echo ' selected="selected"';
                }
                echo '>' . $filter_attribute . '</option>';
            }
            echo '</select></td>';
            echo '<td><select name="rules[' . $i . '][type]">';
            foreach ($filter_types as $filter_type) {
                echo '<option value="' . $filter_type . '"';
                if ($rule->type == $filter_type) {
                    echo ' selected="selected"';
                }
                echo '>' . $filter_type . '</option>';
            }
            echo '</select></td>';
            echo '<td><input type="text" name="rules[' . $i . '][value]" value="' . $rule->value . '" /></td>';
            if ($can_manage_usersgroups) {
                echo '<td>';
                echo '<input';
                if ($i == 0 && count($group->rules) == 1 || $i == count($group->rules)) {
                    echo ' style="display: none;"';
                }
                echo ' type="button" onclick="del_field(this.parentNode.parentNode); return false;" value="-" />';
                echo '<input';
                if ($i + 1 != count($group->rules)) {
                    echo ' style="display: none;"';
                }
                echo ' type="button" onclick="add_field(this.parentNode.parentNode); return false;" value="+" />';
                echo '</td>';
            }
            echo '</tr>';
            $i++;
        }
        echo '</table>';
        echo '</td>';
        echo '</tr>';
        echo '</table>';
        echo '<br />';
        if ($can_manage_usersgroups) {
            echo '<input type="submit" value="' . _('Update rules') . '" />';
            echo '</form>';
        }
        echo '</div>';
        echo '<br />';
    }
    // Users list
    if (count($users_all) > 0 || count($users) > 0 || $group->isDefault()) {
        echo '<div>';
        echo '<h2>' . _('List of users in this group') . '</h2>';
        if ($group->isDefault()) {
            echo _('All available users are in this group.');
        } else {
            echo '<table border="0" cellspacing="1" cellpadding="3">';
            if (count($users) > 0) {
                foreach ($users as $user) {
                    echo '<tr>';
                    echo '<td><a href="users.php?action=manage&id=' . $user . '">' . $user . '</td>';
                    echo '<td>';
                    if ($usergroupdb_rw && $group->type == 'static' && !$group->isDefault() and $can_manage_usersgroups) {
                        echo '<form action="actions.php" method="post" onsubmit="return confirm(\'' . _('Are you sure you want to delete this user?') . '\');">';
                        echo '<input type="hidden" name="action" value="del" />';
                        echo '<input type="hidden" name="name" value="User_UserGroup" />';
                        echo '<input type="hidden" name="group" value="' . $id . '" />';
                        echo '<input type="hidden" name="element" value="' . $user . '" />';
                        echo '<input type="submit" value="' . _('Delete from this group') . '" />';
                        echo '</form>';
                        echo '</td>';
                    }
                    echo '</tr>';
                }
            }
            if (count($users_available) > 0 && $usergroupdb_rw && $group->type == 'static' and $can_manage_usersgroups) {
                echo '<tr><form action="actions.php" method="post"><td>';
                echo '<input type="hidden" name="action" value="add" />';
                echo '<input type="hidden" name="name" value="User_UserGroup" />';
                echo '<input type="hidden" name="group" value="' . $id . '" />';
                echo '<select name="element">';
                foreach ($users_available as $user) {
                    echo '<option value="' . $user . '" >' . $user . '</option>';
                }
                echo '</select>';
                echo '</td><td><input type="submit" value="' . _('Add to this group') . '" /></td>';
                echo '</form></tr>';
            }
            echo '</table>';
            if ($usergroupdb_rw && $group->type == 'static' and $can_manage_usersgroups) {
                echo '<br/>';
                echo $search_form;
            }
            echo '</div>';
            echo '<br/>';
        }
    }
    // Publications part
    if (count($groups_apps_all) > 0) {
        echo '<div>';
        echo '<h2>' . _('List of publications for this group') . '</h1>';
        echo '<table border="0" cellspacing="1" cellpadding="3">';
        if (count($groups_apps) > 0) {
            foreach ($groups_apps as $groups_app) {
                echo '<tr>';
                echo '<td><a href="appsgroup.php?action=manage&id=' . $groups_app->id . '">' . $groups_app->name . '</td>';
                if ($can_manage_publications) {
                    echo '<td>';
                    echo '<form action="actions.php" method="post" onsubmit="return confirm(\'' . _('Are you sure you want to delete this publication?') . '\');">';
                    echo '<input type="hidden" name="action" value="del" />';
                    echo '<input type="hidden" name="name" value="Publication" />';
                    echo '<input type="hidden" name="group_u" value="' . $id . '" />';
                    echo '<input type="hidden" name="group_a" value="' . $groups_app->id . '" />';
                    echo '<input type="submit" value="' . _('Delete this publication') . '" />';
                    echo '</form>';
                    echo '</td>';
                }
                echo '</tr>';
            }
        }
        if (count($groups_apps_available) > 0 and $can_manage_publications) {
            echo '<tr><form action="actions.php" method="post"><td>';
            echo '<input type="hidden" name="action" value="add" />';
            echo '<input type="hidden" name="name" value="Publication" />';
            echo '<input type="hidden" name="group_u" value="' . $id . '" />';
            echo '<select name="group_a">';
            foreach ($groups_apps_available as $group_apps) {
                echo '<option value="' . $group_apps->id . '" >' . $group_apps->name . '</option>';
            }
            echo '</select>';
            echo '</td><td><input type="submit" value="' . _('Add this publication') . '" /></td>';
            echo '</form></tr>';
        }
        echo '</table>';
        echo '</div>';
    }
    // Policy of this group
    echo '<div>';
    echo '<h2>' . _('Policy of this group') . '</h2>';
    echo '<table border="0" cellspacing="1" cellpadding="3">';
    foreach ($policy as $key => $value) {
        if ($value === false) {
            continue;
        }
        $extends_from_default = in_array($key, $default_policy);
        $buffer = $extends_from_default === true ? ' (' . _('extend from default') . ')' : '';
        echo '<tr>';
        echo '<td>' . $key . ' ' . $buffer . '</td>';
        if ($can_manage_usersgroups && !$extends_from_default) {
            echo '<td>';
            echo '<form action="actions.php" method="post" onsubmit="return confirm(\'' . _('Are you sure you want to delete this rule?') . '\');">';
            echo '<input type="hidden" name="name" value="UserGroup_PolicyRule" />';
            echo '<input type="hidden" name="action" value="del" />';
            echo '<input type="hidden" name="id" value="' . $group->getUniqueID() . '" />';
            echo '<input type="hidden" name="element" value="' . $key . '" />';
            echo '<input type="submit" value="' . _('Delete this rule') . '" />';
            echo '</form>';
            echo '</td>';
        }
        echo '</tr>';
    }
    if ($can_manage_usersgroups && count($policy_rules_disable) > 0 && array_search(false, $policy) !== false) {
        echo '<tr><form action="actions.php" method="post"><td>';
        echo '<input type="hidden" name="name" value="UserGroup_PolicyRule" />';
        echo '<input type="hidden" name="action" value="add" />';
        echo '<input type="hidden" name="id" value="' . $group->getUniqueID() . '" />';
        echo '<select name="element">';
        foreach ($policy as $key => $value) {
            if ($value === true) {
                continue;
            }
            echo '<option value="' . $key . '" >' . $key . '</option>';
        }
        echo '</select>';
        echo '</td><td><input type="submit" value="' . _('Add this rule') . '" /></td>';
        echo '</form></tr>';
    }
    echo '</table>';
    echo '</div>';
    echo '<br/>';
    if (Preferences::moduleIsEnabled('SharedFolderDB')) {
        $sharedfolderdb = SharedFolderDB::getInstance();
        $all_sharedfolders = $sharedfolderdb->getList();
        if (count($all_sharedfolders) > 0) {
            $available_sharedfolders = array();
            $used_sharedfolders = $sharedfolderdb->importFromUsergroup($group->getUniqueID());
            foreach ($all_sharedfolders as $sharedfolder) {
                if (in_array($sharedfolder->id, array_keys($used_sharedfolders))) {
                    continue;
                }
                $available_sharedfolders[] = $sharedfolder;
            }
            echo '<br />';
            echo '<div>';
            echo '<h2>' . _('Shared folders') . '</h1>';
            echo '<table border="0" cellspacing="1" cellpadding="3">';
            foreach ($used_sharedfolders as $sharedfolder) {
                echo '<tr>';
                echo '<td><a href="sharedfolders.php?action=manage&amp;id=' . $sharedfolder->id . '">' . $sharedfolder->name . '</a></td>';
                if ($can_manage_sharedfolders) {
                    echo '<td><form action="actions.php" method="post" onsubmit="return confirm(\'' . _('Are you sure you want to delete this shared folder access?') . '\');">';
                    echo '<input type="hidden" name="name" value="SharedFolder_ACL" />';
                    echo '<input type="hidden" name="action" value="del" />';
                    echo '<input type="hidden" name="sharedfolder_id" value="' . $sharedfolder->id . '" />';
                    echo '<input type="hidden" name="usergroup_id" value="' . $group->getUniqueID() . '" />';
                    echo '<input type="submit" value="' . _('Delete access to this shared folder') . '" />';
                    echo '</form></td>';
                }
                echo '</tr>';
            }
            if (count($available_sharedfolders) > 0 && $can_manage_sharedfolders) {
                echo '<tr><form action="actions.php" method="post"><td>';
                echo '<input type="hidden" name="name" value="SharedFolder_ACL" />';
                echo '<input type="hidden" name="action" value="add" />';
                echo '<input type="hidden" name="usergroup_id" value="' . $group->getUniqueID() . '" />';
                echo '<select name="sharedfolder_id">';
                foreach ($available_sharedfolders as $sharedfolder) {
                    echo '<option value="' . $sharedfolder->id . '" >' . $sharedfolder->name . '</option>';
                }
                echo '</select>';
                echo '</td><td><input type="submit" value="' . _('Add access to this shared folder') . '" /></td>';
                echo '</form></tr>';
            }
            echo '</table>';
            echo '</div>';
        }
        echo '<br />';
    }
    echo '<div>';
    // Session settings configuration
    echo '<h2>';
    echo _('Session settings configuration');
    echo '</h2>';
    if ($prefs_of_a_group != array()) {
        foreach ($prefs_of_a_group as $container => $prefs_of_a_group_value) {
            echo '<fieldset class="prefssessionusergroup">';
            echo '<legend>' . $prefs->getPrettyName($container) . '</legend>';
            echo '<form action="actions.php" method="post">';
            $key_name = 'general';
            echo '<input type="hidden" name="container" value="' . $container . '" />';
            // from admin/functions.inc.php
            $color = 0;
            if (count($prefs_of_a_group_value) != 0) {
                echo '<table class="main_sub" border="0" cellspacing="1" cellpadding="3" style="margin-bottom: 10px;">';
                // TODO
                echo '<tr  class="title">';
                echo '<th>' . _('Name') . '</th>';
                echo '<th>' . _('Default value') . '</th>';
                echo '<th>' . _('Value') . '</th>';
                echo '<th>' . _('Action') . '</th>';
                echo '<tr>';
                foreach ($prefs_of_a_group_value as $element_key => $usersgroup_preferences) {
                    $config_element = $usersgroup_preferences->toConfigElement();
                    echo '<tr class="content' . ($color % 2 + 1) . '">';
                    echo '<td style="width: 250px;">';
                    echo '<span onmouseover="showInfoBulle(\'' . str_replace("'", "&rsquo;", $config_element->description_detailed) . '\'); return false;" onmouseout="hideInfoBulle(); return false;">' . $config_element->label . '</span>';
                    echo '<td>';
                    $default_element = $session_prefs[$container][$config_element->id];
                    $default_element->setFormSeparator('NaN');
                    // it must be different of ___
                    $default_element->setPath(array('key_name' => $key_name, 'container' => $container, 'element_id' => $config_element->id));
                    echo $default_element->toHTML(true);
                    echo '</td>';
                    echo '</td>';
                    echo '<td style="padding: 3px;">';
                    print_element($key_name, $container, $element_key, $config_element);
                    echo '</td>';
                    echo '<td>';
                    echo '<input type="button" value="' . _('Remove this overriden setting') . '" onclick="usergroup_settings_remove(\'' . $group->getUniqueID() . '\',\'' . $container . '\',\'' . $config_element->id . '\'); return false;"/>';
                    echo '</td>';
                    echo '</tr>';
                    $color++;
                }
                // end from
                echo '<tr class="content' . ($color % 2 + 1) . '">';
                echo '<td colspan="3"></td>';
                echo '<td>';
                echo '<input type="hidden" name="name" value="UserGroup_settings" />';
                echo '<input type="hidden" name="container" value="' . $container . '" />';
                echo '<input type="hidden" name="unique_id" value="' . $group->getUniqueID() . '" />';
                echo '<input type="hidden" name="action" value="modify" />';
                echo '<input type="submit" value="' . _('Save settings') . '" />';
                echo '</td>';
                echo '</tr>';
                echo '</table>';
                echo '</form>';
            }
            if ($unuse_settings[$container] != array()) {
                echo '<form action="actions.php" method="post">';
                echo '<input type="hidden" name="name" value="UserGroup_settings" />';
                echo '<input type="hidden" name="container" value="' . $container . '" />';
                echo '<input type="hidden" name="unique_id" value="' . $group->getUniqueID() . '" />';
                echo '<input type="hidden" name="action" value="add" />';
                echo '<select name="element_id">';
                foreach ($unuse_settings[$container] as $setting_name => $setting_content) {
                    echo '<option value="' . $setting_name . '" >' . $setting_content->label . '</option>';
                }
                echo '</select>';
                echo ' ';
                echo '<input type="submit" value="' . _('Add this setting') . '" />';
                echo '</form>';
            }
            echo '</fieldset>';
        }
    }
    echo '</div>';
    // Session settings configuration
    echo "\n\n\n";
    echo '</div>';
    page_footer();
    die;
}
コード例 #14
0
 public static function removeRole($fqdn_, $role_)
 {
     Logger::debug('main', "Starting Abstract_Server::removeRole for '{$fqdn_}' removing '{$role_}'");
     if (substr($fqdn_, -1) == '.') {
         $fqdn_ = substr($fqdn_, 0, strlen($fqdn_) - 1);
     }
     $a_server = Abstract_Server::load($fqdn_);
     if (is_object($a_server) == false) {
         Logger::error('main', "Starting Abstract_Server::removeRole error failed to load server '{$fqdn_}'");
         return false;
     }
     $roles = $a_server->getAttribute('roles');
     if (is_array($roles) == false) {
         return false;
     }
     if (in_array($role_, $roles) == false) {
         return false;
     }
     switch ($role_) {
         case Server::SERVER_ROLE_APS:
             $prefs = Preferences::getInstance();
             if (!$prefs) {
                 die_error('get Preferences failed', __FILE__, __LINE__);
             }
             $slave_server_settings = $prefs->get('general', 'slave_server_settings');
             $remove_orphan = (bool) $slave_server_settings['remove_orphan'];
             Abstract_Liaison::delete('ApplicationServer', NULL, $fqdn_);
             if ($remove_orphan) {
                 $apps = $a_server->getApplications();
                 $applicationDB = ApplicationDB::getInstance();
                 // remove the orphan applications
                 if (is_array($apps)) {
                     foreach ($apps as $an_application) {
                         if ($an_application->isOrphan()) {
                             Logger::debug('main', "Abstract_Server::delete {$an_application} is orphan");
                             $applicationDB->remove($an_application);
                         }
                     }
                 }
             }
             $tm = new Tasks_Manager();
             $tm->load_from_server($fqdn_);
             foreach ($tm->tasks as $a_task) {
                 $tm->remove($a_task->id);
             }
             break;
         case Server::SERVER_ROLE_FS:
             if (Preferences::moduleIsEnabled('ProfileDB')) {
                 $profiledb = ProfileDB::getInstance();
                 $folders = $profiledb->importFromServer($fqdn_);
                 foreach ($folders as $a_folder) {
                     $profiledb->remove($a_folder->id);
                 }
             }
             if (Preferences::moduleIsEnabled('SharedFolderDB')) {
                 $sharedfolderdb = SharedFolderDB::getInstance();
                 $folders = $sharedfolderdb->importFromServer($fqdn_);
                 foreach ($folders as $a_folder) {
                     $profiledb->remove($a_folder->id);
                 }
             }
             break;
             // 			case Server::SERVER_ROLE_GATEWAY:
             // 			break;
     }
     return true;
 }
コード例 #15
0
function server_display_role_preparation_fs($server_)
{
    $ret = array();
    if (Preferences::moduleIsEnabled('ProfileDB') == false && Preferences::moduleIsEnabled('SharedFolderDB') == false) {
        return $ret;
    }
    $networkfolders = false;
    if (Preferences::moduleIsEnabled('SharedFolderDB')) {
        $sharedfolderdb = SharedFolderDB::getInstance();
        $networkfolders = $sharedfolderdb->importFromServer($server_->getAttribute('fqdn'));
    }
    $profiles = false;
    if (Preferences::moduleIsEnabled('ProfileDB')) {
        $profiledb = ProfileDB::getInstance();
        $profiles = $profiledb->importFromServer($server_->getAttribute('fqdn'));
    }
    $ret['NetworkFolders'] = array();
    $ret['profiles'] = array();
    $ret['sharedfolders'] = array();
    $ret['used by profiles'] = array();
    $ret['used by sharedfolders'] = array();
    if (is_array($networkfolders)) {
        foreach ($networkfolders as $a_networkfolder) {
            $ret['sharedfolders'][$a_networkfolder->id] = $a_networkfolder;
            if (isset($ret['used by sharedfolders'][$a_networkfolder->id]) === false) {
                $ret['used by sharedfolders'][$a_networkfolder->id] = array();
            }
            $groups = $a_networkfolder->getUserGroups();
            if (is_array($groups) && count($groups) > 0) {
                foreach ($groups as $a_group) {
                    $buf = array();
                    $buf['id'] = $a_group->getUniqueID();
                    $buf['name'] = $a_group->name;
                    $ret['used by sharedfolders'][$a_networkfolder->id][] = $buf;
                }
            }
        }
    }
    if (is_array($profiles)) {
        foreach ($profiles as $a_networkfolder) {
            $ret['profiles'][$a_networkfolder->id] = $a_networkfolder;
            if (isset($ret['used by profiles'][$a_networkfolder->id]) === false) {
                $ret['used by profiles'][$a_networkfolder->id] = array();
            }
            $users = $a_networkfolder->getUsers();
            if (is_array($users) && count($users) > 0) {
                foreach ($users as $a_user) {
                    $buf = array();
                    $buf['id'] = $a_user->getAttribute('login');
                    $buf['name'] = $a_user->getAttribute('displayname');
                    $ret['used by profiles'][$a_networkfolder->id][] = $buf;
                }
            }
        }
    }
    return $ret;
}