summaryrefslogtreecommitdiffstats
path: root/lib/private
diff options
context:
space:
mode:
authorJoas Schilling <coding@schilljs.com>2016-11-08 15:56:39 +0100
committerJoas Schilling <coding@schilljs.com>2016-11-09 08:52:07 +0100
commit706b5c3fb6e9d911c147c92fc768df86990d09ea (patch)
tree0b7f8d67289ee4d7e667a85c92a662097812f6d2 /lib/private
parent05cf1dab4ca7d69a837c2c9e890f078cef76c744 (diff)
downloadnextcloud-server-706b5c3fb6e9d911c147c92fc768df86990d09ea.tar.gz
nextcloud-server-706b5c3fb6e9d911c147c92fc768df86990d09ea.zip
Use a php class for the definitions to avoid loading problems
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'lib/private')
-rw-r--r--lib/private/Notification/Manager.php18
-rw-r--r--lib/private/RichObjectStrings/Validator.php22
-rw-r--r--lib/private/Server.php7
3 files changed, 31 insertions, 16 deletions
diff --git a/lib/private/Notification/Manager.php b/lib/private/Notification/Manager.php
index 4b57db4bac9..c5cad7f2db3 100644
--- a/lib/private/Notification/Manager.php
+++ b/lib/private/Notification/Manager.php
@@ -24,13 +24,16 @@
namespace OC\Notification;
-use OC\RichObjectStrings\Validator;
use OCP\Notification\IApp;
use OCP\Notification\IManager;
use OCP\Notification\INotification;
use OCP\Notification\INotifier;
+use OCP\RichObjectStrings\IValidator;
class Manager implements IManager {
+ /** @var IValidator */
+ protected $validator;
+
/** @var IApp[] */
protected $apps;
@@ -49,7 +52,13 @@ class Manager implements IManager {
/** @var \Closure[] */
protected $notifiersInfoClosures;
- public function __construct() {
+ /**
+ * Manager constructor.
+ *
+ * @param IValidator $validator
+ */
+ public function __construct(IValidator $validator) {
+ $this->validator = $validator;
$this->apps = [];
$this->notifiers = [];
$this->notifiersInfo = [];
@@ -150,9 +159,7 @@ class Manager implements IManager {
* @since 8.2.0
*/
public function createNotification() {
- return new Notification(
- new Validator()
- );
+ return new Notification($this->validator);
}
/**
@@ -214,7 +221,6 @@ class Manager implements IManager {
/**
* @param INotification $notification
- * @return null
*/
public function markProcessed(INotification $notification) {
$apps = $this->getApps();
diff --git a/lib/private/RichObjectStrings/Validator.php b/lib/private/RichObjectStrings/Validator.php
index 2729b4a3f1b..de7afa7a7e3 100644
--- a/lib/private/RichObjectStrings/Validator.php
+++ b/lib/private/RichObjectStrings/Validator.php
@@ -22,6 +22,7 @@
namespace OC\RichObjectStrings;
+use OCP\RichObjectStrings\Definitions;
use OCP\RichObjectStrings\InvalidObjectExeption;
use OCP\RichObjectStrings\IValidator;
@@ -31,9 +32,9 @@ use OCP\RichObjectStrings\IValidator;
* @package OCP\RichObjectStrings
* @since 9.2.0
*/
-class Validator implements IValidator {
+class Validator implements IValidator {
- /** @var array[] */
+ /** @var Definitions */
protected $definitions;
/** @var array[] */
@@ -41,9 +42,11 @@ class Validator implements IValidator {
/**
* Constructor
+ *
+ * @param Definitions $definitions
*/
- public function __construct() {
- $this->definitions = json_decode(file_get_contents(__DIR__ . '/../../public/RichObjectStrings/definitions.json'), true);
+ public function __construct(Definitions $definitions) {
+ $this->definitions = $definitions;
}
/**
@@ -76,11 +79,13 @@ class Validator implements IValidator {
* @throws InvalidObjectExeption
*/
protected function validateParameter(array $parameter) {
- if (!isset($parameter['type']) || !isset($this->definitions[$parameter['type']])) {
+ if (!isset($parameter['type'])) {
throw new InvalidObjectExeption('Object type is undefined');
}
- $requiredParameters = $this->getRequiredParameters($parameter['type']);
+ $definition = $this->definitions->getDefinition($parameter['type']);
+ $requiredParameters = $this->getRequiredParameters($parameter['type'], $definition);
+
$missingKeys = array_diff($requiredParameters, array_keys($parameter));
if (!empty($missingKeys)) {
throw new InvalidObjectExeption('Object is invalid');
@@ -89,15 +94,16 @@ class Validator implements IValidator {
/**
* @param string $type
+ * @param array $definition
* @return string[]
*/
- protected function getRequiredParameters($type) {
+ protected function getRequiredParameters($type, $definition) {
if (isset($this->requiredParameters[$type])) {
return $this->requiredParameters[$type];
}
$this->requiredParameters[$type] = [];
- foreach ($this->definitions[$type]['parameters'] as $parameter => $data) {
+ foreach ($definition['parameters'] as $parameter => $data) {
if ($data['required']) {
$this->requiredParameters[$type][] = $parameter;
}
diff --git a/lib/private/Server.php b/lib/private/Server.php
index 8f4e7d9ca2d..79efeb18d17 100644
--- a/lib/private/Server.php
+++ b/lib/private/Server.php
@@ -72,6 +72,7 @@ use OC\Lock\NoopLockingProvider;
use OC\Mail\Mailer;
use OC\Memcache\ArrayCache;
use OC\Notification\Manager;
+use OC\RichObjectStrings\Validator;
use OC\Security\Bruteforce\Throttler;
use OC\Security\CertificateManager;
use OC\Security\CSP\ContentSecurityPolicyManager;
@@ -659,8 +660,10 @@ class Server extends ServerContainer implements IServerContainer {
$c->getDatabaseConnection()
);
});
- $this->registerService('NotificationManager', function () {
- return new Manager();
+ $this->registerService('NotificationManager', function (Server $c) {
+ return new Manager(
+ $c->query(Validator::class)
+ );
});
$this->registerService('CapabilitiesManager', function (Server $c) {
$manager = new \OC\CapabilitiesManager($c->getLogger());