class-wpml-tm-rest-job-progress.php
1.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?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 . '%' );
}
}