Files
doitinpoland.com/wp-content/plugins/sitepress-multilingual-cms/classes/translation-feedback/model/feedback/wpml-tf-feedback.php
2023-09-12 21:41:04 +02:00

298 lines
6.6 KiB
PHP

<?php
/**
* Class WPML_TF_Feedback
*
* @author OnTheGoSystems
*/
class WPML_TF_Feedback implements IWPML_TF_Data_Object {
/** @var int */
private $id;
/** @var string */
private $date_created;
/** @var WPML_TF_Feedback_Status */
private $status;
/** @var int */
private $rating;
/** @var string */
private $content;
/** @var int */
private $document_id;
/** @var string */
private $document_type;
/** @var string */
private $language_from;
/** @var string */
private $language_to;
/** @var int|null */
private $job_id;
/** @var WPML_TF_Feedback_Reviewer */
private $reviewer;
/** @var WPML_TF_Collection $messages */
private $messages;
/** @var WPML_TF_Backend_Document_Information $document_information */
private $document_information;
/** @var WPML_TF_TP_Responses $tp_rating_responses */
private $tp_responses;
/**
* WPML_Translation_Feedback constructor.
*
* @param array $data
* @param WPML_TF_Backend_Document_Information $document_information
*/
public function __construct(
$data = array(),
WPML_TF_Backend_Document_Information $document_information = null
) {
$this->id = array_key_exists( 'id', $data ) ? (int) $data['id'] : null;
$this->date_created = array_key_exists( 'date_created', $data )
? sanitize_text_field( $data['date_created'] ) : null;
$this->rating = array_key_exists( 'rating', $data ) ? (int) $data['rating'] : null;
$this->content = array_key_exists( 'content', $data )
? sanitize_text_field( $data['content'] ) : '';
$this->document_id = array_key_exists( 'document_id', $data ) ? (int) $data['document_id'] : null;
$this->document_type = array_key_exists( 'document_type', $data )
? sanitize_text_field( $data['document_type'] ) : null;
$this->language_from = array_key_exists( 'language_from', $data )
? sanitize_text_field( $data['language_from'] ) : null;
$this->language_to = array_key_exists( 'language_to', $data )
? sanitize_text_field( $data['language_to'] ) : null;
$this->job_id = array_key_exists( 'job_id', $data ) ? (int) $data['job_id'] : null;
$this->messages = array_key_exists( 'messages', $data ) && $data['messages'] instanceof WPML_TF_Collection
? $data['messages'] : new WPML_TF_Message_Collection();
if ( array_key_exists( 'reviewer_id', $data ) ) {
$this->set_reviewer( $data['reviewer_id'] );
}
$this->status = array_key_exists( 'status', $data )
? new WPML_TF_Feedback_Status( $data['status'] ) : new WPML_TF_Feedback_Status( 'pending' );
$this->set_tp_responses( new WPML_TF_TP_Responses( $data ) );
if ( $document_information ) {
$this->set_document_information( $document_information );
}
}
/**
* @return int|mixed|null
*/
public function get_id() {
return $this->id;
}
/**
* @return int|null
*/
public function get_feedback_id() {
return $this->id;
}
/**
* @param \WPML_TF_Message $message
*/
public function add_message( WPML_TF_Message $message ) {
$this->messages->add( $message );
}
/**
* @return mixed|null|string
*/
public function get_date_created() {
return $this->date_created;
}
/**
* @return string
*/
public function get_status() {
return $this->status->get_value();
}
/**
* @param string $status
*/
public function set_status( $status ) {
$this->status->set_value( $status );
}
/**
* @return int
*/
public function get_rating() {
return $this->rating;
}
/**
* @param int $rating
*/
public function set_rating( $rating ) {
$this->rating = (int) $rating;
}
/**
* @return mixed|null|string
*/
public function get_content() {
return $this->content;
}
/**
* @param string $content
*/
public function set_content( $content ) {
$this->content = sanitize_text_field( $content );
}
/**
* @return int|null
*/
public function get_document_id() {
return $this->document_id;
}
/**
* @return null|string
*/
public function get_document_type() {
return $this->document_type;
}
/**
* @return null|string
*/
public function get_language_from() {
return $this->language_from;
}
/**
* @return null|string
*/
public function get_language_to() {
return $this->language_to;
}
/**
* @return int|null
*/
public function get_job_id() {
return $this->job_id;
}
/**
* @return WPML_TF_Feedback_Reviewer
*/
public function get_reviewer() {
if ( ! isset( $this->reviewer ) ) {
$this->set_reviewer( 0 );
}
return $this->reviewer;
}
/**
* @param int $reviewer_id
*/
public function set_reviewer( $reviewer_id ) {
$this->reviewer = new WPML_TF_Feedback_Reviewer( $reviewer_id );
}
/**
* @return WPML_TF_Collection
*/
public function get_messages() {
return $this->messages;
}
/** @param WPML_TF_TP_Responses $tp_responses */
public function set_tp_responses( WPML_TF_TP_Responses $tp_responses ) {
$this->tp_responses = $tp_responses;
}
/** @return WPML_TF_TP_Responses */
public function get_tp_responses() {
return $this->tp_responses;
}
/**
* @return string|null
*/
public function get_text_status() {
return $this->status->get_display_text();
}
/** @return array */
public function get_next_status() {
return $this->status->get_next_status();
}
/** @return bool */
public function is_pending() {
return $this->status->is_pending();
}
/**
* @return string
*/
public function get_document_flag_url() {
return $this->document_information->get_flag_url( $this->get_language_to() );
}
/**
* @return string
*/
public function get_source_document_flag_url() {
return $this->document_information->get_flag_url( $this->get_language_from() );
}
/**
* @return bool
*/
public function is_local_translation() {
return $this->document_information->is_local_translation( $this->get_job_id() );
}
/**
* @return string
*/
public function get_translator_name() {
return $this->document_information->get_translator_name( $this->get_job_id() );
}
/**
* @return array
*/
public function get_available_translators() {
return $this->document_information->get_available_translators( $this->language_from, $this->language_to );
}
/**
* @param WPML_TF_Backend_Document_Information $document_information
*/
public function set_document_information( WPML_TF_Backend_Document_Information $document_information ) {
$this->document_information = $document_information;
$this->document_information->init( $this->get_document_id(), $this->get_document_type() );
}
/** @return WPML_TF_Backend_Document_Information */
public function get_document_information() {
return $this->document_information;
}
}