summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/private/Share/Share.php54
-rw-r--r--lib/private/TagManager.php4
-rw-r--r--lib/private/Tags.php27
-rw-r--r--lib/public/ITagManager.php4
-rw-r--r--tests/lib/TagsTest.php36
5 files changed, 9 insertions, 116 deletions
diff --git a/lib/private/Share/Share.php b/lib/private/Share/Share.php
index c624f243123..b37d167d896 100644
--- a/lib/private/Share/Share.php
+++ b/lib/private/Share/Share.php
@@ -521,60 +521,6 @@ class Share extends Constants {
}
/**
- * Get the owners of items shared with a user.
- *
- * @param string $user The user the items are shared with.
- * @param string $type The type of the items shared with the user.
- * @param boolean $includeCollections Include collection item types (optional)
- * @param boolean $includeOwner include owner in the list of users the item is shared with (optional)
- * @return array
- * @deprecated TESTS ONLY - this methods is only used by tests
- * called like this:
- * \OC\Share\Share::getSharedItemsOwners($this->user, $this->type, true)
- */
- public static function getSharedItemsOwners($user, $type, $includeCollections = false, $includeOwner = false) {
- // First, we find out if $type is part of a collection (and if that collection is part of
- // another one and so on).
- $collectionTypes = [];
- if (!$includeCollections || !$collectionTypes = self::getCollectionItemTypes($type)) {
- $collectionTypes[] = $type;
- }
-
- // Of these collection types, along with our original $type, we make a
- // list of the ones for which a sharing backend has been registered.
- // FIXME: Ideally, we wouldn't need to nest getItemsSharedWith in this loop but just call it
- // with its $includeCollections parameter set to true. Unfortunately, this fails currently.
- $allMaybeSharedItems = [];
- foreach ($collectionTypes as $collectionType) {
- if (isset(self::$backends[$collectionType])) {
- $allMaybeSharedItems[$collectionType] = self::getItemsSharedWithUser(
- $collectionType,
- $user,
- self::FORMAT_NONE
- );
- }
- }
-
- $owners = [];
- if ($includeOwner) {
- $owners[] = $user;
- }
-
- // We take a look at all shared items of the given $type (or of the collections it is part of)
- // and find out their owners. Then, we gather the tags for the original $type from all owners,
- // and return them as elements of a list that look like "Tag (owner)".
- foreach ($allMaybeSharedItems as $collectionType => $maybeSharedItems) {
- foreach ($maybeSharedItems as $sharedItem) {
- if (isset($sharedItem['id'])) { //workaround for https://github.com/owncloud/core/issues/2814
- $owners[] = $sharedItem['uid_owner'];
- }
- }
- }
-
- return $owners;
- }
-
- /**
* Get shared items from the database
* @param string $itemType
* @param string $item Item source or target (optional)
diff --git a/lib/private/TagManager.php b/lib/private/TagManager.php
index ecc80b271fa..96786c58a1a 100644
--- a/lib/private/TagManager.php
+++ b/lib/private/TagManager.php
@@ -76,6 +76,8 @@ class TagManager implements \OCP\ITagManager {
* @param string $userId user for which to retrieve the tags, defaults to the currently
* logged in user
* @return \OCP\ITags
+ *
+ * since 20.0.0 $includeShared isn't used anymore
*/
public function load($type, $defaultTags = [], $includeShared = false, $userId = null) {
if (is_null($userId)) {
@@ -86,6 +88,6 @@ class TagManager implements \OCP\ITagManager {
}
$userId = $this->userSession->getUser()->getUId();
}
- return new Tags($this->mapper, $userId, $type, $defaultTags, $includeShared);
+ return new Tags($this->mapper, $userId, $type, $defaultTags);
}
}
diff --git a/lib/private/Tags.php b/lib/private/Tags.php
index 92263ca4fbe..3fc66c69d6c 100644
--- a/lib/private/Tags.php
+++ b/lib/private/Tags.php
@@ -119,18 +119,14 @@ class Tags implements ITags {
* @param string $user The user whose data the object will operate on.
* @param string $type The type of items for which tags will be loaded.
* @param array $defaultTags Tags that should be created at construction.
- * @param boolean $includeShared Whether to include tags for items shared with this user by others.
+ *
+ * since 20.0.0 $includeShared isn't used anymore
*/
- public function __construct(TagMapper $mapper, $user, $type, $defaultTags = [], $includeShared = false) {
+ public function __construct(TagMapper $mapper, $user, $type, $defaultTags = []) {
$this->mapper = $mapper;
$this->user = $user;
$this->type = $type;
- $this->includeShared = $includeShared;
$this->owners = [$this->user];
- if ($this->includeShared) {
- $this->owners = array_merge($this->owners, \OC\Share\Share::getSharedItemsOwners($this->user, $this->type, true));
- $this->backend = \OC\Share\Share::getBackend($this->type);
- }
$this->tags = $this->mapper->loadTags($this->owners, $this->type);
if (count($defaultTags) > 0 && count($this->tags) === 0) {
@@ -303,22 +299,7 @@ class Tags implements ITags {
if (!is_null($result)) {
while ($row = $result->fetchRow()) {
- $id = (int)$row['objid'];
-
- if ($this->includeShared) {
- // We have to check if we are really allowed to access the
- // items that are tagged with $tag. To that end, we ask the
- // corresponding sharing backend if the item identified by $id
- // is owned by any of $this->owners.
- foreach ($this->owners as $owner) {
- if ($this->backend->isValidSource($id, $owner)) {
- $ids[] = $id;
- break;
- }
- }
- } else {
- $ids[] = $id;
- }
+ $ids[] = (int)$row['objid'];
}
}
diff --git a/lib/public/ITagManager.php b/lib/public/ITagManager.php
index 46e1ba06297..9003beb8a2a 100644
--- a/lib/public/ITagManager.php
+++ b/lib/public/ITagManager.php
@@ -54,11 +54,11 @@ interface ITagManager {
* @see \OCP\ITags
* @param string $type The type identifier e.g. 'contact' or 'event'.
* @param array $defaultTags An array of default tags to be used if none are stored.
- * @param boolean $includeShared Whether to include tags for items shared with this user by others.
+ * @param boolean $includeShared Whether to include tags for items shared with this user by others. - always false since 20.0.0
* @param string $userId user for which to retrieve the tags, defaults to the currently
* logged in user
* @return \OCP\ITags
- * @since 6.0.0 - parameter $includeShared and $userId were added in 8.0.0
+ * @since 6.0.0 - parameter $includeShared and $userId were added in 8.0.0 - $includeShared is always false since 20.0.0
*/
public function load($type, $defaultTags = [], $includeShared = false, $userId = null);
}
diff --git a/tests/lib/TagsTest.php b/tests/lib/TagsTest.php
index 38d3d611bb8..69c2833433d 100644
--- a/tests/lib/TagsTest.php
+++ b/tests/lib/TagsTest.php
@@ -24,7 +24,6 @@ namespace Test;
use OCP\IUser;
use OCP\IUserSession;
-use OCP\Share\IShare;
/**
* Class TagsTest
@@ -287,39 +286,4 @@ class TagsTest extends \Test\TestCase {
$this->assertTrue($tagger->removeFromFavorites(1));
$this->assertEquals([], $tagger->getFavorites());
}
-
- public function testShareTags() {
- $testTag = 'TestTag';
- \OC\Share\Share::registerBackend('test', 'Test\Share\Backend');
-
- $tagger = $this->tagMgr->load('test');
- $tagger->tagAs(1, $testTag);
-
-
- $otherUserId = $this->getUniqueID('user2_');
- $otherUser = $this->createMock(IUser::class);
- $otherUser->method('getUID')
- ->willReturn($otherUserId);
-
- \OC::$server->getUserManager()->createUser($otherUserId, 'pass');
- \OC_User::setUserId($otherUserId);
- $otherUserSession = $this->createMock(IUserSession::class);
- $otherUserSession
- ->expects($this->any())
- ->method('getUser')
- ->willReturn($otherUser);
-
- $otherTagMgr = new \OC\TagManager($this->tagMapper, $otherUserSession);
- $otherTagger = $otherTagMgr->load('test');
- $this->assertFalse($otherTagger->hasTag($testTag));
-
- \OC_User::setUserId($this->user->getUID());
- // TODO new sharing
- \OC\Share\Share::shareItem('test', 1, IShare::TYPE_USER, $otherUserId, \OCP\Constants::PERMISSION_READ);
-
- \OC_User::setUserId($otherUserId);
- $otherTagger = $otherTagMgr->load('test', [], true); // Update tags, load shared ones.
- $this->assertTrue($otherTagger->hasTag($testTag));
- $this->assertContains(1, $otherTagger->getIdsForTag($testTag));
- }
}