set_limit( $params['limit'] ); if ( array_key_exists( 'offset', $params ) ) { $this->set_offset( $params['offset'] ); } } $fields = array( 'status', 'scope', 'job_types', 'local_job_id', 'title', 'batch_name', 'source_language', 'target_language', 'sorting', 'tp_id', 'translated_by', 'deadline', 'completed_date', 'sent', 'original_element_id', ); foreach ( $fields as $field ) { if ( array_key_exists( $field, $params ) ) { $this->{'set_' . $field}( $params[ $field ] ); } } } /** * @return array */ public function get_status() { return $this->status; } /** * @param array $status * * @return self */ public function set_status( array $status ) { $this->status = array_map( 'intval', array_values( array_filter( $status, 'is_numeric' ) ) ); return $this; } /** * @return string */ public function get_scope() { return $this->scope; } /** * @return array */ public function get_tp_id() { return $this->tp_id; } /** * @param string $scope * * @retun self */ public function set_scope( $scope ) { if ( ! $this->is_valid_scope( $scope ) ) { throw new InvalidArgumentException( 'Invalid scope. Accepted values: ' . implode( ', ', self::$scopes ) ); } $this->scope = $scope; return $this; } /** * @return array */ public function get_job_types() { return $this->job_types; } /** * @param int|array $tp_id * * @return $this */ public function set_tp_id( $tp_id ) { $this->tp_id = is_array( $tp_id ) ? $tp_id : array( $tp_id ); return $this; } /** * @param string|array $job_types * * @return self */ public function set_job_types( $job_types ) { $correct_types = [ WPML_TM_Job_Entity::POST_TYPE, WPML_TM_Job_Entity::PACKAGE_TYPE, WPML_TM_Job_Entity::STRING_TYPE, WPML_TM_Job_Entity::STRING_BATCH, ]; if ( ! is_array( $job_types ) ) { $job_types = array( $job_types ); } foreach ( $job_types as $job_type ) { if ( ! in_array( $job_type, $correct_types, true ) ) { throw new InvalidArgumentException( 'Invalid job type' ); } $this->job_types[] = $job_type; } return $this; } /** * @return int|null */ public function get_first_local_job_id() { return ! empty( $this->local_job_ids ) ? current( $this->local_job_ids ) : null; } /** * @return int[] */ public function get_local_job_ids() { return $this->local_job_ids; } /** * @param int $local_job_id * * @return self */ public function set_local_job_id( $local_job_id ) { $this->local_job_ids[] = (int) $local_job_id; return $this; } /** * @param int[] $local_job_ids * * @return self */ public function set_local_job_ids( array $local_job_ids ) { $this->local_job_ids = array_map( 'intval', $local_job_ids ); return $this; } /** * @return int */ public function get_limit() { return $this->limit; } /** * @param int $limit * * @return self */ public function set_limit( $limit ) { $this->limit = $limit; return $this; } /** * @return int */ public function get_offset() { return $this->offset; } /** * @param int $offset * * @return self */ public function set_offset( $offset ) { $this->offset = $offset; return $this; } /** * @return string[] */ public function get_title() { return $this->title; } /** * @param array|string $title * * @return self */ public function set_title( $title ) { $this->title = is_array( $title ) ? $title : array( $title ); return $this; } /** * @return string[] */ public function get_batch_name() { return $this->batch_name; } /** * @param string[] $batch_name */ public function set_batch_name( $batch_name ) { $this->batch_name = $batch_name; } /** * @return string */ public function get_source_language() { return $this->source_language; } /** * @param string $source_language * * @return self */ public function set_source_language( $source_language ) { $this->source_language = $source_language; return $this; } /** * @return string[] */ public function get_target_language() { return $this->target_language; } /** * @param array|string $target_language * * @return self */ public function set_target_language( $target_language ) { $this->target_language = is_array( $target_language ) ? $target_language : array( $target_language ); return $this; } /** * @return WPML_TM_Jobs_Sorting_Param[] */ public function get_sorting() { return $this->sorting; } /** * @param WPML_TM_Jobs_Sorting_Param[] $sorting * * @return self */ public function set_sorting( array $sorting ) { $this->sorting = array(); foreach ( $sorting as $sorting_param ) { if ( $sorting_param instanceof WPML_TM_Jobs_Sorting_Param ) { $this->sorting[] = $sorting_param; } } return $this; } /** * @return int */ public function get_translated_by() { return $this->translated_by; } /** * @param int|null $translated_by * * @return self */ public function set_translated_by( $translated_by ) { $this->translated_by = (int) $translated_by; return $this; } /** * @return WPML_TM_Jobs_Date_Range */ public function get_deadline() { return $this->deadline; } /** * @param WPML_TM_Jobs_Date_Range $deadline * * @return self */ public function set_deadline( WPML_TM_Jobs_Date_Range $deadline ) { $this->deadline = $deadline; return $this; } /** * @return WPML_TM_Jobs_Date_Range */ public function get_sent() { return $this->sent; } /** * @return WPML_TM_Jobs_Date_Range */ public function get_completed_date() { return $this->completed_date; } /** * @return int */ public function get_original_element_id() { return $this->original_element_id; } /** * @param WPML_TM_Jobs_Date_Range $sent * * @return self */ public function set_sent( WPML_TM_Jobs_Date_Range $sent ) { $this->sent = $sent; return $this; } /** * @param WPML_TM_Jobs_Date_Range $completed_date * * @return self */ public function set_completed_date( WPML_TM_Jobs_Date_Range $completed_date ) { $this->completed_date = $completed_date; return $this; } /** * @param int $original_element_id * * @return $this */ public function set_original_element_id( $original_element_id ) { $this->original_element_id = $original_element_id; return $this; } /** * @return WPML_TM_Jobs_Needs_Update_Param|null */ public function get_needs_update() { return $this->needs_update; } /** * @param WPML_TM_Jobs_Needs_Update_Param|null $needs_update * * @return $this */ public function set_needs_update( WPML_TM_Jobs_Needs_Update_Param $needs_update = null ) { $this->needs_update = $needs_update; return $this; } /** * @param mixed $value * * @return bool */ public static function is_valid_scope( $value ) { return in_array( $value, self::$scopes, true ); } }