Example #1
0
 public function refreshLock(ResourceInterface $resource, UUID $token, \DateTimeInterface $expires = NULL)
 {
     $expires = $this->computeExpires($expires);
     $sql = "\tUPDATE `#__webdav_lock`\n\t\t\t\t\tSET `expires_at` = :expires\n\t\t\t\t\tWHERE `token` = :token\n\t\t\t\t\tAND `expires_at` > :time\n\t\t";
     $stmt = $this->conn->prepare($sql);
     $stmt->bindValue('expires', $expires->getTimestamp());
     $stmt->bindValue('token', $token->toBinary());
     $stmt->bindValue('time', time());
     if (1 != $stmt->execute()) {
         throw new \RuntimeException(sprintf('Unable to refresh lock "%s"', $token));
     }
     $sql = "SELECT * FROM `#__webdav_lock` WHERE `token` = :token";
     $stmt = $this->conn->prepare($sql);
     $stmt->bindValue('token', $token->toBinary());
     $stmt->execute();
     if (false === ($row = $stmt->fetchNextRow())) {
         throw new \RuntimeException(sprintf('Failed during retrieva of refreshed lock "%s"', $token));
     }
     $lock = new LockInfo($resource->getPath(), new \DateTimeImmutable('@' . $row['expires_at']), LockInfo::DEPTH_0, LockInfo::SCOPE_EXCLUSIVE, $row['owner']);
     $lock->setToken($row['token']);
     return $lock;
 }
Example #2
0
 protected function unserializeLock(array $row)
 {
     $lock = new LockInfo($row['resource'], new \DateTimeImmutable('@' . $row['expires']), LockInfo::DEPTH_0, LockInfo::SCOPE_EXCLUSIVE, $row['owner']);
     $lock->setToken($row['id']);
     return $lock;
 }