Example #1
0
 private function MigrateUsers(Database $legacyDatabase, Database $currentDatabase)
 {
     $usersMigrated = MigrationSession::GetLastUserRow();
     Log::Debug('Start migrating users. Starting at row %s', $usersMigrated);
     $getExisting = new AdHocCommand('select legacyid from users');
     $reader = $currentDatabase->Query($getExisting);
     $knownIds = array();
     while ($row = $reader->GetRow()) {
         $knownIds[] = $row['legacyid'];
     }
     $getGroups = new AdHocCommand('select groupid, memberid from user_groups');
     $reader = $legacyDatabase->Query($getGroups);
     $userGroups = array();
     while ($row = $reader->GetRow()) {
         $memberId = $row['memberid'];
         if (!array_key_exists($memberId, $userGroups)) {
             $userGroups[$memberId] = array();
         }
         $userGroups[$memberId][] = $row['groupid'];
     }
     $getGroupMapping = new AdHocCommand('select group_id, legacyid from groups');
     $reader = $currentDatabase->Query($getGroupMapping);
     $groupMap = array();
     while ($row = $reader->GetRow()) {
         $groupMap[$row['legacyid']] = $row['group_id'];
     }
     $getUsers = new AdHocCommand("select memberid, email, password, fname, lname, phone, institution, position, e_add, e_mod, e_del, e_app, e_html, logon_name, is_admin, lang, timezone\n\t\tfrom login order by memberid limit {$usersMigrated}, 500");
     $reader = $legacyDatabase->Query($getUsers);
     while ($row = $reader->GetRow()) {
         $legacyId = $row['memberid'];
         if (in_array($legacyId, $knownIds)) {
             continue;
         }
         $registerCommand = new RegisterUserCommand($row['logon_name'], $row['email'], $row['fname'], $row['lname'], '', '', Configuration::Instance()->GetDefaultTimezone(), empty($row['lang']) ? Configuration::Instance()->GetKey(ConfigKeys::LANGUAGE) : $row['lang'], Pages::DEFAULT_HOMEPAGE_ID, $row['phone'], $row['institution'], $row['position'], AccountStatus::ACTIVE, null, null);
         $newId = ServiceLocator::GetDatabase()->ExecuteInsert($registerCommand);
         $legacypassword = $row['password'];
         $currentDatabase->Execute(new AdHocCommand("update users set legacyid = \"{$legacyId}\", legacypassword=\"{$legacypassword}\" where user_id = {$newId}"));
         // migrate group assignments
         if (array_key_exists($legacyId, $userGroups)) {
             foreach ($userGroups[$legacyId] as $legacyGroupId) {
                 $newGroupId = $groupMap[$legacyGroupId];
                 $currentDatabase->ExecuteInsert(new AddUserGroupCommand($newId, $newGroupId));
             }
         }
         $usersMigrated++;
         MigrationSession::SetLastUserRow($usersMigrated);
     }
     Log::Debug('Done migrating users (%s users)', $usersMigrated);
     $getLegacyCount = new AdHocCommand('select count(*) as count from login');
     $getMigratedCount = new AdHocCommand('select count(*) as count from users where legacyid is not null');
     $progressCounts = $this->GetProgressCounts($getLegacyCount, $getMigratedCount);
     $this->page->SetProgress($progressCounts);
     $this->page->SetUsersMigrated($progressCounts->MigratedCount);
     MigrationSession::SetLastUserRow($progressCounts->MigratedCount);
 }
Example #2
0
 public function Execute(Database $database)
 {
     $insertReservation = new AddReservationCommand($this->instance->StartDate(), $this->instance->EndDate(), $this->instance->ReferenceNumber(), $this->series->SeriesId());
     $reservationId = $database->ExecuteInsert($insertReservation);
     $insertReservationUser = new AddReservationUserCommand($reservationId, $this->series->UserId(), ReservationUserLevel::OWNER);
     $database->Execute($insertReservationUser);
     foreach ($this->instance->AddedParticipants() as $participantId) {
         $insertReservationUser = new AddReservationUserCommand($reservationId, $participantId, ReservationUserLevel::PARTICIPANT);
         $database->Execute($insertReservationUser);
     }
     foreach ($this->instance->AddedInvitees() as $inviteeId) {
         $insertReservationUser = new AddReservationUserCommand($reservationId, $inviteeId, ReservationUserLevel::INVITEE);
         $database->Execute($insertReservationUser);
     }
 }
Example #3
0
 function testGetsIncrementedIdForExecuteInsert()
 {
     $expectedInsertId = 10;
     $SqlCommand = new SqlCommand('query');
     $cn = new FakeDBConnection();
     $cn->_ExpectedInsertId = $expectedInsertId;
     $db = new Database($cn);
     $actualInsertId = $db->ExecuteInsert($SqlCommand);
     $this->assertTrue($cn->_ConnectWasCalled, 'Connect should be called for every query');
     $this->assertEquals($SqlCommand, $cn->_LastExecuteCommand);
     $this->assertTrue($cn->_GetLastInsertIdCalled);
     $this->assertEquals($expectedInsertId, $actualInsertId);
     $this->assertTrue($cn->_DisconnectWasCalled, 'Disonnect should be called for every query');
 }