Files
doitinpoland.com/wp-content/plugins/wpml-translation-management/classes/ATE/REST/class-wpml-tm-rest-ate-sync-jobs.php
2023-09-12 21:41:04 +02:00

77 lines
1.8 KiB
PHP

<?php
/**
* @todo: Remove this endpoint
*/
class WPML_TM_REST_ATE_Sync_Jobs extends WPML_TM_ATE_Required_Rest_Base {
/** @var array */
private $capabilities = array( 'manage_translations', 'translate' );
/** @var TranslationManagement */
private $tm_core;
/** @var WPML_TM_ATE_Jobs_Actions */
private $jobs_action;
/**
* @param TranslationManagement $tm_core
* @param WPML_TM_ATE_Jobs_Actions $jobs_action
*/
public function __construct( TranslationManagement $tm_core, WPML_TM_ATE_Jobs_Actions $jobs_action ) {
parent::__construct();
$this->tm_core = $tm_core;
$this->jobs_action = $jobs_action;
}
function add_hooks() {
$this->register_routes();
}
function register_routes() {
parent::register_route(
'/ate/jobs/old-sync',
array(
'methods' => 'POST',
'callback' => array( $this, 'sync' ),
'args' => array(
'jobIds' => array(
'required' => true,
'type' => 'array',
'validate_callback' => array( 'WPML_REST_Arguments_Validation', 'is_array' ),
'sanitize_callback' => array( 'WPML_REST_Arguments_Sanitation', 'array_of_integers' ),
),
),
)
);
}
public function sync( WP_REST_Request $request ) {
try {
$ate_jobs = array_map( array( $this->tm_core, 'get_translation_job' ), $request->get_param( 'jobIds' ) );
$updated_jobs = array();
if ( $ate_jobs ) {
$updated_jobs = $this->jobs_action->update_jobs( null, $ate_jobs, true );
}
return $updated_jobs;
} catch ( Exception $e ) {
return new WP_Error( 500, $e->getMessage() );
}
}
function get_allowed_capabilities( WP_REST_Request $request ) {
return $this->capabilities;
}
public function validate_permission( WP_REST_Request $request ) {
if ( current_user_can( 'administrator' ) ) {
return true;
}
return parent::validate_permission( $request );
}
}