Files
doitinpoland.com/wp-content/plugins/sitepress-multilingual-cms/classes/API/REST/jobs/class-wpml-tm-rest-job-progress.php
2023-09-12 21:41:04 +02:00

46 lines
1.2 KiB
PHP

<?php
class WPML_TM_Rest_Job_Progress {
/** @var wpdb */
private $wpdb;
public function __construct() {
global $wpdb;
$this->wpdb = $wpdb;
}
/**
* @param WPML_TM_Job_Entity $job
*
* @return string
*/
public function get( WPML_TM_Job_Entity $job ) {
if ( $job->get_translation_service() !== 'local' ) {
return '';
}
if ( $job->get_status() !== ICL_TM_IN_PROGRESS ) {
return '';
}
if ( $job->get_type() === WPML_TM_Job_Entity::STRING_TYPE ) {
return '';
}
$sql = "
SELECT field_finished FROM {$this->wpdb->prefix}icl_translate translate
INNER JOIN {$this->wpdb->prefix}icl_translate_job translate_job ON translate_job.job_id = translate.job_id
INNER JOIN {$this->wpdb->prefix}icl_translation_status translation_status ON translation_status.rid = translate_job.rid
WHERE translation_status.rid = %d AND translate.field_translate = 1 AND LENGTH(translate.field_data) > 0
";
$sql = $this->wpdb->prepare( $sql, $job->get_id() );
$elements = $this->wpdb->get_col( $sql );
$translated = array_filter( $elements );
$percentage = (int) ( count( $translated ) / count( $elements ) * 100 );
return sprintf( _x( '%s completed', 'Translation jobs list', 'wpml-transation-manager' ), $percentage . '%' );
}
}