HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux wordpress-ubuntu-s-2vcpu-4gb-fra1-01 5.4.0-169-generic #187-Ubuntu SMP Thu Nov 23 14:52:28 UTC 2023 x86_64
User: root (0)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/delta/wp-content/plugins/sitepress-multilingual-cms/classes/ATE/Review/Cancel.php
<?php

namespace WPML\TM\ATE\Review;

use WPML\Ajax\IHandler;
use WPML\Collect\Support\Collection;
use WPML\FP\Cast;
use WPML\FP\Fns;
use WPML\FP\Obj;
use WPML\FP\Relation;
use WPML\LIB\WP\Post;
use WPML\TM\API\Job\Map;
use WPML\TM\API\Jobs;
use function WPML\FP\pipe;

class Cancel implements IHandler {

	public function run( Collection $data ) {
		$jobIds       = $data->get( 'jobsIds' );
		$deleteDrafts = $data->get( 'deleteDrafts' );

		$reviewJobs = wpml_collect( $jobIds )
			->map( Jobs::get() )
			->filter( ReviewStatus::doesJobNeedReview() );

		if ( $reviewJobs->count() ) {
			$reviewJobs->map( Obj::prop( 'job_id' ) )
			           ->map( Jobs::clearReviewStatus() );

			if ( $deleteDrafts ) {
				$this->deleteDrafts( $reviewJobs );
			}

			return $reviewJobs->pluck( 'job_id' )->map( Cast::toInt() );
		}

		return [];
	}

	private function deleteDrafts( Collection $reviewJobs ) {
		$doCancelJobsAction = function ( Collection $jobIds ) {
			$getJobEntity = function ( $jobId ) {
				return wpml_tm_get_jobs_repository()->get_job( Map::fromJobId( $jobId ), \WPML_TM_Job_Entity::POST_TYPE );
			};

			$jobEntities = $jobIds->map( $getJobEntity )->toArray();
			do_action( 'wpml_tm_jobs_cancelled', $jobEntities );
		};

		$getTranslatedId = Fns::memorize( pipe( Jobs::get(), Jobs::getTranslatedPostId() ) );

		$isDraft = pipe( $getTranslatedId, Post::getStatus(), Relation::equals( 'draft' ) );

		$deleteTranslatedPost = pipe( $getTranslatedId, Post::delete() );

		$reviewJobs = $reviewJobs->map( Obj::prop( 'job_id' ) )
		                         ->map( Jobs::setNotTranslatedStatus() )
		                         ->map( Jobs::clearTranslated() );

		$doCancelJobsAction( $reviewJobs );

		$reviewJobs->filter( $isDraft )
		           ->map( Fns::tap( $deleteTranslatedPost ) )
		           ->map( Jobs::delete() );
	}
}