Completed
Pull Request — master (#9589)
by Julius
45:02 queued 25:32
created
lib/private/NavigationManager.php 1 patch
Indentation   +260 added lines, -260 removed lines patch added patch discarded remove patch
@@ -44,290 +44,290 @@
 block discarded – undo
44 44
  */
45 45
 
46 46
 class NavigationManager implements INavigationManager {
47
-	protected $entries = [];
48
-	protected $closureEntries = [];
49
-	protected $activeEntry;
50
-	/** @var bool */
51
-	protected $init = false;
52
-	/** @var IAppManager|AppManager */
53
-	protected $appManager;
54
-	/** @var IURLGenerator */
55
-	private $urlGenerator;
56
-	/** @var IFactory */
57
-	private $l10nFac;
58
-	/** @var IUserSession */
59
-	private $userSession;
60
-	/** @var IGroupManager|Manager */
61
-	private $groupManager;
62
-	/** @var IConfig */
63
-	private $config;
47
+    protected $entries = [];
48
+    protected $closureEntries = [];
49
+    protected $activeEntry;
50
+    /** @var bool */
51
+    protected $init = false;
52
+    /** @var IAppManager|AppManager */
53
+    protected $appManager;
54
+    /** @var IURLGenerator */
55
+    private $urlGenerator;
56
+    /** @var IFactory */
57
+    private $l10nFac;
58
+    /** @var IUserSession */
59
+    private $userSession;
60
+    /** @var IGroupManager|Manager */
61
+    private $groupManager;
62
+    /** @var IConfig */
63
+    private $config;
64 64
 
65
-	public function __construct(IAppManager $appManager,
66
-						 IURLGenerator $urlGenerator,
67
-						 IFactory $l10nFac,
68
-						 IUserSession $userSession,
69
-						 IGroupManager $groupManager,
70
-						 IConfig $config) {
71
-		$this->appManager = $appManager;
72
-		$this->urlGenerator = $urlGenerator;
73
-		$this->l10nFac = $l10nFac;
74
-		$this->userSession = $userSession;
75
-		$this->groupManager = $groupManager;
76
-		$this->config = $config;
77
-	}
65
+    public function __construct(IAppManager $appManager,
66
+                            IURLGenerator $urlGenerator,
67
+                            IFactory $l10nFac,
68
+                            IUserSession $userSession,
69
+                            IGroupManager $groupManager,
70
+                            IConfig $config) {
71
+        $this->appManager = $appManager;
72
+        $this->urlGenerator = $urlGenerator;
73
+        $this->l10nFac = $l10nFac;
74
+        $this->userSession = $userSession;
75
+        $this->groupManager = $groupManager;
76
+        $this->config = $config;
77
+    }
78 78
 
79
-	/**
80
-	 * Creates a new navigation entry
81
-	 *
82
-	 * @param array|\Closure $entry Array containing: id, name, order, icon and href key
83
-	 *					The use of a closure is preferred, because it will avoid
84
-	 * 					loading the routing of your app, unless required.
85
-	 * @return void
86
-	 */
87
-	public function add($entry) {
88
-		if ($entry instanceof \Closure) {
89
-			$this->closureEntries[] = $entry;
90
-			return;
91
-		}
79
+    /**
80
+     * Creates a new navigation entry
81
+     *
82
+     * @param array|\Closure $entry Array containing: id, name, order, icon and href key
83
+     *					The use of a closure is preferred, because it will avoid
84
+     * 					loading the routing of your app, unless required.
85
+     * @return void
86
+     */
87
+    public function add($entry) {
88
+        if ($entry instanceof \Closure) {
89
+            $this->closureEntries[] = $entry;
90
+            return;
91
+        }
92 92
 
93
-		$entry['active'] = false;
94
-		if(!isset($entry['icon'])) {
95
-			$entry['icon'] = '';
96
-		}
97
-		if(!isset($entry['classes'])) {
98
-			$entry['classes'] = '';
99
-		}
100
-		if(!isset($entry['type'])) {
101
-			$entry['type'] = 'link';
102
-		}
103
-		$this->entries[] = $entry;
104
-	}
93
+        $entry['active'] = false;
94
+        if(!isset($entry['icon'])) {
95
+            $entry['icon'] = '';
96
+        }
97
+        if(!isset($entry['classes'])) {
98
+            $entry['classes'] = '';
99
+        }
100
+        if(!isset($entry['type'])) {
101
+            $entry['type'] = 'link';
102
+        }
103
+        $this->entries[] = $entry;
104
+    }
105 105
 
106
-	/**
107
-	 * Get a list of navigation entries
108
-	 *
109
-	 * @param string $type type of the navigation entries
110
-	 * @return array
111
-	 */
112
-	public function getAll(string $type = 'link'): array {
113
-		$this->init();
114
-		foreach ($this->closureEntries as $c) {
115
-			$this->add($c());
116
-		}
117
-		$this->closureEntries = array();
106
+    /**
107
+     * Get a list of navigation entries
108
+     *
109
+     * @param string $type type of the navigation entries
110
+     * @return array
111
+     */
112
+    public function getAll(string $type = 'link'): array {
113
+        $this->init();
114
+        foreach ($this->closureEntries as $c) {
115
+            $this->add($c());
116
+        }
117
+        $this->closureEntries = array();
118 118
 
119
-		$result = $this->entries;
120
-		if ($type !== 'all') {
121
-			$result = array_filter($this->entries, function($entry) use ($type) {
122
-				return $entry['type'] === $type;
123
-			});
124
-		}
119
+        $result = $this->entries;
120
+        if ($type !== 'all') {
121
+            $result = array_filter($this->entries, function($entry) use ($type) {
122
+                return $entry['type'] === $type;
123
+            });
124
+        }
125 125
 
126
-		return $this->proceedNavigation($result);
127
-	}
126
+        return $this->proceedNavigation($result);
127
+    }
128 128
 
129
-	/**
130
-	 * Sort navigation entries by order, name and set active flag
131
-	 *
132
-	 * @param array $list
133
-	 * @return array
134
-	 */
135
-	private function proceedNavigation(array $list): array {
136
-		usort($list, function($a, $b) {
137
-			if (isset($a['order']) && isset($b['order'])) {
138
-				return ($a['order'] < $b['order']) ? -1 : 1;
139
-			} else if (isset($a['order']) || isset($b['order'])) {
140
-				return isset($a['order']) ? -1 : 1;
141
-			} else {
142
-				return ($a['name'] < $b['name']) ? -1 : 1;
143
-			}
144
-		});
129
+    /**
130
+     * Sort navigation entries by order, name and set active flag
131
+     *
132
+     * @param array $list
133
+     * @return array
134
+     */
135
+    private function proceedNavigation(array $list): array {
136
+        usort($list, function($a, $b) {
137
+            if (isset($a['order']) && isset($b['order'])) {
138
+                return ($a['order'] < $b['order']) ? -1 : 1;
139
+            } else if (isset($a['order']) || isset($b['order'])) {
140
+                return isset($a['order']) ? -1 : 1;
141
+            } else {
142
+                return ($a['name'] < $b['name']) ? -1 : 1;
143
+            }
144
+        });
145 145
 
146
-		$activeApp = $this->getActiveEntry();
147
-		if ($activeApp !== null) {
148
-			foreach ($list as $index => &$navEntry) {
149
-				if ($navEntry['id'] == $activeApp) {
150
-					$navEntry['active'] = true;
151
-				} else {
152
-					$navEntry['active'] = false;
153
-				}
154
-			}
155
-			unset($navEntry);
156
-		}
146
+        $activeApp = $this->getActiveEntry();
147
+        if ($activeApp !== null) {
148
+            foreach ($list as $index => &$navEntry) {
149
+                if ($navEntry['id'] == $activeApp) {
150
+                    $navEntry['active'] = true;
151
+                } else {
152
+                    $navEntry['active'] = false;
153
+                }
154
+            }
155
+            unset($navEntry);
156
+        }
157 157
 
158
-		return $list;
159
-	}
158
+        return $list;
159
+    }
160 160
 
161 161
 
162
-	/**
163
-	 * removes all the entries
164
-	 */
165
-	public function clear($loadDefaultLinks = true) {
166
-		$this->entries = [];
167
-		$this->closureEntries = [];
168
-		$this->init = !$loadDefaultLinks;
169
-	}
162
+    /**
163
+     * removes all the entries
164
+     */
165
+    public function clear($loadDefaultLinks = true) {
166
+        $this->entries = [];
167
+        $this->closureEntries = [];
168
+        $this->init = !$loadDefaultLinks;
169
+    }
170 170
 
171
-	/**
172
-	 * Sets the current navigation entry of the currently running app
173
-	 * @param string $id of the app entry to activate (from added $entry)
174
-	 */
175
-	public function setActiveEntry($id) {
176
-		$this->activeEntry = $id;
177
-	}
171
+    /**
172
+     * Sets the current navigation entry of the currently running app
173
+     * @param string $id of the app entry to activate (from added $entry)
174
+     */
175
+    public function setActiveEntry($id) {
176
+        $this->activeEntry = $id;
177
+    }
178 178
 
179
-	/**
180
-	 * gets the active Menu entry
181
-	 * @return string id or empty string
182
-	 *
183
-	 * This function returns the id of the active navigation entry (set by
184
-	 * setActiveEntry
185
-	 */
186
-	public function getActiveEntry() {
187
-		return $this->activeEntry;
188
-	}
179
+    /**
180
+     * gets the active Menu entry
181
+     * @return string id or empty string
182
+     *
183
+     * This function returns the id of the active navigation entry (set by
184
+     * setActiveEntry
185
+     */
186
+    public function getActiveEntry() {
187
+        return $this->activeEntry;
188
+    }
189 189
 
190
-	private function init() {
191
-		if ($this->init) {
192
-			return;
193
-		}
194
-		$this->init = true;
190
+    private function init() {
191
+        if ($this->init) {
192
+            return;
193
+        }
194
+        $this->init = true;
195 195
 
196
-		$l = $this->l10nFac->get('lib');
197
-		if ($this->config->getSystemValue('knowledgebaseenabled', true)) {
198
-			$this->add([
199
-				'type' => 'settings',
200
-				'id' => 'help',
201
-				'order' => 5,
202
-				'href' => $this->urlGenerator->linkToRoute('settings_help'),
203
-				'name' => $l->t('Help'),
204
-				'icon' => $this->urlGenerator->imagePath('settings', 'help.svg'),
205
-			]);
206
-		}
196
+        $l = $this->l10nFac->get('lib');
197
+        if ($this->config->getSystemValue('knowledgebaseenabled', true)) {
198
+            $this->add([
199
+                'type' => 'settings',
200
+                'id' => 'help',
201
+                'order' => 5,
202
+                'href' => $this->urlGenerator->linkToRoute('settings_help'),
203
+                'name' => $l->t('Help'),
204
+                'icon' => $this->urlGenerator->imagePath('settings', 'help.svg'),
205
+            ]);
206
+        }
207 207
 
208
-		if ($this->userSession->isLoggedIn()) {
209
-			if ($this->isAdmin()) {
210
-				// App management
211
-				$this->add([
212
-					'type' => 'settings',
213
-					'id' => 'core_apps',
214
-					'order' => 3,
215
-					'href' => $this->urlGenerator->linkToRoute('settings.AppSettings.viewApps'),
216
-					'icon' => $this->urlGenerator->imagePath('settings', 'apps.svg'),
217
-					'name' => $l->t('Apps'),
218
-				]);
219
-			}
208
+        if ($this->userSession->isLoggedIn()) {
209
+            if ($this->isAdmin()) {
210
+                // App management
211
+                $this->add([
212
+                    'type' => 'settings',
213
+                    'id' => 'core_apps',
214
+                    'order' => 3,
215
+                    'href' => $this->urlGenerator->linkToRoute('settings.AppSettings.viewApps'),
216
+                    'icon' => $this->urlGenerator->imagePath('settings', 'apps.svg'),
217
+                    'name' => $l->t('Apps'),
218
+                ]);
219
+            }
220 220
 
221
-			// Personal and (if applicable) admin settings
222
-			$this->add([
223
-				'type' => 'settings',
224
-				'id' => 'settings',
225
-				'order' => 1,
226
-				'href' => $this->urlGenerator->linkToRoute('settings.PersonalSettings.index'),
227
-				'name' => $l->t('Settings'),
228
-				'icon' => $this->urlGenerator->imagePath('settings', 'admin.svg'),
229
-			]);
221
+            // Personal and (if applicable) admin settings
222
+            $this->add([
223
+                'type' => 'settings',
224
+                'id' => 'settings',
225
+                'order' => 1,
226
+                'href' => $this->urlGenerator->linkToRoute('settings.PersonalSettings.index'),
227
+                'name' => $l->t('Settings'),
228
+                'icon' => $this->urlGenerator->imagePath('settings', 'admin.svg'),
229
+            ]);
230 230
 
231
-			$logoutUrl = \OC_User::getLogoutUrl($this->urlGenerator);
232
-			if($logoutUrl !== '') {
233
-				// Logout
234
-				$this->add([
235
-					'type' => 'settings',
236
-					'id' => 'logout',
237
-					'order' => 99999,
238
-					'href' => $logoutUrl,
239
-					'name' => $l->t('Log out'),
240
-					'icon' => $this->urlGenerator->imagePath('core', 'actions/logout.svg'),
241
-				]);
242
-			}
231
+            $logoutUrl = \OC_User::getLogoutUrl($this->urlGenerator);
232
+            if($logoutUrl !== '') {
233
+                // Logout
234
+                $this->add([
235
+                    'type' => 'settings',
236
+                    'id' => 'logout',
237
+                    'order' => 99999,
238
+                    'href' => $logoutUrl,
239
+                    'name' => $l->t('Log out'),
240
+                    'icon' => $this->urlGenerator->imagePath('core', 'actions/logout.svg'),
241
+                ]);
242
+            }
243 243
 
244
-			if ($this->isSubadmin()) {
245
-				// User management
246
-				$this->add([
247
-					'type' => 'settings',
248
-					'id' => 'core_users',
249
-					'order' => 4,
250
-					'href' => $this->urlGenerator->linkToRoute('settings.Users.usersList'),
251
-					'name' => $l->t('Users'),
252
-					'icon' => $this->urlGenerator->imagePath('settings', 'users.svg'),
253
-				]);
254
-			}
255
-		}
244
+            if ($this->isSubadmin()) {
245
+                // User management
246
+                $this->add([
247
+                    'type' => 'settings',
248
+                    'id' => 'core_users',
249
+                    'order' => 4,
250
+                    'href' => $this->urlGenerator->linkToRoute('settings.Users.usersList'),
251
+                    'name' => $l->t('Users'),
252
+                    'icon' => $this->urlGenerator->imagePath('settings', 'users.svg'),
253
+                ]);
254
+            }
255
+        }
256 256
 
257
-		if ($this->appManager === 'null') {
258
-			return;
259
-		}
257
+        if ($this->appManager === 'null') {
258
+            return;
259
+        }
260 260
 
261
-		if ($this->userSession->isLoggedIn()) {
262
-			$apps = $this->appManager->getEnabledAppsForUser($this->userSession->getUser());
263
-		} else {
264
-			$apps = $this->appManager->getInstalledApps();
265
-		}
261
+        if ($this->userSession->isLoggedIn()) {
262
+            $apps = $this->appManager->getEnabledAppsForUser($this->userSession->getUser());
263
+        } else {
264
+            $apps = $this->appManager->getInstalledApps();
265
+        }
266 266
 
267
-		foreach ($apps as $app) {
268
-			if (!$this->userSession->isLoggedIn() && !$this->appManager->isEnabledForUser($app, $this->userSession->getUser())) {
269
-				continue;
270
-			}
267
+        foreach ($apps as $app) {
268
+            if (!$this->userSession->isLoggedIn() && !$this->appManager->isEnabledForUser($app, $this->userSession->getUser())) {
269
+                continue;
270
+            }
271 271
 
272
-			// load plugins and collections from info.xml
273
-			$info = $this->appManager->getAppInfo($app);
274
-			if (empty($info['navigations'])) {
275
-				continue;
276
-			}
277
-			foreach ($info['navigations'] as $nav) {
278
-				if (!isset($nav['name'])) {
279
-					continue;
280
-				}
281
-				if (!isset($nav['route'])) {
282
-					continue;
283
-				}
284
-				$role = isset($nav['@attributes']['role']) ? $nav['@attributes']['role'] : 'all';
285
-				if ($role === 'admin' && !$this->isAdmin()) {
286
-					continue;
287
-				}
288
-				$l = $this->l10nFac->get($app);
289
-				$id = isset($nav['id']) ? $nav['id'] : $app;
290
-				$order = isset($nav['order']) ? $nav['order'] : 100;
291
-				$type = isset($nav['type']) ? $nav['type'] : 'link';
292
-				$route = $nav['route'] !== '' ? $this->urlGenerator->linkToRoute($nav['route']) : '';
293
-				$icon = isset($nav['icon']) ? $nav['icon'] : 'app.svg';
294
-				foreach ([$icon, "$app.svg"] as $i) {
295
-					try {
296
-						$icon = $this->urlGenerator->imagePath($app, $i);
297
-						break;
298
-					} catch (\RuntimeException $ex) {
299
-						// no icon? - ignore it then
300
-					}
301
-				}
302
-				if ($icon === null) {
303
-					$icon = $this->urlGenerator->imagePath('core', 'default-app-icon');
304
-				}
272
+            // load plugins and collections from info.xml
273
+            $info = $this->appManager->getAppInfo($app);
274
+            if (empty($info['navigations'])) {
275
+                continue;
276
+            }
277
+            foreach ($info['navigations'] as $nav) {
278
+                if (!isset($nav['name'])) {
279
+                    continue;
280
+                }
281
+                if (!isset($nav['route'])) {
282
+                    continue;
283
+                }
284
+                $role = isset($nav['@attributes']['role']) ? $nav['@attributes']['role'] : 'all';
285
+                if ($role === 'admin' && !$this->isAdmin()) {
286
+                    continue;
287
+                }
288
+                $l = $this->l10nFac->get($app);
289
+                $id = isset($nav['id']) ? $nav['id'] : $app;
290
+                $order = isset($nav['order']) ? $nav['order'] : 100;
291
+                $type = isset($nav['type']) ? $nav['type'] : 'link';
292
+                $route = $nav['route'] !== '' ? $this->urlGenerator->linkToRoute($nav['route']) : '';
293
+                $icon = isset($nav['icon']) ? $nav['icon'] : 'app.svg';
294
+                foreach ([$icon, "$app.svg"] as $i) {
295
+                    try {
296
+                        $icon = $this->urlGenerator->imagePath($app, $i);
297
+                        break;
298
+                    } catch (\RuntimeException $ex) {
299
+                        // no icon? - ignore it then
300
+                    }
301
+                }
302
+                if ($icon === null) {
303
+                    $icon = $this->urlGenerator->imagePath('core', 'default-app-icon');
304
+                }
305 305
 
306
-				$this->add([
307
-					'id' => $id,
308
-					'order' => $order,
309
-					'href' => $route,
310
-					'icon' => $icon,
311
-					'type' => $type,
312
-					'name' => $l->t($nav['name']),
313
-				]);
314
-			}
315
-		}
316
-	}
306
+                $this->add([
307
+                    'id' => $id,
308
+                    'order' => $order,
309
+                    'href' => $route,
310
+                    'icon' => $icon,
311
+                    'type' => $type,
312
+                    'name' => $l->t($nav['name']),
313
+                ]);
314
+            }
315
+        }
316
+    }
317 317
 
318
-	private function isAdmin() {
319
-		$user = $this->userSession->getUser();
320
-		if ($user !== null) {
321
-			return $this->groupManager->isAdmin($user->getUID());
322
-		}
323
-		return false;
324
-	}
318
+    private function isAdmin() {
319
+        $user = $this->userSession->getUser();
320
+        if ($user !== null) {
321
+            return $this->groupManager->isAdmin($user->getUID());
322
+        }
323
+        return false;
324
+    }
325 325
 
326
-	private function isSubadmin() {
327
-		$user = $this->userSession->getUser();
328
-		if ($user !== null) {
329
-			return $this->groupManager->getSubAdmin()->isSubAdmin($user);
330
-		}
331
-		return false;
332
-	}
326
+    private function isSubadmin() {
327
+        $user = $this->userSession->getUser();
328
+        if ($user !== null) {
329
+            return $this->groupManager->getSubAdmin()->isSubAdmin($user);
330
+        }
331
+        return false;
332
+    }
333 333
 }
Please login to merge, or discard this patch.