id = (int) $id; if ( ! self::is_type_valid( $type ) ) { throw new InvalidArgumentException( 'Invalid type value: ' . $type ); } $this->type = $type; $this->tp_id = (int) $tp_id; $this->batch = $batch; $this->set_status( $status ); } /** * @return int */ public function get_id() { return $this->id; } /** * @return string */ public function get_type() { return $this->type; } /** * @return int */ public function get_tp_id() { return $this->tp_id; } /** * @return WPML_TM_Jobs_Batch */ public function get_batch() { return $this->batch; } /** * @return int */ public function get_status() { return $this->status; } /** * @param int $status */ public function set_status( $status ) { $status = (int) $status; if ( ! in_array( $status, array( ICL_TM_NOT_TRANSLATED, ICL_TM_WAITING_FOR_TRANSLATOR, ICL_TM_IN_PROGRESS, ICL_TM_TRANSLATION_READY_TO_DOWNLOAD, ICL_TM_DUPLICATE, ICL_TM_COMPLETE, ICL_TM_NEEDS_UPDATE, ), true ) ) { $status = ICL_TM_NOT_TRANSLATED; } $this->status = $status; } /** * @return int */ public function get_original_element_id() { return $this->original_element_id; } /** * @param int $original_element_id */ public function set_original_element_id( $original_element_id ) { $this->original_element_id = $original_element_id; } /** * @return string */ public function get_source_language() { return $this->source_language; } /** * @param string $source_language */ public function set_source_language( $source_language ) { $this->source_language = $source_language; } /** * @return string */ public function get_target_language() { return $this->target_language; } /** * @param string $target_language */ public function set_target_language( $target_language ) { $this->target_language = $target_language; } /** * @return string */ public function get_translation_service() { return $this->translation_service; } /** * @param string $translation_service */ public function set_translation_service( $translation_service ) { $this->translation_service = $translation_service; } /** * @return DateTime */ public function get_sent_date() { return $this->sent_date; } /** * @param DateTime $sent_date */ public function set_sent_date( DateTime $sent_date ) { $this->sent_date = $sent_date; } /** * @param int $tp_id */ public function set_tp_id( $tp_id ) { $this->tp_id = $tp_id; } /** * @return DateTime|null */ public function get_deadline() { return $this->deadline; } /** * @param DateTime|null $deadline */ public function set_deadline( DateTime $deadline = null ) { $this->deadline = $deadline; } /** * @return int */ public function get_translator_id() { return $this->translator_id; } /** * @param int $translator_id * * @return self */ public function set_translator_id( $translator_id ) { $this->translator_id = $translator_id; return $this; } /** * @return int */ public function get_revision() { return $this->revision; } /** * @param int $revision */ public function set_revision( $revision ) { $this->revision = max( (int) $revision, 1 ); } /** * @return WPML_TM_Job_TS_Status */ public function get_ts_status() { return $this->ts_status; } /** * @param WPML_TM_Job_TS_Status|string $ts_status */ public function set_ts_status( $ts_status ) { if ( is_string( $ts_status ) ) { $status = json_decode( $ts_status ); if ( $status ) { $ts_status = new WPML_TM_Job_TS_Status( $status->ts_status->status, $status->ts_status->links ); } } $this->ts_status = $ts_status; } /** * @param WPML_TM_Job_Entity $job * * @return bool */ public function is_equal( WPML_TM_Job_Entity $job ) { return $this->get_id() === $job->get_id() && $this->get_type() === $job->get_type(); } /** * @return bool */ public function does_need_update() { return $this->needs_update; } /** * @param bool $needs_update */ public function set_needs_update( $needs_update ) { $this->needs_update = (bool) $needs_update; } /** * @return bool */ public function has_completed_translation() { return $this->has_completed_translation; } /** * @param bool $has_completed_translation */ public function set_has_completed_translation( $has_completed_translation ) { $this->has_completed_translation = (bool) $has_completed_translation; } /** * @return string */ public function get_title() { return $this->title; } /** * @param string $title */ public function set_title( $title ) { $this->title = $title; } /** * @param string $type * * @return bool */ public static function is_type_valid( $type ) { return Lst::includes( $type, [ self::POST_TYPE, self::STRING_TYPE, self::PACKAGE_TYPE, self::STRING_BATCH ] ); } }