SyncLock.php
705 Bytes
<?php
namespace WPML\TM\ATE\AutoTranslate\Endpoint;
use WPML\Ajax\IHandler;
use WPML\Collect\Support\Collection;
use WPML\FP\Either;
use WPML\Utilities\KeyedLock;
use function WPML\Container\make;
class SyncLock implements IHandler {
public function run( Collection $data ) {
$lock = make( \WPML\TM\ATE\SyncLock::class );
$action = $data->get( 'action', 'acquire' );
if ( $action === 'release' ) {
$lockKey = $lock->create( $data->get( 'lockKey' ) );
if ( $lockKey ) {
$lock->release();
}
return Either::of( [ 'action' => 'release', 'result' => (bool) $lockKey ] );
} else {
return Either::of( [ 'action' => 'acquire', 'result' => $lock->create( null ) ] );
}
}
}