Duplicate.php 692 Bytes
<?php

namespace WPML\TM\TranslationDashboard\Endpoints;

use WPML\Collect\Support\Collection;
use WPML\FP\Either;
use WPML\FP\Fns;
use WPML\FP\Lst;
use function WPML\FP\spreadArgs;

/**
 * It duplicates posts into specified languages.
 */
class Duplicate {

	public function run( Collection $data ) {
		global $sitepress;

		$postIds  = $data->get( 'postIds' );
		$languages = $data->get( 'languages' );

		$pairs  = Lst::xprod( $postIds, $languages );
		$result = Fns::map( spreadArgs( function ( $postId, $languageCode ) use ( $sitepress ) {
			return [ $postId, $languageCode, $sitepress->make_duplicate( $postId, $languageCode ) ];
		} ), $pairs );

		return Either::of( $result );
	}
}