public function clearUserScopes($user_id)
 {
     $crit = $this->getCriteria();
     $crit->addWhere(self::SCOPE, TBGSettings::getDefaultScopeID(), Criteria::DB_NOT_EQUALS);
     $crit->addWhere(self::USER_ID, $user_id);
     $this->doDelete($crit);
 }
示例#2
0
 public static function loadFixtures(TBGScope $scope)
 {
     $scope_id = $scope->getID();
     $admin_group = new TBGGroup();
     $admin_group->setName('Administrators');
     $admin_group->setScope($scope);
     $admin_group->save();
     TBGSettings::saveSetting('admingroup', $admin_group->getID(), 'core', $scope_id);
     $user_group = new TBGGroup();
     $user_group->setName('Regular users');
     $user_group->setScope($scope);
     $user_group->save();
     TBGSettings::saveSetting('defaultgroup', $user_group->getID(), 'core', $scope_id);
     $guest_group = new TBGGroup();
     $guest_group->setName('Guests');
     $guest_group->setScope($scope);
     $guest_group->save();
     // Set up initial users, and their permissions
     if ($scope->isDefault()) {
         list($guestuser_id, $adminuser_id) = TBGUser::loadFixtures($scope, $admin_group, $user_group, $guest_group);
         TBGUserScopesTable::getTable()->addUserToScope($guestuser_id, $scope->getID(), $guest_group->getID(), true);
         TBGUserScopesTable::getTable()->addUserToScope($adminuser_id, $scope->getID(), $admin_group->getID(), true);
     } else {
         $default_scope_id = TBGSettings::getDefaultScopeID();
         $default_user_id = (int) TBGSettings::get(TBGSettings::SETTING_DEFAULT_USER_ID, 'core', $default_scope_id);
         TBGUserScopesTable::getTable()->addUserToScope($default_user_id, $scope->getID(), $user_group->getID(), true);
         TBGUserScopesTable::getTable()->addUserToScope(1, $scope->getID(), $admin_group->getID());
         TBGSettings::saveSetting(TBGSettings::SETTING_DEFAULT_USER_ID, $default_user_id, 'core', $scope->getID());
     }
     TBGPermissionsTable::getTable()->loadFixtures($scope, $admin_group->getID(), $guest_group->getID());
 }
示例#3
0
 public function runUpdateUserScopes(TBGRequest $request)
 {
     try {
         if (!TBGContext::getScope()->isDefault()) {
             throw new Exception('This operation is not allowed');
         }
         $user = TBGContext::factory()->TBGUser($request['user_id']);
         if ($user instanceof TBGUser) {
             $return_options = array('message' => $this->getI18n()->__("The user's scope access was successfully updated"));
             $scopes = $request->getParameter('scopes', array());
             if (count($scopes) && !(count($scopes) == 1 && array_key_exists(TBGSettings::getDefaultScopeID(), $scopes))) {
                 foreach ($user->getScopes() as $scope_id => $scope) {
                     if (!$scope->isDefault() && !array_key_exists($scope_id, $scopes)) {
                         $user->removeScope($scope_id);
                     }
                 }
                 foreach ($scopes as $scope_id => $scope) {
                     try {
                         $scope = new TBGScope((int) $scope_id);
                         if ($user->isMemberOfScope($scope)) {
                             continue;
                         }
                         $user->addScope($scope);
                     } catch (Exception $e) {
                     }
                 }
             }
             return $this->renderJSON($return_options);
         }
     } catch (Exception $e) {
         $this->getResponse()->setHttpStatus(400);
         return $this->renderJSON(array('error' => $this->getI18n()->__('This user could not be updated: %message', array('%message' => $e->getMessage()))));
     }
     $this->getResponse()->setHttpStatus(400);
     return $this->renderJSON(array('error' => $this->getI18n()->__('This user could not be updated')));
 }
示例#4
0
 /**
  * Performs post-save actions on user objects
  * 
  * This includes firing off events for modules to listen to (e.g. so 
  * activation emails can be sent out), and setting up a default 
  * dashboard for the new user.
  * 
  * @param boolean $is_new Whether this is a new object or not (automatically passed to the function from B2DB)
  */
 protected function _postSave($is_new)
 {
     if ($is_new) {
         // Set up a default dashboard for the user
         TBGDashboardViewsTable::getTable()->setDefaultViews($this->getID(), TBGDashboardViewsTable::TYPE_USER);
         $scope = TBGContext::factory()->TBGScope((int) TBGSettings::getDefaultScopeID());
         $this->addScope($scope, false);
         $this->confirmScope($scope->getID());
         if (!TBGContext::getScope()->isDefault()) {
             $scope = TBGContext::getScope();
             $this->addScope($scope, false);
             $this->confirmScope($scope->getID());
         }
         $event = TBGEvent::createNew('core', 'TBGUser::_postSave', $this);
         $event->trigger();
     }
     if ($this->_group_id !== null) {
         TBGUserScopesTable::getTable()->updateUserScopeGroup($this->getID(), TBGContext::getScope()->getID(), $this->_group_id);
     }
 }