diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 732f5fece8..2a64680599 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -109,6 +109,7 @@ class Util { private $publicKeyPath; // Path to user's public key private $privateKeyPath; // Path to user's private key private $publicShareKeyId; + private $recoveryKeyId; public function __construct( \OC_FilesystemView $view, $userId, $client = false ) { @@ -125,6 +126,7 @@ class Util { $this->publicKeyPath = $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key $this->privateKeyPath = $this->encryptionDir . '/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key $this->publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); + $this->recoveryKeyId = \OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); } public function ready() { @@ -798,6 +800,7 @@ class Util { // public system user 'ownCloud' (for public shares) if ( $user == $this->publicShareKeyId + or $user == $this->recoveryKeyId or $util->ready() ) { @@ -949,7 +952,11 @@ class Util { if ( $sharingEnabled ) { // Find out who, if anyone, is sharing the file - $userIds = \OCP\Share::getUsersSharingFile( $ownerPath, $owner,true, true, true ); + $result = \OCP\Share::getUsersSharingFile( $ownerPath, $owner,true, true, true ); + $userIds = $result['users']; + if ( $result['public'] ) { + $userIds[] = $this->publicShareKeyId; + } } diff --git a/lib/public/share.php b/lib/public/share.php index b9cf05bbf7..10400e34c5 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -138,6 +138,7 @@ class Share { $path_parts = explode(DIRECTORY_SEPARATOR, trim($path, DIRECTORY_SEPARATOR)); $path = ''; $shares = array(); + $publicShare = false; $view = new \OC\Files\View('/' . $user . '/files/'); foreach ($path_parts as $p) { $path .= '/' . $p; @@ -184,27 +185,23 @@ class Share { $shares = array_merge($shares, $usersInGroup); } - $publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); - - if ($publicShareKeyId) { - //check for public link shares - $query = \OC_DB::prepare( - 'SELECT share_with + //check for public link shares + $query = \OC_DB::prepare( + 'SELECT share_with FROM `*PREFIX*share` WHERE item_source = ? AND share_type = ?' - ); + ); - $result = $query->execute(array($source, self::SHARE_TYPE_LINK)); + $result = $query->execute(array($source, self::SHARE_TYPE_LINK)); - if (\OC_DB::isError($result)) { - \OC_Log::write('OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); - } + if (\OC_DB::isError($result)) { + \OC_Log::write('OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } - if ($result->fetchRow()) { - $shares[] = $publicShareKeyId; - } + if ($result->fetchRow()) { + $publicShare = true; } } // Include owner in list of users, if requested @@ -212,7 +209,7 @@ class Share { $shares[] = $user; } - return array_unique($shares); + return array("users" => array_unique($shares), "public" => $publicShare); } /**