[Pkg-owncloud-commits] [owncloud] 155/258: group shares and combine permissions
David Prévot
taffit at moszumanska.debian.org
Sat Oct 11 17:22:31 UTC 2014
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository owncloud.
commit 64a9315b4a89d94eab45b996d740600c13476734
Author: Bjoern Schiessle <schiessle at owncloud.com>
Date: Thu Jul 31 11:55:59 2014 +0200
group shares and combine permissions
---
apps/files_sharing/lib/share/file.php | 2 +-
apps/files_sharing/lib/sharedmount.php | 15 +-
apps/files_sharing/lib/sharedstorage.php | 15 +
lib/private/share/share.php | 484 ++++++++++++++++---------------
4 files changed, 276 insertions(+), 240 deletions(-)
diff --git a/apps/files_sharing/lib/share/file.php b/apps/files_sharing/lib/share/file.php
index 2ae7fdc..0cd6654 100644
--- a/apps/files_sharing/lib/share/file.php
+++ b/apps/files_sharing/lib/share/file.php
@@ -38,7 +38,7 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent {
// FIXME: attributes should not be set here,
// keeping this pattern for now to avoid unexpected
// regressions
- $this->path = basename($path);
+ $this->path = \OC\Files\Filesystem::normalizePath(basename($path));
return true;
}
return false;
diff --git a/apps/files_sharing/lib/sharedmount.php b/apps/files_sharing/lib/sharedmount.php
index 564ac43..9469e0a 100644
--- a/apps/files_sharing/lib/sharedmount.php
+++ b/apps/files_sharing/lib/sharedmount.php
@@ -121,7 +121,15 @@ class SharedMount extends Mount implements MoveableMount {
$relTargetPath = $this->stripUserFilesPath($target);
$share = $this->storage->getShare();
- $result = $this->updateFileTarget($relTargetPath, $share);
+ $result = true;
+
+ if (!empty($share['grouped'])) {
+ foreach ($share['grouped'] as $s) {
+ $result = $this->updateFileTarget($relTargetPath, $s) && $result;
+ }
+ } else {
+ $result = $this->updateFileTarget($relTargetPath, $share) && $result;
+ }
if ($result) {
$this->setMountPoint($target);
@@ -144,8 +152,11 @@ class SharedMount extends Mount implements MoveableMount {
*/
public function removeMount() {
$mountManager = \OC\Files\Filesystem::getMountManager();
+ /**
+ * @var \OC\Files\Storage\Shared
+ */
$storage = $this->getStorage();
- $result = \OCP\Share::unshareFromSelf($storage->getItemType(), $storage->getMountPoint());
+ $result = $storage->unshareStorage();
$mountManager->removeMount($this->mountPoint);
return $result;
diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php
index 02fcd70..0bd7c6f 100644
--- a/apps/files_sharing/lib/sharedstorage.php
+++ b/apps/files_sharing/lib/sharedstorage.php
@@ -532,4 +532,19 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
return null;
}
+ /**
+ * unshare complete storage, also the grouped shares
+ */
+ public function unshareStorage() {
+ $result = true;
+ if (!empty($this->share['grouped'])) {
+ foreach ($this->share['grouped'] as $share) {
+ $result = $result && \OCP\Share::unshareFromSelf($share['item_type'], $share['file_target']);
+ }
+ }
+ $result = $result && \OCP\Share::unshareFromSelf($this->getItemType(), $this->getMountPoint());
+
+ return $result;
+ }
+
}
diff --git a/lib/private/share/share.php b/lib/private/share/share.php
index 22e354e..2864e85 100644
--- a/lib/private/share/share.php
+++ b/lib/private/share/share.php
@@ -339,11 +339,13 @@ class Share extends \OC\Share\Constants {
* @param int $format (optional) Format type must be defined by the backend
* @param mixed $parameters
* @param boolean $includeCollections
+ * @param string $shareWith (optional) define against which user should be checked, default: current user
* @return mixed Return depends on format
*/
public static function getItemSharedWithBySource($itemType, $itemSource, $format = self::FORMAT_NONE,
- $parameters = null, $includeCollections = false) {
- return self::getItems($itemType, $itemSource, self::$shareTypeUserAndGroups, \OC_User::getUser(), null, $format,
+ $parameters = null, $includeCollections = false, $shareWith = null) {
+ $shareWith = ($shareWith === null) ? \OC_User::getUser() : $shareWith;
+ return self::getItems($itemType, $itemSource, self::$shareTypeUserAndGroups, $shareWith, null, $format,
$parameters, 1, $includeCollections, true);
}
@@ -1293,7 +1295,7 @@ class Share extends \OC\Share\Constants {
// Make sure the unique user target is returned if it exists,
// unique targets should follow the group share in the database
// If the limit is not 1, the filtering can be done later
- $where .= ' ORDER BY `*PREFIX*share`.`id` DESC';
+ $where .= ' ORDER BY `*PREFIX*share`.`id` ASC';
}
// The limit must be at least 3, because filtering needs to be done
if ($limit < 3) {
@@ -1311,7 +1313,7 @@ class Share extends \OC\Share\Constants {
$result = $query->execute($queryArgs);
if (\OC_DB::isError($result)) {
\OC_Log::write('OCP\Share',
- \OC_DB::getErrorMessage($result) . ', select=' . $select . ' where=' . $where,
+ \OC_DB::getErrorMessage($result) . ', select=' . $select . ' where=',
\OC_Log::ERROR);
}
$items = array();
@@ -1412,7 +1414,13 @@ class Share extends \OC\Share\Constants {
}
$items[$row['id']] = $row;
+
+ }
+
+ if (isset($shareWith) && $shareWith === \OCP\User::getUser()) {
+ $items = self::groupItems($items, $itemType);
}
+
if (!empty($items)) {
$collectionItems = array();
foreach ($items as &$row) {
@@ -1498,6 +1506,47 @@ class Share extends \OC\Share\Constants {
}
/**
+ * group items with link to the same source
+ *
+ * @param array $items
+ * @param string $itemType
+ * @return array of grouped items
+ */
+ private static function groupItems($items, $itemType) {
+
+ $fileSharing = ($itemType === 'file' || $itemType === 'folder') ? true : false;
+
+ $result = array();
+
+ foreach ($items as $item) {
+ $grouped = false;
+ foreach ($result as $key => $r) {
+ // for file/folder shares we need to compare file_source, otherwise we compare item_source
+ // only group shares if they already point to the same target, otherwise the file where shared
+ // before grouping of shares was added. In this case we don't group them toi avoid confusions
+ if (( $fileSharing && $item['file_source'] === $r['file_source'] && $item['file_target'] === $r['file_target']) ||
+ (!$fileSharing && $item['item_source'] === $r['item_source'] && $item['item_target'] === $r['item_target'])) {
+ // add the first item to the list of grouped shares
+ if (!isset($result[$key]['grouped'])) {
+ $result[$key]['grouped'][] = $result[$key];
+ }
+ $result[$key]['permissions'] = (int) $item['permissions'] | (int) $r['permissions'];
+ $result[$key]['grouped'][] = $item;
+ $grouped = true;
+ break;
+ }
+ }
+
+ if (!$grouped) {
+ $result[] = $item;
+ }
+
+ }
+
+ return $result;
+ }
+
+/**
* Put shared item into the database
* @param string $itemType Item type
* @param string $itemSource Item source
@@ -1514,11 +1563,182 @@ class Share extends \OC\Share\Constants {
*/
private static function put($itemType, $itemSource, $shareType, $shareWith, $uidOwner,
$permissions, $parentFolder = null, $token = null, $itemSourceName = null, \DateTime $expirationDate = null) {
+
+ $queriesToExecute = array();
+
+ $fileShare = false;
+ if ($itemType === 'file' || $itemType === 'folder') {
+ $fileShare = true;
+ }
+
+ $result = self::checkReshare($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $permissions, $itemSourceName, $expirationDate);
+ if(!empty($result)) {
+ $parent = $result['parent'];
+ $itemSource = $result['itemSource'];
+ $fileSource = $result['fileSource'];
+ $suggestedItemTarget = $result['suggestedItemTarget'];
+ $suggestedFileTarget = $result['suggestedFileTarget'];
+ $filePath = $result['filePath'];
+ $expirationDate = $result['expirationDate'];
+ }
+
+ $isGroupShare = false;
+ if ($shareType == self::SHARE_TYPE_GROUP) {
+ $isGroupShare = true;
+ $users = \OC_Group::usersInGroup($shareWith['group']);
+ // remove current user from list
+ if (in_array(\OCP\User::getUser(), $users)) {
+ unset($users[array_search(\OCP\User::getUser(), $users)]);
+ }
+ $groupItemTarget = Helper::generateTarget($itemType, $itemSource, $shareType, $shareWith['group'],
+ $uidOwner, $suggestedItemTarget);
+ $groupFileTarget = $filePath;
+
+ // add group share to table and remember the id as parent
+ $queriesToExecute['groupShare'] = array(
+ 'itemType' => $itemType,
+ 'itemSource' => $itemSource,
+ 'itemTarget' => $groupItemTarget,
+ 'shareType' => $shareType,
+ 'shareWith' => $shareWith['group'],
+ 'uidOwner' => $uidOwner,
+ 'permissions' => $permissions,
+ 'shareTime' => time(),
+ 'fileSource' => $fileSource,
+ 'fileTarget' => $filePath,
+ 'token' => $token,
+ 'parent' => $parent,
+ 'expiration' => $expirationDate,
+ );
+
+ } else {
+ $users = array($shareWith);
+ $itemTarget = Helper::generateTarget($itemType, $itemSource, $shareType, $shareWith, $uidOwner,
+ $suggestedItemTarget);
+ }
+
+ $run = true;
+ $error = '';
+ $preHookData = array(
+ 'itemType' => $itemType,
+ 'itemSource' => $itemSource,
+ 'shareType' => $shareType,
+ 'uidOwner' => $uidOwner,
+ 'permissions' => $permissions,
+ 'fileSource' => $fileSource,
+ 'expiration' => $expirationDate,
+ 'token' => $token,
+ 'run' => &$run,
+ 'error' => &$error
+ );
+
+ $preHookData['itemTarget'] = ($isGroupShare) ? $groupItemTarget : $itemTarget;
+ $preHookData['shareWith'] = ($isGroupShare) ? $shareWith['group'] : $shareWith;
+
+ \OC_Hook::emit('OCP\Share', 'pre_shared', $preHookData);
+
+ if ($run === false) {
+ throw new \Exception($error);
+ }
+
+ foreach ($users as $user) {
+ $sourceExists = self::getItemSharedWithBySource($itemType, $itemSource, self::FORMAT_NONE, null, true, $user);
+
+ $shareType = ($isGroupShare) ? self::$shareTypeGroupUserUnique : $shareType;
+
+ if ($sourceExists) {
+ $fileTarget = $sourceExists['file_target'];
+ $itemTarget = $sourceExists['item_target'];
+
+ } elseif(!$sourceExists && !$isGroupShare) {
+
+ $itemTarget = Helper::generateTarget($itemType, $itemSource, self::SHARE_TYPE_USER, $user,
+ $uidOwner, $suggestedItemTarget, $parent);
+ if (isset($fileSource)) {
+ if ($parentFolder) {
+ if ($parentFolder === true) {
+ $fileTarget = Helper::generateTarget('file', $filePath, self::SHARE_TYPE_USER, $user,
+ $uidOwner, $suggestedFileTarget, $parent);
+ if ($fileTarget != $groupFileTarget) {
+ $parentFolders[$user]['folder'] = $fileTarget;
+ }
+ } else if (isset($parentFolder[$user])) {
+ $fileTarget = $parentFolder[$user]['folder'].$itemSource;
+ $parent = $parentFolder[$user]['id'];
+ }
+ } else {
+ $fileTarget = Helper::generateTarget('file', $filePath, self::SHARE_TYPE_USER,
+ $user, $uidOwner, $suggestedFileTarget, $parent);
+ }
+ } else {
+ $fileTarget = null;
+ }
+
+ } else {
+ // move to the next user if it is neither a unique group share
+ // nor a single share without adding it to the share table
+ continue;
+ }
+
+ $queriesToExecute[] = array(
+ 'itemType' => $itemType,
+ 'itemSource' => $itemSource,
+ 'itemTarget' => $itemTarget,
+ 'shareType' => $shareType,
+ 'shareWith' => $user,
+ 'uidOwner' => $uidOwner,
+ 'permissions' => $permissions,
+ 'shareTime' => time(),
+ 'fileSource' => $fileSource,
+ 'fileTarget' => $fileTarget,
+ 'token' => $token,
+ 'parent' => $parent,
+ 'expiration' => $expirationDate,
+ );
+
+ }
+
+ if ($isGroupShare) {
+ self::insertShare($queriesToExecute['groupShare']);
+ // Save this id, any extra rows for this group share will need to reference it
+ $parent = \OC_DB::insertid('*PREFIX*share');
+ unset($queriesToExecute['groupShare']);
+ }
+
+ foreach ($queriesToExecute as $shareQuery) {
+ $shareQuery['parent'] = $parent;
+ self::insertShare($shareQuery);
+ }
+
+ $postHookData = array(
+ 'itemType' => $itemType,
+ 'itemSource' => $itemSource,
+ 'parent' => $parent,
+ 'shareType' => $shareType,
+ 'uidOwner' => $uidOwner,
+ 'permissions' => $permissions,
+ 'fileSource' => $fileSource,
+ 'id' => $parent,
+ 'token' => $token,
+ 'expirationDate' => $expirationDate,
+ );
+
+ $postHookData['shareWith'] = ($isGroupShare) ? $shareWith['group'] : $shareWith;
+ $postHookData['itemTarget'] = ($isGroupShare) ? $groupItemTarget : $itemTarget;
+ $postHookData['fileTarget'] = ($isGroupShare) ? $groupFileTarget : $fileTarget;
+
+ \OC_Hook::emit('OCP\Share', 'post_shared', $postHookData);
+
+
+ return true;
+ }
+
+ private static function checkReshare($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $permissions, $itemSourceName, $expirationDate) {
$backend = self::getBackend($itemType);
$l = \OC_L10N::get('lib');
- // Check if this is a reshare
- if ($checkReshare = self::getItemSharedWithBySource($itemType, $itemSource, self::FORMAT_NONE, null, true)) {
+ $checkReshare = self::getItemSharedWithBySource($itemType, $itemSource, self::FORMAT_NONE, null, true);
+ if ($checkReshare) {
// Check if attempting to share back to owner
if ($checkReshare['uid_owner'] == $shareWith && $shareType == self::SHARE_TYPE_USER) {
$message = 'Sharing %s failed, because the user %s is the original sharer';
@@ -1527,6 +1747,7 @@ class Share extends \OC\Share\Constants {
\OC_Log::write('OCP\Share', sprintf($message, $itemSourceName, $shareWith), \OC_Log::ERROR);
throw new \Exception($message_t);
}
+
// Check if share permissions is granted
if (self::isResharingAllowed() && (int)$checkReshare['permissions'] & \OCP\PERMISSION_SHARE) {
if (~(int)$checkReshare['permissions'] & $permissions) {
@@ -1537,13 +1758,13 @@ class Share extends \OC\Share\Constants {
throw new \Exception($message_t);
} else {
// TODO Don't check if inside folder
- $parent = $checkReshare['id'];
- $itemSource = $checkReshare['item_source'];
- $fileSource = $checkReshare['file_source'];
- $suggestedItemTarget = $checkReshare['item_target'];
- $suggestedFileTarget = $checkReshare['file_target'];
- $filePath = $checkReshare['file_target'];
- $expirationDate = min($expirationDate, $checkReshare['expiration']);
+ $result['parent'] = $checkReshare['id'];
+ $result['itemSource'] = $checkReshare['item_source'];
+ $result['fileSource'] = $checkReshare['file_source'];
+ $result['suggestedItemTarget'] = $checkReshare['item_target'];
+ $result['suggestedFileTarget'] = $checkReshare['file_target'];
+ $result['filePath'] = $checkReshare['file_target'];
+ $result['expirationDate'] = min($expirationDate, $checkReshare['expiration']);
}
} else {
$message = 'Sharing %s failed, because resharing is not allowed';
@@ -1553,9 +1774,11 @@ class Share extends \OC\Share\Constants {
throw new \Exception($message_t);
}
} else {
- $parent = null;
- $suggestedItemTarget = null;
- $suggestedFileTarget = null;
+ $result['parent'] = null;
+ $result['suggestedItemTarget'] = null;
+ $result['suggestedFileTarget'] = null;
+ $result['itemSource'] = $itemSource;
+ $result['expirationDate'] = $expirationDate;
if (!$backend->isValidSource($itemSource, $uidOwner)) {
$message = 'Sharing %s failed, because the sharing backend for '
.'%s could not find its source';
@@ -1564,14 +1787,14 @@ class Share extends \OC\Share\Constants {
throw new \Exception($message_t);
}
if ($backend instanceof \OCP\Share_Backend_File_Dependent) {
- $filePath = $backend->getFilePath($itemSource, $uidOwner);
+ $result['filePath'] = $backend->getFilePath($itemSource, $uidOwner);
if ($itemType == 'file' || $itemType == 'folder') {
- $fileSource = $itemSource;
+ $result['fileSource'] = $itemSource;
} else {
- $meta = \OC\Files\Filesystem::getFileInfo($filePath);
- $fileSource = $meta['fileid'];
+ $meta = \OC\Files\Filesystem::getFileInfo($result['filePath']);
+ $result['fileSource'] = $meta['fileid'];
}
- if ($fileSource == -1) {
+ if ($result['fileSource'] == -1) {
$message = 'Sharing %s failed, because the file could not be found in the file cache';
$message_t = $l->t('Sharing %s failed, because the file could not be found in the file cache', array($itemSource));
@@ -1579,225 +1802,12 @@ class Share extends \OC\Share\Constants {
throw new \Exception($message_t);
}
} else {
- $filePath = null;
- $fileSource = null;
+ $result['filePath'] = null;
+ $result['fileSource'] = null;
}
}
- // Share with a group
- if ($shareType == self::SHARE_TYPE_GROUP) {
- $groupItemTarget = Helper::generateTarget($itemType, $itemSource, $shareType, $shareWith['group'],
- $uidOwner, $suggestedItemTarget);
- $run = true;
- $error = '';
- \OC_Hook::emit('OCP\Share', 'pre_shared', array(
- 'itemType' => $itemType,
- 'itemSource' => $itemSource,
- 'itemTarget' => $groupItemTarget,
- 'shareType' => $shareType,
- 'shareWith' => $shareWith['group'],
- 'uidOwner' => $uidOwner,
- 'permissions' => $permissions,
- 'fileSource' => $fileSource,
- 'expiration' => $expirationDate,
- 'token' => $token,
- 'run' => &$run,
- 'error' => &$error
- ));
-
- if ($run === false) {
- throw new \Exception($error);
- }
-
- if (isset($fileSource)) {
- if ($parentFolder) {
- if ($parentFolder === true) {
- $groupFileTarget = Helper::generateTarget('file', $filePath, $shareType,
- $shareWith['group'], $uidOwner, $suggestedFileTarget);
- // Set group default file target for future use
- $parentFolders[0]['folder'] = $groupFileTarget;
- } else {
- // Get group default file target
- $groupFileTarget = $parentFolder[0]['folder'].$itemSource;
- $parent = $parentFolder[0]['id'];
- }
- } else {
- $groupFileTarget = Helper::generateTarget('file', $filePath, $shareType, $shareWith['group'],
- $uidOwner, $suggestedFileTarget);
- }
- } else {
- $groupFileTarget = null;
- }
- $queriesToExecute = array();
- $queriesToExecute['groupShare'] = array(
- 'itemType' => $itemType,
- 'itemSource' => $itemSource,
- 'itemTarget' => $groupItemTarget,
- 'shareType' => $shareType,
- 'shareWith' => $shareWith['group'],
- 'uidOwner' => $uidOwner,
- 'permissions' => $permissions,
- 'shareTime' => time(),
- 'fileSource' => $fileSource,
- 'fileTarget' => $groupFileTarget,
- 'token' => $token,
- 'parent' => $parent,
- 'expiration' => $expirationDate,
- );
- // Loop through all users of this group in case we need to add an extra row
- foreach ($shareWith['users'] as $uid) {
- $itemTarget = Helper::generateTarget($itemType, $itemSource, self::SHARE_TYPE_USER, $uid,
- $uidOwner, $suggestedItemTarget, $parent);
- if (isset($fileSource)) {
- if ($parentFolder) {
- if ($parentFolder === true) {
- $fileTarget = Helper::generateTarget('file', $filePath, self::SHARE_TYPE_USER, $uid,
- $uidOwner, $suggestedFileTarget, $parent);
- if ($fileTarget != $groupFileTarget) {
- $parentFolders[$uid]['folder'] = $fileTarget;
- }
- } else if (isset($parentFolder[$uid])) {
- $fileTarget = $parentFolder[$uid]['folder'].$itemSource;
- $parent = $parentFolder[$uid]['id'];
- }
- } else {
- $fileTarget = Helper::generateTarget('file', $filePath, self::SHARE_TYPE_USER,
- $uid, $uidOwner, $suggestedFileTarget, $parent);
- }
- } else {
- $fileTarget = null;
- }
- // Insert an extra row for the group share if the item or file target is unique for this user
- if ($itemTarget != $groupItemTarget || (isset($fileSource) && $fileTarget != $groupFileTarget)) {
- $queriesToExecute[] = array(
- 'itemType' => $itemType,
- 'itemSource' => $itemSource,
- 'itemTarget' => $itemTarget,
- 'shareType' => self::$shareTypeGroupUserUnique,
- 'shareWith' => $uid,
- 'uidOwner' => $uidOwner,
- 'permissions' => $permissions,
- 'shareTime' => time(),
- 'fileSource' => $fileSource,
- 'fileTarget' => $fileTarget,
- 'token' => $token,
- //'parent' => $parent,
- 'expiration' => $expirationDate,
- );
- }
- }
-
- self::insertShare($queriesToExecute['groupShare']);
- // Save this id, any extra rows for this group share will need to reference it
- $parent = \OC_DB::insertid('*PREFIX*share');
- unset($queriesToExecute['groupShare']);
-
- foreach ($queriesToExecute as $shareQuery) {
- $shareQuery['parent'] = $parent;
- self::insertShare($shareQuery);
- }
-
- \OC_Hook::emit('OCP\Share', 'post_shared', array(
- 'itemType' => $itemType,
- 'itemSource' => $itemSource,
- 'itemTarget' => $groupItemTarget,
- 'parent' => $parent,
- 'shareType' => $shareType,
- 'shareWith' => $shareWith['group'],
- 'uidOwner' => $uidOwner,
- 'permissions' => $permissions,
- 'fileSource' => $fileSource,
- 'fileTarget' => $groupFileTarget,
- 'id' => $parent,
- 'token' => $token,
- 'expirationDate' => $expirationDate,
- ));
-
- if ($parentFolder === true) {
- // Return parent folders to preserve file target paths for potential children
- return $parentFolders;
- }
- } else {
- $itemTarget = Helper::generateTarget($itemType, $itemSource, $shareType, $shareWith, $uidOwner,
- $suggestedItemTarget);
- $run = true;
- $error = '';
- \OC_Hook::emit('OCP\Share', 'pre_shared', array(
- 'itemType' => $itemType,
- 'itemSource' => $itemSource,
- 'itemTarget' => $itemTarget,
- 'shareType' => $shareType,
- 'shareWith' => $shareWith,
- 'uidOwner' => $uidOwner,
- 'permissions' => $permissions,
- 'fileSource' => $fileSource,
- 'token' => $token,
- 'expirationDate' => $expirationDate,
- 'run' => &$run,
- 'error' => &$error,
- ));
-
- if ($run === false) {
- throw new \Exception($error);
- }
-
- if (isset($fileSource)) {
- if ($parentFolder) {
- if ($parentFolder === true) {
- $fileTarget = Helper::generateTarget('file', $filePath, $shareType, $shareWith,
- $uidOwner, $suggestedFileTarget);
- $parentFolders['folder'] = $fileTarget;
- } else {
- $fileTarget = $parentFolder['folder'].$itemSource;
- $parent = $parentFolder['id'];
- }
- } else {
- $fileTarget = Helper::generateTarget('file', $filePath, $shareType, $shareWith, $uidOwner,
- $suggestedFileTarget);
- }
- } else {
- $fileTarget = null;
- }
-
- self::insertShare(array(
- 'itemType' => $itemType,
- 'itemSource' => $itemSource,
- 'itemTarget' => $itemTarget,
- 'shareType' => $shareType,
- 'shareWith' => $shareWith,
- 'uidOwner' => $uidOwner,
- 'permissions' => $permissions,
- 'shareTime' => time(),
- 'fileSource' => $fileSource,
- 'fileTarget' => $fileTarget,
- 'token' => $token,
- 'parent' => $parent,
- 'expiration' => $expirationDate,
- ));
-
- $id = \OC_DB::insertid('*PREFIX*share');
- \OC_Hook::emit('OCP\Share', 'post_shared', array(
- 'itemType' => $itemType,
- 'itemSource' => $itemSource,
- 'itemTarget' => $itemTarget,
- 'parent' => $parent,
- 'shareType' => $shareType,
- 'shareWith' => $shareWith,
- 'uidOwner' => $uidOwner,
- 'permissions' => $permissions,
- 'fileSource' => $fileSource,
- 'fileTarget' => $fileTarget,
- 'id' => $id,
- 'token' => $token,
- 'expirationDate' => $expirationDate,
- ));
- if ($parentFolder === true) {
- $parentFolders['id'] = $id;
- // Return parent folder to preserve file target paths for potential children
- return $parentFolders;
- }
- }
- return true;
+ return $result;
}
private static function insertShare(array $shareData)
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git
More information about the Pkg-owncloud-commits
mailing list