domainsAndLanguagesRepository = $domainsAndLanguagesRepository; $this->manager = $manager; $this->status = $status; $this->pager = $pager; $this->migrateAdminTexts = $migrateAdminTexts; } public function runAll() { call_user_func( $this->migrateAdminTexts ); $this->getDomainsAndLanguages()->each( function ( $row ) { $this->manager->add( $row->domain, $row->locale ); } ); $this->status->markComplete(); } /** * @return int Remaining */ public function runPage() { if ( $this->pager->getProcessedCount() === 0 ) { call_user_func( $this->migrateAdminTexts ); } $domains = $this->getDomainsAndLanguages();; $remaining = $this->pager->iterate( $domains, function ( $row ) { $this->manager->add( $row->domain, $row->locale ); return true; }, self::TIMEOUT ); if ( $remaining === 0 ) { $this->status->markComplete(); } return $remaining; } public function getPagesCount() { if ( $this->status->isComplete() ) { return 0; } $domains = $this->getDomainsAndLanguages(); if ( $domains->count() === 0 ) { $this->status->markComplete(); } return $domains->count(); } private function getDomainsAndLanguages() { return DomainsAndLanguagesRepository::hasTranslationFilesTable() ? $this->domainsAndLanguagesRepository->get() : wpml_collect(); } /** * @return bool */ public function isCompleted() { return $this->getPagesCount() === 0; } }