Completed
Push — master ( 6e4c54...7cf3e9 )
by Justin
03:37
created
system/packages/com.jukusoft.cms.page/classes/page.php 2 patches
Indentation   +487 added lines, -487 removed lines patch added patch discarded remove patch
@@ -18,510 +18,510 @@
 block discarded – undo
18 18
 
19 19
 class Page {
20 20
 
21
-	protected $pageID = -1;
22
-	protected $alias = null;
23
-	protected $row = null;
24
-	protected $pagetype = "";
25
-
26
-	protected $author = null;
27
-
28
-	//changed columns to save with save()
29
-	protected $changes = array();
30
-
31
-	public function __construct() {
32
-		//
33
-	}
34
-
35
-	public function load ($alias = null) {
36
-		if ($alias == null) {
37
-			if (isset($_REQUEST['page']) && !empty($_REQUEST['page'])) {
38
-				$alias = Validator_String::get($_REQUEST['page']);
39
-			} else {
40
-				$alias = $this->getDomain()->getHomePage();
41
-			}
42
-		} else {
43
-			//$alias = Database::getInstance()->escape($alias);
44
-		}
45
-
46
-		Events::throwEvent("get_alias", array(
47
-			'alias' => &$alias,
48
-			'page' => &$this,
49
-			'domain' => $this->getDomain()
50
-		));
51
-
52
-		$this->alias = $alias;
53
-
54
-		if (Cache::contains("pages", "page_" . $alias)) {
55
-			$this->row = Cache::get("pages", "page_" . $alias);
56
-		} else {
57
-			$row = Database::getInstance()->getRow("SELECT * FROM `{praefix}pages` WHERE `alias` = :alias AND `activated` = '1'; ", array('alias' => $alias));
58
-
59
-			if (!$row) {
60
-				if (PHPUtils::strEqs("error404", $alias)) {
61
-					throw new IllegalStateException("No page with alias 'error404' exists (requested alias: " . $alias . ").");
62
-				}
63
-
64
-				//page not found
65
-				$new_alias = "error404";
66
-
67
-				Events::throwEvent("load_page_error404", array(
68
-					'alias' => &$new_alias,
69
-					'original_alias' => $alias,
70
-					'page' => &$this,
71
-					'domain' => $this->getDomain()
72
-				));
73
-
74
-				$this->load($new_alias);
75
-				return null;
76
-			}
77
-
78
-			$this->row = $row;
79
-
80
-			//cache result
81
-			Cache::put("pages", "page_" . $alias, $row);
82
-		}
83
-
84
-		//get pageID
85
-		$this->pageID = $this->row['id'];
86
-
87
-		//get name of page type (class name)
88
-		$this->pagetype = $this->row['page_type'];
89
-	}
90
-
91
-	public function loadByID (int $pageID, bool $use_cache = true) {
92
-		if ($use_cache && Cache::contains("pages", "pageID_" . $pageID)) {
93
-			$this->row = Cache::get("pages", "pageID_" . $pageID);
94
-		} else {
95
-			$row = Database::getInstance()->getRow("SELECT * FROM `{praefix}pages` WHERE `id` = :pageID; ", array('pageID' => $pageID));
96
-
97
-			if (!$row) {
98
-				throw new IllegalStateException("Page with pageID " . $pageID . " doesnt exists!");
99
-			}
100
-
101
-			$this->row = $row;
102
-
103
-			//cache result
104
-			Cache::put("pages", "pageID_" . $pageID, $row);
105
-		}
106
-
107
-		$this->pageID = $this->row['id'];
108
-		$this->alias = $this->row['alias'];
109
-
110
-		//get name of page type (class name)
111
-		$this->pagetype = $this->row['page_type'];
112
-	}
113
-
114
-	protected function getDomain () : Domain {
115
-		return Registry::singleton()->getObject("domain");
116
-	}
117
-
118
-	public function reloadCache () {
119
-		Cache::clear("pages");
120
-	}
121
-
122
-	public function getPageID () : int {
123
-		return $this->row['id'];
124
-	}
125
-
126
-	public function getAlias () : string {
127
-		return $this->alias;
128
-	}
129
-
130
-	public function getPageType () : string {
131
-		return $this->pagetype;
132
-	}
133
-
134
-	public function getTitle () : string {
135
-		return $this->row['title'];
136
-	}
137
-
138
-	public function setTitle (string $title) {
139
-		$this->row['title'] = $title;
140
-		$this->changes[] = "title";
141
-	}
142
-
143
-	public function getContent () : string {
144
-		return $this->row['content'];
145
-	}
146
-
147
-	public function setContent (string $content) {
148
-		$this->row['content'] = $content;
149
-		$this->changes[] = "content";
150
-		$this->changes[] = "content";
151
-	}
152
-
153
-	public function getGlobalMenuID () : int {
154
-		return $this->row['global_menu'];
155
-	}
156
-
157
-	public function getLocalMenuID () : int {
158
-		return $this->row['local_menu'];
159
-	}
160
-
161
-	public function getStyle () : string {
162
-		return $this->row['design'];
163
-	}
164
-
165
-	public function getFolder () : string {
166
-		return $this->row['folder'];
167
-	}
21
+    protected $pageID = -1;
22
+    protected $alias = null;
23
+    protected $row = null;
24
+    protected $pagetype = "";
25
+
26
+    protected $author = null;
27
+
28
+    //changed columns to save with save()
29
+    protected $changes = array();
30
+
31
+    public function __construct() {
32
+        //
33
+    }
34
+
35
+    public function load ($alias = null) {
36
+        if ($alias == null) {
37
+            if (isset($_REQUEST['page']) && !empty($_REQUEST['page'])) {
38
+                $alias = Validator_String::get($_REQUEST['page']);
39
+            } else {
40
+                $alias = $this->getDomain()->getHomePage();
41
+            }
42
+        } else {
43
+            //$alias = Database::getInstance()->escape($alias);
44
+        }
45
+
46
+        Events::throwEvent("get_alias", array(
47
+            'alias' => &$alias,
48
+            'page' => &$this,
49
+            'domain' => $this->getDomain()
50
+        ));
51
+
52
+        $this->alias = $alias;
53
+
54
+        if (Cache::contains("pages", "page_" . $alias)) {
55
+            $this->row = Cache::get("pages", "page_" . $alias);
56
+        } else {
57
+            $row = Database::getInstance()->getRow("SELECT * FROM `{praefix}pages` WHERE `alias` = :alias AND `activated` = '1'; ", array('alias' => $alias));
58
+
59
+            if (!$row) {
60
+                if (PHPUtils::strEqs("error404", $alias)) {
61
+                    throw new IllegalStateException("No page with alias 'error404' exists (requested alias: " . $alias . ").");
62
+                }
63
+
64
+                //page not found
65
+                $new_alias = "error404";
66
+
67
+                Events::throwEvent("load_page_error404", array(
68
+                    'alias' => &$new_alias,
69
+                    'original_alias' => $alias,
70
+                    'page' => &$this,
71
+                    'domain' => $this->getDomain()
72
+                ));
73
+
74
+                $this->load($new_alias);
75
+                return null;
76
+            }
77
+
78
+            $this->row = $row;
79
+
80
+            //cache result
81
+            Cache::put("pages", "page_" . $alias, $row);
82
+        }
83
+
84
+        //get pageID
85
+        $this->pageID = $this->row['id'];
86
+
87
+        //get name of page type (class name)
88
+        $this->pagetype = $this->row['page_type'];
89
+    }
90
+
91
+    public function loadByID (int $pageID, bool $use_cache = true) {
92
+        if ($use_cache && Cache::contains("pages", "pageID_" . $pageID)) {
93
+            $this->row = Cache::get("pages", "pageID_" . $pageID);
94
+        } else {
95
+            $row = Database::getInstance()->getRow("SELECT * FROM `{praefix}pages` WHERE `id` = :pageID; ", array('pageID' => $pageID));
96
+
97
+            if (!$row) {
98
+                throw new IllegalStateException("Page with pageID " . $pageID . " doesnt exists!");
99
+            }
100
+
101
+            $this->row = $row;
102
+
103
+            //cache result
104
+            Cache::put("pages", "pageID_" . $pageID, $row);
105
+        }
106
+
107
+        $this->pageID = $this->row['id'];
108
+        $this->alias = $this->row['alias'];
109
+
110
+        //get name of page type (class name)
111
+        $this->pagetype = $this->row['page_type'];
112
+    }
113
+
114
+    protected function getDomain () : Domain {
115
+        return Registry::singleton()->getObject("domain");
116
+    }
117
+
118
+    public function reloadCache () {
119
+        Cache::clear("pages");
120
+    }
121
+
122
+    public function getPageID () : int {
123
+        return $this->row['id'];
124
+    }
125
+
126
+    public function getAlias () : string {
127
+        return $this->alias;
128
+    }
129
+
130
+    public function getPageType () : string {
131
+        return $this->pagetype;
132
+    }
133
+
134
+    public function getTitle () : string {
135
+        return $this->row['title'];
136
+    }
137
+
138
+    public function setTitle (string $title) {
139
+        $this->row['title'] = $title;
140
+        $this->changes[] = "title";
141
+    }
142
+
143
+    public function getContent () : string {
144
+        return $this->row['content'];
145
+    }
146
+
147
+    public function setContent (string $content) {
148
+        $this->row['content'] = $content;
149
+        $this->changes[] = "content";
150
+        $this->changes[] = "content";
151
+    }
152
+
153
+    public function getGlobalMenuID () : int {
154
+        return $this->row['global_menu'];
155
+    }
156
+
157
+    public function getLocalMenuID () : int {
158
+        return $this->row['local_menu'];
159
+    }
160
+
161
+    public function getStyle () : string {
162
+        return $this->row['design'];
163
+    }
164
+
165
+    public function getFolder () : string {
166
+        return $this->row['folder'];
167
+    }
168 168
 
169
-	public function getLastEdit () {
170
-		return $this->row['lastUpdate'];
171
-	}
169
+    public function getLastEdit () {
170
+        return $this->row['lastUpdate'];
171
+    }
172 172
 
173
-	public function hasCustomTemplate () : bool {
174
-		return $this->row['template'] !== "none";
175
-	}
173
+    public function hasCustomTemplate () : bool {
174
+        return $this->row['template'] !== "none";
175
+    }
176 176
 
177
-	public function getCustomTemplate () : string {
178
-		return $this->row['template'];
179
-	}
177
+    public function getCustomTemplate () : string {
178
+        return $this->row['template'];
179
+    }
180 180
 
181
-	public function hasCustomPermissions () : bool {
182
-		return $this->row['can_see_permissions'] !== "none";
183
-	}
181
+    public function hasCustomPermissions () : bool {
182
+        return $this->row['can_see_permissions'] !== "none";
183
+    }
184 184
 
185
-	public function listCustomPermissions () : array {
186
-		return explode("|", $this->row['can_see_permissions']);
187
-	}
185
+    public function listCustomPermissions () : array {
186
+        return explode("|", $this->row['can_see_permissions']);
187
+    }
188 188
 
189
-	public function isPublished () : bool {
190
-		return $this->row['published'] == 1;
191
-	}
189
+    public function isPublished () : bool {
190
+        return $this->row['published'] == 1;
191
+    }
192 192
 
193
-	public function publish () {
194
-		$this->row['published'] = 1;
195
-		$this->changes[] = "published";
196
-	}
193
+    public function publish () {
194
+        $this->row['published'] = 1;
195
+        $this->changes[] = "published";
196
+    }
197 197
 
198
-	public function getContentType () : string {
199
-		return $this->row['content_type'];
200
-	}
198
+    public function getContentType () : string {
199
+        return $this->row['content_type'];
200
+    }
201 201
 
202
-	public function getParentID () : int {
203
-		return $this->row['parent'];
204
-	}
202
+    public function getParentID () : int {
203
+        return $this->row['parent'];
204
+    }
205 205
 
206
-	public function getLeftSidebarID () : int {
207
-		return $this->row['sidebar_left'];
208
-	}
206
+    public function getLeftSidebarID () : int {
207
+        return $this->row['sidebar_left'];
208
+    }
209 209
 
210
-	public function getRightSidebarID () : int {
211
-		return $this->row['sidebar_right'];
212
-	}
210
+    public function getRightSidebarID () : int {
211
+        return $this->row['sidebar_right'];
212
+    }
213 213
 
214
-	public function getMetaDescription () : string {
215
-		return $this->row['meta_description'];
216
-	}
214
+    public function getMetaDescription () : string {
215
+        return $this->row['meta_description'];
216
+    }
217 217
 
218
-	public function getMetaKeywords () : string {
219
-		return $this->row['meta_keywords'];
220
-	}
221
-
222
-	public function getMetaRobotsOptions () : string {
223
-		return $this->row['meta_robots'];
224
-	}
225
-
226
-	public function getMetaCanonicals () : string {
227
-		return $this->row['meta_canonicals'];
228
-	}
229
-
230
-	public function getOgType () : string {
231
-		return $this->row['og_type'];
232
-	}
233
-
234
-	public function getOgTitle () : string {
235
-		return !empty($this->row['og_title']) ? $this->row['og_title'] : $this->getTitle();
236
-	}
237
-
238
-	public function getOgDescription () : string {
239
-		return !empty($this->row['og_description']) ? $this->row['og_description'] : $this->getMetaDescription();
240
-	}
241
-
242
-	public function getOgImages () : array {
243
-		if (empty($this->row['og_image'])) {
244
-			return array();
245
-		}
246
-
247
-		return explode(",", $this->row['og_image']);
248
-	}
249
-
250
-	public function getAuthorID () : int {
251
-		return $this->row['author'];
252
-	}
253
-
254
-	public function getAuthor () : User {
255
-		if ($this->author == null) {
256
-			//load author
257
-			$this->author = new User();
258
-
259
-			if ($this->getAuthorID() <= 0) {
260
-				throw new IllegalArgumentException("authorID has to be > 0.");
261
-			}
262
-
263
-			$this->author->load($this->getAuthorID());
264
-		}
265
-
266
-		return $this->author;
267
-	}
268
-
269
-	public function isSitemapEnabled () : bool {
270
-		return $this->row['sitemap'] == 1;
271
-	}
272
-
273
-	public function getSitemapChangeFreq () : string {
274
-		return $this->row['sitemap_changefreq'];
275
-	}
276
-
277
-	public function getSitemapPriority () : string {
278
-		return $this->row['sitemap_priority'];
279
-	}
280
-
281
-	public function activate (bool $bool = true) {
282
-		$this->row['activated'] = ($bool ? 1 : 0);
283
-	}
284
-
285
-	public function isTrash () : bool {
286
-		return $this->row['activated'] == 2;
287
-	}
288
-
289
-	public function isEditable () : bool {
290
-		return $this->row['editable'] == 1;
291
-	}
292
-
293
-	public function isDeletable () : bool {
294
-		return $this->row['deletable'] == 1;
295
-	}
296
-
297
-	public function isActivated () : bool {
298
-		return $this->row['activated'] == 1;
299
-	}
300
-
301
-	public function moveToTrash () {
302
-		self::movePageToTrash($this->pageID);
303
-
304
-		//clear cache
305
-		$this->clearCache();
306
-	}
307
-
308
-	/**
309
-	 * restore page from trash
310
-	 */
311
-	public function restore () {
312
-		self::restorePage($this->pageID);
313
-
314
-		//clear cache
315
-		$this->clearCache();
316
-	}
317
-
318
-	/**
319
-	 * save changes into database
320
-	 */
321
-	public function save () {
322
-		//TODO: add code here
323
-	}
324
-
325
-	public function clearCache () {
326
-		if (!is_int($this->getPageID())) {
327
-			throw new IllegalStateException("pageID isn't set.");
328
-		}
329
-
330
-		//clear cache
331
-		Cache::clear("pages", "pageID_" . $this->getPageID());
332
-		Cache::clear("pages", "page_" . $this->getAlias());
333
-	}
334
-
335
-	public static function createIfAbsent (string $alias, string $title, string $page_type, string $content = "", string $folder = "/", int $globalMenu = -1, int $localMenu = -1, int $parentID = -1, bool $sitemap = true, bool $published = true, bool $editable = true, bool $deletable = true, string $author = "system") : int {
336
-		//throw event
337
-		Events::throwEvent("create_page", array(
338
-			'alias' => &$alias,
339
-			'title' => &$title,
340
-			'page_type' => &$page_type,
341
-			'content' => &$content,
342
-			'folder' => &$folder,
343
-			'global_menu' => &$globalMenu,
344
-			'local_menu' => &$localMenu,
345
-			'parentID' => &$parentID,
346
-			'sitemap' => &$sitemap,
347
-			'published' => &$published,
348
-			'editable' => &$editable,
349
-			'author' => &$author
350
-		));
351
-
352
-		if (!is_int($author)) {
353
-			//get userID of author
354
-			$author = User::getIDByUsernameFromDB($author);
355
-
356
-			if ($author == -1) {
357
-				//username doesnt exists, so choose first user
358
-				$author = 1;
359
-			}
360
-		} else {
361
-			$author = (int) $author;
362
-		}
363
-
364
-		Database::getInstance()->execute("INSERT INTO `{praefix}pages` (
218
+    public function getMetaKeywords () : string {
219
+        return $this->row['meta_keywords'];
220
+    }
221
+
222
+    public function getMetaRobotsOptions () : string {
223
+        return $this->row['meta_robots'];
224
+    }
225
+
226
+    public function getMetaCanonicals () : string {
227
+        return $this->row['meta_canonicals'];
228
+    }
229
+
230
+    public function getOgType () : string {
231
+        return $this->row['og_type'];
232
+    }
233
+
234
+    public function getOgTitle () : string {
235
+        return !empty($this->row['og_title']) ? $this->row['og_title'] : $this->getTitle();
236
+    }
237
+
238
+    public function getOgDescription () : string {
239
+        return !empty($this->row['og_description']) ? $this->row['og_description'] : $this->getMetaDescription();
240
+    }
241
+
242
+    public function getOgImages () : array {
243
+        if (empty($this->row['og_image'])) {
244
+            return array();
245
+        }
246
+
247
+        return explode(",", $this->row['og_image']);
248
+    }
249
+
250
+    public function getAuthorID () : int {
251
+        return $this->row['author'];
252
+    }
253
+
254
+    public function getAuthor () : User {
255
+        if ($this->author == null) {
256
+            //load author
257
+            $this->author = new User();
258
+
259
+            if ($this->getAuthorID() <= 0) {
260
+                throw new IllegalArgumentException("authorID has to be > 0.");
261
+            }
262
+
263
+            $this->author->load($this->getAuthorID());
264
+        }
265
+
266
+        return $this->author;
267
+    }
268
+
269
+    public function isSitemapEnabled () : bool {
270
+        return $this->row['sitemap'] == 1;
271
+    }
272
+
273
+    public function getSitemapChangeFreq () : string {
274
+        return $this->row['sitemap_changefreq'];
275
+    }
276
+
277
+    public function getSitemapPriority () : string {
278
+        return $this->row['sitemap_priority'];
279
+    }
280
+
281
+    public function activate (bool $bool = true) {
282
+        $this->row['activated'] = ($bool ? 1 : 0);
283
+    }
284
+
285
+    public function isTrash () : bool {
286
+        return $this->row['activated'] == 2;
287
+    }
288
+
289
+    public function isEditable () : bool {
290
+        return $this->row['editable'] == 1;
291
+    }
292
+
293
+    public function isDeletable () : bool {
294
+        return $this->row['deletable'] == 1;
295
+    }
296
+
297
+    public function isActivated () : bool {
298
+        return $this->row['activated'] == 1;
299
+    }
300
+
301
+    public function moveToTrash () {
302
+        self::movePageToTrash($this->pageID);
303
+
304
+        //clear cache
305
+        $this->clearCache();
306
+    }
307
+
308
+    /**
309
+     * restore page from trash
310
+     */
311
+    public function restore () {
312
+        self::restorePage($this->pageID);
313
+
314
+        //clear cache
315
+        $this->clearCache();
316
+    }
317
+
318
+    /**
319
+     * save changes into database
320
+     */
321
+    public function save () {
322
+        //TODO: add code here
323
+    }
324
+
325
+    public function clearCache () {
326
+        if (!is_int($this->getPageID())) {
327
+            throw new IllegalStateException("pageID isn't set.");
328
+        }
329
+
330
+        //clear cache
331
+        Cache::clear("pages", "pageID_" . $this->getPageID());
332
+        Cache::clear("pages", "page_" . $this->getAlias());
333
+    }
334
+
335
+    public static function createIfAbsent (string $alias, string $title, string $page_type, string $content = "", string $folder = "/", int $globalMenu = -1, int $localMenu = -1, int $parentID = -1, bool $sitemap = true, bool $published = true, bool $editable = true, bool $deletable = true, string $author = "system") : int {
336
+        //throw event
337
+        Events::throwEvent("create_page", array(
338
+            'alias' => &$alias,
339
+            'title' => &$title,
340
+            'page_type' => &$page_type,
341
+            'content' => &$content,
342
+            'folder' => &$folder,
343
+            'global_menu' => &$globalMenu,
344
+            'local_menu' => &$localMenu,
345
+            'parentID' => &$parentID,
346
+            'sitemap' => &$sitemap,
347
+            'published' => &$published,
348
+            'editable' => &$editable,
349
+            'author' => &$author
350
+        ));
351
+
352
+        if (!is_int($author)) {
353
+            //get userID of author
354
+            $author = User::getIDByUsernameFromDB($author);
355
+
356
+            if ($author == -1) {
357
+                //username doesnt exists, so choose first user
358
+                $author = 1;
359
+            }
360
+        } else {
361
+            $author = (int) $author;
362
+        }
363
+
364
+        Database::getInstance()->execute("INSERT INTO `{praefix}pages` (
365 365
 			`id`, `alias`, `title`, `content`, `parent`, `folder`, `global_menu`, `local_menu`, `page_type`, `design`, `sitemap`, `published`, `version`, `last_update`, `created`, `editable`, `deletable`, `author`, `activated`
366 366
 		) VALUES (
367 367
 			NULL, :alias, :title, :content, :parent, :folder, :globalMenu, :localMenu, :pageType, 'none', :sitemap, :published, '1', '0000-00-00 00:00:00', CURRENT_TIMESTAMP, :editable, :deletable, :author, '1'
368 368
 		) ON DUPLICATE KEY UPDATE `alias` = :alias, `editable` = :editable, `deletable` = :deletable; ", array(
369
-			'alias' => $alias,
370
-			'title' => $title,
371
-			'content' => $content,
372
-			'parent' => $parentID,
373
-			'folder' => $folder,
374
-			'globalMenu' => $globalMenu,
375
-			'localMenu' => $localMenu,
376
-			'pageType' => $page_type,
377
-			'sitemap' => ($sitemap ? 1 : 0),
378
-			'published' => ($published ? 1 : 0),
379
-			'editable' => ($editable ? 1 : 0),
380
-			'deletable' => ($deletable ? 1 : 0),
381
-			'author' => $author
382
-		));
383
-
384
-		Cache::clear("pages");
385
-
386
-		//return page id
387
-		$insertID = Database::getInstance()->lastInsertId();
388
-
389
-		//throw event
390
-		Events::throwEvent("created_page", array(
391
-			'alias' => $alias,
392
-			'title' => $title,
393
-			'insertID' => $insertID
394
-		));
395
-
396
-		//get pageID by alias
397
-		$pageID = Page::getPageIDByAlias($alias);
398
-
399
-		//set default rights, allow page for administrators, registered users, guests and bots
400
-		PageRights::setDefaultAllowedGroups($pageID, array(1, 2, 3, 4));
401
-
402
-		return $pageID;
403
-	}
404
-
405
-	public static function delete (string $alias) {
406
-		$delete = true;
407
-
408
-		//plugins can avoid deletion or change alias
409
-		Events::throwEvent("delete_page_alias", array(
410
-			'alias' => &$alias,
411
-			'delete' => &$delete
412
-		));
413
-
414
-		if ($delete) {
415
-			//remove page from database
416
-			Database::getInstance()->execute("DELETE FROM `{praefix}pages` WHERE `alias` = :alias; ", array('alias' => $alias));
417
-
418
-			Cache::clear("pages");
419
-		}
420
-	}
421
-
422
-	public static function deleteByID (int $id) {
423
-		$delete = true;
424
-
425
-		//plugins can avoid deletion or change alias
426
-		Events::throwEvent("delete_page_id", array(
427
-			'alias' => &$id,
428
-			'delete' => &$delete
429
-		));
430
-
431
-		if ($delete) {
432
-			//remove page from database
433
-			Database::getInstance()->execute("DELETE FROM `{praefix}pages` WHERE `id` = :id; ", array('id' => $id));
434
-
435
-			Cache::clear("pages");
436
-		}
437
-	}
438
-
439
-	public static function get (string $alias) : Page {
440
-		$page = new Page();
441
-		$page->load($alias);
442
-
443
-		return $page;
444
-	}
445
-
446
-	public static function setPageType (string $alias, string $page_type) {
447
-		Events::throwEvent("set_pagetype", array(
448
-			'alias' => &$alias,
449
-			'page_type' => &$page_type
450
-		));
451
-
452
-		Database::getInstance()->execute("UPDATE `{praefix}pages` SET `page_type` = :page_type WHERE `alias` = :alias; ", array(
453
-			'alias' => $alias,
454
-			'page_type' => $page_type
455
-		));
456
-
457
-		Cache::clear("pages");
458
-	}
459
-
460
-	/**
461
-	 * get id of page by alias
462
-	 *
463
-	 * only use this method for database upgrade, because their is no caching for this method!
464
-	 *
465
-	 * @param string $alias alias of page
466
-	 *
467
-	 * @throws IllegalStateException if alias doesnt exists
468
-	 *
469
-	 * @return int pageID
470
-	 */
471
-	public static function getPageIDByAlias (string $alias) : int {
472
-		$row = Database::getInstance()->getRow("SELECT * FROM `{praefix}pages` WHERE `alias` = :alias; ", array('alias' => $alias));
473
-
474
-		if (!$row) {
475
-			throw new IllegalStateException("page with alias '" . $alias . "' doesnt exists.");
476
-		}
477
-
478
-		return $row['id'];
479
-	}
480
-
481
-	public static function lockPage (int $pageID, int $userID) {
482
-		Database::getInstance()->execute("UPDATE `{praefix}pages` SET `locked_by` = :userID, `locked_timestamp` = CURRENT_TIMESTAMP WHERE `id` = :pageID; ", array(
483
-			'userID' => $userID,
484
-			'pageID' => $pageID
485
-		));
486
-
487
-		//clear cache
488
-		Cache::clear("pages", "pageID_" . $pageID);
489
-	}
490
-
491
-	public static function unlockPage (int $pageID) {
492
-		Database::getInstance()->execute("UPDATE `{praefix}pages` SET `locked_by` = '-1' WHERE `id` = :pageID; ", array(
493
-			'pageID' => $pageID
494
-		));
495
-
496
-		//clear cache
497
-		Cache::clear("pages", "pageID_" . $pageID);
498
-	}
499
-
500
-	protected static function movePageToTrash (int $pageID) {
501
-		Database::getInstance()->execute("UPDATE `{praefix}pages` SET `activated` = 2 WHERE `id` = :pageID; ", array(
502
-			'pageID' => $pageID
503
-		));
504
-
505
-		//clear cache
506
-		Cache::clear("pages", "pageID_" . $pageID);
507
-	}
508
-
509
-	protected static function restorePage (int $pageID) {
510
-		Database::getInstance()->execute("UPDATE `{praefix}pages` SET `activated` = 1 WHERE `id` = :pageID; ", array(
511
-			'pageID' => $pageID
512
-		));
513
-
514
-		//clear cache
515
-		Cache::clear("pages", "pageID_" . $pageID);
516
-	}
517
-
518
-	public static function exists (string $alias) : bool {
519
-		$row = Database::getInstance()->getRow("SELECT * FROM `{praefix}pages` WHERE `alias` = :alias; ", array(
520
-			'alias' => $alias
521
-		));
522
-
523
-		return $row !== false;
524
-	}
369
+            'alias' => $alias,
370
+            'title' => $title,
371
+            'content' => $content,
372
+            'parent' => $parentID,
373
+            'folder' => $folder,
374
+            'globalMenu' => $globalMenu,
375
+            'localMenu' => $localMenu,
376
+            'pageType' => $page_type,
377
+            'sitemap' => ($sitemap ? 1 : 0),
378
+            'published' => ($published ? 1 : 0),
379
+            'editable' => ($editable ? 1 : 0),
380
+            'deletable' => ($deletable ? 1 : 0),
381
+            'author' => $author
382
+        ));
383
+
384
+        Cache::clear("pages");
385
+
386
+        //return page id
387
+        $insertID = Database::getInstance()->lastInsertId();
388
+
389
+        //throw event
390
+        Events::throwEvent("created_page", array(
391
+            'alias' => $alias,
392
+            'title' => $title,
393
+            'insertID' => $insertID
394
+        ));
395
+
396
+        //get pageID by alias
397
+        $pageID = Page::getPageIDByAlias($alias);
398
+
399
+        //set default rights, allow page for administrators, registered users, guests and bots
400
+        PageRights::setDefaultAllowedGroups($pageID, array(1, 2, 3, 4));
401
+
402
+        return $pageID;
403
+    }
404
+
405
+    public static function delete (string $alias) {
406
+        $delete = true;
407
+
408
+        //plugins can avoid deletion or change alias
409
+        Events::throwEvent("delete_page_alias", array(
410
+            'alias' => &$alias,
411
+            'delete' => &$delete
412
+        ));
413
+
414
+        if ($delete) {
415
+            //remove page from database
416
+            Database::getInstance()->execute("DELETE FROM `{praefix}pages` WHERE `alias` = :alias; ", array('alias' => $alias));
417
+
418
+            Cache::clear("pages");
419
+        }
420
+    }
421
+
422
+    public static function deleteByID (int $id) {
423
+        $delete = true;
424
+
425
+        //plugins can avoid deletion or change alias
426
+        Events::throwEvent("delete_page_id", array(
427
+            'alias' => &$id,
428
+            'delete' => &$delete
429
+        ));
430
+
431
+        if ($delete) {
432
+            //remove page from database
433
+            Database::getInstance()->execute("DELETE FROM `{praefix}pages` WHERE `id` = :id; ", array('id' => $id));
434
+
435
+            Cache::clear("pages");
436
+        }
437
+    }
438
+
439
+    public static function get (string $alias) : Page {
440
+        $page = new Page();
441
+        $page->load($alias);
442
+
443
+        return $page;
444
+    }
445
+
446
+    public static function setPageType (string $alias, string $page_type) {
447
+        Events::throwEvent("set_pagetype", array(
448
+            'alias' => &$alias,
449
+            'page_type' => &$page_type
450
+        ));
451
+
452
+        Database::getInstance()->execute("UPDATE `{praefix}pages` SET `page_type` = :page_type WHERE `alias` = :alias; ", array(
453
+            'alias' => $alias,
454
+            'page_type' => $page_type
455
+        ));
456
+
457
+        Cache::clear("pages");
458
+    }
459
+
460
+    /**
461
+     * get id of page by alias
462
+     *
463
+     * only use this method for database upgrade, because their is no caching for this method!
464
+     *
465
+     * @param string $alias alias of page
466
+     *
467
+     * @throws IllegalStateException if alias doesnt exists
468
+     *
469
+     * @return int pageID
470
+     */
471
+    public static function getPageIDByAlias (string $alias) : int {
472
+        $row = Database::getInstance()->getRow("SELECT * FROM `{praefix}pages` WHERE `alias` = :alias; ", array('alias' => $alias));
473
+
474
+        if (!$row) {
475
+            throw new IllegalStateException("page with alias '" . $alias . "' doesnt exists.");
476
+        }
477
+
478
+        return $row['id'];
479
+    }
480
+
481
+    public static function lockPage (int $pageID, int $userID) {
482
+        Database::getInstance()->execute("UPDATE `{praefix}pages` SET `locked_by` = :userID, `locked_timestamp` = CURRENT_TIMESTAMP WHERE `id` = :pageID; ", array(
483
+            'userID' => $userID,
484
+            'pageID' => $pageID
485
+        ));
486
+
487
+        //clear cache
488
+        Cache::clear("pages", "pageID_" . $pageID);
489
+    }
490
+
491
+    public static function unlockPage (int $pageID) {
492
+        Database::getInstance()->execute("UPDATE `{praefix}pages` SET `locked_by` = '-1' WHERE `id` = :pageID; ", array(
493
+            'pageID' => $pageID
494
+        ));
495
+
496
+        //clear cache
497
+        Cache::clear("pages", "pageID_" . $pageID);
498
+    }
499
+
500
+    protected static function movePageToTrash (int $pageID) {
501
+        Database::getInstance()->execute("UPDATE `{praefix}pages` SET `activated` = 2 WHERE `id` = :pageID; ", array(
502
+            'pageID' => $pageID
503
+        ));
504
+
505
+        //clear cache
506
+        Cache::clear("pages", "pageID_" . $pageID);
507
+    }
508
+
509
+    protected static function restorePage (int $pageID) {
510
+        Database::getInstance()->execute("UPDATE `{praefix}pages` SET `activated` = 1 WHERE `id` = :pageID; ", array(
511
+            'pageID' => $pageID
512
+        ));
513
+
514
+        //clear cache
515
+        Cache::clear("pages", "pageID_" . $pageID);
516
+    }
517
+
518
+    public static function exists (string $alias) : bool {
519
+        $row = Database::getInstance()->getRow("SELECT * FROM `{praefix}pages` WHERE `alias` = :alias; ", array(
520
+            'alias' => $alias
521
+        ));
522
+
523
+        return $row !== false;
524
+    }
525 525
 
526 526
 }
527 527
 
Please login to merge, or discard this patch.
Spacing   +59 added lines, -59 removed lines patch added patch discarded remove patch
@@ -32,7 +32,7 @@  discard block
 block discarded – undo
32 32
 		//
33 33
 	}
34 34
 
35
-	public function load ($alias = null) {
35
+	public function load($alias = null) {
36 36
 		if ($alias == null) {
37 37
 			if (isset($_REQUEST['page']) && !empty($_REQUEST['page'])) {
38 38
 				$alias = Validator_String::get($_REQUEST['page']);
@@ -88,7 +88,7 @@  discard block
 block discarded – undo
88 88
 		$this->pagetype = $this->row['page_type'];
89 89
 	}
90 90
 
91
-	public function loadByID (int $pageID, bool $use_cache = true) {
91
+	public function loadByID(int $pageID, bool $use_cache = true) {
92 92
 		if ($use_cache && Cache::contains("pages", "pageID_" . $pageID)) {
93 93
 			$this->row = Cache::get("pages", "pageID_" . $pageID);
94 94
 		} else {
@@ -111,135 +111,135 @@  discard block
 block discarded – undo
111 111
 		$this->pagetype = $this->row['page_type'];
112 112
 	}
113 113
 
114
-	protected function getDomain () : Domain {
114
+	protected function getDomain() : Domain {
115 115
 		return Registry::singleton()->getObject("domain");
116 116
 	}
117 117
 
118
-	public function reloadCache () {
118
+	public function reloadCache() {
119 119
 		Cache::clear("pages");
120 120
 	}
121 121
 
122
-	public function getPageID () : int {
122
+	public function getPageID() : int {
123 123
 		return $this->row['id'];
124 124
 	}
125 125
 
126
-	public function getAlias () : string {
126
+	public function getAlias() : string {
127 127
 		return $this->alias;
128 128
 	}
129 129
 
130
-	public function getPageType () : string {
130
+	public function getPageType() : string {
131 131
 		return $this->pagetype;
132 132
 	}
133 133
 
134
-	public function getTitle () : string {
134
+	public function getTitle() : string {
135 135
 		return $this->row['title'];
136 136
 	}
137 137
 
138
-	public function setTitle (string $title) {
138
+	public function setTitle(string $title) {
139 139
 		$this->row['title'] = $title;
140 140
 		$this->changes[] = "title";
141 141
 	}
142 142
 
143
-	public function getContent () : string {
143
+	public function getContent() : string {
144 144
 		return $this->row['content'];
145 145
 	}
146 146
 
147
-	public function setContent (string $content) {
147
+	public function setContent(string $content) {
148 148
 		$this->row['content'] = $content;
149 149
 		$this->changes[] = "content";
150 150
 		$this->changes[] = "content";
151 151
 	}
152 152
 
153
-	public function getGlobalMenuID () : int {
153
+	public function getGlobalMenuID() : int {
154 154
 		return $this->row['global_menu'];
155 155
 	}
156 156
 
157
-	public function getLocalMenuID () : int {
157
+	public function getLocalMenuID() : int {
158 158
 		return $this->row['local_menu'];
159 159
 	}
160 160
 
161
-	public function getStyle () : string {
161
+	public function getStyle() : string {
162 162
 		return $this->row['design'];
163 163
 	}
164 164
 
165
-	public function getFolder () : string {
165
+	public function getFolder() : string {
166 166
 		return $this->row['folder'];
167 167
 	}
168 168
 
169
-	public function getLastEdit () {
169
+	public function getLastEdit() {
170 170
 		return $this->row['lastUpdate'];
171 171
 	}
172 172
 
173
-	public function hasCustomTemplate () : bool {
173
+	public function hasCustomTemplate() : bool {
174 174
 		return $this->row['template'] !== "none";
175 175
 	}
176 176
 
177
-	public function getCustomTemplate () : string {
177
+	public function getCustomTemplate() : string {
178 178
 		return $this->row['template'];
179 179
 	}
180 180
 
181
-	public function hasCustomPermissions () : bool {
181
+	public function hasCustomPermissions() : bool {
182 182
 		return $this->row['can_see_permissions'] !== "none";
183 183
 	}
184 184
 
185
-	public function listCustomPermissions () : array {
185
+	public function listCustomPermissions() : array {
186 186
 		return explode("|", $this->row['can_see_permissions']);
187 187
 	}
188 188
 
189
-	public function isPublished () : bool {
189
+	public function isPublished() : bool {
190 190
 		return $this->row['published'] == 1;
191 191
 	}
192 192
 
193
-	public function publish () {
193
+	public function publish() {
194 194
 		$this->row['published'] = 1;
195 195
 		$this->changes[] = "published";
196 196
 	}
197 197
 
198
-	public function getContentType () : string {
198
+	public function getContentType() : string {
199 199
 		return $this->row['content_type'];
200 200
 	}
201 201
 
202
-	public function getParentID () : int {
202
+	public function getParentID() : int {
203 203
 		return $this->row['parent'];
204 204
 	}
205 205
 
206
-	public function getLeftSidebarID () : int {
206
+	public function getLeftSidebarID() : int {
207 207
 		return $this->row['sidebar_left'];
208 208
 	}
209 209
 
210
-	public function getRightSidebarID () : int {
210
+	public function getRightSidebarID() : int {
211 211
 		return $this->row['sidebar_right'];
212 212
 	}
213 213
 
214
-	public function getMetaDescription () : string {
214
+	public function getMetaDescription() : string {
215 215
 		return $this->row['meta_description'];
216 216
 	}
217 217
 
218
-	public function getMetaKeywords () : string {
218
+	public function getMetaKeywords() : string {
219 219
 		return $this->row['meta_keywords'];
220 220
 	}
221 221
 
222
-	public function getMetaRobotsOptions () : string {
222
+	public function getMetaRobotsOptions() : string {
223 223
 		return $this->row['meta_robots'];
224 224
 	}
225 225
 
226
-	public function getMetaCanonicals () : string {
226
+	public function getMetaCanonicals() : string {
227 227
 		return $this->row['meta_canonicals'];
228 228
 	}
229 229
 
230
-	public function getOgType () : string {
230
+	public function getOgType() : string {
231 231
 		return $this->row['og_type'];
232 232
 	}
233 233
 
234
-	public function getOgTitle () : string {
234
+	public function getOgTitle() : string {
235 235
 		return !empty($this->row['og_title']) ? $this->row['og_title'] : $this->getTitle();
236 236
 	}
237 237
 
238
-	public function getOgDescription () : string {
238
+	public function getOgDescription() : string {
239 239
 		return !empty($this->row['og_description']) ? $this->row['og_description'] : $this->getMetaDescription();
240 240
 	}
241 241
 
242
-	public function getOgImages () : array {
242
+	public function getOgImages() : array {
243 243
 		if (empty($this->row['og_image'])) {
244 244
 			return array();
245 245
 		}
@@ -247,11 +247,11 @@  discard block
 block discarded – undo
247 247
 		return explode(",", $this->row['og_image']);
248 248
 	}
249 249
 
250
-	public function getAuthorID () : int {
250
+	public function getAuthorID() : int {
251 251
 		return $this->row['author'];
252 252
 	}
253 253
 
254
-	public function getAuthor () : User {
254
+	public function getAuthor() : User {
255 255
 		if ($this->author == null) {
256 256
 			//load author
257 257
 			$this->author = new User();
@@ -266,39 +266,39 @@  discard block
 block discarded – undo
266 266
 		return $this->author;
267 267
 	}
268 268
 
269
-	public function isSitemapEnabled () : bool {
269
+	public function isSitemapEnabled() : bool {
270 270
 		return $this->row['sitemap'] == 1;
271 271
 	}
272 272
 
273
-	public function getSitemapChangeFreq () : string {
273
+	public function getSitemapChangeFreq() : string {
274 274
 		return $this->row['sitemap_changefreq'];
275 275
 	}
276 276
 
277
-	public function getSitemapPriority () : string {
277
+	public function getSitemapPriority() : string {
278 278
 		return $this->row['sitemap_priority'];
279 279
 	}
280 280
 
281
-	public function activate (bool $bool = true) {
281
+	public function activate(bool $bool = true) {
282 282
 		$this->row['activated'] = ($bool ? 1 : 0);
283 283
 	}
284 284
 
285
-	public function isTrash () : bool {
285
+	public function isTrash() : bool {
286 286
 		return $this->row['activated'] == 2;
287 287
 	}
288 288
 
289
-	public function isEditable () : bool {
289
+	public function isEditable() : bool {
290 290
 		return $this->row['editable'] == 1;
291 291
 	}
292 292
 
293
-	public function isDeletable () : bool {
293
+	public function isDeletable() : bool {
294 294
 		return $this->row['deletable'] == 1;
295 295
 	}
296 296
 
297
-	public function isActivated () : bool {
297
+	public function isActivated() : bool {
298 298
 		return $this->row['activated'] == 1;
299 299
 	}
300 300
 
301
-	public function moveToTrash () {
301
+	public function moveToTrash() {
302 302
 		self::movePageToTrash($this->pageID);
303 303
 
304 304
 		//clear cache
@@ -308,7 +308,7 @@  discard block
 block discarded – undo
308 308
 	/**
309 309
 	 * restore page from trash
310 310
 	 */
311
-	public function restore () {
311
+	public function restore() {
312 312
 		self::restorePage($this->pageID);
313 313
 
314 314
 		//clear cache
@@ -318,11 +318,11 @@  discard block
 block discarded – undo
318 318
 	/**
319 319
 	 * save changes into database
320 320
 	 */
321
-	public function save () {
321
+	public function save() {
322 322
 		//TODO: add code here
323 323
 	}
324 324
 
325
-	public function clearCache () {
325
+	public function clearCache() {
326 326
 		if (!is_int($this->getPageID())) {
327 327
 			throw new IllegalStateException("pageID isn't set.");
328 328
 		}
@@ -332,7 +332,7 @@  discard block
 block discarded – undo
332 332
 		Cache::clear("pages", "page_" . $this->getAlias());
333 333
 	}
334 334
 
335
-	public static function createIfAbsent (string $alias, string $title, string $page_type, string $content = "", string $folder = "/", int $globalMenu = -1, int $localMenu = -1, int $parentID = -1, bool $sitemap = true, bool $published = true, bool $editable = true, bool $deletable = true, string $author = "system") : int {
335
+	public static function createIfAbsent(string $alias, string $title, string $page_type, string $content = "", string $folder = "/", int $globalMenu = -1, int $localMenu = -1, int $parentID = -1, bool $sitemap = true, bool $published = true, bool $editable = true, bool $deletable = true, string $author = "system") : int {
336 336
 		//throw event
337 337
 		Events::throwEvent("create_page", array(
338 338
 			'alias' => &$alias,
@@ -402,7 +402,7 @@  discard block
 block discarded – undo
402 402
 		return $pageID;
403 403
 	}
404 404
 
405
-	public static function delete (string $alias) {
405
+	public static function delete(string $alias) {
406 406
 		$delete = true;
407 407
 
408 408
 		//plugins can avoid deletion or change alias
@@ -419,7 +419,7 @@  discard block
 block discarded – undo
419 419
 		}
420 420
 	}
421 421
 
422
-	public static function deleteByID (int $id) {
422
+	public static function deleteByID(int $id) {
423 423
 		$delete = true;
424 424
 
425 425
 		//plugins can avoid deletion or change alias
@@ -436,14 +436,14 @@  discard block
 block discarded – undo
436 436
 		}
437 437
 	}
438 438
 
439
-	public static function get (string $alias) : Page {
439
+	public static function get(string $alias) : Page {
440 440
 		$page = new Page();
441 441
 		$page->load($alias);
442 442
 
443 443
 		return $page;
444 444
 	}
445 445
 
446
-	public static function setPageType (string $alias, string $page_type) {
446
+	public static function setPageType(string $alias, string $page_type) {
447 447
 		Events::throwEvent("set_pagetype", array(
448 448
 			'alias' => &$alias,
449 449
 			'page_type' => &$page_type
@@ -468,7 +468,7 @@  discard block
 block discarded – undo
468 468
 	 *
469 469
 	 * @return int pageID
470 470
 	 */
471
-	public static function getPageIDByAlias (string $alias) : int {
471
+	public static function getPageIDByAlias(string $alias) : int {
472 472
 		$row = Database::getInstance()->getRow("SELECT * FROM `{praefix}pages` WHERE `alias` = :alias; ", array('alias' => $alias));
473 473
 
474 474
 		if (!$row) {
@@ -478,7 +478,7 @@  discard block
 block discarded – undo
478 478
 		return $row['id'];
479 479
 	}
480 480
 
481
-	public static function lockPage (int $pageID, int $userID) {
481
+	public static function lockPage(int $pageID, int $userID) {
482 482
 		Database::getInstance()->execute("UPDATE `{praefix}pages` SET `locked_by` = :userID, `locked_timestamp` = CURRENT_TIMESTAMP WHERE `id` = :pageID; ", array(
483 483
 			'userID' => $userID,
484 484
 			'pageID' => $pageID
@@ -488,7 +488,7 @@  discard block
 block discarded – undo
488 488
 		Cache::clear("pages", "pageID_" . $pageID);
489 489
 	}
490 490
 
491
-	public static function unlockPage (int $pageID) {
491
+	public static function unlockPage(int $pageID) {
492 492
 		Database::getInstance()->execute("UPDATE `{praefix}pages` SET `locked_by` = '-1' WHERE `id` = :pageID; ", array(
493 493
 			'pageID' => $pageID
494 494
 		));
@@ -497,7 +497,7 @@  discard block
 block discarded – undo
497 497
 		Cache::clear("pages", "pageID_" . $pageID);
498 498
 	}
499 499
 
500
-	protected static function movePageToTrash (int $pageID) {
500
+	protected static function movePageToTrash(int $pageID) {
501 501
 		Database::getInstance()->execute("UPDATE `{praefix}pages` SET `activated` = 2 WHERE `id` = :pageID; ", array(
502 502
 			'pageID' => $pageID
503 503
 		));
@@ -506,7 +506,7 @@  discard block
 block discarded – undo
506 506
 		Cache::clear("pages", "pageID_" . $pageID);
507 507
 	}
508 508
 
509
-	protected static function restorePage (int $pageID) {
509
+	protected static function restorePage(int $pageID) {
510 510
 		Database::getInstance()->execute("UPDATE `{praefix}pages` SET `activated` = 1 WHERE `id` = :pageID; ", array(
511 511
 			'pageID' => $pageID
512 512
 		));
@@ -515,7 +515,7 @@  discard block
 block discarded – undo
515 515
 		Cache::clear("pages", "pageID_" . $pageID);
516 516
 	}
517 517
 
518
-	public static function exists (string $alias) : bool {
518
+	public static function exists(string $alias) : bool {
519 519
 		$row = Database::getInstance()->getRow("SELECT * FROM `{praefix}pages` WHERE `alias` = :alias; ", array(
520 520
 			'alias' => $alias
521 521
 		));
Please login to merge, or discard this patch.
system/packages/com.jukusoft.cms.admin/classes/pageeditpage.php 1 patch
Indentation   +253 added lines, -253 removed lines patch added patch discarded remove patch
@@ -27,270 +27,270 @@  discard block
 block discarded – undo
27 27
 
28 28
 class PageEditPage extends PageType {
29 29
 
30
-	public function getContent(): string {
31
-		$template = new DwooTemplate("pages/editpage");
32
-
33
-		//check, if pageID is set
34
-		if (!isset($_REQUEST['edit']) || empty($_REQUEST['edit'])) {
35
-			//show error
36
-			return $this->showError("No pageID was set!");
37
-		}
38
-
39
-		$pageID = (int) $_REQUEST['edit'];
40
-
41
-		$page = new Page();
42
-		$page->loadByID($pageID);
43
-
44
-		//first check permissions
45
-		if (!PermissionChecker::current()->hasRight("can_edit_all_pages") && !(PermissionChecker::current()->hasRight("can_edit_own_pages") && $page->getAuthorID() == User::current()->getID())) {
46
-			//user doesn't have permissions to edit this page
47
-			return $this->showError("You don't have permissions to edit this page!");
48
-		}
49
-
50
-		//first, lock page
51
-		Page::lockPage($page->getPageID(), User::current()->getID());
52
-
53
-		$success_messages = array();
54
-		$error_messages = array();
55
-
56
-		//save page
57
-		if (isset($_REQUEST['submit'])) {
58
-			if ($_REQUEST['submit'] === "Save") {
59
-				//save page
60
-				$res = $this->save($page);
61
-
62
-				if ($res === true) {
63
-					$success_messages[] = "Saved page successfully!";
64
-				} else {
65
-					$error_messages[] = $res;
66
-				}
67
-			} else if ($_REQUEST['submit'] === "SaveUnlock") {
68
-				//save page
69
-				$res = $this->save($page);
70
-
71
-				if ($res === true) {
72
-					//unlock page
73
-					Page::unlockPage($page->getPageID());
74
-
75
-					//redirect to admin/pages
76
-					header("Location: " . DomainUtils::generateURL("admin/pages"));
77
-
78
-					ob_flush();
79
-					ob_end_flush();
80
-
81
-					exit;
82
-				} else {
83
-					$error_messages[] = $res;
84
-				}
85
-			} else if ($_REQUEST['submit'] === "Publish") {
86
-				//save page
87
-				$res = $this->save($page);
88
-
89
-				if ($res === true) {
90
-					$success_messages[] = "Saved page successfully!";
91
-				} else {
92
-					$error_messages[] = $res;
93
-				}
94
-
95
-				//publish page
96
-				$res = $this->publish($page);
97
-
98
-				if ($res === true) {
99
-					$success_messages[] = "Page published successfully!";
100
-				} else {
101
-					$error_messages[] = $res;
102
-				}
103
-			}
104
-		}
105
-
106
-		$template->assign("action_url", DomainUtils::generateURL($this->getPage()->getAlias(), array("edit" => $pageID)));
107
-
108
-		$template->assign("page", array(
109
-			'id' => $page->getPageID(),
110
-			'alias' => "/" . $page->getAlias(),
111
-			'title' => $page->getTitle(),
112
-			'content' => $page->getContent(),
113
-			'is_published' => $page->isPublished(),
114
-			'can_publish' => (!$page->isPublished() && (PermissionChecker::current()->hasRight("can_publish_all_pages") || (PermissionChecker::current()->hasRight("can_publish_own_pages") && $page->getAuthorID() == User::current()->getID()))),
115
-			'can_change_owner' => (PermissionChecker::current()->hasRight("can_change_page_owner") || $page->getAuthorID() == User::current()->getID()),
116
-			'folder' => $page->getFolder(),
117
-			'preview_url' => DomainUtils::generateURL($page->getAlias(), array("preview" => "true")),
118
-			'current_style' => $page->getStyle(),
119
-			'template' => $page->getCustomTemplate(),
120
-			'has_custom_template' => $page->hasCustomTemplate(),
121
-			'parent' => $page->getParentID(),
122
-			'meta_description' => $page->getMetaDescription(),
123
-			'meta_keywords' => $page->getMetaKeywords(),
124
-			'meta_robots' => $page->getMetaRobotsOptions(),
125
-			'meta_canonicals' => $page->getMetaCanonicals(),
126
-			'has_canoncials' => !empty($page->getMetaCanonicals()),
127
-			'sitemap' => $page->isSitemapEnabled(),
128
-			'sitemap_changefreq' => $page->getSitemapChangeFreq(),
129
-			'sitemap_priority' => $page->getSitemapPriority()
130
-		));
131
-
132
-		//set available styles
133
-		$template->assign("styles", StyleController::listAllStyles());
134
-
135
-		//get all pages from database
136
-		$pages = array();
137
-		$rows = Database::getInstance()->listRows("SELECT `id`, `alias` FROM `{praefix}pages` WHERE `editable` = '1' AND `activated` = '1'; ");
138
-
139
-		foreach ($rows as $row) {
140
-			$pages[] = array(
141
-				'id' => $row['id'],
142
-				'alias' => $row['alias']
143
-			);
144
-		}
145
-
146
-		$template->assign("parent_pages", $pages);
147
-
148
-		//https://developers.google.com/search/reference/robots_meta_tag?hl=de
149
-		$robots_options = array(
150
-			"all",
151
-			"noindex",
152
-			"nofollow",
153
-			"none",
154
-			"noarchive",
155
-			"nosnippet",
156
-			"noodp",
157
-			"notranslate",
158
-			"noimageindex",
159
-			"unavailable_after: "
160
-		);
161
-
162
-		$template->assign("robots_options", $robots_options);
163
-
164
-		$sitemap_change_frequencies = array(
165
-			"AlWAYS", "HOURLY", "DAILY", "WEEKLY", "MONTHLY", "YEARLY", "NEVER"
166
-		);
167
-
168
-		$template->assign("sitemap_changefreq", $sitemap_change_frequencies);
169
-
170
-		//add support to show additional code from plugins
171
-		$additional_code_header = "";
172
-		$additional_code_footer = "";
173
-
174
-		Events::throwEvent("page_edit_additional_code_header", array(
175
-			'page' => &$page,
176
-			'code' => &$additional_code_header
177
-		));
178
-
179
-		$template->assign("additional_code_header", $additional_code_footer);
180
-
181
-		Events::throwEvent("page_edit_additional_code_footer", array(
182
-			'page' => &$page,
183
-			'code' => &$additional_code_footer
184
-		));
185
-
186
-		$template->assign("additional_code_footer", $additional_code_footer);
187
-
188
-		$template->assign("errors", $error_messages);
189
-		$template->assign("success_messages", $success_messages);
190
-
191
-		return $template->getCode();
192
-	}
193
-
194
-	protected function save (Page &$page) {
195
-		//first check permissions
196
-		if (!PermissionChecker::current()->hasRight("can_edit_all_pages") && !(PermissionChecker::current()->hasRight("can_edit_own_pages") && $page->getAuthorID() == User::current()->getID())) {
197
-			//user doesn't have permissions to edit this page
198
-			return "You don't have permissions to edit this page!";
199
-		}
200
-
201
-		if (!isset($_POST['title']) || empty($_POST['title'])) {
202
-			return "No title was set";
203
-		}
204
-
205
-		//validate title
206
-		$title = htmlentities($_POST['title']);
207
-
208
-		if (!isset($_POST['html_code']) || empty($_POST['html_code'])) {
209
-			return "No content was set or content is empty!";
210
-		}
211
-
212
-		$content = $_POST['html_code'];
213
-
214
-		//TODO: save page attributes
215
-		if (!isset($_REQUEST['parent']) || empty($_REQUEST['parent'])) {
216
-			return "Parent page wasn't set!";
217
-		}
218
-
219
-		$parent = (int) $_REQUEST['parent'];
220
-
221
-		if (!isset($_REQUEST['design']) || empty($_REQUEST['design'])) {
222
-			return "Design wasn't set!";
223
-		}
224
-
225
-		$design = $_REQUEST['design'];
226
-
227
-		//TODO: check, if style (design) exists
30
+    public function getContent(): string {
31
+        $template = new DwooTemplate("pages/editpage");
32
+
33
+        //check, if pageID is set
34
+        if (!isset($_REQUEST['edit']) || empty($_REQUEST['edit'])) {
35
+            //show error
36
+            return $this->showError("No pageID was set!");
37
+        }
38
+
39
+        $pageID = (int) $_REQUEST['edit'];
40
+
41
+        $page = new Page();
42
+        $page->loadByID($pageID);
43
+
44
+        //first check permissions
45
+        if (!PermissionChecker::current()->hasRight("can_edit_all_pages") && !(PermissionChecker::current()->hasRight("can_edit_own_pages") && $page->getAuthorID() == User::current()->getID())) {
46
+            //user doesn't have permissions to edit this page
47
+            return $this->showError("You don't have permissions to edit this page!");
48
+        }
49
+
50
+        //first, lock page
51
+        Page::lockPage($page->getPageID(), User::current()->getID());
52
+
53
+        $success_messages = array();
54
+        $error_messages = array();
55
+
56
+        //save page
57
+        if (isset($_REQUEST['submit'])) {
58
+            if ($_REQUEST['submit'] === "Save") {
59
+                //save page
60
+                $res = $this->save($page);
61
+
62
+                if ($res === true) {
63
+                    $success_messages[] = "Saved page successfully!";
64
+                } else {
65
+                    $error_messages[] = $res;
66
+                }
67
+            } else if ($_REQUEST['submit'] === "SaveUnlock") {
68
+                //save page
69
+                $res = $this->save($page);
70
+
71
+                if ($res === true) {
72
+                    //unlock page
73
+                    Page::unlockPage($page->getPageID());
74
+
75
+                    //redirect to admin/pages
76
+                    header("Location: " . DomainUtils::generateURL("admin/pages"));
77
+
78
+                    ob_flush();
79
+                    ob_end_flush();
80
+
81
+                    exit;
82
+                } else {
83
+                    $error_messages[] = $res;
84
+                }
85
+            } else if ($_REQUEST['submit'] === "Publish") {
86
+                //save page
87
+                $res = $this->save($page);
88
+
89
+                if ($res === true) {
90
+                    $success_messages[] = "Saved page successfully!";
91
+                } else {
92
+                    $error_messages[] = $res;
93
+                }
94
+
95
+                //publish page
96
+                $res = $this->publish($page);
97
+
98
+                if ($res === true) {
99
+                    $success_messages[] = "Page published successfully!";
100
+                } else {
101
+                    $error_messages[] = $res;
102
+                }
103
+            }
104
+        }
105
+
106
+        $template->assign("action_url", DomainUtils::generateURL($this->getPage()->getAlias(), array("edit" => $pageID)));
107
+
108
+        $template->assign("page", array(
109
+            'id' => $page->getPageID(),
110
+            'alias' => "/" . $page->getAlias(),
111
+            'title' => $page->getTitle(),
112
+            'content' => $page->getContent(),
113
+            'is_published' => $page->isPublished(),
114
+            'can_publish' => (!$page->isPublished() && (PermissionChecker::current()->hasRight("can_publish_all_pages") || (PermissionChecker::current()->hasRight("can_publish_own_pages") && $page->getAuthorID() == User::current()->getID()))),
115
+            'can_change_owner' => (PermissionChecker::current()->hasRight("can_change_page_owner") || $page->getAuthorID() == User::current()->getID()),
116
+            'folder' => $page->getFolder(),
117
+            'preview_url' => DomainUtils::generateURL($page->getAlias(), array("preview" => "true")),
118
+            'current_style' => $page->getStyle(),
119
+            'template' => $page->getCustomTemplate(),
120
+            'has_custom_template' => $page->hasCustomTemplate(),
121
+            'parent' => $page->getParentID(),
122
+            'meta_description' => $page->getMetaDescription(),
123
+            'meta_keywords' => $page->getMetaKeywords(),
124
+            'meta_robots' => $page->getMetaRobotsOptions(),
125
+            'meta_canonicals' => $page->getMetaCanonicals(),
126
+            'has_canoncials' => !empty($page->getMetaCanonicals()),
127
+            'sitemap' => $page->isSitemapEnabled(),
128
+            'sitemap_changefreq' => $page->getSitemapChangeFreq(),
129
+            'sitemap_priority' => $page->getSitemapPriority()
130
+        ));
131
+
132
+        //set available styles
133
+        $template->assign("styles", StyleController::listAllStyles());
134
+
135
+        //get all pages from database
136
+        $pages = array();
137
+        $rows = Database::getInstance()->listRows("SELECT `id`, `alias` FROM `{praefix}pages` WHERE `editable` = '1' AND `activated` = '1'; ");
138
+
139
+        foreach ($rows as $row) {
140
+            $pages[] = array(
141
+                'id' => $row['id'],
142
+                'alias' => $row['alias']
143
+            );
144
+        }
145
+
146
+        $template->assign("parent_pages", $pages);
147
+
148
+        //https://developers.google.com/search/reference/robots_meta_tag?hl=de
149
+        $robots_options = array(
150
+            "all",
151
+            "noindex",
152
+            "nofollow",
153
+            "none",
154
+            "noarchive",
155
+            "nosnippet",
156
+            "noodp",
157
+            "notranslate",
158
+            "noimageindex",
159
+            "unavailable_after: "
160
+        );
161
+
162
+        $template->assign("robots_options", $robots_options);
163
+
164
+        $sitemap_change_frequencies = array(
165
+            "AlWAYS", "HOURLY", "DAILY", "WEEKLY", "MONTHLY", "YEARLY", "NEVER"
166
+        );
167
+
168
+        $template->assign("sitemap_changefreq", $sitemap_change_frequencies);
169
+
170
+        //add support to show additional code from plugins
171
+        $additional_code_header = "";
172
+        $additional_code_footer = "";
173
+
174
+        Events::throwEvent("page_edit_additional_code_header", array(
175
+            'page' => &$page,
176
+            'code' => &$additional_code_header
177
+        ));
178
+
179
+        $template->assign("additional_code_header", $additional_code_footer);
180
+
181
+        Events::throwEvent("page_edit_additional_code_footer", array(
182
+            'page' => &$page,
183
+            'code' => &$additional_code_footer
184
+        ));
185
+
186
+        $template->assign("additional_code_footer", $additional_code_footer);
187
+
188
+        $template->assign("errors", $error_messages);
189
+        $template->assign("success_messages", $success_messages);
190
+
191
+        return $template->getCode();
192
+    }
193
+
194
+    protected function save (Page &$page) {
195
+        //first check permissions
196
+        if (!PermissionChecker::current()->hasRight("can_edit_all_pages") && !(PermissionChecker::current()->hasRight("can_edit_own_pages") && $page->getAuthorID() == User::current()->getID())) {
197
+            //user doesn't have permissions to edit this page
198
+            return "You don't have permissions to edit this page!";
199
+        }
200
+
201
+        if (!isset($_POST['title']) || empty($_POST['title'])) {
202
+            return "No title was set";
203
+        }
204
+
205
+        //validate title
206
+        $title = htmlentities($_POST['title']);
207
+
208
+        if (!isset($_POST['html_code']) || empty($_POST['html_code'])) {
209
+            return "No content was set or content is empty!";
210
+        }
211
+
212
+        $content = $_POST['html_code'];
213
+
214
+        //TODO: save page attributes
215
+        if (!isset($_REQUEST['parent']) || empty($_REQUEST['parent'])) {
216
+            return "Parent page wasn't set!";
217
+        }
218
+
219
+        $parent = (int) $_REQUEST['parent'];
220
+
221
+        if (!isset($_REQUEST['design']) || empty($_REQUEST['design'])) {
222
+            return "Design wasn't set!";
223
+        }
224
+
225
+        $design = $_REQUEST['design'];
226
+
227
+        //TODO: check, if style (design) exists
228 228
 
229
-		$template = "none";
229
+        $template = "none";
230 230
 
231
-		if (isset($_REQUEST['has_custom_template']) && isset($_REQUEST['template']) && !empty($_REQUEST['template'])) {
232
-			$template = $_REQUEST['template'];
233
-		}
231
+        if (isset($_REQUEST['has_custom_template']) && isset($_REQUEST['template']) && !empty($_REQUEST['template'])) {
232
+            $template = $_REQUEST['template'];
233
+        }
234 234
 
235
-		//update page in database
236
-		Database::getInstance()->execute("UPDATE `{praefix}pages` SET `title` = :title, `content` = :content, `parent` = :parent, `design` = :design, `template` = :template WHERE `id` = :pageID; ", array(
237
-			'title' => $title,
238
-			'content' => $content,
239
-			'pageID' => $page->getPageID(),
240
-			'parent' => $parent,
241
-			'design' => $design,
242
-			'template' => $template
243
-		));
235
+        //update page in database
236
+        Database::getInstance()->execute("UPDATE `{praefix}pages` SET `title` = :title, `content` = :content, `parent` = :parent, `design` = :design, `template` = :template WHERE `id` = :pageID; ", array(
237
+            'title' => $title,
238
+            'content' => $content,
239
+            'pageID' => $page->getPageID(),
240
+            'parent' => $parent,
241
+            'design' => $design,
242
+            'template' => $template
243
+        ));
244 244
 
245
-		//clear cache
246
-		$page->clearCache();
245
+        //clear cache
246
+        $page->clearCache();
247 247
 
248
-		//reload page from database
249
-		$page->loadByID($page->getPageID(), false);
248
+        //reload page from database
249
+        $page->loadByID($page->getPageID(), false);
250 250
 
251
-		//TODO: remove this line later
252
-		Cache::clear("pages");
251
+        //TODO: remove this line later
252
+        Cache::clear("pages");
253 253
 
254
-		return true;
255
-	}
254
+        return true;
255
+    }
256 256
 
257
-	protected function publish (Page &$page) {
258
-		//check permissions for publishing
259
-		if (PermissionChecker::current()->hasRight("can_publish_all_pages") || (PermissionChecker::current()->hasRight("can_publish_own_pages") && $page->getAuthorID() == User::current()->getID())) {
260
-			//update page in database
261
-			Database::getInstance()->execute("UPDATE `{praefix}pages` SET `published` = '1' WHERE `id` = :pageID; ", array(
262
-				'pageID' => $page->getPageID()
263
-			));
257
+    protected function publish (Page &$page) {
258
+        //check permissions for publishing
259
+        if (PermissionChecker::current()->hasRight("can_publish_all_pages") || (PermissionChecker::current()->hasRight("can_publish_own_pages") && $page->getAuthorID() == User::current()->getID())) {
260
+            //update page in database
261
+            Database::getInstance()->execute("UPDATE `{praefix}pages` SET `published` = '1' WHERE `id` = :pageID; ", array(
262
+                'pageID' => $page->getPageID()
263
+            ));
264 264
 
265
-			//clear cache
266
-			$page->clearCache();
265
+            //clear cache
266
+            $page->clearCache();
267 267
 
268
-			//reload page from database
269
-			$page->loadByID($page->getPageID(), false);
268
+            //reload page from database
269
+            $page->loadByID($page->getPageID(), false);
270 270
 
271
-			//TODO: remove this line later
272
-			Cache::clear("pages");
271
+            //TODO: remove this line later
272
+            Cache::clear("pages");
273 273
 
274
-			return true;
275
-		} else {
276
-			return "You don't have the permissions to publish this page!";
277
-		}
278
-	}
274
+            return true;
275
+        } else {
276
+            return "You don't have the permissions to publish this page!";
277
+        }
278
+    }
279 279
 
280
-	protected function showError (string $message) : string {
281
-		//show error
282
-		$template = new DwooTemplate("pages/error");
283
-		$template->assign("message", "No pageID was set!");
284
-		return $template->getCode();
285
-	}
280
+    protected function showError (string $message) : string {
281
+        //show error
282
+        $template = new DwooTemplate("pages/error");
283
+        $template->assign("message", "No pageID was set!");
284
+        return $template->getCode();
285
+    }
286 286
 
287
-	public function getFooterScripts(): string {
288
-		$style_name = Registry::singleton()->getSetting("current_style_name");
289
-		$style_path = DomainUtils::getBaseURL() . "/styles/" . $style_name . "/";
287
+    public function getFooterScripts(): string {
288
+        $style_name = Registry::singleton()->getSetting("current_style_name");
289
+        $style_path = DomainUtils::getBaseURL() . "/styles/" . $style_name . "/";
290 290
 
291
-		$thirdparty_url = Registry::singleton()->getSetting("thirdparty_url");
291
+        $thirdparty_url = Registry::singleton()->getSetting("thirdparty_url");
292 292
 
293
-		/*return "<!-- CK Editor -->
293
+        /*return "<!-- CK Editor -->
294 294
 			<script src=\"" . $style_path . "bower_components/ckeditor/ckeditor.js\"></script>
295 295
 			
296 296
 			<script>
@@ -304,7 +304,7 @@  discard block
 block discarded – undo
304 304
 				});
305 305
 			</script>";*/
306 306
 
307
-		return "<script src=\"" . $thirdparty_url . "tinymce_4.8.2/js/tinymce/tinymce.min.js\"></script>
307
+        return "<script src=\"" . $thirdparty_url . "tinymce_4.8.2/js/tinymce/tinymce.min.js\"></script>
308 308
   				<script>tinymce.init({
309 309
 					  selector: 'textarea',
310 310
 					  height: 500,
@@ -331,11 +331,11 @@  discard block
 block discarded – undo
331 331
 					}
332 332
 				};
333 333
 				</script>";
334
-	}
334
+    }
335 335
 
336
-	public function listRequiredPermissions(): array {
337
-		return array("can_edit_all_pages", "can_edit_own_pages");
338
-	}
336
+    public function listRequiredPermissions(): array {
337
+        return array("can_edit_all_pages", "can_edit_own_pages");
338
+    }
339 339
 
340 340
 }
341 341
 
Please login to merge, or discard this patch.