Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/circles.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMaxence Lange <maxence@nextcloud.com>2017-06-10 02:45:33 +0300
committerMaxence Lange <maxence@nextcloud.com>2017-06-10 02:45:33 +0300
commitfa4c5d492e8db657257d254efde13a9fd9269a8d (patch)
tree84db59965cc84889589fed01ef314f10387c6d75 /lib
parent63cb8860929e0ff5077537a5d33017d9c08d2481 (diff)
update circles & settings
Signed-off-by: Maxence Lange <maxence@nextcloud.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/Api/v1/Circles.php19
-rw-r--r--lib/AppInfo/Application.php6
-rw-r--r--lib/Controller/CirclesController.php23
-rw-r--r--lib/Db/CirclesRequest.php10
-rw-r--r--lib/Db/CirclesRequestBuilder.php47
-rw-r--r--lib/Service/CirclesService.php37
6 files changed, 127 insertions, 15 deletions
diff --git a/lib/Api/v1/Circles.php b/lib/Api/v1/Circles.php
index 06c63e68..45aee400 100644
--- a/lib/Api/v1/Circles.php
+++ b/lib/Api/v1/Circles.php
@@ -160,6 +160,25 @@ class Circles {
}
+
+ /**
+ * Circles::settingsCircle();
+ *
+ * Save the settings. Settings is an array and current user need to be an admin
+ *
+ * @param $circleId
+ * @param array $settings
+ *
+ * @return Circle
+ */
+ public static function settingsCircle($circleId, array $settings) {
+ $c = self::getContainer();
+
+ return $c->query('CirclesService')
+ ->settingsCircle($circleId, $settings);
+ }
+
+
/**
* Circles::destroyCircle();
*
diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php
index 5e7114c1..9ce769c7 100644
--- a/lib/AppInfo/Application.php
+++ b/lib/AppInfo/Application.php
@@ -118,7 +118,8 @@ class Application extends App {
'CirclesService', function(IAppContainer $c) {
return new CirclesService(
$c->query('UserId'), $c->query('L10N'), $c->query('ConfigService'),
- $c->query('DatabaseService'), $c->query('EventsService'), $c->query('MiscService')
+ $c->query('CirclesRequest'), $c->query('DatabaseService'),
+ $c->query('EventsService'), $c->query('MiscService')
);
}
);
@@ -127,7 +128,8 @@ class Application extends App {
'MembersService', function(IAppContainer $c) {
return new MembersService(
$c->query('UserId'), $c->query('L10N'), $c->query('UserManager'),
- $c->query('ConfigService'), $c->query('DatabaseService'), $c->query('EventsService'), $c->query('MiscService')
+ $c->query('ConfigService'), $c->query('DatabaseService'),
+ $c->query('EventsService'), $c->query('MiscService')
);
}
);
diff --git a/lib/Controller/CirclesController.php b/lib/Controller/CirclesController.php
index 8dabbd6d..81efcdbc 100644
--- a/lib/Controller/CirclesController.php
+++ b/lib/Controller/CirclesController.php
@@ -117,6 +117,29 @@ class CirclesController extends BaseController {
* @internal param string $name
*
*/
+ public function settings($id, $settings) {
+ try {
+ $data = $this->circlesService->settingsCircle($id, $settings);
+
+ return $this->success(['circle_id' => $id, 'details' => $data]);
+ } catch (\Exception $e) {
+
+ return $this->fail(['circle_id' => $id, 'error' => $e->getMessage()]);
+ }
+
+ }
+
+
+ /**
+ * @NoAdminRequired
+ * @NoSubAdminRequired
+ *
+ * @param $id
+ *
+ * @return DataResponse
+ * @internal param string $name
+ *
+ */
public function join($id) {
try {
$data = $this->circlesService->joinCircle($id);
diff --git a/lib/Db/CirclesRequest.php b/lib/Db/CirclesRequest.php
index 5ceaba11..539ee134 100644
--- a/lib/Db/CirclesRequest.php
+++ b/lib/Db/CirclesRequest.php
@@ -120,6 +120,16 @@ class CirclesRequest extends CirclesRequestBuilder {
}
+ public function updateCircle(Circle $circle) {
+ $qb = $this->getCirclesUpdateSql($circle->getId());
+ $qb->set('name', $qb->createNamedParameter($circle->getName()))
+ ->set('description', $qb->createNamedParameter($circle->getDescription()))
+ ->set('settings', $qb->createNamedParameter($circle->getSettings(true)));
+
+ $qb->execute();
+ }
+
+
/**
* @param string $uniqueId
*
diff --git a/lib/Db/CirclesRequestBuilder.php b/lib/Db/CirclesRequestBuilder.php
index be625f6c..c8246ab8 100644
--- a/lib/Db/CirclesRequestBuilder.php
+++ b/lib/Db/CirclesRequestBuilder.php
@@ -73,9 +73,9 @@ class CirclesRequestBuilder {
*/
protected function limitToCircleId(IQueryBuilder & $qb, $circleId) {
$expr = $qb->expr();
- $pf = ($qb->getType() === QueryBuilder::SELECT) ? $this->default_select_alias.'.' : '';
+ $pf = ($qb->getType() === QueryBuilder::SELECT) ? $this->default_select_alias . '.' : '';
- $qb->andWhere($expr->eq($pf.'circle_id', $qb->createNamedParameter($circleId)));
+ $qb->andWhere($expr->eq($pf . 'circle_id', $qb->createNamedParameter($circleId)));
}
@@ -87,9 +87,9 @@ class CirclesRequestBuilder {
*/
protected function limitToId(IQueryBuilder & $qb, $id) {
$expr = $qb->expr();
- $pf = ($qb->getType() === QueryBuilder::SELECT) ? $this->default_select_alias.'.' : '';
+ $pf = ($qb->getType() === QueryBuilder::SELECT) ? $this->default_select_alias . '.' : '';
- $qb->andWhere($expr->eq($pf.'id', $qb->createNamedParameter($id)));
+ $qb->andWhere($expr->eq($pf . 'id', $qb->createNamedParameter($id)));
}
@@ -101,9 +101,9 @@ class CirclesRequestBuilder {
*/
protected function limitToUniqueId(IQueryBuilder & $qb, $uniqueId) {
$expr = $qb->expr();
- $pf = ($qb->getType() === QueryBuilder::SELECT) ? $this->default_select_alias.'.' : '';
+ $pf = ($qb->getType() === QueryBuilder::SELECT) ? $this->default_select_alias . '.' : '';
- $qb->andWhere($expr->eq($pf.'unique_id', $qb->createNamedParameter($uniqueId)));
+ $qb->andWhere($expr->eq($pf . 'unique_id', $qb->createNamedParameter($uniqueId)));
}
@@ -115,9 +115,9 @@ class CirclesRequestBuilder {
*/
protected function limitToToken(IQueryBuilder & $qb, $token) {
$expr = $qb->expr();
- $pf = ($qb->getType() === QueryBuilder::SELECT) ? $this->default_select_alias.'.' : '';
+ $pf = ($qb->getType() === QueryBuilder::SELECT) ? $this->default_select_alias . '.' : '';
- $qb->andWhere($expr->eq($pf.'token', $qb->createNamedParameter($token)));
+ $qb->andWhere($expr->eq($pf . 'token', $qb->createNamedParameter($token)));
}
@@ -149,13 +149,13 @@ class CirclesRequestBuilder {
}
$expr = $qb->expr();
- $pf = $this->default_select_alias.'.';
+ $pf = $this->default_select_alias . '.';
$qb->selectAlias('u.level', 'user_level');
$qb->leftJoin(
$this->default_select_alias, MembersMapper::TABLENAME, 'u',
$expr->andX(
- $expr->eq($pf.'id', 'u.circle_id'),
+ $expr->eq($pf . 'id', 'u.circle_id'),
$expr->eq('u.user_id', $qb->createNamedParameter($userId))
)
);
@@ -174,12 +174,12 @@ class CirclesRequestBuilder {
}
$expr = $qb->expr();
- $pf = $this->default_select_alias.'.';
+ $pf = $this->default_select_alias . '.';
$qb->leftJoin(
$this->default_select_alias, MembersMapper::TABLENAME, 'o',
$expr->andX(
- $expr->eq($pf.'id', 'o.circle_id'),
+ $expr->eq($pf . 'id', 'o.circle_id'),
$expr->eq('o.level', $qb->createNamedParameter(Member::LEVEL_OWNER))
)
);
@@ -256,6 +256,25 @@ class CirclesRequestBuilder {
/**
+ * Base of the Sql Update request for Shares
+ *
+ * @param int $circleId
+ *
+ * @return IQueryBuilder
+ */
+ protected function getCirclesUpdateSql($circleId) {
+ $qb = $this->dbConnection->getQueryBuilder();
+ $qb->update('circles_circles')
+ ->where(
+ $qb->expr()
+ ->eq('id', $qb->createNamedParameter($circleId))
+ );
+
+ return $qb;
+ }
+
+
+ /**
* @return IQueryBuilder
*/
protected function getMembersSelectSql() {
@@ -276,7 +295,9 @@ class CirclesRequestBuilder {
protected function getCirclesSelectSql() {
$qb = $this->dbConnection->getQueryBuilder();
- $qb->select('c.id', 'c.unique_id', 'c.name', 'c.description', 'c.settings', 'c.type', 'c.creation')
+ $qb->select(
+ 'c.id', 'c.unique_id', 'c.name', 'c.description', 'c.settings', 'c.type', 'c.creation'
+ )
->from('circles_circles', 'c');
$this->default_select_alias = 'c';
diff --git a/lib/Service/CirclesService.php b/lib/Service/CirclesService.php
index 916fd821..1dfe4b77 100644
--- a/lib/Service/CirclesService.php
+++ b/lib/Service/CirclesService.php
@@ -28,6 +28,7 @@ namespace OCA\Circles\Service;
use OCA\Circles\Db\CirclesMapper;
+use OCA\Circles\Db\CirclesRequest;
use OCA\Circles\Db\MembersMapper;
use OCA\Circles\Exceptions\CircleTypeDisabledException;
use OCA\Circles\Exceptions\MemberDoesNotExistException;
@@ -47,6 +48,9 @@ class CirclesService {
/** @var ConfigService */
private $configService;
+ /** @var CirclesRequest */
+ private $circlesRequest;
+
/** @var CirclesMapper */
private $dbCircles;
@@ -66,6 +70,7 @@ class CirclesService {
* @param $userId
* @param IL10N $l10n
* @param ConfigService $configService
+ * @param CirclesRequest $circlesRequest
* @param DatabaseService $databaseService
* @param EventsService $eventsService
* @param MiscService $miscService
@@ -74,6 +79,7 @@ class CirclesService {
$userId,
IL10N $l10n,
ConfigService $configService,
+ CirclesRequest $circlesRequest,
DatabaseService $databaseService,
EventsService $eventsService,
MiscService $miscService
@@ -81,6 +87,7 @@ class CirclesService {
$this->userId = $userId;
$this->l10n = $l10n;
$this->configService = $configService;
+ $this->circlesRequest = $circlesRequest;
$this->eventsService = $eventsService;
$this->miscService = $miscService;
@@ -194,6 +201,36 @@ class CirclesService {
return $circle;
}
+ /**
+ * save new settings if current user is admin.
+ *
+ * @param $circleId
+ * @param array $settings
+ *
+ * @return Circle
+ * @throws \Exception
+ */
+ public function settingsCircle($circleId, $settings) {
+
+ $this->miscService->log("____");
+ try {
+ $circle = $this->dbCircles->getDetailsFromCircle($circleId, $this->userId);
+ $circle->getUser()
+ ->hasToBeAdmin();
+
+ $ak = array_keys($settings);
+ foreach ($ak AS $k) {
+ $circle->setSetting($k, $settings[$k]);
+ }
+
+ $this->circlesRequest->updateCircle($circle);
+ } catch (\Exception $e) {
+ throw $e;
+ }
+
+ return $circle;
+ }
+
/**
* Join a circle.