public function testAfterDelete() { $user = User::model()->findByPk('2'); if (X2_TEST_DEBUG_LEVEL > 1) { /**/ print 'id of user to delete: '; /**/ print $user->id; } // test calendar permissions deletion $this->assertNotEquals(0, sizeof(X2CalendarPermissions::model()->findAllByAttributes(array('user_id' => $user->id)))); $this->assertNotEquals(0, sizeof(X2CalendarPermissions::model()->findAllByAttributes(array('other_user_id' => $user->id)))); // assert that group to user records exist for this user $this->assertTrue(sizeof(GroupToUser::model()->findAllByAttributes(array('userId' => $user->id))) > 0); $this->assertTrue($user->delete()); X2_TEST_DEBUG_LEVEL > 1 && (print 'looking for groupToUser records with userId = ' . $user->id); GroupToUser::model()->refresh(); // assert that group to user records were deleted $this->assertTrue(sizeof(GroupToUser::model()->findAllByAttributes(array('userId' => $user->id))) === 0); // test profile deletion $this->assertTrue(sizeof(Profile::model()->findAllByAttributes(array('username' => $user->username))) === 0); // test social deletion $this->assertTrue(sizeof(Social::model()->findAllByAttributes(array('user' => $user->username))) === 0); $this->assertTrue(sizeof(Social::model()->findAllByAttributes(array('associationId' => $user->id))) === 0); // test event deletion $this->assertTrue(sizeof(Events::model()->findAll("user=:username OR (type='feed' AND associationId=" . $user->id . ")", array(':username' => $user->username))) === 0); // test calendar permissions deletion $this->assertEquals(0, sizeof(X2CalendarPermissions::model()->findAllByAttributes(array('user_id' => $user->id)))); $this->assertEquals(0, sizeof(X2CalendarPermissions::model()->findAllByAttributes(array('other_user_id' => $user->id)))); }
/** * Admin can set calendar permissions for all users */ public function actionUserCalendarPermissions() { if (isset($_POST['user-id'])) { $id = $_POST['user-id']; // clear old permissions X2CalendarPermissions::model()->deleteAllByAttributes(array('user_id' => $id)); $viewPermission = array(); $editPermission = array(); // $_POST['view-permission'] won't be set if no user has view permission if (isset($_POST['view-permission'])) { // any users have permssion to view this user's calendar? $viewPermission = $_POST['view-permission']; } if (isset($_POST['edit-permission'])) { // any users have permssion to edit this user's calendar? $editPermission = $_POST['edit-permission']; } $users = User::model()->findAll(array('select' => 'id')); foreach ($users as $user) { $view = in_array($user->id, $viewPermission); $edit = in_array($user->id, $editPermission); $permission = new X2CalendarPermissions(); $permission->user_id = $id; $permission->other_user_id = $user->id; $permission->view = $view; $permission->edit = $edit; $permission->save(); } } if (isset($_GET['id'])) { $this->render('userCalendarPermissions', array('id' => $_GET['id'])); } else { $this->render('userCalendarPermissions'); } }
public function afterDelete() { // delete related social records (e.g. notes) $social = Social::model()->findAllByAttributes(array('user' => $this->username)); foreach ($social as $socialItem) { $socialItem->delete(); } $social = Social::model()->findAllByAttributes(array('associationId' => $this->id)); foreach ($social as $socialItem) { $socialItem->delete(); } X2CalendarPermissions::model()->deleteAllByAttributes(array(), 'user_id=:userId OR other_user_id=:userId', array(':userId' => $this->id)); // delete profile $prof = Profile::model()->findByAttributes(array('username' => $this->username)); if ($prof) { $prof->delete(); } // delete associated events Yii::app()->db->createCommand()->delete('x2_events', "user=:username OR (type='feed' AND associationId=" . $this->id . ")", array(':username' => $this->username)); // Delete associated group to user records GroupToUser::model()->deleteAll(array('condition' => 'userId=' . $this->id)); parent::afterDelete(); }
public static function getUserIdsWithEditPermission($id) { $users = User::model()->findAll(array('select' => 'id, username, firstName, lastName', 'index' => 'id')); $permissions = X2CalendarPermissions::model()->findAll(array('select' => 'user_id, other_user_id, edit', 'condition' => 'user_id=:user_id', 'params' => array(':user_id' => $id), 'index' => 'other_user_id')); $ids = array(); $ids[] = 0; if (count($permissions) > 0) { // user has set permissions foreach ($users as $user) { if (isset($permissions[$user->id]) && $permissions[$user->id]->edit) { $ids[] = $user->id; } } } // if user hasn't set permissions, default to not let anyone edit there calendar return $ids; }