diff options
author | Joas Schilling <coding@schilljs.com> | 2016-11-08 15:56:39 +0100 |
---|---|---|
committer | Joas Schilling <coding@schilljs.com> | 2016-11-09 08:52:07 +0100 |
commit | 706b5c3fb6e9d911c147c92fc768df86990d09ea (patch) | |
tree | 0b7f8d67289ee4d7e667a85c92a662097812f6d2 /lib/private | |
parent | 05cf1dab4ca7d69a837c2c9e890f078cef76c744 (diff) | |
download | nextcloud-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.php | 18 | ||||
-rw-r--r-- | lib/private/RichObjectStrings/Validator.php | 22 | ||||
-rw-r--r-- | lib/private/Server.php | 7 |
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()); |