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
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
parent63cb8860929e0ff5077537a5d33017d9c08d2481 (diff)
update circles & settings
Signed-off-by: Maxence Lange <maxence@nextcloud.com>
-rw-r--r--appinfo/routes.php4
-rw-r--r--js/circles.app.actions.js10
-rw-r--r--js/circles.app.elements.js4
-rw-r--r--js/circles.app.settings.js7
-rw-r--r--js/circles.v1.js14
-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
11 files changed, 164 insertions, 17 deletions
diff --git a/appinfo/routes.php b/appinfo/routes.php
index 3d6a5ae0..f07d97bc 100644
--- a/appinfo/routes.php
+++ b/appinfo/routes.php
@@ -38,6 +38,10 @@ return [
'requirements' => ['id' => '\d+'],
],
[
+ 'name' => 'Circles#settings', 'url' => '/v1/circles/{id}/settings', 'verb' => 'POST',
+ 'requirements' => ['id' => '\d+'],
+ ],
+ [
'name' => 'Circles#destroy', 'url' => '/v1/circles/{id}', 'verb' => 'DELETE',
'requirements' => ['id' => '\d+'],
],
diff --git a/js/circles.app.actions.js b/js/circles.app.actions.js
index 0e3b474f..8546ac87 100644
--- a/js/circles.app.actions.js
+++ b/js/circles.app.actions.js
@@ -76,6 +76,16 @@ var actions = {
},
+ saveSettings: function () {
+ data = {
+ allow_links: (elements.settingsLink.is(":checked")),
+ allow_links_auto: (elements.settingsLinkAuto.is(":checked")),
+ allow_links_files: (elements.settingsLinkFiles.is(":checked"))
+ };
+
+ api.settingsCircle(curr.circle, data, settings.saveSettingsResult);
+ },
+
/**
*
* @param search
diff --git a/js/circles.app.elements.js b/js/circles.app.elements.js
index f029a38d..f8cfb89d 100644
--- a/js/circles.app.elements.js
+++ b/js/circles.app.elements.js
@@ -253,6 +253,10 @@ var elements = {
});
+ elements.settingsSave.on('click', function () {
+ actions.saveSettings();
+ }
+ );
},
diff --git a/js/circles.app.settings.js b/js/circles.app.settings.js
index 0115d310..af7e8392 100644
--- a/js/circles.app.settings.js
+++ b/js/circles.app.settings.js
@@ -65,9 +65,12 @@ var settings = {
// elements.settingsEntryLinkAuto.fadeTo(0, 1).fadeTo(2000, 0.3);
// elements.settingsEntryLinkFiles.fadeTo(0, 1).fadeTo(2000, 0.3);
- }
+ },
-}
+ saveSettingsResult: function (result) {
+ console.log(result);
+ }
+};
diff --git a/js/circles.v1.js b/js/circles.v1.js
index 368137a2..511f63cf 100644
--- a/js/circles.v1.js
+++ b/js/circles.v1.js
@@ -163,6 +163,20 @@
};
+ this.settingsCircle = function (circleId, settings, callback) {
+ var result = {status: -1};
+ $.ajax({
+ method: 'POST',
+ url: OC.generateUrl('/apps/circles/v1/circles/' + circleId + '/settings'),
+ data: {settings: settings}
+ }).done(function (res) {
+ self.onCallback(callback, res);
+ }).fail(function () {
+ self.onCallback(callback, result);
+ });
+ };
+
+
this.leaveCircle = function (circleId, callback) {
var result = {status: -1};
$.ajax({
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.