summaryrefslogtreecommitdiffstats
path: root/lib/public
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2016-10-27 15:30:58 +0200
committerGitHub <noreply@github.com>2016-10-27 15:30:58 +0200
commitd4969abc9d306b5b5539f4e7722fc5ee1c722082 (patch)
treeb495bf61e890e8aed244e9cff50fde4e9c38ca86 /lib/public
parentba2b274fccdeb06ea9ddba0590644653e073d934 (diff)
parentced3aeacb1aadfe592894ea666f0aa8777932597 (diff)
downloadnextcloud-server-d4969abc9d306b5b5539f4e7722fc5ee1c722082.tar.gz
nextcloud-server-d4969abc9d306b5b5539f4e7722fc5ee1c722082.zip
Merge pull request #1800 from nextcloud/nextcloud-rich-object-strings
Nextcloud rich object strings
Diffstat (limited to 'lib/public')
-rw-r--r--lib/public/Notification/INotification.php21
-rw-r--r--lib/public/RichObjectStrings/IValidator.php39
-rw-r--r--lib/public/RichObjectStrings/InvalidObjectExeption.php31
-rw-r--r--lib/public/RichObjectStrings/definitions.json228
4 files changed, 319 insertions, 0 deletions
diff --git a/lib/public/Notification/INotification.php b/lib/public/Notification/INotification.php
index fd16876a666..3a8bde0a375 100644
--- a/lib/public/Notification/INotification.php
+++ b/lib/public/Notification/INotification.php
@@ -128,6 +128,27 @@ interface INotification {
public function getParsedSubject();
/**
+ * @param string $subject
+ * @param array $parameters
+ * @return $this
+ * @throws \InvalidArgumentException if the subject or parameters are invalid
+ * @since 9.2.0
+ */
+ public function setRichSubject($subject, array $parameters = []);
+
+ /**
+ * @return string
+ * @since 9.2.0
+ */
+ public function getRichSubject();
+
+ /**
+ * @return array[]
+ * @since 9.2.0
+ */
+ public function getRichSubjectParameters();
+
+ /**
* @param string $message
* @param array $parameters
* @return $this
diff --git a/lib/public/RichObjectStrings/IValidator.php b/lib/public/RichObjectStrings/IValidator.php
new file mode 100644
index 00000000000..bba098bdfc1
--- /dev/null
+++ b/lib/public/RichObjectStrings/IValidator.php
@@ -0,0 +1,39 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>
+ *
+ * @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 OCP\RichObjectStrings;
+
+/**
+ * Class Validator
+ *
+ * @package OCP\RichObjectStrings
+ * @since 9.2.0
+ */
+interface IValidator {
+
+ /**
+ * @param string $subject
+ * @param array[] $parameters
+ * @throws InvalidObjectExeption
+ * @since 9.2.0
+ */
+ public function validate($subject, array $parameters);
+}
diff --git a/lib/public/RichObjectStrings/InvalidObjectExeption.php b/lib/public/RichObjectStrings/InvalidObjectExeption.php
new file mode 100644
index 00000000000..8bf597ebe90
--- /dev/null
+++ b/lib/public/RichObjectStrings/InvalidObjectExeption.php
@@ -0,0 +1,31 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>
+ *
+ * @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 OCP\RichObjectStrings;
+
+/**
+ * Class InvalidObjectExeption
+ *
+ * @package OCP\RichObjectStrings
+ * @since 9.2.0
+ */
+class InvalidObjectExeption extends \InvalidArgumentException {
+}
diff --git a/lib/public/RichObjectStrings/definitions.json b/lib/public/RichObjectStrings/definitions.json
new file mode 100644
index 00000000000..222f6615cf4
--- /dev/null
+++ b/lib/public/RichObjectStrings/definitions.json
@@ -0,0 +1,228 @@
+{
+ "addressbook": {
+ "author": "Nextcloud",
+ "app": "dav",
+ "since": "9.2.0",
+ "parameters": {
+ "id": {
+ "since": "9.2.0",
+ "required": true,
+ "description": "The id used to identify the addressbook on the instance",
+ "example": "42"
+ },
+ "name": {
+ "since": "9.2.0",
+ "required": true,
+ "description": "The display name of the addressbook which should be used in the visual representation",
+ "example": "Contacts"
+ }
+ }
+ },
+ "addressbook-contact": {
+ "author": "Nextcloud",
+ "app": "dav",
+ "since": "9.2.0",
+ "parameters": {
+ "id": {
+ "since": "9.2.0",
+ "required": true,
+ "description": "The id used to identify the contact on the instance",
+ "example": "42"
+ },
+ "name": {
+ "since": "9.2.0",
+ "required": true,
+ "description": "The display name of the contact which should be used in the visual representation",
+ "example": "John Doe"
+ }
+ }
+ },
+ "announcement": {
+ "author": "Joas Schilling",
+ "app": "announcementcenter",
+ "since": "9.2.0",
+ "parameters": {
+ "id": {
+ "since": "9.2.0",
+ "required": true,
+ "description": "The id used to identify the announcement on the instance",
+ "example": "42"
+ },
+ "name": {
+ "since": "9.2.0",
+ "required": true,
+ "description": "The announcement subject which should be used in the visual representation",
+ "example": "file.txt"
+ },
+ "link": {
+ "since": "9.2.0",
+ "required": false,
+ "description": "The full URL to the file",
+ "example": "http://localhost/index.php/apps/announcements/#23"
+ }
+ }
+ },
+ "calendar": {
+ "author": "Nextcloud",
+ "app": "dav",
+ "since": "9.2.0",
+ "parameters": {
+ "id": {
+ "since": "9.2.0",
+ "required": true,
+ "description": "The id used to identify the calendar on the instance",
+ "example": "42"
+ },
+ "name": {
+ "since": "9.2.0",
+ "required": true,
+ "description": "The display name of the calendar which should be used in the visual representation",
+ "example": "Personal"
+ }
+ }
+ },
+ "calendar-event": {
+ "author": "Nextcloud",
+ "app": "dav",
+ "since": "9.2.0",
+ "parameters": {
+ "id": {
+ "since": "9.2.0",
+ "required": true,
+ "description": "The id used to identify the event on the instance",
+ "example": "42"
+ },
+ "name": {
+ "since": "9.2.0",
+ "required": true,
+ "description": "The display name of the event which should be used in the visual representation",
+ "example": "Workout"
+ }
+ }
+ },
+ "file": {
+ "author": "Nextcloud",
+ "app": "dav",
+ "since": "9.2.0",
+ "parameters": {
+ "id": {
+ "since": "9.2.0",
+ "required": true,
+ "description": "The id used to identify the file on the instance",
+ "example": "42"
+ },
+ "name": {
+ "since": "9.2.0",
+ "required": true,
+ "description": "The file name which should be used in the visual representation",
+ "example": "file.txt"
+ },
+ "path": {
+ "since": "9.2.0",
+ "required": true,
+ "description": "The full path of the file for the user",
+ "example": "path/to/file.txt"
+ },
+ "link": {
+ "since": "9.2.0",
+ "required": false,
+ "description": "The full URL to the file",
+ "example": "http://localhost/index.php/f/42"
+ }
+ }
+ },
+ "pending-federated-share": {
+ "author": "Nextcloud",
+ "app": "dav",
+ "since": "9.2.0",
+ "parameters": {
+ "id": {
+ "since": "9.2.0",
+ "required": true,
+ "description": "The id used to identify the federated share on the instance",
+ "example": "42"
+ },
+ "name": {
+ "since": "9.2.0",
+ "required": true,
+ "description": "The name of the shared item which should be used in the visual representation",
+ "example": "file.txt"
+ }
+ }
+ },
+ "systemtag": {
+ "author": "Nextcloud",
+ "app": "core",
+ "since": "9.2.0",
+ "parameters": {
+ "id": {
+ "since": "9.2.0",
+ "required": true,
+ "description": "The id used to identify the systemtag on the instance",
+ "example": "23"
+ },
+ "name": {
+ "since": "9.2.0",
+ "required": true,
+ "description": "The display name of the systemtag which should be used in the visual representation",
+ "example": "Project 1"
+ },
+ "visibility": {
+ "since": "9.2.0",
+ "required": true,
+ "description": "If the user can see the systemtag",
+ "example": "1"
+ },
+ "assignable": {
+ "since": "9.2.0",
+ "required": true,
+ "description": "If the user can assign the systemtag",
+ "example": "0"
+ }
+ }
+ },
+ "user": {
+ "author": "Nextcloud",
+ "app": "core",
+ "since": "9.2.0",
+ "parameters": {
+ "id": {
+ "since": "9.2.0",
+ "required": true,
+ "description": "The id used to identify the user on the instance",
+ "example": "johndoe"
+ },
+ "name": {
+ "since": "9.2.0",
+ "required": true,
+ "description": "The display name of the user which should be used in the visual representation",
+ "example": "John Doe"
+ },
+ "server": {
+ "since": "9.2.0",
+ "required": false,
+ "description": "The URL of the instance the user lives on",
+ "example": "localhost"
+ }
+ }
+ },
+ "user-group": {
+ "author": "Nextcloud",
+ "app": "core",
+ "since": "9.2.0",
+ "parameters": {
+ "id": {
+ "since": "9.2.0",
+ "required": true,
+ "description": "The id used to identify the group on the instance",
+ "example": "supportteam"
+ },
+ "name": {
+ "since": "9.2.0",
+ "required": true,
+ "description": "The display name of the group which should be used in the visual representation",
+ "example": "Support Team"
+ }
+ }
+ }
+}