diff options
author | Maxence Lange <maxence@artificial-owl.com> | 2017-10-09 20:40:16 +0300 |
---|---|---|
committer | Maxence Lange <maxence@artificial-owl.com> | 2017-10-09 20:40:16 +0300 |
commit | 77e5e08f367f3ce7eeaa35a868d3f4f7e2310e34 (patch) | |
tree | 4a3baf7768659f8234aa2110e9b53b4da0f00861 | |
parent | 5e0437276c84ad598d938e047e7a29f6bb9b8578 (diff) |
ShotgunCircles is a better solution
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
-rw-r--r-- | lib/Api/v1/Circles.php | 21 | ||||
-rw-r--r-- | lib/Api/v1/ShotgunCircles.php | 79 | ||||
-rw-r--r-- | lib/Circles/FileSharingBroadcaster.php | 3 | ||||
-rw-r--r-- | lib/Controller/NavigationController.php | 5 | ||||
-rw-r--r-- | lib/Db/CircleProviderRequestBuilder.php | 2 | ||||
-rw-r--r-- | lib/Db/CoreRequestBuilder.php | 4 | ||||
-rw-r--r-- | lib/Db/SharingFrameRequest.php | 14 | ||||
-rw-r--r-- | lib/Service/SharingFrameService.php | 27 |
8 files changed, 97 insertions, 58 deletions
diff --git a/lib/Api/v1/Circles.php b/lib/Api/v1/Circles.php index 3475de2d..dbac7770 100644 --- a/lib/Api/v1/Circles.php +++ b/lib/Api/v1/Circles.php @@ -402,27 +402,6 @@ class Circles { /** - * Circles::forceGetSharesFromCircle(); - * - * This function will returns all item (array) shared to a specific circle identified by its Id, - * source and type. - * - * @param string $circleUniqueId - * @param string $userId - * - * @return SharingFrame[] - */ - public static function forceGetSharesFromCircle($circleUniqueId, $userId = '') { - $c = self::getContainer(); - - return $c->query(SharingFrameService::class) - ->forceGetFrameFromCircle($circleUniqueId, $userId); - } - - - - - /** * Circles::linkCircle(); * * Initiate a link procedure. Current user must be at least Admin of the circle. diff --git a/lib/Api/v1/ShotgunCircles.php b/lib/Api/v1/ShotgunCircles.php new file mode 100644 index 00000000..7ea575bc --- /dev/null +++ b/lib/Api/v1/ShotgunCircles.php @@ -0,0 +1,79 @@ +<?php +/** + * Circles - Bring cloud-users closer together. + * + * This file is licensed under the Affero General Public License version 3 or + * later. See the COPYING file. + * + * @author Maxence Lange <maxence@artificial-owl.com> + * @copyright 2017 + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Circles\Api\v1; + + +use OCA\Circles\AppInfo\Application; +use OCA\Circles\Exceptions\ApiVersionIncompatibleException; +use OCA\Circles\Model\Circle; +use OCA\Circles\Model\FederatedLink; +use OCA\Circles\Model\Member; +use OCA\Circles\Model\SharingFrame; +use OCA\Circles\Service\CirclesService; +use OCA\Circles\Service\FederatedLinkService; +use OCA\Circles\Service\MembersService; +use OCA\Circles\Service\MiscService; +use OCA\Circles\Service\SharingFrameService; +use OCP\Util; + +/** + * Better use the other one. + * + * This is a shotgun class; don't blow your foot. + */ +class ShotgunCircles { + + protected static function getContainer() { + $app = new Application(); + + return $app->getContainer(); + } + + + /** + * ShotgunCircles::getSharesFromCircle(); + * + * This function will returns all item (array) shared to a specific circle identified by its Id, + * source and type. + * + * Warning - please use Circles::getSharesFromCircle for any interaction with the current user + * session. + * + * @param string $circleUniqueId + * @param string $userId + * + * @return SharingFrame[] + */ + public static function getSharesFromCircle($circleUniqueId, $userId = '') { + $c = self::getContainer(); + + return $c->query(SharingFrameService::class) + ->forceGetFrameFromCircle($circleUniqueId, $userId); + } + + +}
\ No newline at end of file diff --git a/lib/Circles/FileSharingBroadcaster.php b/lib/Circles/FileSharingBroadcaster.php index d60d4ace..e945052d 100644 --- a/lib/Circles/FileSharingBroadcaster.php +++ b/lib/Circles/FileSharingBroadcaster.php @@ -204,9 +204,6 @@ class FileSharingBroadcaster implements IBroadcaster { * @param string $author * @param $circleName * @param string $email - * - * @internal param string $filename - * @internal param string $circle */ protected function sendMail($fileName, $link, $author, $circleName, $email) { $message = $this->mailer->createMessage(); diff --git a/lib/Controller/NavigationController.php b/lib/Controller/NavigationController.php index 95fa9f0b..b1ca633a 100644 --- a/lib/Controller/NavigationController.php +++ b/lib/Controller/NavigationController.php @@ -26,8 +26,10 @@ namespace OCA\Circles\Controller; +use OCA\Circles\Api\v1\Circles; +use OCA\Circles\Api\v1\ShotgunCircles; use OCA\Circles\AppInfo\Application; -use \OCA\Circles\Model\Circle; +use OCA\Circles\Model\Circle; use OCA\Circles\Service\ConfigService; use OCA\Testing\Config; use OCP\AppFramework\Http; @@ -45,6 +47,7 @@ class NavigationController extends BaseController { * @return TemplateResponse */ public function navigate() { + $data = [ 'allowed_circles' => array( Circle::CIRCLES_PERSONAL => $this->configService->isCircleAllowed( diff --git a/lib/Db/CircleProviderRequestBuilder.php b/lib/Db/CircleProviderRequestBuilder.php index 7b250bc1..29e2c968 100644 --- a/lib/Db/CircleProviderRequestBuilder.php +++ b/lib/Db/CircleProviderRequestBuilder.php @@ -147,8 +147,6 @@ class CircleProviderRequestBuilder { * * @param IQueryBuilder $qb * @param $files - * - * @internal param $fileId */ protected function limitToFiles(IQueryBuilder &$qb, $files) { diff --git a/lib/Db/CoreRequestBuilder.php b/lib/Db/CoreRequestBuilder.php index 2e569590..98817240 100644 --- a/lib/Db/CoreRequestBuilder.php +++ b/lib/Db/CoreRequestBuilder.php @@ -103,8 +103,6 @@ class CoreRequestBuilder { * * @param IQueryBuilder $qb * @param $userId - * - * @internal param int $circleId */ protected function limitToUserId(IQueryBuilder &$qb, $userId) { $this->limitToDBField($qb, 'user_id', $userId); @@ -116,8 +114,6 @@ class CoreRequestBuilder { * * @param IQueryBuilder $qb * @param int $type - * - * @internal param int $circleId */ protected function limitToUserType(IQueryBuilder &$qb, $type) { $this->limitToDBField($qb, 'user_type', $type); diff --git a/lib/Db/SharingFrameRequest.php b/lib/Db/SharingFrameRequest.php index 8face898..45b4b97d 100644 --- a/lib/Db/SharingFrameRequest.php +++ b/lib/Db/SharingFrameRequest.php @@ -68,24 +68,14 @@ class SharingFrameRequest extends SharingFrameRequestBuilder { /** - * @param string $circleUniqueId - * - * @param $viewerId + * @param string $circleUniqueId* * * @return SharingFrame[] */ - public function getSharingFramesFromCircle($circleUniqueId, $viewerId) { + public function getSharingFramesFromCircle($circleUniqueId) { $qb = $this->getSharesSelectSql(); $this->limitToCircleId($qb, $circleUniqueId); - if ($viewerId !== '') { - $this->circlesRequest->leftJoinCircle($qb); - $this->circlesRequest->leftJoinUserIdAsViewer($qb, $viewerId); - $this->circlesRequest->leftJoinNCGroupAndUser($qb, $viewerId, '`c`.`unique_id`'); - - $this->limitToLevel($qb, Member::LEVEL_MEMBER, ['u', 'g']); - } - $frames = []; $cursor = $qb->execute(); while ($data = $cursor->fetch()) { diff --git a/lib/Service/SharingFrameService.php b/lib/Service/SharingFrameService.php index 6022a70f..a3558015 100644 --- a/lib/Service/SharingFrameService.php +++ b/lib/Service/SharingFrameService.php @@ -174,19 +174,11 @@ class SharingFrameService { * return all SharingFrame from a circle regarding a userId. * * @param string $circleUniqueId - * @param string $userId * * @return SharingFrame[] */ - public function getFrameFromCircle($circleUniqueId, $userId = '') { - - if ($userId === '') { - $userId = $this->userId; - } - - $frames = $this->sharingFrameRequest->getSharingFramesFromCircle($circleUniqueId, $userId); - - return $frames; + public function getFrameFromCircle($circleUniqueId) { + return $this->forceGetFrameFromCircle($circleUniqueId, $this->userId); } @@ -194,17 +186,22 @@ class SharingFrameService { * return all SharingFrame from a circle. * * Warning, result won't be filtered regarding current user session. - * Please use getFrameFromCircleUniqueId(); + * Please use getFrameFromCircle(); * * @param string $circleUniqueId + * @param $viewerId * * @return SharingFrame[] - * @throws SharingFrameDoesNotExistException */ - public function forceGetFrameFromCircle($circleUniqueId) { - $frames = $this->sharingFrameRequest->getSharingFramesFromCircle($circleUniqueId, ''); + public function forceGetFrameFromCircle($circleUniqueId, $viewerId) { + + if ($viewerId !== '') { + $circle = $this->circlesRequest->getCircle($circleUniqueId, $viewerId); + $circle->getViewer() + ->hasToBeMember(); + } - return $frames; + return $this->sharingFrameRequest->getSharingFramesFromCircle($circleUniqueId); } |