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; }
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; }