Passed
Pull Request — master (#15)
by Anton
03:20
created

Section::_main()   B

Complexity

Conditions 3
Paths 2

Size

Total Lines 28
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 28
rs 8.8571
c 0
b 0
f 0
cc 3
eloc 8
nc 2
nop 0
1
<?php
2
3
/**
4
 * @package Cadmium\System\Frames
5
 * @author Anton Romanov
6
 * @copyright Copyright (c) 2015-2017, Anton Romanov
7
 * @link http://cadmium-cms.com
8
 */
9
10
namespace Frames {
11
12
	use Modules\Auth, Modules\Extend, Modules\Settings;
13
	use Utils\Messages, Utils\Popup, Utils\SEO, Utils\View, Date, Language, Template;
14
15
	abstract class Section extends Main {
16
17
		# Active section interface
18
19
		const SECTION = '';
20
21
		# Phrases list interface
22
23
		const PHRASES = [];
24
25
		/**
26
		 * Load language phrases
27
		 */
28
29
		private function loadPhrases() {
30
31
			$languages = [Extend\Languages::pathPrimary(), Extend\Languages::path()];
32
33
			$phrases = (static::PHRASES + array_keys(Extend\Addons::items() ?? []));
34
35
			foreach (array_unique($languages) as $path) foreach ($phrases as $name) {
36
37
				Language::load($path . 'Phrases/' . $name . '.php');
38
			}
39
		}
40
41
		/**
42
		 * Set template globals
43
		 */
44
45
		private function setGlobals() {
46
47
			Template::setGlobal('cadmium_home',         CADMIUM_HOME);
48
			Template::setGlobal('cadmium_copy',         CADMIUM_COPY);
49
			Template::setGlobal('cadmium_name',         CADMIUM_NAME);
50
			Template::setGlobal('cadmium_version',      CADMIUM_VERSION);
51
52
			Template::setGlobal('template_name',        strtolower(Extend\Templates::active()));
53
54
			Template::setGlobal('site_title',           Settings::get('site_title'));
55
			Template::setGlobal('site_slogan',          Settings::get('site_slogan'));
56
57
			Template::setGlobal('system_url',           Settings::get('system_url'));
58
			Template::setGlobal('system_email',         Settings::get('system_email'));
59
60
			Template::setGlobal('install_path',         INSTALL_PATH);
61
62
			Template::setGlobal('index_page',           (('' !== INSTALL_PATH) ? INSTALL_PATH : '/'));
63
64
			Template::setGlobal('current_year',         Date::getYear());
65
		}
66
67
		/**
68
		 * The branch method for sections
69
		 */
70
71
		protected function _main() {
72
73
			# Init extensions
74
75
			Extend\Languages::init(static::SECTION);
76
77
			Extend\Templates::init(static::SECTION);
78
79
			# Process language and template
80
81
			$this->loadPhrases(); $this->setGlobals();
82
83
			# Init auth
84
85
			Auth::init(static::SECTION);
86
87
			# Set timezone
88
89
			if (Auth::check() && ('' !== ($timezone = Auth::user()->timezone))) date_default_timezone_set($timezone);
90
91
			# Init utils
92
93
			View::init(); SEO::init(); Messages::init(); Popup::init();
94
95
			# ------------------------
96
97
			$this->_section();
98
		}
99
100
		/**
101
		 * The interface for a section branch method
102
		 */
103
104
		abstract protected function _section();
105
106
		/**
107
		 * The interface for a handler method
108
		 *
109
		 * @return Template\Block|Ajax\Response|null : a template block or an ajax response on success or null on failure
110
		 */
111
112
		abstract protected function handle();
113
	}
114
}
115