Skip to content
This repository was archived by the owner on Nov 25, 2020. It is now read-only.

Commit 8d51378

Browse files
committed
Update meta.simple_lock code
1 parent f916b44 commit 8d51378

File tree

1 file changed

+14
-16
lines changed

1 file changed

+14
-16
lines changed

core/src/plugins/meta.simple_lock/SimpleLockManager.php

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,10 @@
2222

2323
use Pydio\Access\Core\AbstractAccessDriver;
2424
use Pydio\Access\Core\Model\AJXP_Node;
25+
use Pydio\Access\Core\Model\NodesDiff;
2526
use Pydio\Access\Core\Model\UserSelection;
2627
use Pydio\Core\Exception\PydioException;
28+
use Pydio\Core\Http\Response\SerializableResponseStream;
2729
use Pydio\Core\Model\ContextInterface;
2830
use Pydio\Core\PluginFramework\PluginsService;
2931
use Pydio\Core\Services\LocaleService;
@@ -58,14 +60,12 @@ public function initMeta(ContextInterface $ctx, AbstractAccessDriver $accessDriv
5860
if ($store === false) {
5961
throw new PydioException("The 'meta.simple_lock' plugin requires at least one active 'metastore' plugin");
6062
}
61-
$this->metaStore = $store;
62-
$this->metaStore->initMeta($ctx, $accessDriver);
6363
}
6464

6565
/**
6666
* @param \Psr\Http\Message\ServerRequestInterface $requestInterface
6767
* @param \Psr\Http\Message\ResponseInterface $responseInterface
68-
* @throws \Exception
68+
* @throws PydioException
6969
*/
7070
public function applyChangeLock(\Psr\Http\Message\ServerRequestInterface $requestInterface, \Psr\Http\Message\ResponseInterface &$responseInterface)
7171
{
@@ -74,29 +74,29 @@ public function applyChangeLock(\Psr\Http\Message\ServerRequestInterface $reques
7474
$ctx = $requestInterface->getAttribute("ctx");
7575

7676
if ($ctx->getRepository()->getDriverInstance($ctx) instanceof \Pydio\Access\Driver\StreamProvider\FS\DemoAccessDriver) {
77-
throw new \Exception("Write actions are disabled in demo mode!");
77+
throw new PydioException("Write actions are disabled in demo mode!");
7878
}
7979
$repo = $ctx->getRepository();
8080
$user = $ctx->getUser();
8181
if (!UsersService::usersEnabled() && $user!=null && !$user->canWrite($repo->getId())) {
82-
throw new \Exception("You have no right on this action.");
82+
throw new PydioException("You have no right on this action.");
8383
}
8484
$selection = UserSelection::fromContext($ctx, $httpVars);
8585

8686
$unlock = (isSet($httpVars["unlock"])?true:false);
87+
$node = $selection->getUniqueNode();
8788
if ($unlock) {
88-
$this->metaStore->removeMetadata($selection->getUniqueNode(), self::METADATA_LOCK_NAMESPACE, false, AJXP_METADATA_SCOPE_GLOBAL);
89+
$node->removeMetadata(self::METADATA_LOCK_NAMESPACE, false, AJXP_METADATA_SCOPE_GLOBAL);
8990
} else {
90-
$this->metaStore->setMetadata(
91-
$selection->getUniqueNode(),
91+
$node->setMetadata(
9292
SimpleLockManager::METADATA_LOCK_NAMESPACE,
9393
array("lock_user" => $ctx->getUser()->getId()),
9494
false,
9595
AJXP_METADATA_SCOPE_GLOBAL
9696
);
9797
}
98-
$x = new \Pydio\Core\Http\Response\SerializableResponseStream();
99-
$diff = new \Pydio\Access\Core\Model\NodesDiff();
98+
$x = new SerializableResponseStream();
99+
$diff = new NodesDiff();
100100
$diff->update($selection->getUniqueNode());
101101
$x->addChunk($diff);
102102
$responseInterface = $responseInterface->withBody($x);
@@ -109,8 +109,7 @@ public function processLockMeta($node)
109109
{
110110
// Transform meta into overlay_icon
111111
// $this->logDebug("SHOULD PROCESS METADATA FOR ", $node->getLabel());
112-
$lock = $this->metaStore->retrieveMetadata(
113-
$node,
112+
$lock = $node->retrieveMetadata(
114113
SimpleLockManager::METADATA_LOCK_NAMESPACE,
115114
false,
116115
AJXP_METADATA_SCOPE_GLOBAL);
@@ -138,21 +137,20 @@ public function processLockMeta($node)
138137

139138
/**
140139
* @param \Pydio\Access\Core\Model\AJXP_Node $node
141-
* @throws \Exception
140+
* @throws PydioException
142141
*/
143142
public function checkFileLock($node)
144143
{
145144
$this->logDebug("SHOULD CHECK LOCK METADATA FOR ", $node->getLabel());
146-
$lock = $this->metaStore->retrieveMetadata(
147-
$node,
145+
$lock = $node->retrieveMetadata(
148146
SimpleLockManager::METADATA_LOCK_NAMESPACE,
149147
false,
150148
AJXP_METADATA_SCOPE_GLOBAL);
151149
if(is_array($lock)
152150
&& array_key_exists("lock_user", $lock)
153151
&& $lock["lock_user"] != $node->getUserId()){
154152
$mess = LocaleService::getMessages();
155-
throw new \Exception($mess["meta.simple_lock.5"]);
153+
throw new PydioException($mess["meta.simple_lock.5"]);
156154
}
157155
}
158156
}

0 commit comments

Comments
 (0)