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

139 lines
2.9 KiB
PHP

<?php
/**
* Class WPML_TF_Feedback_Status
*
* @author OnTheGoSystems
*/
class WPML_TF_Feedback_Status {
/** @var string $status */
private $status = 'pending';
/**
* WPML_TF_Feedback_Status constructor.
*
* @param string $status
*/
public function __construct( $status = null ) {
if ( $status ) {
$this->set_value( $status );
}
}
/** @param string $status*/
public function set_value( $status ) {
$this->status = sanitize_text_field( $status );
}
/** @return string */
public function get_value() {
return $this->status;
}
/** @return null|string */
public function get_display_text() {
switch ( $this->get_value() ) {
case 'pending':
return __( 'New', 'sitepress' );
case 'sent_to_translator':
if ( $this->is_admin_user() ) {
return __( 'Sent to translator', 'sitepress' );
}
return __( 'New', 'sitepress' );
case 'translator_replied':
if ( $this->is_admin_user() ) {
return __( 'Translator replied', 'sitepress' );
}
return __( 'Replied', 'sitepress' );
case 'admin_replied':
if ( $this->is_admin_user() ) {
return __( 'Sent to translator', 'sitepress' );
}
return __( 'Admin replied', 'sitepress' );
case 'sent_to_ts_api':
case 'sent_to_ts_manual':
return __( 'Sent to translation service', 'sitepress' );
case 'sent_to_ts_email':
return __( 'E-mail sent to translation service', 'sitepress' );
case 'fixed':
return __( 'Translation fixed', 'sitepress' );
case 'publish':
return __( 'Approved', 'sitepress' );
}
return null;
}
/** @return bool */
private function is_admin_user() {
return current_user_can( 'manage_options' );
}
/**
* This is used by the blue button on the feedback list
*
* @return array|null
*/
public function get_next_status() {
if ( $this->is_admin_user() ) {
switch ( $this->get_value() ) {
case 'pending':
case 'sent_to_translator':
return array(
'value' => 'sent_to_translator',
'label' => __( 'Send to translator', 'sitepress' ),
);
case 'translator_replied':
return array(
'value' => 'admin_replied',
'label' => __( 'Reply to translator', 'sitepress' ),
);
case 'admin_replied':
return array(
'value' => 'admin_replied',
'label' => __( 'Send to translator', 'sitepress' ),
);
}
} else {
switch ( $this->get_value() ) {
case 'sent_to_translator':
case 'translator_replied':
case 'admin_replied':
return array(
'value' => 'translator_replied',
'label' => __( 'Reply to admin', 'sitepress' ),
);
}
}
return null;
}
/** @return bool */
public function is_pending() {
$pending_statuses = array( 'pending' );
if ( current_user_can( 'manage_options' ) ) {
$pending_statuses[] = 'translator_replied';
} else {
$pending_statuses[] = 'admin_replied';
$pending_statuses[] = 'sent_to_translator';
}
return in_array( $this->status, $pending_statuses, true );
}
}