Skip to content

Instantly share code, notes, and snippets.

@non-senses
Created January 30, 2020 19:08
Show Gist options
  • Save non-senses/d72e5520ebe6d75767e6b4165ce7e82d to your computer and use it in GitHub Desktop.
Save non-senses/d72e5520ebe6d75767e6b4165ce7e82d to your computer and use it in GitHub Desktop.
<?php
public function unlock($orderId, $userId)
{
$redis = $this->app['cache'];
if (empty($this->type) || empty($orderId) || !in_array($this->type, $this->availableType)) {
throw new LockException("Missing/Invalid parameters. Can't unlock for type: " . $this->type . " with id: " . $orderId);
}
$result = $redis->hGet(sprintf(self::REDIS_CACHE_TEMPORARY_LOCK, $this->type), $orderId);
if (empty($result)) {
throw new LockException("This order wasn't locked. Can't unlock");
}
// lock if it's the same user who try to unlock
$data = json_decode($result, true);
if ($userId != $data['user']['id']) {
throw new LockException("Unlock failed. You can't unlock something that isn't yours");
}
$result = $redis->hDel(sprintf(self::REDIS_CACHE_TEMPORARY_LOCK, $this->type), $orderId);
if ($result != true) {
throw new LockException("Unlock failed. Please try again");
}
return true;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment