Passed
Push — master ( bbec0f...170995 )
by Roeland
13:02
created
lib/private/Log/ErrorHandler.php 2 patches
Indentation   +59 added lines, -59 removed lines patch added patch discarded remove patch
@@ -28,74 +28,74 @@
 block discarded – undo
28 28
 use OCP\ILogger;
29 29
 
30 30
 class ErrorHandler {
31
-	/** @var ILogger */
32
-	private static $logger;
31
+    /** @var ILogger */
32
+    private static $logger;
33 33
 
34
-	/**
35
-	 * remove password in URLs
36
-	 * @param string $msg
37
-	 * @return string
38
-	 */
39
-	protected static function removePassword($msg) {
40
-		return preg_replace('/\/\/(.*):(.*)@/', '//xxx:xxx@', $msg);
41
-	}
34
+    /**
35
+     * remove password in URLs
36
+     * @param string $msg
37
+     * @return string
38
+     */
39
+    protected static function removePassword($msg) {
40
+        return preg_replace('/\/\/(.*):(.*)@/', '//xxx:xxx@', $msg);
41
+    }
42 42
 
43
-	public static function register($debug=false) {
44
-		$handler = new ErrorHandler();
43
+    public static function register($debug=false) {
44
+        $handler = new ErrorHandler();
45 45
 
46
-		if ($debug) {
47
-			set_error_handler(array($handler, 'onAll'), E_ALL);
48
-			if (\OC::$CLI) {
49
-				set_exception_handler(array('OC_Template', 'printExceptionErrorPage'));
50
-			}
51
-		} else {
52
-			set_error_handler(array($handler, 'onError'));
53
-		}
54
-		register_shutdown_function(array($handler, 'onShutdown'));
55
-		set_exception_handler(array($handler, 'onException'));
56
-	}
46
+        if ($debug) {
47
+            set_error_handler(array($handler, 'onAll'), E_ALL);
48
+            if (\OC::$CLI) {
49
+                set_exception_handler(array('OC_Template', 'printExceptionErrorPage'));
50
+            }
51
+        } else {
52
+            set_error_handler(array($handler, 'onError'));
53
+        }
54
+        register_shutdown_function(array($handler, 'onShutdown'));
55
+        set_exception_handler(array($handler, 'onException'));
56
+    }
57 57
 
58
-	public static function setLogger(ILogger $logger) {
59
-		self::$logger = $logger;
60
-	}
58
+    public static function setLogger(ILogger $logger) {
59
+        self::$logger = $logger;
60
+    }
61 61
 
62
-	//Fatal errors handler
63
-	public static function onShutdown() {
64
-		$error = error_get_last();
65
-		if($error && self::$logger) {
66
-			//ob_end_clean();
67
-			$msg = $error['message'] . ' at ' . $error['file'] . '#' . $error['line'];
68
-			self::$logger->critical(self::removePassword($msg), array('app' => 'PHP'));
69
-		}
70
-	}
62
+    //Fatal errors handler
63
+    public static function onShutdown() {
64
+        $error = error_get_last();
65
+        if($error && self::$logger) {
66
+            //ob_end_clean();
67
+            $msg = $error['message'] . ' at ' . $error['file'] . '#' . $error['line'];
68
+            self::$logger->critical(self::removePassword($msg), array('app' => 'PHP'));
69
+        }
70
+    }
71 71
 
72
-	/**
73
-	 * 	Uncaught exception handler
74
-	 *
75
-	 * @param \Exception $exception
76
-	 */
77
-	public static function onException($exception) {
78
-		$class = get_class($exception);
79
-		$msg = $exception->getMessage();
80
-		$msg = "$class: $msg at " . $exception->getFile() . '#' . $exception->getLine();
81
-		self::$logger->critical(self::removePassword($msg), ['app' => 'PHP']);
82
-	}
72
+    /**
73
+     * 	Uncaught exception handler
74
+     *
75
+     * @param \Exception $exception
76
+     */
77
+    public static function onException($exception) {
78
+        $class = get_class($exception);
79
+        $msg = $exception->getMessage();
80
+        $msg = "$class: $msg at " . $exception->getFile() . '#' . $exception->getLine();
81
+        self::$logger->critical(self::removePassword($msg), ['app' => 'PHP']);
82
+    }
83 83
 
84
-	//Recoverable errors handler
85
-	public static function onError($number, $message, $file, $line) {
86
-		if (error_reporting() === 0) {
87
-			return;
88
-		}
89
-		$msg = $message . ' at ' . $file . '#' . $line;
90
-		self::$logger->error(self::removePassword($msg), array('app' => 'PHP'));
84
+    //Recoverable errors handler
85
+    public static function onError($number, $message, $file, $line) {
86
+        if (error_reporting() === 0) {
87
+            return;
88
+        }
89
+        $msg = $message . ' at ' . $file . '#' . $line;
90
+        self::$logger->error(self::removePassword($msg), array('app' => 'PHP'));
91 91
 
92
-	}
92
+    }
93 93
 
94
-	//Recoverable handler which catch all errors, warnings and notices
95
-	public static function onAll($number, $message, $file, $line) {
96
-		$msg = $message . ' at ' . $file . '#' . $line;
97
-		self::$logger->debug(self::removePassword($msg), array('app' => 'PHP'));
94
+    //Recoverable handler which catch all errors, warnings and notices
95
+    public static function onAll($number, $message, $file, $line) {
96
+        $msg = $message . ' at ' . $file . '#' . $line;
97
+        self::$logger->debug(self::removePassword($msg), array('app' => 'PHP'));
98 98
 
99
-	}
99
+    }
100 100
 
101 101
 }
Please login to merge, or discard this patch.
Spacing   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -40,7 +40,7 @@  discard block
 block discarded – undo
40 40
 		return preg_replace('/\/\/(.*):(.*)@/', '//xxx:xxx@', $msg);
41 41
 	}
42 42
 
43
-	public static function register($debug=false) {
43
+	public static function register($debug = false) {
44 44
 		$handler = new ErrorHandler();
45 45
 
46 46
 		if ($debug) {
@@ -62,9 +62,9 @@  discard block
 block discarded – undo
62 62
 	//Fatal errors handler
63 63
 	public static function onShutdown() {
64 64
 		$error = error_get_last();
65
-		if($error && self::$logger) {
65
+		if ($error && self::$logger) {
66 66
 			//ob_end_clean();
67
-			$msg = $error['message'] . ' at ' . $error['file'] . '#' . $error['line'];
67
+			$msg = $error['message'].' at '.$error['file'].'#'.$error['line'];
68 68
 			self::$logger->critical(self::removePassword($msg), array('app' => 'PHP'));
69 69
 		}
70 70
 	}
@@ -77,7 +77,7 @@  discard block
 block discarded – undo
77 77
 	public static function onException($exception) {
78 78
 		$class = get_class($exception);
79 79
 		$msg = $exception->getMessage();
80
-		$msg = "$class: $msg at " . $exception->getFile() . '#' . $exception->getLine();
80
+		$msg = "$class: $msg at ".$exception->getFile().'#'.$exception->getLine();
81 81
 		self::$logger->critical(self::removePassword($msg), ['app' => 'PHP']);
82 82
 	}
83 83
 
@@ -86,14 +86,14 @@  discard block
 block discarded – undo
86 86
 		if (error_reporting() === 0) {
87 87
 			return;
88 88
 		}
89
-		$msg = $message . ' at ' . $file . '#' . $line;
89
+		$msg = $message.' at '.$file.'#'.$line;
90 90
 		self::$logger->error(self::removePassword($msg), array('app' => 'PHP'));
91 91
 
92 92
 	}
93 93
 
94 94
 	//Recoverable handler which catch all errors, warnings and notices
95 95
 	public static function onAll($number, $message, $file, $line) {
96
-		$msg = $message . ' at ' . $file . '#' . $line;
96
+		$msg = $message.' at '.$file.'#'.$line;
97 97
 		self::$logger->debug(self::removePassword($msg), array('app' => 'PHP'));
98 98
 
99 99
 	}
Please login to merge, or discard this patch.
lib/private/Search.php 2 patches
Spacing   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -59,9 +59,9 @@  discard block
 block discarded – undo
59 59
 	public function searchPaged($query, array $inApps = array(), $page = 1, $size = 30) {
60 60
 		$this->initProviders();
61 61
 		$results = array();
62
-		foreach($this->providers as $provider) {
62
+		foreach ($this->providers as $provider) {
63 63
 			/** @var $provider Provider */
64
-			if ( ! $provider->providesResultsFor($inApps) ) {
64
+			if (!$provider->providesResultsFor($inApps)) {
65 65
 				continue;
66 66
 			}
67 67
 			if ($provider instanceof PagedProvider) {
@@ -96,7 +96,7 @@  discard block
 block discarded – undo
96 96
 	public function removeProvider($provider) {
97 97
 		$this->registeredProviders = array_filter(
98 98
 			$this->registeredProviders,
99
-			function ($element) use ($provider) {
99
+			function($element) use ($provider) {
100 100
 				return ($element['class'] != $provider);
101 101
 			}
102 102
 		);
@@ -117,10 +117,10 @@  discard block
 block discarded – undo
117 117
 	 * Create instances of all the registered search providers
118 118
 	 */
119 119
 	private function initProviders() {
120
-		if( ! empty($this->providers) ) {
120
+		if (!empty($this->providers)) {
121 121
 			return;
122 122
 		}
123
-		foreach($this->registeredProviders as $provider) {
123
+		foreach ($this->registeredProviders as $provider) {
124 124
 			$class = $provider['class'];
125 125
 			$options = $provider['options'];
126 126
 			$this->providers[] = new $class($options);
Please login to merge, or discard this patch.
Indentation   +76 added lines, -76 removed lines patch added patch discarded remove patch
@@ -34,86 +34,86 @@
 block discarded – undo
34 34
  */
35 35
 class Search implements ISearch {
36 36
 
37
-	private $providers = array();
38
-	private $registeredProviders = array();
37
+    private $providers = array();
38
+    private $registeredProviders = array();
39 39
 
40
-	/**
41
-	 * Search all providers for $query
42
-	 * @param string $query
43
-	 * @param string[] $inApps optionally limit results to the given apps
44
-	 * @param int $page pages start at page 1
45
-	 * @param int $size, 0 = all
46
-	 * @return array An array of OC\Search\Result's
47
-	 */
48
-	public function searchPaged($query, array $inApps = array(), $page = 1, $size = 30) {
49
-		$this->initProviders();
50
-		$results = array();
51
-		foreach($this->providers as $provider) {
52
-			/** @var $provider Provider */
53
-			if ( ! $provider->providesResultsFor($inApps) ) {
54
-				continue;
55
-			}
56
-			if ($provider instanceof PagedProvider) {
57
-				$results = array_merge($results, $provider->searchPaged($query, $page, $size));
58
-			} else if ($provider instanceof Provider) {
59
-				$providerResults = $provider->search($query);
60
-				if ($size > 0) {
61
-					$slicedResults = array_slice($providerResults, ($page - 1) * $size, $size);
62
-					$results = array_merge($results, $slicedResults);
63
-				} else {
64
-					$results = array_merge($results, $providerResults);
65
-				}
66
-			} else {
67
-				\OC::$server->getLogger()->warning('Ignoring Unknown search provider', array('provider' => $provider));
68
-			}
69
-		}
70
-		return $results;
71
-	}
40
+    /**
41
+     * Search all providers for $query
42
+     * @param string $query
43
+     * @param string[] $inApps optionally limit results to the given apps
44
+     * @param int $page pages start at page 1
45
+     * @param int $size, 0 = all
46
+     * @return array An array of OC\Search\Result's
47
+     */
48
+    public function searchPaged($query, array $inApps = array(), $page = 1, $size = 30) {
49
+        $this->initProviders();
50
+        $results = array();
51
+        foreach($this->providers as $provider) {
52
+            /** @var $provider Provider */
53
+            if ( ! $provider->providesResultsFor($inApps) ) {
54
+                continue;
55
+            }
56
+            if ($provider instanceof PagedProvider) {
57
+                $results = array_merge($results, $provider->searchPaged($query, $page, $size));
58
+            } else if ($provider instanceof Provider) {
59
+                $providerResults = $provider->search($query);
60
+                if ($size > 0) {
61
+                    $slicedResults = array_slice($providerResults, ($page - 1) * $size, $size);
62
+                    $results = array_merge($results, $slicedResults);
63
+                } else {
64
+                    $results = array_merge($results, $providerResults);
65
+                }
66
+            } else {
67
+                \OC::$server->getLogger()->warning('Ignoring Unknown search provider', array('provider' => $provider));
68
+            }
69
+        }
70
+        return $results;
71
+    }
72 72
 
73
-	/**
74
-	 * Remove all registered search providers
75
-	 */
76
-	public function clearProviders() {
77
-		$this->providers = array();
78
-		$this->registeredProviders = array();
79
-	}
73
+    /**
74
+     * Remove all registered search providers
75
+     */
76
+    public function clearProviders() {
77
+        $this->providers = array();
78
+        $this->registeredProviders = array();
79
+    }
80 80
 
81
-	/**
82
-	 * Remove one existing search provider
83
-	 * @param string $provider class name of a OC\Search\Provider
84
-	 */
85
-	public function removeProvider($provider) {
86
-		$this->registeredProviders = array_filter(
87
-			$this->registeredProviders,
88
-			function ($element) use ($provider) {
89
-				return ($element['class'] != $provider);
90
-			}
91
-		);
92
-		// force regeneration of providers on next search
93
-		$this->providers = array();
94
-	}
81
+    /**
82
+     * Remove one existing search provider
83
+     * @param string $provider class name of a OC\Search\Provider
84
+     */
85
+    public function removeProvider($provider) {
86
+        $this->registeredProviders = array_filter(
87
+            $this->registeredProviders,
88
+            function ($element) use ($provider) {
89
+                return ($element['class'] != $provider);
90
+            }
91
+        );
92
+        // force regeneration of providers on next search
93
+        $this->providers = array();
94
+    }
95 95
 
96
-	/**
97
-	 * Register a new search provider to search with
98
-	 * @param string $class class name of a OC\Search\Provider
99
-	 * @param array $options optional
100
-	 */
101
-	public function registerProvider($class, array $options = array()) {
102
-		$this->registeredProviders[] = array('class' => $class, 'options' => $options);
103
-	}
96
+    /**
97
+     * Register a new search provider to search with
98
+     * @param string $class class name of a OC\Search\Provider
99
+     * @param array $options optional
100
+     */
101
+    public function registerProvider($class, array $options = array()) {
102
+        $this->registeredProviders[] = array('class' => $class, 'options' => $options);
103
+    }
104 104
 
105
-	/**
106
-	 * Create instances of all the registered search providers
107
-	 */
108
-	private function initProviders() {
109
-		if( ! empty($this->providers) ) {
110
-			return;
111
-		}
112
-		foreach($this->registeredProviders as $provider) {
113
-			$class = $provider['class'];
114
-			$options = $provider['options'];
115
-			$this->providers[] = new $class($options);
116
-		}
117
-	}
105
+    /**
106
+     * Create instances of all the registered search providers
107
+     */
108
+    private function initProviders() {
109
+        if( ! empty($this->providers) ) {
110
+            return;
111
+        }
112
+        foreach($this->registeredProviders as $provider) {
113
+            $class = $provider['class'];
114
+            $options = $provider['options'];
115
+            $this->providers[] = new $class($options);
116
+        }
117
+    }
118 118
 
119 119
 }
Please login to merge, or discard this patch.
lib/private/Http/Client/Response.php 2 patches
Spacing   +1 added lines, -2 removed lines patch added patch discarded remove patch
@@ -54,8 +54,7 @@
 block discarded – undo
54 54
 	 */
55 55
 	public function getBody() {
56 56
 		return $this->stream ?
57
-			$this->response->getBody()->detach():
58
-			$this->response->getBody()->getContents();
57
+			$this->response->getBody()->detach() : $this->response->getBody()->getContents();
59 58
 	}
60 59
 
61 60
 	/**
Please login to merge, or discard this patch.
Indentation   +45 added lines, -45 removed lines patch added patch discarded remove patch
@@ -33,57 +33,57 @@
 block discarded – undo
33 33
  * @package OC\Http
34 34
  */
35 35
 class Response implements IResponse {
36
-	/** @var ResponseInterface */
37
-	private $response;
36
+    /** @var ResponseInterface */
37
+    private $response;
38 38
 
39
-	/**
40
-	 * @var bool
41
-	 */
42
-	private $stream;
39
+    /**
40
+     * @var bool
41
+     */
42
+    private $stream;
43 43
 
44
-	/**
45
-	 * @param ResponseInterface $response
46
-	 * @param bool $stream
47
-	 */
48
-	public function __construct(ResponseInterface $response, $stream = false) {
49
-		$this->response = $response;
50
-		$this->stream = $stream;
51
-	}
44
+    /**
45
+     * @param ResponseInterface $response
46
+     * @param bool $stream
47
+     */
48
+    public function __construct(ResponseInterface $response, $stream = false) {
49
+        $this->response = $response;
50
+        $this->stream = $stream;
51
+    }
52 52
 
53
-	/**
54
-	 * @return string|resource
55
-	 */
56
-	public function getBody() {
57
-		return $this->stream ?
58
-			$this->response->getBody()->detach():
59
-			$this->response->getBody()->getContents();
60
-	}
53
+    /**
54
+     * @return string|resource
55
+     */
56
+    public function getBody() {
57
+        return $this->stream ?
58
+            $this->response->getBody()->detach():
59
+            $this->response->getBody()->getContents();
60
+    }
61 61
 
62
-	/**
63
-	 * @return int
64
-	 */
65
-	public function getStatusCode(): int {
66
-		return $this->response->getStatusCode();
67
-	}
62
+    /**
63
+     * @return int
64
+     */
65
+    public function getStatusCode(): int {
66
+        return $this->response->getStatusCode();
67
+    }
68 68
 
69
-	/**
70
-	 * @param string $key
71
-	 * @return string
72
-	 */
73
-	public function getHeader(string $key): string {
74
-		$headers = $this->response->getHeader($key);
69
+    /**
70
+     * @param string $key
71
+     * @return string
72
+     */
73
+    public function getHeader(string $key): string {
74
+        $headers = $this->response->getHeader($key);
75 75
 
76
-		if (count($headers) === 0) {
77
-			return '';
78
-		}
76
+        if (count($headers) === 0) {
77
+            return '';
78
+        }
79 79
 
80
-		return $headers[0];
81
-	}
80
+        return $headers[0];
81
+    }
82 82
 
83
-	/**
84
-	 * @return array
85
-	 */
86
-	public function getHeaders(): array {
87
-		return $this->response->getHeaders();
88
-	}
83
+    /**
84
+     * @return array
85
+     */
86
+    public function getHeaders(): array {
87
+        return $this->response->getHeaders();
88
+    }
89 89
 }
Please login to merge, or discard this patch.
lib/private/Session/CryptoWrapper.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -81,7 +81,7 @@
 block discarded – undo
81 81
 			// FIXME: Required for CI
82 82
 			if (!defined('PHPUNIT_RUN')) {
83 83
 				$webRoot = \OC::$WEBROOT;
84
-				if($webRoot === '') {
84
+				if ($webRoot === '') {
85 85
 					$webRoot = '/';
86 86
 				}
87 87
 				setcookie(self::COOKIE_NAME, $this->passphrase, 0, $webRoot, '', $secureCookie, true);
Please login to merge, or discard this patch.
Indentation   +49 added lines, -49 removed lines patch added patch discarded remove patch
@@ -48,58 +48,58 @@
 block discarded – undo
48 48
  * @package OC\Session
49 49
  */
50 50
 class CryptoWrapper {
51
-	const COOKIE_NAME = 'oc_sessionPassphrase';
51
+    const COOKIE_NAME = 'oc_sessionPassphrase';
52 52
 
53
-	/** @var IConfig */
54
-	protected $config;
55
-	/** @var ISession */
56
-	protected $session;
57
-	/** @var ICrypto */
58
-	protected $crypto;
59
-	/** @var ISecureRandom */
60
-	protected $random;
61
-	/** @var string */
62
-	protected $passphrase;
53
+    /** @var IConfig */
54
+    protected $config;
55
+    /** @var ISession */
56
+    protected $session;
57
+    /** @var ICrypto */
58
+    protected $crypto;
59
+    /** @var ISecureRandom */
60
+    protected $random;
61
+    /** @var string */
62
+    protected $passphrase;
63 63
 
64
-	/**
65
-	 * @param IConfig $config
66
-	 * @param ICrypto $crypto
67
-	 * @param ISecureRandom $random
68
-	 * @param IRequest $request
69
-	 */
70
-	public function __construct(IConfig $config,
71
-								ICrypto $crypto,
72
-								ISecureRandom $random,
73
-								IRequest $request) {
74
-		$this->crypto = $crypto;
75
-		$this->config = $config;
76
-		$this->random = $random;
64
+    /**
65
+     * @param IConfig $config
66
+     * @param ICrypto $crypto
67
+     * @param ISecureRandom $random
68
+     * @param IRequest $request
69
+     */
70
+    public function __construct(IConfig $config,
71
+                                ICrypto $crypto,
72
+                                ISecureRandom $random,
73
+                                IRequest $request) {
74
+        $this->crypto = $crypto;
75
+        $this->config = $config;
76
+        $this->random = $random;
77 77
 
78
-		if (!is_null($request->getCookie(self::COOKIE_NAME))) {
79
-			$this->passphrase = $request->getCookie(self::COOKIE_NAME);
80
-		} else {
81
-			$this->passphrase = $this->random->generate(128);
82
-			$secureCookie = $request->getServerProtocol() === 'https';
83
-			// FIXME: Required for CI
84
-			if (!defined('PHPUNIT_RUN')) {
85
-				$webRoot = \OC::$WEBROOT;
86
-				if($webRoot === '') {
87
-					$webRoot = '/';
88
-				}
89
-				setcookie(self::COOKIE_NAME, $this->passphrase, 0, $webRoot, '', $secureCookie, true);
90
-			}
91
-		}
92
-	}
78
+        if (!is_null($request->getCookie(self::COOKIE_NAME))) {
79
+            $this->passphrase = $request->getCookie(self::COOKIE_NAME);
80
+        } else {
81
+            $this->passphrase = $this->random->generate(128);
82
+            $secureCookie = $request->getServerProtocol() === 'https';
83
+            // FIXME: Required for CI
84
+            if (!defined('PHPUNIT_RUN')) {
85
+                $webRoot = \OC::$WEBROOT;
86
+                if($webRoot === '') {
87
+                    $webRoot = '/';
88
+                }
89
+                setcookie(self::COOKIE_NAME, $this->passphrase, 0, $webRoot, '', $secureCookie, true);
90
+            }
91
+        }
92
+    }
93 93
 
94
-	/**
95
-	 * @param ISession $session
96
-	 * @return ISession
97
-	 */
98
-	public function wrapSession(ISession $session) {
99
-		if (!($session instanceof CryptoSessionData)) {
100
-			return new CryptoSessionData($session, $this->crypto, $this->passphrase);
101
-		}
94
+    /**
95
+     * @param ISession $session
96
+     * @return ISession
97
+     */
98
+    public function wrapSession(ISession $session) {
99
+        if (!($session instanceof CryptoSessionData)) {
100
+            return new CryptoSessionData($session, $this->crypto, $this->passphrase);
101
+        }
102 102
 
103
-		return $session;
104
-	}
103
+        return $session;
104
+    }
105 105
 }
Please login to merge, or discard this patch.
lib/private/Notification/Notification.php 1 patch
Indentation   +551 added lines, -551 removed lines patch added patch discarded remove patch
@@ -31,555 +31,555 @@
 block discarded – undo
31 31
 
32 32
 class Notification implements INotification {
33 33
 
34
-	/** @var IValidator */
35
-	protected $richValidator;
36
-
37
-	/** @var string */
38
-	protected $app;
39
-
40
-	/** @var string */
41
-	protected $user;
42
-
43
-	/** @var \DateTime */
44
-	protected $dateTime;
45
-
46
-	/** @var string */
47
-	protected $objectType;
48
-
49
-	/** @var string */
50
-	protected $objectId;
51
-
52
-	/** @var string */
53
-	protected $subject;
54
-
55
-	/** @var array */
56
-	protected $subjectParameters;
57
-
58
-	/** @var string */
59
-	protected $subjectParsed;
60
-
61
-	/** @var string */
62
-	protected $subjectRich;
63
-
64
-	/** @var array */
65
-	protected $subjectRichParameters;
66
-
67
-	/** @var string */
68
-	protected $message;
69
-
70
-	/** @var array */
71
-	protected $messageParameters;
72
-
73
-	/** @var string */
74
-	protected $messageParsed;
75
-
76
-	/** @var string */
77
-	protected $messageRich;
78
-
79
-	/** @var array */
80
-	protected $messageRichParameters;
81
-
82
-	/** @var string */
83
-	protected $link;
84
-
85
-	/** @var string */
86
-	protected $icon;
87
-
88
-	/** @var array */
89
-	protected $actions;
90
-
91
-	/** @var array */
92
-	protected $actionsParsed;
93
-
94
-	/** @var bool */
95
-	protected $hasPrimaryAction;
96
-
97
-	/** @var bool */
98
-	protected $hasPrimaryParsedAction;
99
-
100
-	/**
101
-	 * Constructor
102
-	 *
103
-	 * @param IValidator $richValidator
104
-	 */
105
-	public function __construct(IValidator $richValidator) {
106
-		$this->richValidator = $richValidator;
107
-		$this->app = '';
108
-		$this->user = '';
109
-		$this->dateTime = new \DateTime();
110
-		$this->dateTime->setTimestamp(0);
111
-		$this->objectType = '';
112
-		$this->objectId = '';
113
-		$this->subject = '';
114
-		$this->subjectParameters = [];
115
-		$this->subjectParsed = '';
116
-		$this->subjectRich = '';
117
-		$this->subjectRichParameters = [];
118
-		$this->message = '';
119
-		$this->messageParameters = [];
120
-		$this->messageParsed = '';
121
-		$this->messageRich = '';
122
-		$this->messageRichParameters = [];
123
-		$this->link = '';
124
-		$this->icon = '';
125
-		$this->actions = [];
126
-		$this->actionsParsed = [];
127
-	}
128
-
129
-	/**
130
-	 * @param string $app
131
-	 * @return $this
132
-	 * @throws \InvalidArgumentException if the app id is invalid
133
-	 * @since 8.2.0
134
-	 */
135
-	public function setApp($app) {
136
-		if (!is_string($app) || $app === '' || isset($app[32])) {
137
-			throw new \InvalidArgumentException('The given app name is invalid');
138
-		}
139
-		$this->app = $app;
140
-		return $this;
141
-	}
142
-
143
-	/**
144
-	 * @return string
145
-	 * @since 8.2.0
146
-	 */
147
-	public function getApp() {
148
-		return $this->app;
149
-	}
150
-
151
-	/**
152
-	 * @param string $user
153
-	 * @return $this
154
-	 * @throws \InvalidArgumentException if the user id is invalid
155
-	 * @since 8.2.0
156
-	 */
157
-	public function setUser($user) {
158
-		if (!is_string($user) || $user === '' || isset($user[64])) {
159
-			throw new \InvalidArgumentException('The given user id is invalid');
160
-		}
161
-		$this->user = $user;
162
-		return $this;
163
-	}
164
-
165
-	/**
166
-	 * @return string
167
-	 * @since 8.2.0
168
-	 */
169
-	public function getUser() {
170
-		return $this->user;
171
-	}
172
-
173
-	/**
174
-	 * @param \DateTime $dateTime
175
-	 * @return $this
176
-	 * @throws \InvalidArgumentException if the $dateTime is invalid
177
-	 * @since 9.0.0
178
-	 */
179
-	public function setDateTime(\DateTime $dateTime) {
180
-		if ($dateTime->getTimestamp() === 0) {
181
-			throw new \InvalidArgumentException('The given date time is invalid');
182
-		}
183
-		$this->dateTime = $dateTime;
184
-		return $this;
185
-	}
186
-
187
-	/**
188
-	 * @return \DateTime
189
-	 * @since 9.0.0
190
-	 */
191
-	public function getDateTime() {
192
-		return $this->dateTime;
193
-	}
194
-
195
-	/**
196
-	 * @param string $type
197
-	 * @param string $id
198
-	 * @return $this
199
-	 * @throws \InvalidArgumentException if the object type or id is invalid
200
-	 * @since 8.2.0 - 9.0.0: Type of $id changed to string
201
-	 */
202
-	public function setObject($type, $id) {
203
-		if (!is_string($type) || $type === '' || isset($type[64])) {
204
-			throw new \InvalidArgumentException('The given object type is invalid');
205
-		}
206
-		$this->objectType = $type;
207
-
208
-		if (!is_int($id) && (!is_string($id) || $id === '' || isset($id[64]))) {
209
-			throw new \InvalidArgumentException('The given object id is invalid');
210
-		}
211
-		$this->objectId = (string) $id;
212
-		return $this;
213
-	}
214
-
215
-	/**
216
-	 * @return string
217
-	 * @since 8.2.0
218
-	 */
219
-	public function getObjectType() {
220
-		return $this->objectType;
221
-	}
222
-
223
-	/**
224
-	 * @return string
225
-	 * @since 8.2.0 - 9.0.0: Return type changed to string
226
-	 */
227
-	public function getObjectId() {
228
-		return $this->objectId;
229
-	}
230
-
231
-	/**
232
-	 * @param string $subject
233
-	 * @param array $parameters
234
-	 * @return $this
235
-	 * @throws \InvalidArgumentException if the subject or parameters are invalid
236
-	 * @since 8.2.0
237
-	 */
238
-	public function setSubject($subject, array $parameters = []) {
239
-		if (!is_string($subject) || $subject === '' || isset($subject[64])) {
240
-			throw new \InvalidArgumentException('The given subject is invalid');
241
-		}
242
-
243
-		$this->subject = $subject;
244
-		$this->subjectParameters = $parameters;
245
-
246
-		return $this;
247
-	}
248
-
249
-	/**
250
-	 * @return string
251
-	 * @since 8.2.0
252
-	 */
253
-	public function getSubject() {
254
-		return $this->subject;
255
-	}
256
-
257
-	/**
258
-	 * @return string[]
259
-	 * @since 8.2.0
260
-	 */
261
-	public function getSubjectParameters() {
262
-		return $this->subjectParameters;
263
-	}
264
-
265
-	/**
266
-	 * @param string $subject
267
-	 * @return $this
268
-	 * @throws \InvalidArgumentException if the subject is invalid
269
-	 * @since 8.2.0
270
-	 */
271
-	public function setParsedSubject($subject) {
272
-		if (!is_string($subject) || $subject === '') {
273
-			throw new \InvalidArgumentException('The given parsed subject is invalid');
274
-		}
275
-		$this->subjectParsed = $subject;
276
-		return $this;
277
-	}
278
-
279
-	/**
280
-	 * @return string
281
-	 * @since 8.2.0
282
-	 */
283
-	public function getParsedSubject() {
284
-		return $this->subjectParsed;
285
-	}
286
-
287
-	/**
288
-	 * @param string $subject
289
-	 * @param array $parameters
290
-	 * @return $this
291
-	 * @throws \InvalidArgumentException if the subject or parameters are invalid
292
-	 * @since 11.0.0
293
-	 */
294
-	public function setRichSubject($subject, array $parameters = []) {
295
-		if (!is_string($subject) || $subject === '') {
296
-			throw new \InvalidArgumentException('The given parsed subject is invalid');
297
-		}
298
-
299
-		$this->subjectRich = $subject;
300
-		$this->subjectRichParameters = $parameters;
301
-
302
-		return $this;
303
-	}
304
-
305
-	/**
306
-	 * @return string
307
-	 * @since 11.0.0
308
-	 */
309
-	public function getRichSubject() {
310
-		return $this->subjectRich;
311
-	}
312
-
313
-	/**
314
-	 * @return array[]
315
-	 * @since 11.0.0
316
-	 */
317
-	public function getRichSubjectParameters() {
318
-		return $this->subjectRichParameters;
319
-	}
320
-
321
-	/**
322
-	 * @param string $message
323
-	 * @param array $parameters
324
-	 * @return $this
325
-	 * @throws \InvalidArgumentException if the message or parameters are invalid
326
-	 * @since 8.2.0
327
-	 */
328
-	public function setMessage($message, array $parameters = []) {
329
-		if (!is_string($message) || $message === '' || isset($message[64])) {
330
-			throw new \InvalidArgumentException('The given message is invalid');
331
-		}
332
-
333
-		$this->message = $message;
334
-		$this->messageParameters = $parameters;
335
-
336
-		return $this;
337
-	}
338
-
339
-	/**
340
-	 * @return string
341
-	 * @since 8.2.0
342
-	 */
343
-	public function getMessage() {
344
-		return $this->message;
345
-	}
346
-
347
-	/**
348
-	 * @return string[]
349
-	 * @since 8.2.0
350
-	 */
351
-	public function getMessageParameters() {
352
-		return $this->messageParameters;
353
-	}
354
-
355
-	/**
356
-	 * @param string $message
357
-	 * @return $this
358
-	 * @throws \InvalidArgumentException if the message is invalid
359
-	 * @since 8.2.0
360
-	 */
361
-	public function setParsedMessage($message) {
362
-		if (!is_string($message) || $message === '') {
363
-			throw new \InvalidArgumentException('The given parsed message is invalid');
364
-		}
365
-		$this->messageParsed = $message;
366
-		return $this;
367
-	}
368
-
369
-	/**
370
-	 * @return string
371
-	 * @since 8.2.0
372
-	 */
373
-	public function getParsedMessage() {
374
-		return $this->messageParsed;
375
-	}
376
-
377
-	/**
378
-	 * @param string $message
379
-	 * @param array $parameters
380
-	 * @return $this
381
-	 * @throws \InvalidArgumentException if the message or parameters are invalid
382
-	 * @since 11.0.0
383
-	 */
384
-	public function setRichMessage($message, array $parameters = []) {
385
-		if (!is_string($message) || $message === '') {
386
-			throw new \InvalidArgumentException('The given parsed message is invalid');
387
-		}
388
-
389
-		$this->messageRich = $message;
390
-		$this->messageRichParameters = $parameters;
391
-
392
-		return $this;
393
-	}
394
-
395
-	/**
396
-	 * @return string
397
-	 * @since 11.0.0
398
-	 */
399
-	public function getRichMessage() {
400
-		return $this->messageRich;
401
-	}
402
-
403
-	/**
404
-	 * @return array[]
405
-	 * @since 11.0.0
406
-	 */
407
-	public function getRichMessageParameters() {
408
-		return $this->messageRichParameters;
409
-	}
410
-
411
-	/**
412
-	 * @param string $link
413
-	 * @return $this
414
-	 * @throws \InvalidArgumentException if the link is invalid
415
-	 * @since 8.2.0
416
-	 */
417
-	public function setLink($link) {
418
-		if (!is_string($link) || $link === '' || isset($link[4000])) {
419
-			throw new \InvalidArgumentException('The given link is invalid');
420
-		}
421
-		$this->link = $link;
422
-		return $this;
423
-	}
424
-
425
-	/**
426
-	 * @return string
427
-	 * @since 8.2.0
428
-	 */
429
-	public function getLink() {
430
-		return $this->link;
431
-	}
432
-
433
-	/**
434
-	 * @param string $icon
435
-	 * @return $this
436
-	 * @throws \InvalidArgumentException if the icon is invalid
437
-	 * @since 11.0.0
438
-	 */
439
-	public function setIcon($icon) {
440
-		if (!is_string($icon) || $icon === '' || isset($icon[4000])) {
441
-			throw new \InvalidArgumentException('The given icon is invalid');
442
-		}
443
-		$this->icon = $icon;
444
-		return $this;
445
-	}
446
-
447
-	/**
448
-	 * @return string
449
-	 * @since 11.0.0
450
-	 */
451
-	public function getIcon() {
452
-		return $this->icon;
453
-	}
454
-
455
-	/**
456
-	 * @return IAction
457
-	 * @since 8.2.0
458
-	 */
459
-	public function createAction() {
460
-		return new Action();
461
-	}
462
-
463
-	/**
464
-	 * @param IAction $action
465
-	 * @return $this
466
-	 * @throws \InvalidArgumentException if the action is invalid
467
-	 * @since 8.2.0
468
-	 */
469
-	public function addAction(IAction $action) {
470
-		if (!$action->isValid()) {
471
-			throw new \InvalidArgumentException('The given action is invalid');
472
-		}
473
-
474
-		if ($action->isPrimary()) {
475
-			if ($this->hasPrimaryAction) {
476
-				throw new \InvalidArgumentException('The notification already has a primary action');
477
-			}
478
-
479
-			$this->hasPrimaryAction = true;
480
-		}
481
-
482
-		$this->actions[] = $action;
483
-		return $this;
484
-	}
485
-
486
-	/**
487
-	 * @return IAction[]
488
-	 * @since 8.2.0
489
-	 */
490
-	public function getActions() {
491
-		return $this->actions;
492
-	}
493
-
494
-	/**
495
-	 * @param IAction $action
496
-	 * @return $this
497
-	 * @throws \InvalidArgumentException if the action is invalid
498
-	 * @since 8.2.0
499
-	 */
500
-	public function addParsedAction(IAction $action) {
501
-		if (!$action->isValidParsed()) {
502
-			throw new \InvalidArgumentException('The given parsed action is invalid');
503
-		}
504
-
505
-		if ($action->isPrimary()) {
506
-			if ($this->hasPrimaryParsedAction) {
507
-				throw new \InvalidArgumentException('The notification already has a primary action');
508
-			}
509
-
510
-			$this->hasPrimaryParsedAction = true;
511
-
512
-			// Make sure the primary action is always the first one
513
-			array_unshift($this->actionsParsed, $action);
514
-		} else {
515
-			$this->actionsParsed[] = $action;
516
-		}
517
-
518
-		return $this;
519
-	}
520
-
521
-	/**
522
-	 * @return IAction[]
523
-	 * @since 8.2.0
524
-	 */
525
-	public function getParsedActions() {
526
-		return $this->actionsParsed;
527
-	}
528
-
529
-	/**
530
-	 * @return bool
531
-	 * @since 8.2.0
532
-	 */
533
-	public function isValid() {
534
-		return
535
-			$this->isValidCommon()
536
-			&&
537
-			$this->getSubject() !== ''
538
-		;
539
-	}
540
-
541
-	/**
542
-	 * @return bool
543
-	 * @since 8.2.0
544
-	 */
545
-	public function isValidParsed() {
546
-		if ($this->getRichSubject() !== '' || !empty($this->getRichSubjectParameters())) {
547
-			try {
548
-				$this->richValidator->validate($this->getRichSubject(), $this->getRichSubjectParameters());
549
-			} catch (InvalidObjectExeption $e) {
550
-				return false;
551
-			}
552
-		}
553
-
554
-		if ($this->getRichMessage() !== '' || !empty($this->getRichMessageParameters())) {
555
-			try {
556
-				$this->richValidator->validate($this->getRichMessage(), $this->getRichMessageParameters());
557
-			} catch (InvalidObjectExeption $e) {
558
-				return false;
559
-			}
560
-		}
561
-
562
-		return
563
-			$this->isValidCommon()
564
-			&&
565
-			$this->getParsedSubject() !== ''
566
-		;
567
-	}
568
-
569
-	/**
570
-	 * @return bool
571
-	 */
572
-	protected function isValidCommon() {
573
-		return
574
-			$this->getApp() !== ''
575
-			&&
576
-			$this->getUser() !== ''
577
-			&&
578
-			$this->getDateTime()->getTimestamp() !== 0
579
-			&&
580
-			$this->getObjectType() !== ''
581
-			&&
582
-			$this->getObjectId() !== ''
583
-		;
584
-	}
34
+    /** @var IValidator */
35
+    protected $richValidator;
36
+
37
+    /** @var string */
38
+    protected $app;
39
+
40
+    /** @var string */
41
+    protected $user;
42
+
43
+    /** @var \DateTime */
44
+    protected $dateTime;
45
+
46
+    /** @var string */
47
+    protected $objectType;
48
+
49
+    /** @var string */
50
+    protected $objectId;
51
+
52
+    /** @var string */
53
+    protected $subject;
54
+
55
+    /** @var array */
56
+    protected $subjectParameters;
57
+
58
+    /** @var string */
59
+    protected $subjectParsed;
60
+
61
+    /** @var string */
62
+    protected $subjectRich;
63
+
64
+    /** @var array */
65
+    protected $subjectRichParameters;
66
+
67
+    /** @var string */
68
+    protected $message;
69
+
70
+    /** @var array */
71
+    protected $messageParameters;
72
+
73
+    /** @var string */
74
+    protected $messageParsed;
75
+
76
+    /** @var string */
77
+    protected $messageRich;
78
+
79
+    /** @var array */
80
+    protected $messageRichParameters;
81
+
82
+    /** @var string */
83
+    protected $link;
84
+
85
+    /** @var string */
86
+    protected $icon;
87
+
88
+    /** @var array */
89
+    protected $actions;
90
+
91
+    /** @var array */
92
+    protected $actionsParsed;
93
+
94
+    /** @var bool */
95
+    protected $hasPrimaryAction;
96
+
97
+    /** @var bool */
98
+    protected $hasPrimaryParsedAction;
99
+
100
+    /**
101
+     * Constructor
102
+     *
103
+     * @param IValidator $richValidator
104
+     */
105
+    public function __construct(IValidator $richValidator) {
106
+        $this->richValidator = $richValidator;
107
+        $this->app = '';
108
+        $this->user = '';
109
+        $this->dateTime = new \DateTime();
110
+        $this->dateTime->setTimestamp(0);
111
+        $this->objectType = '';
112
+        $this->objectId = '';
113
+        $this->subject = '';
114
+        $this->subjectParameters = [];
115
+        $this->subjectParsed = '';
116
+        $this->subjectRich = '';
117
+        $this->subjectRichParameters = [];
118
+        $this->message = '';
119
+        $this->messageParameters = [];
120
+        $this->messageParsed = '';
121
+        $this->messageRich = '';
122
+        $this->messageRichParameters = [];
123
+        $this->link = '';
124
+        $this->icon = '';
125
+        $this->actions = [];
126
+        $this->actionsParsed = [];
127
+    }
128
+
129
+    /**
130
+     * @param string $app
131
+     * @return $this
132
+     * @throws \InvalidArgumentException if the app id is invalid
133
+     * @since 8.2.0
134
+     */
135
+    public function setApp($app) {
136
+        if (!is_string($app) || $app === '' || isset($app[32])) {
137
+            throw new \InvalidArgumentException('The given app name is invalid');
138
+        }
139
+        $this->app = $app;
140
+        return $this;
141
+    }
142
+
143
+    /**
144
+     * @return string
145
+     * @since 8.2.0
146
+     */
147
+    public function getApp() {
148
+        return $this->app;
149
+    }
150
+
151
+    /**
152
+     * @param string $user
153
+     * @return $this
154
+     * @throws \InvalidArgumentException if the user id is invalid
155
+     * @since 8.2.0
156
+     */
157
+    public function setUser($user) {
158
+        if (!is_string($user) || $user === '' || isset($user[64])) {
159
+            throw new \InvalidArgumentException('The given user id is invalid');
160
+        }
161
+        $this->user = $user;
162
+        return $this;
163
+    }
164
+
165
+    /**
166
+     * @return string
167
+     * @since 8.2.0
168
+     */
169
+    public function getUser() {
170
+        return $this->user;
171
+    }
172
+
173
+    /**
174
+     * @param \DateTime $dateTime
175
+     * @return $this
176
+     * @throws \InvalidArgumentException if the $dateTime is invalid
177
+     * @since 9.0.0
178
+     */
179
+    public function setDateTime(\DateTime $dateTime) {
180
+        if ($dateTime->getTimestamp() === 0) {
181
+            throw new \InvalidArgumentException('The given date time is invalid');
182
+        }
183
+        $this->dateTime = $dateTime;
184
+        return $this;
185
+    }
186
+
187
+    /**
188
+     * @return \DateTime
189
+     * @since 9.0.0
190
+     */
191
+    public function getDateTime() {
192
+        return $this->dateTime;
193
+    }
194
+
195
+    /**
196
+     * @param string $type
197
+     * @param string $id
198
+     * @return $this
199
+     * @throws \InvalidArgumentException if the object type or id is invalid
200
+     * @since 8.2.0 - 9.0.0: Type of $id changed to string
201
+     */
202
+    public function setObject($type, $id) {
203
+        if (!is_string($type) || $type === '' || isset($type[64])) {
204
+            throw new \InvalidArgumentException('The given object type is invalid');
205
+        }
206
+        $this->objectType = $type;
207
+
208
+        if (!is_int($id) && (!is_string($id) || $id === '' || isset($id[64]))) {
209
+            throw new \InvalidArgumentException('The given object id is invalid');
210
+        }
211
+        $this->objectId = (string) $id;
212
+        return $this;
213
+    }
214
+
215
+    /**
216
+     * @return string
217
+     * @since 8.2.0
218
+     */
219
+    public function getObjectType() {
220
+        return $this->objectType;
221
+    }
222
+
223
+    /**
224
+     * @return string
225
+     * @since 8.2.0 - 9.0.0: Return type changed to string
226
+     */
227
+    public function getObjectId() {
228
+        return $this->objectId;
229
+    }
230
+
231
+    /**
232
+     * @param string $subject
233
+     * @param array $parameters
234
+     * @return $this
235
+     * @throws \InvalidArgumentException if the subject or parameters are invalid
236
+     * @since 8.2.0
237
+     */
238
+    public function setSubject($subject, array $parameters = []) {
239
+        if (!is_string($subject) || $subject === '' || isset($subject[64])) {
240
+            throw new \InvalidArgumentException('The given subject is invalid');
241
+        }
242
+
243
+        $this->subject = $subject;
244
+        $this->subjectParameters = $parameters;
245
+
246
+        return $this;
247
+    }
248
+
249
+    /**
250
+     * @return string
251
+     * @since 8.2.0
252
+     */
253
+    public function getSubject() {
254
+        return $this->subject;
255
+    }
256
+
257
+    /**
258
+     * @return string[]
259
+     * @since 8.2.0
260
+     */
261
+    public function getSubjectParameters() {
262
+        return $this->subjectParameters;
263
+    }
264
+
265
+    /**
266
+     * @param string $subject
267
+     * @return $this
268
+     * @throws \InvalidArgumentException if the subject is invalid
269
+     * @since 8.2.0
270
+     */
271
+    public function setParsedSubject($subject) {
272
+        if (!is_string($subject) || $subject === '') {
273
+            throw new \InvalidArgumentException('The given parsed subject is invalid');
274
+        }
275
+        $this->subjectParsed = $subject;
276
+        return $this;
277
+    }
278
+
279
+    /**
280
+     * @return string
281
+     * @since 8.2.0
282
+     */
283
+    public function getParsedSubject() {
284
+        return $this->subjectParsed;
285
+    }
286
+
287
+    /**
288
+     * @param string $subject
289
+     * @param array $parameters
290
+     * @return $this
291
+     * @throws \InvalidArgumentException if the subject or parameters are invalid
292
+     * @since 11.0.0
293
+     */
294
+    public function setRichSubject($subject, array $parameters = []) {
295
+        if (!is_string($subject) || $subject === '') {
296
+            throw new \InvalidArgumentException('The given parsed subject is invalid');
297
+        }
298
+
299
+        $this->subjectRich = $subject;
300
+        $this->subjectRichParameters = $parameters;
301
+
302
+        return $this;
303
+    }
304
+
305
+    /**
306
+     * @return string
307
+     * @since 11.0.0
308
+     */
309
+    public function getRichSubject() {
310
+        return $this->subjectRich;
311
+    }
312
+
313
+    /**
314
+     * @return array[]
315
+     * @since 11.0.0
316
+     */
317
+    public function getRichSubjectParameters() {
318
+        return $this->subjectRichParameters;
319
+    }
320
+
321
+    /**
322
+     * @param string $message
323
+     * @param array $parameters
324
+     * @return $this
325
+     * @throws \InvalidArgumentException if the message or parameters are invalid
326
+     * @since 8.2.0
327
+     */
328
+    public function setMessage($message, array $parameters = []) {
329
+        if (!is_string($message) || $message === '' || isset($message[64])) {
330
+            throw new \InvalidArgumentException('The given message is invalid');
331
+        }
332
+
333
+        $this->message = $message;
334
+        $this->messageParameters = $parameters;
335
+
336
+        return $this;
337
+    }
338
+
339
+    /**
340
+     * @return string
341
+     * @since 8.2.0
342
+     */
343
+    public function getMessage() {
344
+        return $this->message;
345
+    }
346
+
347
+    /**
348
+     * @return string[]
349
+     * @since 8.2.0
350
+     */
351
+    public function getMessageParameters() {
352
+        return $this->messageParameters;
353
+    }
354
+
355
+    /**
356
+     * @param string $message
357
+     * @return $this
358
+     * @throws \InvalidArgumentException if the message is invalid
359
+     * @since 8.2.0
360
+     */
361
+    public function setParsedMessage($message) {
362
+        if (!is_string($message) || $message === '') {
363
+            throw new \InvalidArgumentException('The given parsed message is invalid');
364
+        }
365
+        $this->messageParsed = $message;
366
+        return $this;
367
+    }
368
+
369
+    /**
370
+     * @return string
371
+     * @since 8.2.0
372
+     */
373
+    public function getParsedMessage() {
374
+        return $this->messageParsed;
375
+    }
376
+
377
+    /**
378
+     * @param string $message
379
+     * @param array $parameters
380
+     * @return $this
381
+     * @throws \InvalidArgumentException if the message or parameters are invalid
382
+     * @since 11.0.0
383
+     */
384
+    public function setRichMessage($message, array $parameters = []) {
385
+        if (!is_string($message) || $message === '') {
386
+            throw new \InvalidArgumentException('The given parsed message is invalid');
387
+        }
388
+
389
+        $this->messageRich = $message;
390
+        $this->messageRichParameters = $parameters;
391
+
392
+        return $this;
393
+    }
394
+
395
+    /**
396
+     * @return string
397
+     * @since 11.0.0
398
+     */
399
+    public function getRichMessage() {
400
+        return $this->messageRich;
401
+    }
402
+
403
+    /**
404
+     * @return array[]
405
+     * @since 11.0.0
406
+     */
407
+    public function getRichMessageParameters() {
408
+        return $this->messageRichParameters;
409
+    }
410
+
411
+    /**
412
+     * @param string $link
413
+     * @return $this
414
+     * @throws \InvalidArgumentException if the link is invalid
415
+     * @since 8.2.0
416
+     */
417
+    public function setLink($link) {
418
+        if (!is_string($link) || $link === '' || isset($link[4000])) {
419
+            throw new \InvalidArgumentException('The given link is invalid');
420
+        }
421
+        $this->link = $link;
422
+        return $this;
423
+    }
424
+
425
+    /**
426
+     * @return string
427
+     * @since 8.2.0
428
+     */
429
+    public function getLink() {
430
+        return $this->link;
431
+    }
432
+
433
+    /**
434
+     * @param string $icon
435
+     * @return $this
436
+     * @throws \InvalidArgumentException if the icon is invalid
437
+     * @since 11.0.0
438
+     */
439
+    public function setIcon($icon) {
440
+        if (!is_string($icon) || $icon === '' || isset($icon[4000])) {
441
+            throw new \InvalidArgumentException('The given icon is invalid');
442
+        }
443
+        $this->icon = $icon;
444
+        return $this;
445
+    }
446
+
447
+    /**
448
+     * @return string
449
+     * @since 11.0.0
450
+     */
451
+    public function getIcon() {
452
+        return $this->icon;
453
+    }
454
+
455
+    /**
456
+     * @return IAction
457
+     * @since 8.2.0
458
+     */
459
+    public function createAction() {
460
+        return new Action();
461
+    }
462
+
463
+    /**
464
+     * @param IAction $action
465
+     * @return $this
466
+     * @throws \InvalidArgumentException if the action is invalid
467
+     * @since 8.2.0
468
+     */
469
+    public function addAction(IAction $action) {
470
+        if (!$action->isValid()) {
471
+            throw new \InvalidArgumentException('The given action is invalid');
472
+        }
473
+
474
+        if ($action->isPrimary()) {
475
+            if ($this->hasPrimaryAction) {
476
+                throw new \InvalidArgumentException('The notification already has a primary action');
477
+            }
478
+
479
+            $this->hasPrimaryAction = true;
480
+        }
481
+
482
+        $this->actions[] = $action;
483
+        return $this;
484
+    }
485
+
486
+    /**
487
+     * @return IAction[]
488
+     * @since 8.2.0
489
+     */
490
+    public function getActions() {
491
+        return $this->actions;
492
+    }
493
+
494
+    /**
495
+     * @param IAction $action
496
+     * @return $this
497
+     * @throws \InvalidArgumentException if the action is invalid
498
+     * @since 8.2.0
499
+     */
500
+    public function addParsedAction(IAction $action) {
501
+        if (!$action->isValidParsed()) {
502
+            throw new \InvalidArgumentException('The given parsed action is invalid');
503
+        }
504
+
505
+        if ($action->isPrimary()) {
506
+            if ($this->hasPrimaryParsedAction) {
507
+                throw new \InvalidArgumentException('The notification already has a primary action');
508
+            }
509
+
510
+            $this->hasPrimaryParsedAction = true;
511
+
512
+            // Make sure the primary action is always the first one
513
+            array_unshift($this->actionsParsed, $action);
514
+        } else {
515
+            $this->actionsParsed[] = $action;
516
+        }
517
+
518
+        return $this;
519
+    }
520
+
521
+    /**
522
+     * @return IAction[]
523
+     * @since 8.2.0
524
+     */
525
+    public function getParsedActions() {
526
+        return $this->actionsParsed;
527
+    }
528
+
529
+    /**
530
+     * @return bool
531
+     * @since 8.2.0
532
+     */
533
+    public function isValid() {
534
+        return
535
+            $this->isValidCommon()
536
+            &&
537
+            $this->getSubject() !== ''
538
+        ;
539
+    }
540
+
541
+    /**
542
+     * @return bool
543
+     * @since 8.2.0
544
+     */
545
+    public function isValidParsed() {
546
+        if ($this->getRichSubject() !== '' || !empty($this->getRichSubjectParameters())) {
547
+            try {
548
+                $this->richValidator->validate($this->getRichSubject(), $this->getRichSubjectParameters());
549
+            } catch (InvalidObjectExeption $e) {
550
+                return false;
551
+            }
552
+        }
553
+
554
+        if ($this->getRichMessage() !== '' || !empty($this->getRichMessageParameters())) {
555
+            try {
556
+                $this->richValidator->validate($this->getRichMessage(), $this->getRichMessageParameters());
557
+            } catch (InvalidObjectExeption $e) {
558
+                return false;
559
+            }
560
+        }
561
+
562
+        return
563
+            $this->isValidCommon()
564
+            &&
565
+            $this->getParsedSubject() !== ''
566
+        ;
567
+    }
568
+
569
+    /**
570
+     * @return bool
571
+     */
572
+    protected function isValidCommon() {
573
+        return
574
+            $this->getApp() !== ''
575
+            &&
576
+            $this->getUser() !== ''
577
+            &&
578
+            $this->getDateTime()->getTimestamp() !== 0
579
+            &&
580
+            $this->getObjectType() !== ''
581
+            &&
582
+            $this->getObjectId() !== ''
583
+        ;
584
+    }
585 585
 }
Please login to merge, or discard this patch.
lib/private/Notification/Action.php 1 patch
Indentation   +144 added lines, -144 removed lines patch added patch discarded remove patch
@@ -27,148 +27,148 @@
 block discarded – undo
27 27
 
28 28
 class Action implements IAction {
29 29
 
30
-	/** @var string */
31
-	protected $label;
32
-
33
-	/** @var string */
34
-	protected $labelParsed;
35
-
36
-	/** @var string */
37
-	protected $link;
38
-
39
-	/** @var string */
40
-	protected $requestType;
41
-
42
-	/** @var string */
43
-	protected $icon;
44
-
45
-	/** @var bool */
46
-	protected $primary;
47
-
48
-	/**
49
-	 * Constructor
50
-	 */
51
-	public function __construct() {
52
-		$this->label = '';
53
-		$this->labelParsed = '';
54
-		$this->link = '';
55
-		$this->requestType = '';
56
-		$this->primary = false;
57
-	}
58
-
59
-	/**
60
-	 * @param string $label
61
-	 * @return $this
62
-	 * @throws \InvalidArgumentException if the label is invalid
63
-	 * @since 8.2.0
64
-	 */
65
-	public function setLabel($label) {
66
-		if (!is_string($label) || $label === '' || isset($label[32])) {
67
-			throw new \InvalidArgumentException('The given label is invalid');
68
-		}
69
-		$this->label = $label;
70
-		return $this;
71
-	}
72
-
73
-	/**
74
-	 * @return string
75
-	 * @since 8.2.0
76
-	 */
77
-	public function getLabel() {
78
-		return $this->label;
79
-	}
80
-
81
-	/**
82
-	 * @param string $label
83
-	 * @return $this
84
-	 * @throws \InvalidArgumentException if the label is invalid
85
-	 * @since 8.2.0
86
-	 */
87
-	public function setParsedLabel($label) {
88
-		if (!is_string($label) || $label === '') {
89
-			throw new \InvalidArgumentException('The given parsed label is invalid');
90
-		}
91
-		$this->labelParsed = $label;
92
-		return $this;
93
-	}
94
-
95
-	/**
96
-	 * @return string
97
-	 * @since 8.2.0
98
-	 */
99
-	public function getParsedLabel() {
100
-		return $this->labelParsed;
101
-	}
102
-
103
-	/**
104
-	 * @param $primary bool
105
-	 * @return $this
106
-	 * @throws \InvalidArgumentException if $primary is invalid
107
-	 * @since 9.0.0
108
-	 */
109
-	public function setPrimary($primary) {
110
-		if (!is_bool($primary)) {
111
-			throw new \InvalidArgumentException('The given primary option is invalid');
112
-		}
113
-
114
-		$this->primary = $primary;
115
-		return $this;
116
-	}
117
-
118
-	/**
119
-	 * @return bool
120
-	 * @since 9.0.0
121
-	 */
122
-	public function isPrimary() {
123
-		return $this->primary;
124
-	}
125
-
126
-	/**
127
-	 * @param string $link
128
-	 * @param string $requestType
129
-	 * @return $this
130
-	 * @throws \InvalidArgumentException if the link is invalid
131
-	 * @since 8.2.0
132
-	 */
133
-	public function setLink($link, $requestType) {
134
-		if (!is_string($link) || $link === '' || isset($link[256])) {
135
-			throw new \InvalidArgumentException('The given link is invalid');
136
-		}
137
-		if (!in_array($requestType, ['GET', 'POST', 'PUT', 'DELETE'], true)) {
138
-			throw new \InvalidArgumentException('The given request type is invalid');
139
-		}
140
-		$this->link = $link;
141
-		$this->requestType = $requestType;
142
-		return $this;
143
-	}
144
-
145
-	/**
146
-	 * @return string
147
-	 * @since 8.2.0
148
-	 */
149
-	public function getLink() {
150
-		return $this->link;
151
-	}
152
-
153
-	/**
154
-	 * @return string
155
-	 * @since 8.2.0
156
-	 */
157
-	public function getRequestType() {
158
-		return $this->requestType;
159
-	}
160
-
161
-	/**
162
-	 * @return bool
163
-	 */
164
-	public function isValid() {
165
-		return $this->label !== '' && $this->link !== '';
166
-	}
167
-
168
-	/**
169
-	 * @return bool
170
-	 */
171
-	public function isValidParsed() {
172
-		return $this->labelParsed !== '' && $this->link !== '';
173
-	}
30
+    /** @var string */
31
+    protected $label;
32
+
33
+    /** @var string */
34
+    protected $labelParsed;
35
+
36
+    /** @var string */
37
+    protected $link;
38
+
39
+    /** @var string */
40
+    protected $requestType;
41
+
42
+    /** @var string */
43
+    protected $icon;
44
+
45
+    /** @var bool */
46
+    protected $primary;
47
+
48
+    /**
49
+     * Constructor
50
+     */
51
+    public function __construct() {
52
+        $this->label = '';
53
+        $this->labelParsed = '';
54
+        $this->link = '';
55
+        $this->requestType = '';
56
+        $this->primary = false;
57
+    }
58
+
59
+    /**
60
+     * @param string $label
61
+     * @return $this
62
+     * @throws \InvalidArgumentException if the label is invalid
63
+     * @since 8.2.0
64
+     */
65
+    public function setLabel($label) {
66
+        if (!is_string($label) || $label === '' || isset($label[32])) {
67
+            throw new \InvalidArgumentException('The given label is invalid');
68
+        }
69
+        $this->label = $label;
70
+        return $this;
71
+    }
72
+
73
+    /**
74
+     * @return string
75
+     * @since 8.2.0
76
+     */
77
+    public function getLabel() {
78
+        return $this->label;
79
+    }
80
+
81
+    /**
82
+     * @param string $label
83
+     * @return $this
84
+     * @throws \InvalidArgumentException if the label is invalid
85
+     * @since 8.2.0
86
+     */
87
+    public function setParsedLabel($label) {
88
+        if (!is_string($label) || $label === '') {
89
+            throw new \InvalidArgumentException('The given parsed label is invalid');
90
+        }
91
+        $this->labelParsed = $label;
92
+        return $this;
93
+    }
94
+
95
+    /**
96
+     * @return string
97
+     * @since 8.2.0
98
+     */
99
+    public function getParsedLabel() {
100
+        return $this->labelParsed;
101
+    }
102
+
103
+    /**
104
+     * @param $primary bool
105
+     * @return $this
106
+     * @throws \InvalidArgumentException if $primary is invalid
107
+     * @since 9.0.0
108
+     */
109
+    public function setPrimary($primary) {
110
+        if (!is_bool($primary)) {
111
+            throw new \InvalidArgumentException('The given primary option is invalid');
112
+        }
113
+
114
+        $this->primary = $primary;
115
+        return $this;
116
+    }
117
+
118
+    /**
119
+     * @return bool
120
+     * @since 9.0.0
121
+     */
122
+    public function isPrimary() {
123
+        return $this->primary;
124
+    }
125
+
126
+    /**
127
+     * @param string $link
128
+     * @param string $requestType
129
+     * @return $this
130
+     * @throws \InvalidArgumentException if the link is invalid
131
+     * @since 8.2.0
132
+     */
133
+    public function setLink($link, $requestType) {
134
+        if (!is_string($link) || $link === '' || isset($link[256])) {
135
+            throw new \InvalidArgumentException('The given link is invalid');
136
+        }
137
+        if (!in_array($requestType, ['GET', 'POST', 'PUT', 'DELETE'], true)) {
138
+            throw new \InvalidArgumentException('The given request type is invalid');
139
+        }
140
+        $this->link = $link;
141
+        $this->requestType = $requestType;
142
+        return $this;
143
+    }
144
+
145
+    /**
146
+     * @return string
147
+     * @since 8.2.0
148
+     */
149
+    public function getLink() {
150
+        return $this->link;
151
+    }
152
+
153
+    /**
154
+     * @return string
155
+     * @since 8.2.0
156
+     */
157
+    public function getRequestType() {
158
+        return $this->requestType;
159
+    }
160
+
161
+    /**
162
+     * @return bool
163
+     */
164
+    public function isValid() {
165
+        return $this->label !== '' && $this->link !== '';
166
+    }
167
+
168
+    /**
169
+     * @return bool
170
+     */
171
+    public function isValidParsed() {
172
+        return $this->labelParsed !== '' && $this->link !== '';
173
+    }
174 174
 }
Please login to merge, or discard this patch.
lib/private/Notification/Manager.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -146,7 +146,7 @@
 block discarded – undo
146 146
 				throw new \InvalidArgumentException('The given notifier information is invalid');
147 147
 			}
148 148
 			if (isset($this->notifiersInfo[$notifier['id']])) {
149
-				throw new \InvalidArgumentException('The given notifier ID ' . $notifier['id'] . ' is already in use');
149
+				throw new \InvalidArgumentException('The given notifier ID '.$notifier['id'].' is already in use');
150 150
 			}
151 151
 			$this->notifiersInfo[$notifier['id']] = $notifier['name'];
152 152
 		}
Please login to merge, or discard this patch.
Indentation   +233 added lines, -233 removed lines patch added patch discarded remove patch
@@ -32,237 +32,237 @@
 block discarded – undo
32 32
 use OCP\RichObjectStrings\IValidator;
33 33
 
34 34
 class Manager implements IManager {
35
-	/** @var IValidator */
36
-	protected $validator;
37
-
38
-	/** @var IApp[] */
39
-	protected $apps;
40
-
41
-	/** @var INotifier[] */
42
-	protected $notifiers;
43
-
44
-	/** @var array[] */
45
-	protected $notifiersInfo;
46
-
47
-	/** @var \Closure[] */
48
-	protected $appsClosures;
49
-
50
-	/** @var \Closure[] */
51
-	protected $notifiersClosures;
52
-
53
-	/** @var \Closure[] */
54
-	protected $notifiersInfoClosures;
55
-
56
-	/** @var bool */
57
-	protected $preparingPushNotification;
58
-
59
-	/**
60
-	 * Manager constructor.
61
-	 *
62
-	 * @param IValidator $validator
63
-	 */
64
-	public function __construct(IValidator $validator) {
65
-		$this->validator = $validator;
66
-		$this->apps = [];
67
-		$this->notifiers = [];
68
-		$this->notifiersInfo = [];
69
-		$this->appsClosures = [];
70
-		$this->notifiersClosures = [];
71
-		$this->notifiersInfoClosures = [];
72
-		$this->preparingPushNotification = false;
73
-	}
74
-
75
-	/**
76
-	 * @param \Closure $service The service must implement IApp, otherwise a
77
-	 *                          \InvalidArgumentException is thrown later
78
-	 * @since 8.2.0
79
-	 */
80
-	public function registerApp(\Closure $service) {
81
-		$this->appsClosures[] = $service;
82
-		$this->apps = [];
83
-	}
84
-
85
-	/**
86
-	 * @param \Closure $service The service must implement INotifier, otherwise a
87
-	 *                          \InvalidArgumentException is thrown later
88
-	 * @param \Closure $info    An array with the keys 'id' and 'name' containing
89
-	 *                          the app id and the app name
90
-	 * @since 8.2.0 - Parameter $info was added in 9.0.0
91
-	 */
92
-	public function registerNotifier(\Closure $service, \Closure $info) {
93
-		$this->notifiersClosures[] = $service;
94
-		$this->notifiersInfoClosures[] = $info;
95
-		$this->notifiers = [];
96
-		$this->notifiersInfo = [];
97
-	}
98
-
99
-	/**
100
-	 * @return IApp[]
101
-	 */
102
-	protected function getApps(): array {
103
-		if (!empty($this->apps)) {
104
-			return $this->apps;
105
-		}
106
-
107
-		$this->apps = [];
108
-		foreach ($this->appsClosures as $closure) {
109
-			$app = $closure();
110
-			if (!($app instanceof IApp)) {
111
-				throw new \InvalidArgumentException('The given notification app does not implement the IApp interface');
112
-			}
113
-			$this->apps[] = $app;
114
-		}
115
-
116
-		return $this->apps;
117
-	}
118
-
119
-	/**
120
-	 * @return INotifier[]
121
-	 */
122
-	protected function getNotifiers(): array {
123
-		if (!empty($this->notifiers)) {
124
-			return $this->notifiers;
125
-		}
126
-
127
-		$this->notifiers = [];
128
-		foreach ($this->notifiersClosures as $closure) {
129
-			$notifier = $closure();
130
-			if (!($notifier instanceof INotifier)) {
131
-				throw new \InvalidArgumentException('The given notifier does not implement the INotifier interface');
132
-			}
133
-			$this->notifiers[] = $notifier;
134
-		}
135
-
136
-		return $this->notifiers;
137
-	}
138
-
139
-	/**
140
-	 * @return array[]
141
-	 */
142
-	public function listNotifiers(): array {
143
-		if (!empty($this->notifiersInfo)) {
144
-			return $this->notifiersInfo;
145
-		}
146
-
147
-		$this->notifiersInfo = [];
148
-		foreach ($this->notifiersInfoClosures as $closure) {
149
-			$notifier = $closure();
150
-			if (!\is_array($notifier) || \count($notifier) !== 2 || !isset($notifier['id'], $notifier['name'])) {
151
-				throw new \InvalidArgumentException('The given notifier information is invalid');
152
-			}
153
-			if (isset($this->notifiersInfo[$notifier['id']])) {
154
-				throw new \InvalidArgumentException('The given notifier ID ' . $notifier['id'] . ' is already in use');
155
-			}
156
-			$this->notifiersInfo[$notifier['id']] = $notifier['name'];
157
-		}
158
-
159
-		return $this->notifiersInfo;
160
-	}
161
-
162
-	/**
163
-	 * @return INotification
164
-	 * @since 8.2.0
165
-	 */
166
-	public function createNotification(): INotification {
167
-		return new Notification($this->validator);
168
-	}
169
-
170
-	/**
171
-	 * @return bool
172
-	 * @since 8.2.0
173
-	 */
174
-	public function hasNotifiers(): bool {
175
-		return !empty($this->notifiersClosures);
176
-	}
177
-
178
-	/**
179
-	 * @param bool $preparingPushNotification
180
-	 * @since 14.0.0
181
-	 */
182
-	public function setPreparingPushNotification($preparingPushNotification) {
183
-		$this->preparingPushNotification = $preparingPushNotification;
184
-	}
185
-
186
-	/**
187
-	 * @return bool
188
-	 * @since 14.0.0
189
-	 */
190
-	public function isPreparingPushNotification(): bool {
191
-		return $this->preparingPushNotification;
192
-	}
193
-
194
-	/**
195
-	 * @param INotification $notification
196
-	 * @throws \InvalidArgumentException When the notification is not valid
197
-	 * @since 8.2.0
198
-	 */
199
-	public function notify(INotification $notification) {
200
-		if (!$notification->isValid()) {
201
-			throw new \InvalidArgumentException('The given notification is invalid');
202
-		}
203
-
204
-		$apps = $this->getApps();
205
-
206
-		foreach ($apps as $app) {
207
-			try {
208
-				$app->notify($notification);
209
-			} catch (\InvalidArgumentException $e) {
210
-			}
211
-		}
212
-	}
213
-
214
-	/**
215
-	 * @param INotification $notification
216
-	 * @param string $languageCode The code of the language that should be used to prepare the notification
217
-	 * @return INotification
218
-	 * @throws \InvalidArgumentException When the notification was not prepared by a notifier
219
-	 * @since 8.2.0
220
-	 */
221
-	public function prepare(INotification $notification, $languageCode): INotification {
222
-		$notifiers = $this->getNotifiers();
223
-
224
-		foreach ($notifiers as $notifier) {
225
-			try {
226
-				$notification = $notifier->prepare($notification, $languageCode);
227
-			} catch (\InvalidArgumentException $e) {
228
-				continue;
229
-			}
230
-
231
-			if (!($notification instanceof INotification) || !$notification->isValidParsed()) {
232
-				throw new \InvalidArgumentException('The given notification has not been handled');
233
-			}
234
-		}
235
-
236
-		if (!($notification instanceof INotification) || !$notification->isValidParsed()) {
237
-			throw new \InvalidArgumentException('The given notification has not been handled');
238
-		}
239
-
240
-		return $notification;
241
-	}
242
-
243
-	/**
244
-	 * @param INotification $notification
245
-	 */
246
-	public function markProcessed(INotification $notification) {
247
-		$apps = $this->getApps();
248
-
249
-		foreach ($apps as $app) {
250
-			$app->markProcessed($notification);
251
-		}
252
-	}
253
-
254
-	/**
255
-	 * @param INotification $notification
256
-	 * @return int
257
-	 */
258
-	public function getCount(INotification $notification): int {
259
-		$apps = $this->getApps();
260
-
261
-		$count = 0;
262
-		foreach ($apps as $app) {
263
-			$count += $app->getCount($notification);
264
-		}
265
-
266
-		return $count;
267
-	}
35
+    /** @var IValidator */
36
+    protected $validator;
37
+
38
+    /** @var IApp[] */
39
+    protected $apps;
40
+
41
+    /** @var INotifier[] */
42
+    protected $notifiers;
43
+
44
+    /** @var array[] */
45
+    protected $notifiersInfo;
46
+
47
+    /** @var \Closure[] */
48
+    protected $appsClosures;
49
+
50
+    /** @var \Closure[] */
51
+    protected $notifiersClosures;
52
+
53
+    /** @var \Closure[] */
54
+    protected $notifiersInfoClosures;
55
+
56
+    /** @var bool */
57
+    protected $preparingPushNotification;
58
+
59
+    /**
60
+     * Manager constructor.
61
+     *
62
+     * @param IValidator $validator
63
+     */
64
+    public function __construct(IValidator $validator) {
65
+        $this->validator = $validator;
66
+        $this->apps = [];
67
+        $this->notifiers = [];
68
+        $this->notifiersInfo = [];
69
+        $this->appsClosures = [];
70
+        $this->notifiersClosures = [];
71
+        $this->notifiersInfoClosures = [];
72
+        $this->preparingPushNotification = false;
73
+    }
74
+
75
+    /**
76
+     * @param \Closure $service The service must implement IApp, otherwise a
77
+     *                          \InvalidArgumentException is thrown later
78
+     * @since 8.2.0
79
+     */
80
+    public function registerApp(\Closure $service) {
81
+        $this->appsClosures[] = $service;
82
+        $this->apps = [];
83
+    }
84
+
85
+    /**
86
+     * @param \Closure $service The service must implement INotifier, otherwise a
87
+     *                          \InvalidArgumentException is thrown later
88
+     * @param \Closure $info    An array with the keys 'id' and 'name' containing
89
+     *                          the app id and the app name
90
+     * @since 8.2.0 - Parameter $info was added in 9.0.0
91
+     */
92
+    public function registerNotifier(\Closure $service, \Closure $info) {
93
+        $this->notifiersClosures[] = $service;
94
+        $this->notifiersInfoClosures[] = $info;
95
+        $this->notifiers = [];
96
+        $this->notifiersInfo = [];
97
+    }
98
+
99
+    /**
100
+     * @return IApp[]
101
+     */
102
+    protected function getApps(): array {
103
+        if (!empty($this->apps)) {
104
+            return $this->apps;
105
+        }
106
+
107
+        $this->apps = [];
108
+        foreach ($this->appsClosures as $closure) {
109
+            $app = $closure();
110
+            if (!($app instanceof IApp)) {
111
+                throw new \InvalidArgumentException('The given notification app does not implement the IApp interface');
112
+            }
113
+            $this->apps[] = $app;
114
+        }
115
+
116
+        return $this->apps;
117
+    }
118
+
119
+    /**
120
+     * @return INotifier[]
121
+     */
122
+    protected function getNotifiers(): array {
123
+        if (!empty($this->notifiers)) {
124
+            return $this->notifiers;
125
+        }
126
+
127
+        $this->notifiers = [];
128
+        foreach ($this->notifiersClosures as $closure) {
129
+            $notifier = $closure();
130
+            if (!($notifier instanceof INotifier)) {
131
+                throw new \InvalidArgumentException('The given notifier does not implement the INotifier interface');
132
+            }
133
+            $this->notifiers[] = $notifier;
134
+        }
135
+
136
+        return $this->notifiers;
137
+    }
138
+
139
+    /**
140
+     * @return array[]
141
+     */
142
+    public function listNotifiers(): array {
143
+        if (!empty($this->notifiersInfo)) {
144
+            return $this->notifiersInfo;
145
+        }
146
+
147
+        $this->notifiersInfo = [];
148
+        foreach ($this->notifiersInfoClosures as $closure) {
149
+            $notifier = $closure();
150
+            if (!\is_array($notifier) || \count($notifier) !== 2 || !isset($notifier['id'], $notifier['name'])) {
151
+                throw new \InvalidArgumentException('The given notifier information is invalid');
152
+            }
153
+            if (isset($this->notifiersInfo[$notifier['id']])) {
154
+                throw new \InvalidArgumentException('The given notifier ID ' . $notifier['id'] . ' is already in use');
155
+            }
156
+            $this->notifiersInfo[$notifier['id']] = $notifier['name'];
157
+        }
158
+
159
+        return $this->notifiersInfo;
160
+    }
161
+
162
+    /**
163
+     * @return INotification
164
+     * @since 8.2.0
165
+     */
166
+    public function createNotification(): INotification {
167
+        return new Notification($this->validator);
168
+    }
169
+
170
+    /**
171
+     * @return bool
172
+     * @since 8.2.0
173
+     */
174
+    public function hasNotifiers(): bool {
175
+        return !empty($this->notifiersClosures);
176
+    }
177
+
178
+    /**
179
+     * @param bool $preparingPushNotification
180
+     * @since 14.0.0
181
+     */
182
+    public function setPreparingPushNotification($preparingPushNotification) {
183
+        $this->preparingPushNotification = $preparingPushNotification;
184
+    }
185
+
186
+    /**
187
+     * @return bool
188
+     * @since 14.0.0
189
+     */
190
+    public function isPreparingPushNotification(): bool {
191
+        return $this->preparingPushNotification;
192
+    }
193
+
194
+    /**
195
+     * @param INotification $notification
196
+     * @throws \InvalidArgumentException When the notification is not valid
197
+     * @since 8.2.0
198
+     */
199
+    public function notify(INotification $notification) {
200
+        if (!$notification->isValid()) {
201
+            throw new \InvalidArgumentException('The given notification is invalid');
202
+        }
203
+
204
+        $apps = $this->getApps();
205
+
206
+        foreach ($apps as $app) {
207
+            try {
208
+                $app->notify($notification);
209
+            } catch (\InvalidArgumentException $e) {
210
+            }
211
+        }
212
+    }
213
+
214
+    /**
215
+     * @param INotification $notification
216
+     * @param string $languageCode The code of the language that should be used to prepare the notification
217
+     * @return INotification
218
+     * @throws \InvalidArgumentException When the notification was not prepared by a notifier
219
+     * @since 8.2.0
220
+     */
221
+    public function prepare(INotification $notification, $languageCode): INotification {
222
+        $notifiers = $this->getNotifiers();
223
+
224
+        foreach ($notifiers as $notifier) {
225
+            try {
226
+                $notification = $notifier->prepare($notification, $languageCode);
227
+            } catch (\InvalidArgumentException $e) {
228
+                continue;
229
+            }
230
+
231
+            if (!($notification instanceof INotification) || !$notification->isValidParsed()) {
232
+                throw new \InvalidArgumentException('The given notification has not been handled');
233
+            }
234
+        }
235
+
236
+        if (!($notification instanceof INotification) || !$notification->isValidParsed()) {
237
+            throw new \InvalidArgumentException('The given notification has not been handled');
238
+        }
239
+
240
+        return $notification;
241
+    }
242
+
243
+    /**
244
+     * @param INotification $notification
245
+     */
246
+    public function markProcessed(INotification $notification) {
247
+        $apps = $this->getApps();
248
+
249
+        foreach ($apps as $app) {
250
+            $app->markProcessed($notification);
251
+        }
252
+    }
253
+
254
+    /**
255
+     * @param INotification $notification
256
+     * @return int
257
+     */
258
+    public function getCount(INotification $notification): int {
259
+        $apps = $this->getApps();
260
+
261
+        $count = 0;
262
+        foreach ($apps as $app) {
263
+            $count += $app->getCount($notification);
264
+        }
265
+
266
+        return $count;
267
+    }
268 268
 }
Please login to merge, or discard this patch.
lib/private/IntegrityCheck/Iterator/ExcludeFileByNameFilterIterator.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -48,7 +48,7 @@
 block discarded – undo
48 48
 	 * @return bool
49 49
 	 */
50 50
 	public function accept() {
51
-		if($this->isDir()) {
51
+		if ($this->isDir()) {
52 52
 			return true;
53 53
 		}
54 54
 
Please login to merge, or discard this patch.
Indentation   +26 added lines, -26 removed lines patch added patch discarded remove patch
@@ -31,32 +31,32 @@
 block discarded – undo
31 31
  * @package OC\Integritycheck\Iterator
32 32
  */
33 33
 class ExcludeFileByNameFilterIterator extends \RecursiveFilterIterator {
34
-	/**
35
-	 * Array of excluded file names. Those are not scanned by the integrity checker.
36
-	 * This is used to exclude files which administrators could upload by mistakes
37
-	 * such as .DS_Store files.
38
-	 *
39
-	 * @var array
40
-	 */
41
-	private $excludedFilenames = [
42
-		'.DS_Store', // Mac OS X
43
-		'Thumbs.db', // Microsoft Windows
44
-		'.directory', // Dolphin (KDE)
45
-		'.webapp', // Gentoo/Funtoo & derivatives use a tool known as webapp-config to manager wep-apps.
46
-	];
34
+    /**
35
+     * Array of excluded file names. Those are not scanned by the integrity checker.
36
+     * This is used to exclude files which administrators could upload by mistakes
37
+     * such as .DS_Store files.
38
+     *
39
+     * @var array
40
+     */
41
+    private $excludedFilenames = [
42
+        '.DS_Store', // Mac OS X
43
+        'Thumbs.db', // Microsoft Windows
44
+        '.directory', // Dolphin (KDE)
45
+        '.webapp', // Gentoo/Funtoo & derivatives use a tool known as webapp-config to manager wep-apps.
46
+    ];
47 47
 
48
-	/**
49
-	 * @return bool
50
-	 */
51
-	public function accept() {
52
-		if($this->isDir()) {
53
-			return true;
54
-		}
48
+    /**
49
+     * @return bool
50
+     */
51
+    public function accept() {
52
+        if($this->isDir()) {
53
+            return true;
54
+        }
55 55
 
56
-		return !\in_array(
57
-			$this->current()->getFilename(),
58
-			$this->excludedFilenames,
59
-			true
60
-		);
61
-	}
56
+        return !\in_array(
57
+            $this->current()->getFilename(),
58
+            $this->excludedFilenames,
59
+            true
60
+        );
61
+    }
62 62
 }
Please login to merge, or discard this patch.
lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php 2 patches
Spacing   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -30,25 +30,25 @@
 block discarded – undo
30 30
 		parent::__construct($iterator);
31 31
 
32 32
 		$appFolders = \OC::$APPSROOTS;
33
-		foreach($appFolders as $key => $appFolder) {
33
+		foreach ($appFolders as $key => $appFolder) {
34 34
 			$appFolders[$key] = rtrim($appFolder['path'], '/');
35 35
 		}
36 36
 
37 37
 		$excludedFolders = [
38
-			rtrim($root . '/data', '/'),
39
-			rtrim($root . '/themes', '/'),
40
-			rtrim($root . '/config', '/'),
41
-			rtrim($root . '/apps', '/'),
42
-			rtrim($root . '/assets', '/'),
43
-			rtrim($root . '/lost+found', '/'),
38
+			rtrim($root.'/data', '/'),
39
+			rtrim($root.'/themes', '/'),
40
+			rtrim($root.'/config', '/'),
41
+			rtrim($root.'/apps', '/'),
42
+			rtrim($root.'/assets', '/'),
43
+			rtrim($root.'/lost+found', '/'),
44 44
 			// Ignore folders generated by updater since the updater is replaced
45 45
 			// after the integrity check is run.
46 46
 			// See https://github.com/owncloud/updater/issues/318#issuecomment-212497846
47
-			rtrim($root . '/updater', '/'),
48
-			rtrim($root . '/_oc_upgrade', '/'),
47
+			rtrim($root.'/updater', '/'),
48
+			rtrim($root.'/_oc_upgrade', '/'),
49 49
 		];
50 50
 		$customDataDir = \OC::$server->getConfig()->getSystemValue('datadirectory', '');
51
-		if($customDataDir !== '') {
51
+		if ($customDataDir !== '') {
52 52
 			$excludedFolders[] = rtrim($customDataDir, '/');
53 53
 		}
54 54
 
Please login to merge, or discard this patch.
Indentation   +36 added lines, -36 removed lines patch added patch discarded remove patch
@@ -25,45 +25,45 @@
 block discarded – undo
25 25
 namespace OC\IntegrityCheck\Iterator;
26 26
 
27 27
 class ExcludeFoldersByPathFilterIterator extends \RecursiveFilterIterator {
28
-	private $excludedFolders;
28
+    private $excludedFolders;
29 29
 
30
-	public function __construct(\RecursiveIterator $iterator, $root = '') {
31
-		parent::__construct($iterator);
30
+    public function __construct(\RecursiveIterator $iterator, $root = '') {
31
+        parent::__construct($iterator);
32 32
 
33
-		$appFolders = \OC::$APPSROOTS;
34
-		foreach($appFolders as $key => $appFolder) {
35
-			$appFolders[$key] = rtrim($appFolder['path'], '/');
36
-		}
33
+        $appFolders = \OC::$APPSROOTS;
34
+        foreach($appFolders as $key => $appFolder) {
35
+            $appFolders[$key] = rtrim($appFolder['path'], '/');
36
+        }
37 37
 
38
-		$excludedFolders = [
39
-			rtrim($root . '/data', '/'),
40
-			rtrim($root . '/themes', '/'),
41
-			rtrim($root . '/config', '/'),
42
-			rtrim($root . '/apps', '/'),
43
-			rtrim($root . '/assets', '/'),
44
-			rtrim($root . '/lost+found', '/'),
45
-			// Ignore folders generated by updater since the updater is replaced
46
-			// after the integrity check is run.
47
-			// See https://github.com/owncloud/updater/issues/318#issuecomment-212497846
48
-			rtrim($root . '/updater', '/'),
49
-			rtrim($root . '/_oc_upgrade', '/'),
50
-		];
51
-		$customDataDir = \OC::$server->getConfig()->getSystemValue('datadirectory', '');
52
-		if($customDataDir !== '') {
53
-			$excludedFolders[] = rtrim($customDataDir, '/');
54
-		}
38
+        $excludedFolders = [
39
+            rtrim($root . '/data', '/'),
40
+            rtrim($root . '/themes', '/'),
41
+            rtrim($root . '/config', '/'),
42
+            rtrim($root . '/apps', '/'),
43
+            rtrim($root . '/assets', '/'),
44
+            rtrim($root . '/lost+found', '/'),
45
+            // Ignore folders generated by updater since the updater is replaced
46
+            // after the integrity check is run.
47
+            // See https://github.com/owncloud/updater/issues/318#issuecomment-212497846
48
+            rtrim($root . '/updater', '/'),
49
+            rtrim($root . '/_oc_upgrade', '/'),
50
+        ];
51
+        $customDataDir = \OC::$server->getConfig()->getSystemValue('datadirectory', '');
52
+        if($customDataDir !== '') {
53
+            $excludedFolders[] = rtrim($customDataDir, '/');
54
+        }
55 55
 
56
-		$this->excludedFolders = array_merge($excludedFolders, $appFolders);
57
-	}
56
+        $this->excludedFolders = array_merge($excludedFolders, $appFolders);
57
+    }
58 58
 
59
-	/**
60
-	 * @return bool
61
-	 */
62
-	public function accept() {
63
-		return !\in_array(
64
-			$this->current()->getPathName(),
65
-			$this->excludedFolders,
66
-			true
67
-		);
68
-	}
59
+    /**
60
+     * @return bool
61
+     */
62
+    public function accept() {
63
+        return !\in_array(
64
+            $this->current()->getPathName(),
65
+            $this->excludedFolders,
66
+            true
67
+        );
68
+    }
69 69
 }
Please login to merge, or discard this patch.