diff --git a/core/src/ocs.php b/core/src/ocs.php index 2a9b18e0a4..8a0450af5a 100644 --- a/core/src/ocs.php +++ b/core/src/ocs.php @@ -31,6 +31,8 @@ $confStorageDriver = ConfService::getConfStorageImpl(); require_once($confStorageDriver->getUserClassFileName()); +$pServ->initActivePlugins(); + /** * @var Pydio\OCS\OCSPlugin $coreLoader */ diff --git a/core/src/plugins/access.inbox/class.inboxAccessDriver.php b/core/src/plugins/access.inbox/class.inboxAccessDriver.php index 0378c2a461..597f52d5e3 100644 --- a/core/src/plugins/access.inbox/class.inboxAccessDriver.php +++ b/core/src/plugins/access.inbox/class.inboxAccessDriver.php @@ -38,11 +38,17 @@ public function loadNodeInfo(&$ajxpNode, $parentNode = false, $details = false) $targetUrl = inboxAccessWrapper::translateURL($ajxpNode->getUrl()); $repoId = parse_url($targetUrl, PHP_URL_HOST); $r = ConfService::getRepositoryById($repoId); - $owner = $r->getOwner(); + if(!is_null($r)){ + $owner = $r->getOwner(); + $creationTime = $r->getOption("CREATION_TIME"); + }else{ + $owner = "http://".parse_url($targetUrl, PHP_URL_HOST); + $creationTime = time(); + } $leaf = $ajxpNode->isLeaf(); $meta = array( "shared_repository_id" => $repoId, - "ajxp_description" => ($leaf?"File":"Folder")." shared by ".$owner. " ". AJXP_Utils::relativeDate($r->getOption("CREATION_TIME"), $mess) + "ajxp_description" => ($leaf?"File":"Folder")." shared by ".$owner. " ". AJXP_Utils::relativeDate($creationTime, $mess) ); if(!$leaf){ $meta["ajxp_mime"] = "shared_folder"; diff --git a/core/src/plugins/access.inbox/class.inboxAccessWrapper.php b/core/src/plugins/access.inbox/class.inboxAccessWrapper.php index 082326f1d9..bdb56f2653 100644 --- a/core/src/plugins/access.inbox/class.inboxAccessWrapper.php +++ b/core/src/plugins/access.inbox/class.inboxAccessWrapper.php @@ -45,7 +45,7 @@ protected static function getNodes(){ $repos = ConfService::getAccessibleRepositories(); self::$output = array(); foreach($repos as $repo){ - if(!$repo->hasParent()){ + if(!$repo->hasOwner()){ continue; } if($repo->hasContentFilter()){ @@ -94,7 +94,12 @@ public static function translateURL($path){ } if($pydioScheme){ $node = new AJXP_Node($url); - ConfService::loadDriverForRepository($node->getRepository()); + $node->getRepository()->driverInstance = null; + try{ + ConfService::loadDriverForRepository($node->getRepository()); + }catch (Exception $e){ + + } $node->getRepository()->detectStreamWrapper(true); } return $url; @@ -389,7 +394,7 @@ public function url_stat($path, $flags) if(self::$linkNode !== null){ ConfService::loadDriverForRepository(self::$linkNode->getRepository()); } - $this->disableWriteInStat($stat); + //$this->disableWriteInStat($stat); return $stat; } diff --git a/core/src/plugins/core.ocs/src/server/Federated/Server.php b/core/src/plugins/core.ocs/src/server/Federated/Server.php index a789767d18..d6f9f2e00a 100644 --- a/core/src/plugins/core.ocs/src/server/Federated/Server.php +++ b/core/src/plugins/core.ocs/src/server/Federated/Server.php @@ -72,12 +72,7 @@ protected function actionReceive($parameters){ throw new InvalidArgumentsException(); } - // TODO: - // -- Ping Remote to discover OcsServiceUrl & OcsDavURL - // -- Ping Dav endpoint to detect if password & if file or folder - // -- Can we not use the Virtual repo there ?? Better if access was done through access.webdav $endpoints = OCSClient::findEndpointsForURL($remote); - //$parameters += OCSClient::pingDAVEndpoint(); $share = new RemoteShare(); $share->setUser($targetUser); @@ -88,13 +83,10 @@ protected function actionReceive($parameters){ $share->setReceptionDate(time()); $share->setStatus(OCS_INVITATION_STATUS_PENDING); - $share->setOcsServiceUrl($endpoints['shares']); - $share->setOcsDavUrl($endpoints['dav']); + $share->setOcsServiceUrl(rtrim($remote, '/').$endpoints['share']); + $share->setOcsDavUrl(rtrim($remote, '/').$endpoints['webdav']); - // Populated from the DAV ping above - if(isset($parameters["isFile"]) && $parameters["isFile"] == "true"){ - $share->setDocumentIsLeaf(true); - } + $share->pingRemoteDAVPoint(); $store = new SQLStore(); $newShare = $store->storeRemoteShare($share);