Files
doitinpoland.com/wp-content/plugins/sitepress-multilingual-cms/classes/ATE/models/class-wpml-tm-ate-job-repository.php
2023-09-12 21:41:04 +02:00

67 lines
1.7 KiB
PHP

<?php
use function WPML\FP\invoke;
class WPML_TM_ATE_Job_Repository {
/** @var WPML_TM_Jobs_Repository */
private $job_repository;
public function __construct( WPML_TM_Jobs_Repository $job_repository ) {
$this->job_repository = $job_repository;
}
/**
* @param bool $includeManualAndLongstandingJobs
*
* @return WPML_TM_Jobs_Collection
*/
public function get_jobs_to_sync( $includeManualAndLongstandingJobs = true ) {
$searchParams = $this->getSearchParamsPrototype();
$searchParams->set_status( [ ICL_TM_WAITING_FOR_TRANSLATOR, ICL_TM_IN_PROGRESS ] );
$searchParams->set_exclude_manual( ! $includeManualAndLongstandingJobs );
$searchParams->set_exclude_longstanding( ! $includeManualAndLongstandingJobs );
return $this->job_repository
->get( $searchParams )
->filter( invoke( 'is_ate_job' ) );
}
/**
* @param array $ateJobIds
*
* @return bool
*/
public function increment_ate_sync_count( array $ateJobIds ) {
return $this->job_repository->increment_ate_sync_count( $ateJobIds );
}
/**
* @return WPML_TM_Jobs_Collection
*/
public function get_jobs_to_retry() {
$searchParams = $this->getSearchParamsPrototype();
$searchParams->set_status( [ ICL_TM_ATE_NEEDS_RETRY ] );
return $this->job_repository
->get( $searchParams )
->filter( invoke( 'is_ate_job' ) );
}
/**
* @return WPML_TM_Jobs_Search_Params
*/
private function getSearchParamsPrototype() {
$searchParams = new WPML_TM_Jobs_Search_Params();
$searchParams->set_scope( WPML_TM_Jobs_Search_Params::SCOPE_LOCAL );
$searchParams->set_job_types( [
WPML_TM_Job_Entity::POST_TYPE,
WPML_TM_Job_Entity::PACKAGE_TYPE,
WPML_TM_Job_Entity::STRING_BATCH,
] );
return $searchParams;
}
}