171 lines
3.4 KiB
PHP
171 lines
3.4 KiB
PHP
<?php
|
|
|
|
class WPML_TM_ICL_Translation_Status {
|
|
/** @var WPDB $wpdb */
|
|
public $wpdb;
|
|
|
|
private $tm_records;
|
|
|
|
private $table = 'icl_translation_status';
|
|
private $translation_id = 0;
|
|
private $rid = 0;
|
|
|
|
private $status_result;
|
|
|
|
/**
|
|
* WPML_TM_ICL_Translation_Status constructor.
|
|
*
|
|
* @param wpdb $wpdb
|
|
* @param WPML_TM_Records $tm_records
|
|
* @param int $id
|
|
* @param string $type
|
|
*/
|
|
public function __construct( $wpdb, &$tm_records, $id, $type = 'translation_id' ) {
|
|
$this->wpdb = $wpdb;
|
|
$this->tm_records = &$tm_records;
|
|
if ( $id > 0 && in_array(
|
|
$type,
|
|
array(
|
|
'translation_id',
|
|
'rid',
|
|
),
|
|
true
|
|
)
|
|
) {
|
|
$this->{$type} = $id;
|
|
} else {
|
|
throw new InvalidArgumentException( 'Unknown column: ' . $type . ' or invalid id: ' . $id );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param array $args in the same format used by \wpdb::update()
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function update( $args ) {
|
|
$this->wpdb->update(
|
|
$this->wpdb->prefix . $this->table,
|
|
$args,
|
|
$this->get_args()
|
|
);
|
|
|
|
$this->status_result = null;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Wrapper for \wpdb::delete()
|
|
*/
|
|
public function delete() {
|
|
$this->wpdb->delete(
|
|
$this->wpdb->prefix . $this->table,
|
|
$this->get_args()
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @return int
|
|
*/
|
|
public function rid() {
|
|
|
|
return (int) $this->wpdb->get_var(
|
|
"SELECT rid
|
|
FROM {$this->wpdb->prefix}{$this->table} "
|
|
. $this->get_where()
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @return int
|
|
*/
|
|
public function status() {
|
|
|
|
if ( $this->status_result === null ) {
|
|
$status = $this->tm_records->get_preloaded_translation_status( $this->translation_id, $this->rid );
|
|
if ( $status ) {
|
|
$this->status_result = (int) $status->status;
|
|
} else {
|
|
$this->status_result = (int) $this->wpdb->get_var(
|
|
"SELECT status
|
|
FROM {$this->wpdb->prefix}{$this->table} "
|
|
. $this->get_where()
|
|
);
|
|
}
|
|
}
|
|
return (int) $this->status_result;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function md5() {
|
|
|
|
return $this->wpdb->get_var(
|
|
"SELECT md5
|
|
FROM {$this->wpdb->prefix}{$this->table} "
|
|
. $this->get_where()
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @return int
|
|
*/
|
|
public function translation_id() {
|
|
|
|
return (int) $this->wpdb->get_var(
|
|
"SELECT translation_id
|
|
FROM {$this->wpdb->prefix}{$this->table} "
|
|
. $this->get_where()
|
|
);
|
|
}
|
|
|
|
public function trid() {
|
|
|
|
return $this->tm_records->icl_translations_by_translation_id( $this->translation_id() )->trid();
|
|
}
|
|
|
|
public function element_id() {
|
|
|
|
return $this->tm_records->icl_translations_by_translation_id( $this->translation_id() )->element_id();
|
|
}
|
|
|
|
/**
|
|
* @return int
|
|
*/
|
|
public function translator_id() {
|
|
|
|
return (int) $this->wpdb->get_var(
|
|
"SELECT translator_id
|
|
FROM {$this->wpdb->prefix}{$this->table} "
|
|
. $this->get_where()
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @return string|int
|
|
*/
|
|
public function service() {
|
|
|
|
return (int) $this->wpdb->get_var(
|
|
"SELECT translation_service
|
|
FROM {$this->wpdb->prefix}{$this->table} "
|
|
. $this->get_where()
|
|
);
|
|
}
|
|
|
|
private function get_where() {
|
|
return ' WHERE ' .
|
|
( $this->translation_id
|
|
? $this->wpdb->prepare( ' translation_id = %d ', $this->translation_id )
|
|
: $this->wpdb->prepare( ' rid = %d ', $this->rid ) );
|
|
}
|
|
|
|
private function get_args() {
|
|
|
|
return $this->translation_id
|
|
? array( 'translation_id' => $this->translation_id )
|
|
: array( 'rid' => $this->rid );
|
|
}
|
|
}
|