Completed
Branch 0.3.0 (b16461)
by Anton
04:03
created

Sitemap::getPages()   A

Complexity

Conditions 4
Paths 3

Size

Total Lines 12
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 12
rs 9.2
cc 4
eloc 5
nc 3
nop 0
1
<?php
2
3
namespace Handlers\Tools {
4
5
	use Frames, Modules\Entitizer, Modules\Settings, Utils\Tools, Arr, Date, DB;
6
7
	class Sitemap extends Frames\Tools\Sitemap {
8
9
		# Get last modified
10
11
		private function getLastModified() {
12
13
			$selection = 'MAX(time_modified) as last_modified';
14
15
			if (!(DB::select(TABLE_PAGES, $selection) && (DB::last()->rows === 1))) return 0;
16
17
			# ------------------------
18
19
			return intval(DB::last()->row()['last_modified']);
20
		}
21
22
		# Get pages
23
24
		private function getPages() {
25
26
			$selection = ['slug', 'time_modified'];
27
28
			$condition = ['visibility' => VISIBILITY_PUBLISHED, 'access' => ACCESS_PUBLIC, 'locked' => 0];
29
30
			if (!(DB::select(TABLE_PAGES, $selection, $condition, 'slug') && DB::last()->status)) return;
31
32
			# ------------------------
33
34
			while (null !== ($page = DB::last()->row())) yield Entitizer::create(TABLE_PAGES, $page);
35
		}
36
37
		# Handle request
38
39
		protected function handle() {
40
41
			# Create sitemap
42
43
			$sitemap = new Tools\Sitemap();
44
45
			# Get last modification time
46
47
			if ($sitemap->load($this->getLastModified())) return $sitemap;
48
49
			# Fill sitemap
50
51
			foreach ($this->getPages() as $page) {
52
53
				$loc = $page->canonical; $lastmod = Date::get(DATE_FORMAT_W3C, $page->time_modified);
54
55
				$sitemap->add($loc, $lastmod, FREQUENCY_WEEKLY, 0.5);
56
			}
57
58
			# Save sitemap
59
60
			$sitemap->save();
61
62
			# ------------------------
63
64
			return $sitemap;
65
		}
66
	}
67
}
68