public function dropPermissions() { $modules = PHPWS_Core::getModules(true, true); if (empty($modules)) { return false; } foreach ($modules as $mod) { $permTable = Users_Permission::getPermissionTableName($mod); $db = new PHPWS_DB($permTable); if (!$db->isTable($permTable)) { continue; } $db->addWhere('group_id', $this->id); PHPWS_Error::logIfError($db->delete()); $db = new PHPWS_DB('phpws_key_edit'); $db->addWhere('group_id', $this->id); PHPWS_Error::logIfError($db->delete()); $db = new PHPWS_DB('phpws_key_view'); $db->addWhere('group_id', $this->id); PHPWS_Error::logIfError($db->delete()); } return true; }
/** * Returns an associative list of all groups and their levels of permission * in reference to the key passed to it */ public static function getPermissionGroups($key, $edit_rights = false) { if (empty($key) || !is_a($key, 'Key') || $key->isHomeKey() || empty($key->module) || $edit_rights && empty($key->edit_permission)) { return NULL; } $permTable = Users_Permission::getPermissionTableName($key->module); if (!PHPWS_DB::isTable($permTable)) { return PHPWS_Error::get(USER_ERR_PERM_FILE, 'users', __CLASS__ . '::' . __FUNCTION__); } $db = new PHPWS_DB('users_groups'); $db->addColumn('users_groups.*'); $db->addColumn("{$permTable}.permission_level"); $db->addWhere('id', "{$permTable}.group_id"); $db->addWhere("{$permTable}.permission_level", 0, '>'); $test_db = new PHPWS_DB($permTable); if ($edit_rights) { if (!$test_db->isTableColumn($key->edit_permission)) { return PHPWS_Error::get(KEY_PERM_COLUMN_MISSING, 'core', 'Users_Permission::getRestrictedGroups', $key->edit_permission); } $db->addWhere($permTable . '.' . $key->edit_permission, 1); } $db->addOrder('name'); $result = $db->select(); if (empty($result) || PHPWS_Error::isError($result)) { return $result; } foreach ($result as $group) { if ($group['user_id']) { if ($group['permission_level'] == RESTRICTED_PERMISSION) { $glist['restricted']['all'][] = $glist['restricted']['users'][] = $group; } else { $glist['unrestricted']['users'][] = $glist['unrestricted']['all'][] = $group; } $glist['permitted']['users'][] = $group; } else { if ($group['permission_level'] == RESTRICTED_PERMISSION) { $glist['restricted']['groups'][] = $glist['restricted']['all'][] = $group; } else { $glist['unrestricted']['groups'][] = $glist['unrestricted']['all'][] = $group; } $glist['permitted']['groups'][] = $group; } $glist['permitted']['all'][] = $group; } return $glist; }