first commit
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
/**
|
||||
* @author OnTheGo Systems
|
||||
*/
|
||||
|
||||
namespace WPML\TM\ATE\REST;
|
||||
|
||||
use WP_REST_Request;
|
||||
use WPML\Collect\Support\Collection;
|
||||
use function WPML\Container\make;
|
||||
use WPML\TM\ATE\Download\Job;
|
||||
use WPML\TM\ATE\Download\Process;
|
||||
use WPML\TM\Jobs\Utils\ElementLinkFactory;
|
||||
use WPML\TM\REST\Base;
|
||||
use WPML_TM_ATE_AMS_Endpoints;
|
||||
|
||||
class Download extends Base {
|
||||
|
||||
const PROCESS_QUANTITY = 5;
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function get_routes() {
|
||||
return [
|
||||
[
|
||||
'route' => WPML_TM_ATE_AMS_Endpoints::DOWNLOAD_JOBS,
|
||||
'args' => [
|
||||
'methods' => 'POST',
|
||||
'callback' => [ $this, 'download' ],
|
||||
],
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param WP_REST_Request $request
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function get_allowed_capabilities( WP_REST_Request $request ) {
|
||||
return [
|
||||
'manage_options',
|
||||
'manage_translations',
|
||||
'translate',
|
||||
];
|
||||
}
|
||||
|
||||
public function download() {
|
||||
$result = make( Process::class )->run( self::PROCESS_QUANTITY );
|
||||
|
||||
return [
|
||||
'jobs' => $this->getJobs( $result->processedJobs ),
|
||||
'downloadQueueSize' => $result->downloadQueueSize,
|
||||
];
|
||||
}
|
||||
|
||||
private function getJobs( Collection $processedJobs ) {
|
||||
$jobIds = $processedJobs->pluck( 'wpmlJobId' );
|
||||
$viewLinks = $jobIds->map( [ wpml_tm_load_job_factory(), 'get_translation_job' ] )
|
||||
->map( [ ElementLinkFactory::create(), 'getTranslation' ] );
|
||||
|
||||
return $jobIds->zip( $viewLinks )
|
||||
->map(
|
||||
function ( $pair ) {
|
||||
return [
|
||||
'jobId' => (int) $pair[0],
|
||||
'viewLink' => $pair[1],
|
||||
];
|
||||
}
|
||||
)
|
||||
->toArray();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
namespace WPML\TM\ATE\REST;
|
||||
|
||||
use WP_REST_Request;
|
||||
use WPML\Rest\Adaptor;
|
||||
use WPML\TM\ATE\Sync\Arguments;
|
||||
use WPML\TM\ATE\Sync\Factory;
|
||||
use WPML\TM\REST\Base;
|
||||
use WPML_TM_ATE_AMS_Endpoints;
|
||||
|
||||
class Sync extends Base {
|
||||
|
||||
/**
|
||||
* @var Factory $factory
|
||||
*/
|
||||
private $factory;
|
||||
|
||||
public function __construct( Adaptor $adaptor, Factory $factory ) {
|
||||
$this->factory = $factory;
|
||||
parent::__construct( $adaptor );
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function get_routes() {
|
||||
return [
|
||||
[
|
||||
'route' => WPML_TM_ATE_AMS_Endpoints::SYNC_JOBS,
|
||||
'args' => [
|
||||
'methods' => 'POST',
|
||||
'callback' => [ $this, 'sync' ],
|
||||
'args' => [
|
||||
'lockKey' => self::getStringType(),
|
||||
'ateToken' => self::getStringType(),
|
||||
'page' => self::getIntType(),
|
||||
'numberOfPages' => self::getIntType(),
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param WP_REST_Request $request
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function get_allowed_capabilities( WP_REST_Request $request ) {
|
||||
return [
|
||||
'manage_options',
|
||||
'manage_translations',
|
||||
'translate',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param WP_REST_Request $request
|
||||
*
|
||||
* @return array
|
||||
* @throws \Auryn\InjectionException
|
||||
*/
|
||||
public function sync( WP_REST_Request $request ) {
|
||||
$args = new Arguments();
|
||||
$args->lockKey = $request->get_param( 'lockKey' );
|
||||
$args->ateToken = $request->get_param( 'ateToken' );
|
||||
$args->page = $request->get_param( 'nextPage' );
|
||||
$args->numberOfPages = $request->get_param( 'numberOfPages' );
|
||||
|
||||
return (array) $this->factory->create()->run( $args );
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @author OnTheGo Systems
|
||||
*/
|
||||
abstract class WPML_TM_ATE_Required_Rest_Base extends WPML_REST_Base {
|
||||
|
||||
const REST_NAMESPACE = 'wpml/tm/v1';
|
||||
|
||||
/**
|
||||
* WPML_TM_ATE_Required_Rest_Base constructor.
|
||||
*/
|
||||
public function __construct() {
|
||||
parent::__construct( self::REST_NAMESPACE );
|
||||
}
|
||||
|
||||
/**
|
||||
* @param WP_REST_Request $request
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function validate_permission( WP_REST_Request $request ) {
|
||||
return WPML_TM_ATE_Status::is_enabled() && parent::validate_permission( $request );
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $endpoint
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
static function get_url( $endpoint ) {
|
||||
return get_rest_url( null, '/' . self::REST_NAMESPACE . $endpoint );
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
class WPML_TM_REST_AMS_Clients_Factory extends WPML_REST_Factory_Loader {
|
||||
|
||||
/**
|
||||
* @return \WPML_TM_REST_AMS_Clients
|
||||
* @throws \Auryn\InjectionException
|
||||
*/
|
||||
public function create() {
|
||||
return \WPML\Container\make( '\WPML_TM_REST_AMS_Clients' );
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,146 @@
|
||||
<?php
|
||||
/**
|
||||
* @author OnTheGo Systems
|
||||
*/
|
||||
|
||||
class WPML_TM_REST_AMS_Clients extends WPML_REST_Base {
|
||||
|
||||
private $api;
|
||||
private $ams_user_records;
|
||||
|
||||
/** @var WPML_TM_AMS_Translator_Activation_Records $translator_activation_records */
|
||||
private $translator_activation_records;
|
||||
|
||||
/**
|
||||
* @var WPML_TM_ATE_AMS_Endpoints
|
||||
*/
|
||||
private $strings;
|
||||
|
||||
public function __construct(
|
||||
WPML_TM_AMS_API $api,
|
||||
WPML_TM_AMS_Users $ams_user_records,
|
||||
WPML_TM_AMS_Translator_Activation_Records $translator_activation_records,
|
||||
WPML_TM_MCS_ATE_Strings $strings
|
||||
) {
|
||||
parent::__construct( 'wpml/tm/v1' );
|
||||
|
||||
$this->api = $api;
|
||||
$this->ams_user_records = $ams_user_records;
|
||||
$this->translator_activation_records = $translator_activation_records;
|
||||
$this->strings = $strings;
|
||||
}
|
||||
|
||||
function add_hooks() {
|
||||
$this->register_routes();
|
||||
}
|
||||
|
||||
function register_routes() {
|
||||
parent::register_route(
|
||||
'/ams/register_manager',
|
||||
array(
|
||||
'methods' => 'POST',
|
||||
'callback' => array( $this, 'register_manager' ),
|
||||
)
|
||||
);
|
||||
|
||||
parent::register_route(
|
||||
'/ams/synchronize/translators',
|
||||
array(
|
||||
'methods' => 'GET',
|
||||
'callback' => array( $this, 'synchronize_translators' ),
|
||||
)
|
||||
);
|
||||
parent::register_route(
|
||||
'/ams/synchronize/managers',
|
||||
array(
|
||||
'methods' => 'GET',
|
||||
'callback' => array( $this, 'synchronize_managers' ),
|
||||
)
|
||||
);
|
||||
|
||||
parent::register_route(
|
||||
'/ams/status',
|
||||
array(
|
||||
'methods' => 'GET',
|
||||
'callback' => array( $this, 'get_status' ),
|
||||
)
|
||||
);
|
||||
|
||||
parent::register_route(
|
||||
'/ams/console',
|
||||
array(
|
||||
'methods' => 'GET',
|
||||
'callback' => array( $this, 'get_console' ),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array|WP_Error
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function register_manager() {
|
||||
$current_user = wp_get_current_user();
|
||||
$translators = $this->ams_user_records->get_translators();
|
||||
$managers = $this->ams_user_records->get_managers();
|
||||
|
||||
$result = $this->api->register_manager( $current_user, $translators, $managers );
|
||||
|
||||
if ( is_wp_error( $result ) ) {
|
||||
return $result;
|
||||
}
|
||||
|
||||
return array( 'enabled' => $result );
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array|WP_Error
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function synchronize_translators() {
|
||||
$translators = $this->ams_user_records->get_translators();
|
||||
|
||||
$result = $this->api->synchronize_translators( $translators );
|
||||
|
||||
if ( is_wp_error( $result ) ) {
|
||||
return $result;
|
||||
}
|
||||
|
||||
$this->translator_activation_records->update( $result['translators'] );
|
||||
|
||||
return array( 'result' => $result );
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array|WP_Error
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function synchronize_managers() {
|
||||
$managers = $this->ams_user_records->get_managers();
|
||||
|
||||
$result = $this->api->synchronize_managers( $managers );
|
||||
|
||||
if ( is_wp_error( $result ) ) {
|
||||
return $result;
|
||||
}
|
||||
|
||||
return array( 'result' => $result );
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array|mixed|null|object|WP_Error
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function get_status() {
|
||||
return $this->api->get_status();
|
||||
}
|
||||
|
||||
public function get_console() {
|
||||
return $this->strings->get_auto_login();
|
||||
}
|
||||
|
||||
function get_allowed_capabilities( WP_REST_Request $request ) {
|
||||
return array( 'manage_translations', 'manage_options' );
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
class WPML_TM_REST_ATE_API_Factory extends WPML_REST_Factory_Loader {
|
||||
|
||||
/**
|
||||
* @return \WPML_TM_REST_ATE_API
|
||||
* @throws \Auryn\InjectionException
|
||||
*/
|
||||
public function create() {
|
||||
return \WPML\Container\make( '\WPML_TM_REST_ATE_API' );
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
/**
|
||||
* @author OnTheGo Systems
|
||||
*/
|
||||
|
||||
class WPML_TM_REST_ATE_API extends WPML_TM_ATE_Required_Rest_Base {
|
||||
const CAPABILITY_CREATE = 'manage_translations';
|
||||
const CAPABILITY_READ = 'translate';
|
||||
|
||||
private $api;
|
||||
|
||||
/**
|
||||
* WPML_TM_REST_AMS_Clients constructor.
|
||||
*
|
||||
* @param WPML_TM_ATE_API $api
|
||||
*/
|
||||
public function __construct( WPML_TM_ATE_API $api ) {
|
||||
parent::__construct();
|
||||
$this->api = $api;
|
||||
}
|
||||
|
||||
function add_hooks() {
|
||||
$this->register_routes();
|
||||
}
|
||||
|
||||
function register_routes() {
|
||||
parent::register_route(
|
||||
'/ate/jobs',
|
||||
array(
|
||||
'methods' => 'POST',
|
||||
'callback' => array( $this, 'create_jobs' ),
|
||||
)
|
||||
);
|
||||
|
||||
parent::register_route(
|
||||
'/ate/jobs/(?P<ateJobId>\d+)',
|
||||
array(
|
||||
'methods' => 'GET',
|
||||
'callback' => array( $this, 'get_job' ),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param WP_REST_Request $request
|
||||
*
|
||||
* @return array|WP_Error
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function create_jobs( WP_REST_Request $request ) {
|
||||
return $this->api->create_jobs( $request->get_params() );
|
||||
}
|
||||
|
||||
/**
|
||||
* @param WP_REST_Request $request
|
||||
*
|
||||
* @return array|WP_Error
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function get_job( WP_REST_Request $request ) {
|
||||
$ate_job_id = $request->get_param( 'ateJobId' );
|
||||
|
||||
return $this->api->get_job( $ate_job_id );
|
||||
}
|
||||
|
||||
function get_allowed_capabilities( WP_REST_Request $request ) {
|
||||
if ( 'GET' === $request->get_method() ) {
|
||||
return array( self::CAPABILITY_CREATE, self::CAPABILITY_READ );
|
||||
}
|
||||
|
||||
return self::CAPABILITY_CREATE;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
class WPML_TM_REST_ATE_Jobs_Factory extends WPML_REST_Factory_Loader {
|
||||
|
||||
public function create() {
|
||||
$ate_jobs_records = wpml_tm_get_ate_job_records();
|
||||
$ate_jobs = new WPML_TM_ATE_Jobs( $ate_jobs_records );
|
||||
|
||||
return new WPML_TM_REST_ATE_Jobs(
|
||||
$ate_jobs,
|
||||
wpml_tm_get_ate_jobs_repository()
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
/**
|
||||
* @author OnTheGo Systems
|
||||
*/
|
||||
|
||||
class WPML_TM_REST_ATE_Jobs extends WPML_TM_ATE_Required_Rest_Base {
|
||||
const CAPABILITY = 'manage_translations';
|
||||
|
||||
private $ate_jobs;
|
||||
|
||||
/** @var WPML_TM_ATE_Job_Repository */
|
||||
private $job_repository;
|
||||
|
||||
/**
|
||||
* WPML_TM_REST_ATE_Jobs constructor.
|
||||
*
|
||||
* @param WPML_TM_ATE_Jobs $ate_jobs
|
||||
* @param WPML_TM_ATE_Job_Repository $job_repository
|
||||
*/
|
||||
public function __construct( WPML_TM_ATE_Jobs $ate_jobs, WPML_TM_ATE_Job_Repository $job_repository ) {
|
||||
parent::__construct();
|
||||
$this->ate_jobs = $ate_jobs;
|
||||
$this->job_repository = $job_repository;
|
||||
}
|
||||
|
||||
function add_hooks() {
|
||||
$this->register_routes();
|
||||
}
|
||||
|
||||
function register_routes() {
|
||||
parent::register_route(
|
||||
WPML_TM_ATE_AMS_Endpoints::STORE_JOB,
|
||||
array(
|
||||
'methods' => 'POST',
|
||||
'callback' => array( $this, 'store_ate_job' ),
|
||||
'args' => array(
|
||||
'wpml_job_id' => array(
|
||||
'required' => true,
|
||||
'type' => 'string',
|
||||
'validate_callback' => array( 'WPML_REST_Arguments_Validation', 'integer' ),
|
||||
'sanitize_callback' => array( 'WPML_REST_Arguments_Sanitation', 'integer' ),
|
||||
),
|
||||
'ate_job_data' => array(
|
||||
'required' => true,
|
||||
'type' => 'array',
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param WP_REST_Request $request
|
||||
*
|
||||
* @return bool
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function store_ate_job( WP_REST_Request $request ) {
|
||||
$wpml_job_id = $request->get_param( 'wpml_job_id' );
|
||||
$ate_job_data = $request->get_param( 'ate_job_data' );
|
||||
|
||||
$this->ate_jobs->store( $wpml_job_id, $ate_job_data );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function get_allowed_capabilities( WP_REST_Request $request ) {
|
||||
return self::CAPABILITY;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
class WPML_TM_REST_ATE_Public_Factory extends WPML_REST_Factory_Loader {
|
||||
|
||||
public function create() {
|
||||
$job_actions_factory = new WPML_TM_ATE_Jobs_Actions_Factory();
|
||||
$jobs_actions = $job_actions_factory->create();
|
||||
|
||||
if ( $jobs_actions ) {
|
||||
return new WPML_TM_REST_ATE_Public( $jobs_actions, wpml_load_core_tm() );
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
<?php
|
||||
/**
|
||||
* @author OnTheGo Systems
|
||||
*/
|
||||
|
||||
class WPML_TM_REST_ATE_Public extends WPML_TM_ATE_Required_Rest_Base {
|
||||
|
||||
const CODE_UNPROCESSABLE_ENTITY = 422;
|
||||
const CODE_OK = 200;
|
||||
|
||||
const ENDPOINT_JOBS_RECEIVE = '/ate/jobs/receive/';
|
||||
|
||||
/**
|
||||
* @var WPML_TM_ATE_Jobs_Actions
|
||||
*/
|
||||
private $jobs_actions;
|
||||
|
||||
/**
|
||||
* @var TranslationManagement
|
||||
*/
|
||||
private $translation_management;
|
||||
|
||||
/**
|
||||
* @param WPML_TM_ATE_Jobs_Actions $jobs_actions
|
||||
* @param TranslationManagement $translation_management
|
||||
*/
|
||||
public function __construct(
|
||||
WPML_TM_ATE_Jobs_Actions $jobs_actions,
|
||||
TranslationManagement $translation_management
|
||||
) {
|
||||
parent::__construct();
|
||||
$this->jobs_actions = $jobs_actions;
|
||||
$this->translation_management = $translation_management;
|
||||
}
|
||||
|
||||
function add_hooks() {
|
||||
$this->register_routes();
|
||||
}
|
||||
|
||||
function register_routes() {
|
||||
parent::register_route(
|
||||
self::ENDPOINT_JOBS_RECEIVE . '(?P<wpmlJobId>\d+)',
|
||||
array(
|
||||
'methods' => 'GET',
|
||||
'callback' => array( $this, 'receive_ate_job' ),
|
||||
'args' => array(
|
||||
'wpmlJobId' => array(
|
||||
'required' => true,
|
||||
'type' => 'int',
|
||||
'validate_callback' => array( 'WPML_REST_Arguments_Validation', 'integer' ),
|
||||
'sanitize_callback' => array( 'WPML_REST_Arguments_Sanitation', 'integer' ),
|
||||
),
|
||||
),
|
||||
'permission_callback' => '__return_true',
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public function get_allowed_capabilities( WP_REST_Request $request ) {
|
||||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param WP_REST_Request $request
|
||||
*
|
||||
* @return WP_REST_Response|WP_Error
|
||||
*/
|
||||
public function receive_ate_job( WP_REST_Request $request ) {
|
||||
$wpml_job_id = $request->get_param( 'wpmlJobId' );
|
||||
$wpml_job = $this->translation_management->get_translation_job( $wpml_job_id );
|
||||
|
||||
if ( ! $wpml_job ) {
|
||||
return new WP_Error( self::CODE_UNPROCESSABLE_ENTITY );
|
||||
}
|
||||
|
||||
try {
|
||||
$this->jobs_actions->update_jobs( false, array( $wpml_job ) );
|
||||
} catch ( Exception $e ) {
|
||||
return new WP_Error( self::CODE_UNPROCESSABLE_ENTITY );
|
||||
}
|
||||
|
||||
return new WP_REST_Response( null, self::CODE_OK );
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $wpml_job_id
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_receive_ate_job_url( $wpml_job_id ) {
|
||||
return self::get_url( self::ENDPOINT_JOBS_RECEIVE . $wpml_job_id );
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
class WPML_TM_REST_ATE_Sync_Jobs_Factory extends WPML_REST_Factory_Loader {
|
||||
public function create() {
|
||||
$jobs_action_factory = new WPML_TM_ATE_Jobs_Actions_Factory();
|
||||
$jobs_action = $jobs_action_factory->create();
|
||||
|
||||
if ( $jobs_action ) {
|
||||
return new WPML_TM_REST_ATE_Sync_Jobs(
|
||||
wpml_load_core_tm(),
|
||||
$jobs_action
|
||||
);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
<?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 );
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
class WPML_TM_REST_XLIFF_Factory extends WPML_REST_Factory_Loader {
|
||||
|
||||
public function create() {
|
||||
return new WPML_TM_REST_XLIFF();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
/**
|
||||
* @author OnTheGo Systems
|
||||
*/
|
||||
|
||||
class WPML_TM_REST_XLIFF extends WPML_TM_ATE_Required_Rest_Base {
|
||||
const CAPABILITY = 'translate';
|
||||
|
||||
function add_hooks() {
|
||||
$this->register_routes();
|
||||
}
|
||||
|
||||
function register_routes() {
|
||||
parent::register_route(
|
||||
'/xliff/fetch/(?P<jobId>\d+)',
|
||||
array(
|
||||
'methods' => 'GET',
|
||||
'callback' => array( $this, 'fetch_xliff' ),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param WP_REST_Request $request
|
||||
*
|
||||
* @return array
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function fetch_xliff( WP_REST_Request $request ) {
|
||||
$result = null;
|
||||
|
||||
$wpml_translation_job_factory = wpml_tm_load_job_factory();
|
||||
$iclTranslationManagement = wpml_load_core_tm();
|
||||
|
||||
$job_id = $request->get_param( 'jobId' );
|
||||
|
||||
$writer = new WPML_TM_Xliff_Writer( $wpml_translation_job_factory );
|
||||
$xliff = base64_encode( $writer->generate_job_xliff( $job_id ) );
|
||||
|
||||
$job = $iclTranslationManagement->get_translation_job( (int) $job_id, false, false, 1 );
|
||||
|
||||
$result = array(
|
||||
'content' => $xliff,
|
||||
'sourceLang' => $job->source_language_code,
|
||||
'targetLang' => $job->language_code,
|
||||
);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
function get_allowed_capabilities( WP_REST_Request $request ) {
|
||||
return self::CAPABILITY;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user