/** * Method perform a DELETE on the database, given a UserLoginData or Criteria object OR a primary key value. * * @param mixed $values Criteria or UserLoginData object or primary key or array of primary keys * which is used to create the DELETE statement * @param PropelPDO $con the connection to use * @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows * if supported by native driver or if emulated using Propel. * @throws PropelException Any exceptions caught during processing will be * rethrown wrapped into a PropelException. */ public static function doDelete($values, PropelPDO $con = null) { if ($con === null) { $con = Propel::getConnection(UserLoginDataPeer::DATABASE_NAME, Propel::CONNECTION_WRITE); } if ($values instanceof Criteria) { // invalidate the cache for all objects of this type, since we have no // way of knowing (without running a query) what objects should be invalidated // from the cache based on this Criteria. UserLoginDataPeer::clearInstancePool(); // rename for clarity $criteria = clone $values; } elseif ($values instanceof UserLoginData) { // it's a model object // invalidate the cache for this single object UserLoginDataPeer::removeInstanceFromPool($values); // create criteria based on pk values $criteria = $values->buildPkeyCriteria(); } else { // it's a primary key, or an array of pks $criteria = new Criteria(self::DATABASE_NAME); $criteria->add(UserLoginDataPeer::ID, (array) $values, Criteria::IN); // invalidate the cache for this object(s) foreach ((array) $values as $singleval) { UserLoginDataPeer::removeInstanceFromPool($singleval); } } // Set the correct dbName $criteria->setDbName(self::DATABASE_NAME); $affectedRows = 0; // initialize var to track total num of affected rows try { // use transaction because $criteria could contain info // for more than one table or we could emulating ON DELETE CASCADE, etc. $con->beginTransaction(); $affectedRows += BasePeer::doDelete($criteria, $con); UserLoginDataPeer::clearRelatedInstancePool(); $con->commit(); return $affectedRows; } catch (PropelException $e) { $con->rollBack(); throw $e; } }
public static function clearMemory() { accessControlPeer::clearInstancePool(); kuserPeer::clearInstancePool(); kshowPeer::clearInstancePool(); entryPeer::clearInstancePool(); // kvotePeer::clearInstancePool(); // commentPeer::clearInstancePool(); // flagPeer::clearInstancePool(); // favoritePeer::clearInstancePool(); // KshowKuserPeer::clearInstancePool(); // MailJobPeer::clearInstancePool(); SchedulerPeer::clearInstancePool(); SchedulerWorkerPeer::clearInstancePool(); SchedulerStatusPeer::clearInstancePool(); SchedulerConfigPeer::clearInstancePool(); ControlPanelCommandPeer::clearInstancePool(); BatchJobPeer::clearInstancePool(); // PriorityGroupPeer::clearInstancePool(); BulkUploadResultPeer::clearInstancePool(); // blockedEmailPeer::clearInstancePool(); // conversionPeer::clearInstancePool(); // flickrTokenPeer::clearInstancePool(); PuserKuserPeer::clearInstancePool(); // PuserRolePeer::clearInstancePool(); PartnerPeer::clearInstancePool(); // WidgetLogPeer::clearInstancePool(); // adminKuserPeer::clearInstancePool(); // notificationPeer::clearInstancePool(); moderationPeer::clearInstancePool(); moderationFlagPeer::clearInstancePool(); roughcutEntryPeer::clearInstancePool(); // widgetPeer::clearInstancePool(); uiConfPeer::clearInstancePool(); // PartnerStatsPeer::clearInstancePool(); // PartnerActivityPeer::clearInstancePool(); ConversionProfilePeer::clearInstancePool(); // ConversionParamsPeer::clearInstancePool(); // KceInstallationErrorPeer::clearInstancePool(); FileSyncPeer::clearInstancePool(); accessControlPeer::clearInstancePool(); mediaInfoPeer::clearInstancePool(); assetParamsPeer::clearInstancePool(); assetParamsOutputPeer::clearInstancePool(); assetPeer::clearInstancePool(); conversionProfile2Peer::clearInstancePool(); flavorParamsConversionProfilePeer::clearInstancePool(); categoryPeer::clearInstancePool(); syndicationFeedPeer::clearInstancePool(); TrackEntryPeer::clearInstancePool(); // SystemUserPeer::clearInstancePool(); StorageProfilePeer::clearInstancePool(); // EmailIngestionProfilePeer::clearInstancePool(); UploadTokenPeer::clearInstancePool(); // invalidSessionPeer::clearInstancePool(); DynamicEnumPeer::clearInstancePool(); UserLoginDataPeer::clearInstancePool(); PermissionPeer::clearInstancePool(); UserRolePeer::clearInstancePool(); PermissionItemPeer::clearInstancePool(); PermissionToPermissionItemPeer::clearInstancePool(); KuserToUserRolePeer::clearInstancePool(); $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaMemoryCleaner'); foreach ($pluginInstances as $pluginInstance) { $pluginInstance->cleanMemory(); } if (function_exists('gc_collect_cycles')) { // php 5.3 and above gc_collect_cycles(); } }
/** * Tests UserService->deleteAction() */ public function testDeleteAction() { // create a new user $this->startSession(KalturaSessionType::ADMIN, null); $newUser = $this->createUser(true, true, __FUNCTION__); $addedUser = $this->addUser($newUser); $this->assertType('KalturaUser', $addedUser); // try to delete with user ks - should fail $this->startSession(KalturaSessionType::USER, null); $exceptionThrown = false; try { $this->client->user->delete($newUser->id); } catch (Exception $e) { $exceptionThrown = $e; } $this->checkException($exceptionThrown, 'SERVICE_FORBIDDEN'); // check that can get user $this->startSession(KalturaSessionType::ADMIN, null); $getUser = $this->client->user->get($newUser->id); $this->assertType('KalturaUser', $getUser); $this->assertEquals(KalturaUserStatus::ACTIVE, $getUser->status); // check delete user with admin ks $deletedUser = $this->client->user->delete($newUser->id); $this->assertEquals(KalturaUserStatus::DELETED, $deletedUser->status); // delete user -> check no get $exceptionThrown = false; try { $this->client->user->get($newUser->id); } catch (Exception $e) { $exceptionThrown = $e; } $this->checkException($exceptionThrown, 'INVALID_USER_ID'); // delete user -> check no list with and without filter $userList = $this->client->user->listAction(); foreach ($userList->objects as $user) { if ($user->id == $newUser->id) { $this->fail('user->list returned a deleted user!'); } } $userFilter = new KalturaUserFilter(); $userFilter->idEqual = $newUser->id; $userList = $this->client->user->listAction($userFilter); $this->assertEquals(0, count($userList->objects)); $this->assertEquals(0, $userList->totalCount); // check that can add a new user with same id $addedUser = $this->addUser($newUser); $this->assertType('KalturaUser', $addedUser); $this->assertEquals($newUser->id, $addedUser->id); // delete user from one partner only $this->startSession(KalturaSessionType::ADMIN, null); $this->startSession2(KalturaSessionType::ADMIN, null); $newUser = $this->createUser(false, true, __FUNCTION__); $createdUser1 = $this->addUser($newUser); $this->assertType('KalturaUser', $createdUser1); $newUser->isAdmin = false; // make the user not admin on the 2nd partner $createdUser2 = $this->addUser2($newUser); $this->assertType('KalturaUser', $createdUser2); $this->assertEquals(self::TEST_PARTNER_ID, $createdUser1->partnerId); $this->assertEquals(self::TEST_PARTNER_ID_2, $createdUser2->partnerId); $deletedUser = $this->client->user->delete($newUser->id); $this->assertEquals(KalturaUserStatus::DELETED, $deletedUser->status); $exceptionThrown = false; try { $this->client->user->get($newUser->id); } catch (Exception $e) { $exceptionThrown = $e; } $this->checkException($exceptionThrown, 'INVALID_USER_ID'); $getUser2 = $this->client2->user->get($newUser->id); $this->assertEquals($createdUser2, $getUser2); $this->assertEquals(self::TEST_PARTNER_ID_2, $getUser2->partnerId); $this->assertEquals($newUser->id, $getUser2->id); // create user with login id on 2 partners $newUser = $this->createUser(true, false, __FUNCTION__); $createdUser1 = $this->addUser($newUser); $this->assertType('KalturaUser', $createdUser1); $newUser->isAdmin = true; // make the user admin on the 2nd partner $createdUser2 = $this->addUser2($newUser); $this->assertType('KalturaUser', $createdUser2); $this->assertEquals(self::TEST_PARTNER_ID, $createdUser1->partnerId); $this->assertEquals(self::TEST_PARTNER_ID_2, $createdUser2->partnerId); // check that login data exists $dbUser = kuserPeer::getKuserByPartnerAndUid(self::TEST_PARTNER_ID, $newUser->id); $loginDataId = $dbUser->getLoginDataId(); $loginData = UserLoginDataPeer::retrieveByPK($loginDataId); $this->assertNotNull($loginData); // delete from 1st partner and verify that login data still exists $this->client->user->delete($newUser->id); $loginData = UserLoginDataPeer::retrieveByPK($loginDataId); $this->assertNotNull($loginData); // verify that user now logs in to the 2nd partner $newClient = $this->getClient(null); $ks = $newClient->user->loginByLoginId($newUser->email, $newUser->password); $this->assertNotNull($ks); $ks = kSessionUtils::crackKs($ks); $this->assertNotNull($ks); $this->assertEquals(self::TEST_PARTNER_ID_2, $ks->partner_id); // delete user with login id when it's the last one $this->client2->user->delete($newUser->id); UserLoginDataPeer::clearInstancePool(); $loginData = UserLoginDataPeer::retrieveByPK($loginDataId); $this->assertNull($loginData); }
KalturaLog::log('User [' . $user->getId() . '] has no login data' . PHP_EOL); } KalturaLog::log('Saving new kuser with the following parameters: ' . PHP_EOL); KalturaLog::log(print_r($user, true)); $user->save(); // save } else { KalturaLog::log('DRY RUN - records are not being saved: ' . PHP_EOL); KalturaLog::log('New user_login_data with the following parameters: ' . PHP_EOL); KalturaLog::log(print_r($new_login_data, true)); KalturaLog::log('Newkuser with the following parameters (login_data_id unknown): ' . PHP_EOL); KalturaLog::log(print_r($user, true)); } file_put_contents($lastUserFile, $lastUser); } UserLoginDataPeer::clearInstancePool(); $users = getUsers($lastUser, $userLimitEachLoop); } $msg = 'Done - ' . ($dryRun ? 'DRY RUN!' : 'REAL RUN!'); KalturaLog::log($msg); echo $msg; function getUsers($lastUser, $userLimitEachLoop) { kuserPeer::clearInstancePool(); $c = new Criteria(); $c->add(kuserPeer::ID, $lastUser, Criteria::GREATER_THAN); $c->addAscendingOrderByColumn(kuserPeer::ID); $c->setLimit($userLimitEachLoop); kuserPeer::setUseCriteriaFilter(false); $users = kuserPeer::doSelect($c); kuserPeer::setUseCriteriaFilter(true);