first commit
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
<?php
|
||||
|
||||
namespace WPML\TM\Upgrade\Commands\SynchronizeSourceIdOfATEJobs;
|
||||
|
||||
use WPML\Utils\Pager;
|
||||
use WPML\TM\Upgrade\Commands\MigrateAteRepository;
|
||||
use WPML\Collect\Support\Collection;
|
||||
use WPML\Upgrade\CommandsStatus;
|
||||
use function WPML\Container\make;
|
||||
|
||||
class Command implements \IWPML_Upgrade_Command {
|
||||
|
||||
const CHUNK_SIZE = 1000;
|
||||
|
||||
/** @var Repository */
|
||||
private $repository;
|
||||
|
||||
/** @var \WPML_TM_ATE_API */
|
||||
private $api;
|
||||
|
||||
/** @var Pager */
|
||||
private $pager;
|
||||
|
||||
/** @var CommandsStatus */
|
||||
private $commandStatus;
|
||||
|
||||
/** @var bool $result */
|
||||
private $result = false;
|
||||
|
||||
/**
|
||||
* Command constructor.
|
||||
*
|
||||
* @param Repository $repository
|
||||
* @param \WPML_TM_ATE_API $api
|
||||
* @param Pager $pager
|
||||
* @param CommandsStatus $commandStatus
|
||||
*/
|
||||
public function __construct(
|
||||
Repository $repository,
|
||||
\WPML_TM_ATE_API $api,
|
||||
Pager $pager,
|
||||
CommandsStatus $commandStatus
|
||||
) {
|
||||
$this->repository = $repository;
|
||||
$this->api = $api;
|
||||
$this->pager = $pager;
|
||||
$this->commandStatus = $commandStatus;
|
||||
}
|
||||
|
||||
|
||||
public function run_admin() {
|
||||
if ( ! $this->hasBeenMigrateATERepositoryUpgradeRun() ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$chunks = $this->repository->getPairs()->chunk( self::CHUNK_SIZE );
|
||||
$this->result = $this->pager->iterate(
|
||||
$chunks,
|
||||
function ( Collection $pairs ) {
|
||||
return $this->api->migrate_source_id( $pairs->toArray() );
|
||||
}
|
||||
) === 0;
|
||||
|
||||
return $this->result;
|
||||
}
|
||||
|
||||
public function run_ajax() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public function run_frontend() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function get_results() {
|
||||
return $this->result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
private function hasBeenMigrateATERepositoryUpgradeRun() {
|
||||
return $this->commandStatus->hasBeenExecuted( MigrateAteRepository::class );
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace WPML\TM\Upgrade\Commands\SynchronizeSourceIdOfATEJobs;
|
||||
|
||||
use WPML\Utils\Pager;
|
||||
use function WPML\Container\make;
|
||||
|
||||
class CommandFactory {
|
||||
|
||||
const PAGER_OPTION_NAME = 'sync-source-id-ate-jobs-pager';
|
||||
|
||||
/**
|
||||
* @return Command
|
||||
*/
|
||||
public function create() {
|
||||
return make( Command::class, [ ':pager' => new Pager( self::PAGER_OPTION_NAME, 1 ) ] );
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace WPML\TM\Upgrade\Commands\SynchronizeSourceIdOfATEJobs;
|
||||
|
||||
|
||||
class Repository {
|
||||
/** @var \wpdb */
|
||||
private $wpdb;
|
||||
|
||||
/**
|
||||
* @param \wpdb $wpdb
|
||||
*/
|
||||
public function __construct( \wpdb $wpdb ) {
|
||||
$this->wpdb = $wpdb;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return \WPML\Collect\Support\Collection
|
||||
*/
|
||||
public function getPairs() {
|
||||
$sql = "
|
||||
SELECT MAX(editor_job_id) as editor_job_id, rid
|
||||
FROM {$this->wpdb->prefix}icl_translate_job
|
||||
WHERE editor = 'ate' AND editor_job_id IS NOT NULL
|
||||
GROUP BY rid
|
||||
";
|
||||
|
||||
$rowset = $this->wpdb->get_results( $sql, ARRAY_A );
|
||||
$rowset = \wpml_collect( is_array( $rowset ) ? $rowset : [] );
|
||||
|
||||
return $rowset->pluck( 'rid', 'editor_job_id' );
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user