Passed
Push — develop ( b0eb3e...48584b )
by Jens
02:48
created
cloudcontrol/library/images/methods/Crop.php 1 patch
Indentation   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -109,8 +109,8 @@
 block discarded – undo
109 109
 
110 110
 			// Preserve transparency
111 111
 			imagecolortransparent($new, imagecolorallocatealpha($new, 0, 0, 0, 127));
112
-            imagealphablending($new, false);
113
-            imagesavealpha($new, true);
112
+			imagealphablending($new, false);
113
+			imagesavealpha($new, true);
114 114
 			
115 115
 			imagecopyresampled($new, $imageResource, $this->_destX, $this->_destY, $this->_x, $this->_y, $this->_destWidth, $this->_destHeight, $this->_destWidth, $this->_destHeight);
116 116
 			
Please login to merge, or discard this patch.
cloudcontrol/library/images/methods/SmartCrop.php 1 patch
Indentation   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -62,8 +62,8 @@
 block discarded – undo
62 62
 
63 63
 			// Preserve transparency
64 64
 			imagecolortransparent($new, imagecolorallocatealpha($new, 0, 0, 0, 127));
65
-            imagealphablending($new, false);
66
-            imagesavealpha($new, true);
65
+			imagealphablending($new, false);
66
+			imagesavealpha($new, true);
67 67
 			
68 68
 			imagecopyresampled($new, $imageResource, $this->_destX, $this->_destY, $this->_x, $this->_y, $this->_destWidth, $this->_destHeight, $originalWidth, $originalHeight);
69 69
 			
Please login to merge, or discard this patch.
cloudcontrol/library/images/methods/BoxCrop.php 1 patch
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@
 block discarded – undo
17 17
 		/**
18 18
 		 * @param resource $imageResource
19 19
 		 * @return resource
20
-         */
20
+		 */
21 21
 		public function Execute($imageResource)
22 22
 		{
23 23
 			// Define the origial width and height
Please login to merge, or discard this patch.
cloudcontrol/library/components/cms/SitemapRouting.php 1 patch
Indentation   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -14,24 +14,24 @@
 block discarded – undo
14 14
 class SitemapRouting implements CmsRouting
15 15
 {
16 16
 
17
-    /**
18
-     * SitemapRouting constructor.
19
-     * @param \library\cc\Request $request
20
-     * @param mixed|string $relativeCmsUri
21
-     * @param CmsComponent $cmsComponent
22
-     */
23
-    public function __construct($request, $relativeCmsUri, $cmsComponent)
24
-    {
25
-        if ($relativeCmsUri == '/sitemap') {
17
+	/**
18
+	 * SitemapRouting constructor.
19
+	 * @param \library\cc\Request $request
20
+	 * @param mixed|string $relativeCmsUri
21
+	 * @param CmsComponent $cmsComponent
22
+	 */
23
+	public function __construct($request, $relativeCmsUri, $cmsComponent)
24
+	{
25
+		if ($relativeCmsUri == '/sitemap') {
26 26
 			$this->overviewRoute($request, $cmsComponent);
27
-        } elseif ($relativeCmsUri == '/sitemap/new') {
27
+		} elseif ($relativeCmsUri == '/sitemap/new') {
28 28
 			$this->newRoute($request, $cmsComponent);
29
-        } elseif ($relativeCmsUri == '/sitemap/edit' && isset($request::$get[CmsComponent::GET_PARAMETER_SLUG])) {
29
+		} elseif ($relativeCmsUri == '/sitemap/edit' && isset($request::$get[CmsComponent::GET_PARAMETER_SLUG])) {
30 30
 			$this->editRoute($request, $cmsComponent);
31
-        } elseif ($relativeCmsUri == '/sitemap/delete' && isset($request::$get[CmsComponent::GET_PARAMETER_SLUG])) {
31
+		} elseif ($relativeCmsUri == '/sitemap/delete' && isset($request::$get[CmsComponent::GET_PARAMETER_SLUG])) {
32 32
 			$this->deleteRoute($request, $cmsComponent);
33
-        }
34
-    }
33
+		}
34
+	}
35 35
 
36 36
 	/**
37 37
 	 * @param $request
Please login to merge, or discard this patch.
cloudcontrol/library/components/LanguageComponent.php 1 patch
Indentation   +118 added lines, -118 removed lines patch added patch discarded remove patch
@@ -6,124 +6,124 @@
 block discarded – undo
6 6
 
7 7
 class LanguageComponent implements Component
8 8
 {
9
-    protected $request;
10
-    protected $parameters;
11
-
12
-    protected $defaultLanguage = 'en';
13
-    protected $acceptedLanguages = null;
14
-    protected $languageParameterName = 'language';
15
-    protected $forceRedirect = false;
16
-    protected $sessionValues;
17
-
18
-    /**
19
-     * Component constructor.
20
-     *
21
-     * @param                     $template
22
-     * @param Request $request
23
-     * @param                     $parameters
24
-     * @param                     $matchedSitemapItem
25
-     */
26
-    public function __construct($template, Request $request, $parameters, $matchedSitemapItem)
27
-    {
28
-        $this->parameters = (array) $parameters;
29
-        $this->checkParameters();
30
-
31
-        $lang = substr(isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : $this->defaultLanguage, 0, 2);
32
-        $_SESSION['LanguageComponent']['detectedLanguage'] = $lang;
33
-
34
-        $this->checkLanguageSwitch($request);
35
-
36
-        if (!isset($_SESSION['LanguageComponent'][$this->languageParameterName])) {
37
-            $this->detectLanguage($lang, $request);
38
-        } else {
39
-            if ($this->forceRedirect === true) {
40
-                $this->detectLanguage($_SESSION['LanguageComponent'][$this->languageParameterName], $request);
41
-            }
42
-        }
43
-
44
-        $this->parameters[$this->languageParameterName] = $_SESSION['LanguageComponent'][$this->languageParameterName];
45
-    }
46
-
47
-    /**
48
-     * Checks to see if any parameters are given from the configuration in the CMS
49
-     */
50
-    private function checkParameters()
51
-    {
52
-        if (isset($this->parameters['defaultLanguage'])) {
53
-            $this->defaultLanguage = $this->parameters['defaultLanguage'];
54
-            unset($this->parameters['defaultLanguage']);
55
-        }
56
-        if (isset($this->parameters['acceptedLanguages'])) {
57
-            $this->acceptedLanguages = explode(',', $this->parameters['acceptedLanguages']);
58
-            unset($this->parameters['acceptedLanguages']);
59
-        }
60
-        if (isset($this->parameters['languageParameterName'])) {
61
-            $this->languageParameterName = $this->parameters['languageParameterName'];
62
-            unset($this->parameters['languageParameterName']);
63
-        }
64
-        if (isset($this->parameters['forceRedirect'])) {
65
-            $this->forceRedirect = (bool) $this->parameters['forceRedirect'];
66
-            unset($this->parameters['forceRedirect']);
67
-        }
68
-    }
69
-
70
-    /**
71
-     * @return array
72
-     */
73
-    public function getParameters()
74
-    {
75
-        return $this->parameters;
76
-    }
77
-
78
-
79
-    /**
80
-     * Check if the found language is allowed and
81
-     * if an action is to be taken.
82
-     *
83
-     * @param $lang
84
-     * @param $request
85
-     */
86
-    private function detectLanguage($lang, $request)
87
-    {
88
-        $_SESSION['LanguageComponent'][$this->languageParameterName] = $this->defaultLanguage;
89
-
90
-        if ($this->acceptedLanguages === null) {
91
-            $_SESSION['LanguageComponent'][$this->languageParameterName] = $lang;
92
-        } else if (in_array($lang, $this->acceptedLanguages)) {
93
-            $_SESSION['LanguageComponent'][$this->languageParameterName] = $lang;
94
-        } else {
95
-            $lang = $this->defaultLanguage;
96
-        }
97
-
98
-        $this->sessionValues = $_SESSION['LanguageComponent'];
99
-
100
-        if ($this->forceRedirect === true) {
101
-            if (substr($request::$relativeUri, 0, 2) !== $lang ) {
102
-                if ($lang !== $this->defaultLanguage) {
103
-                    header('Location: ' . $request::$subfolders . $lang . '/' . $request::$relativeUri);
104
-                    exit;
105
-                }
106
-            }
107
-        }
108
-    }
109
-
110
-    /**
111
-     * Detect if the language is switched manually
112
-     *
113
-     * @param $request
114
-     */
115
-    private function checkLanguageSwitch($request)
116
-    {
117
-        if (isset($request::$get['langSwitch'])) {
118
-            $this->forceRedirect = true;
119
-            $this->detectLanguage($request::$get['langSwitch'], $request);
120
-        }
121
-    }
122
-
123
-    /*
9
+	protected $request;
10
+	protected $parameters;
11
+
12
+	protected $defaultLanguage = 'en';
13
+	protected $acceptedLanguages = null;
14
+	protected $languageParameterName = 'language';
15
+	protected $forceRedirect = false;
16
+	protected $sessionValues;
17
+
18
+	/**
19
+	 * Component constructor.
20
+	 *
21
+	 * @param                     $template
22
+	 * @param Request $request
23
+	 * @param                     $parameters
24
+	 * @param                     $matchedSitemapItem
25
+	 */
26
+	public function __construct($template, Request $request, $parameters, $matchedSitemapItem)
27
+	{
28
+		$this->parameters = (array) $parameters;
29
+		$this->checkParameters();
30
+
31
+		$lang = substr(isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : $this->defaultLanguage, 0, 2);
32
+		$_SESSION['LanguageComponent']['detectedLanguage'] = $lang;
33
+
34
+		$this->checkLanguageSwitch($request);
35
+
36
+		if (!isset($_SESSION['LanguageComponent'][$this->languageParameterName])) {
37
+			$this->detectLanguage($lang, $request);
38
+		} else {
39
+			if ($this->forceRedirect === true) {
40
+				$this->detectLanguage($_SESSION['LanguageComponent'][$this->languageParameterName], $request);
41
+			}
42
+		}
43
+
44
+		$this->parameters[$this->languageParameterName] = $_SESSION['LanguageComponent'][$this->languageParameterName];
45
+	}
46
+
47
+	/**
48
+	 * Checks to see if any parameters are given from the configuration in the CMS
49
+	 */
50
+	private function checkParameters()
51
+	{
52
+		if (isset($this->parameters['defaultLanguage'])) {
53
+			$this->defaultLanguage = $this->parameters['defaultLanguage'];
54
+			unset($this->parameters['defaultLanguage']);
55
+		}
56
+		if (isset($this->parameters['acceptedLanguages'])) {
57
+			$this->acceptedLanguages = explode(',', $this->parameters['acceptedLanguages']);
58
+			unset($this->parameters['acceptedLanguages']);
59
+		}
60
+		if (isset($this->parameters['languageParameterName'])) {
61
+			$this->languageParameterName = $this->parameters['languageParameterName'];
62
+			unset($this->parameters['languageParameterName']);
63
+		}
64
+		if (isset($this->parameters['forceRedirect'])) {
65
+			$this->forceRedirect = (bool) $this->parameters['forceRedirect'];
66
+			unset($this->parameters['forceRedirect']);
67
+		}
68
+	}
69
+
70
+	/**
71
+	 * @return array
72
+	 */
73
+	public function getParameters()
74
+	{
75
+		return $this->parameters;
76
+	}
77
+
78
+
79
+	/**
80
+	 * Check if the found language is allowed and
81
+	 * if an action is to be taken.
82
+	 *
83
+	 * @param $lang
84
+	 * @param $request
85
+	 */
86
+	private function detectLanguage($lang, $request)
87
+	{
88
+		$_SESSION['LanguageComponent'][$this->languageParameterName] = $this->defaultLanguage;
89
+
90
+		if ($this->acceptedLanguages === null) {
91
+			$_SESSION['LanguageComponent'][$this->languageParameterName] = $lang;
92
+		} else if (in_array($lang, $this->acceptedLanguages)) {
93
+			$_SESSION['LanguageComponent'][$this->languageParameterName] = $lang;
94
+		} else {
95
+			$lang = $this->defaultLanguage;
96
+		}
97
+
98
+		$this->sessionValues = $_SESSION['LanguageComponent'];
99
+
100
+		if ($this->forceRedirect === true) {
101
+			if (substr($request::$relativeUri, 0, 2) !== $lang ) {
102
+				if ($lang !== $this->defaultLanguage) {
103
+					header('Location: ' . $request::$subfolders . $lang . '/' . $request::$relativeUri);
104
+					exit;
105
+				}
106
+			}
107
+		}
108
+	}
109
+
110
+	/**
111
+	 * Detect if the language is switched manually
112
+	 *
113
+	 * @param $request
114
+	 */
115
+	private function checkLanguageSwitch($request)
116
+	{
117
+		if (isset($request::$get['langSwitch'])) {
118
+			$this->forceRedirect = true;
119
+			$this->detectLanguage($request::$get['langSwitch'], $request);
120
+		}
121
+	}
122
+
123
+	/*
124 124
      * These functions are required by the interface, but not for the functionality
125 125
      */
126
-    public function run(JsonStorage $storage) {}
127
-    public function render() {}
128
-    public function get() {}
126
+	public function run(JsonStorage $storage) {}
127
+	public function render() {}
128
+	public function get() {}
129 129
 }
130 130
\ No newline at end of file
Please login to merge, or discard this patch.
cloudcontrol/library/search/filters/StopWordsFilter.php 1 patch
Indentation   +30 added lines, -30 removed lines patch added patch discarded remove patch
@@ -11,37 +11,37 @@
 block discarded – undo
11 11
 
12 12
 abstract class StopWordsFilter implements Filter
13 13
 {
14
-    protected $tokens;
15
-    protected $stopWords = array();
14
+	protected $tokens;
15
+	protected $stopWords = array();
16 16
 
17
-    /**
18
-     * StopWordsFilter constructor.
19
-     * @param array $tokens
20
-     */
21
-    public function __construct($tokens)
22
-    {
23
-        $this->tokens = $tokens;
24
-    }
17
+	/**
18
+	 * StopWordsFilter constructor.
19
+	 * @param array $tokens
20
+	 */
21
+	public function __construct($tokens)
22
+	{
23
+		$this->tokens = $tokens;
24
+	}
25 25
 
26
-    /**
27
-     * @return array
28
-     */
29
-    public function getFilterResults()
30
-    {
31
-        foreach ($this->stopWords as $stopWord) {
32
-            foreach ($this->tokens as $field => $tokens) {
33
-                if (isset($tokens[$stopWord])) {
34
-                    $tokens[$stopWord] = null;
35
-                    unset($tokens[$stopWord]);
36
-                    $tokens = array_filter($tokens);
37
-                    asort($tokens);
38
-                }
26
+	/**
27
+	 * @return array
28
+	 */
29
+	public function getFilterResults()
30
+	{
31
+		foreach ($this->stopWords as $stopWord) {
32
+			foreach ($this->tokens as $field => $tokens) {
33
+				if (isset($tokens[$stopWord])) {
34
+					$tokens[$stopWord] = null;
35
+					unset($tokens[$stopWord]);
36
+					$tokens = array_filter($tokens);
37
+					asort($tokens);
38
+				}
39 39
 
40
-                $this->tokens[$field] = $tokens;
41
-            }
42
-        }
43
-        $this->tokens = array_filter($this->tokens);
44
-        asort($this->tokens);
45
-        return $this->tokens;
46
-    }
40
+				$this->tokens[$field] = $tokens;
41
+			}
42
+		}
43
+		$this->tokens = array_filter($this->tokens);
44
+		asort($this->tokens);
45
+		return $this->tokens;
46
+	}
47 47
 }
48 48
\ No newline at end of file
Please login to merge, or discard this patch.
cloudcontrol/library/storage/Repository.php 1 patch
Indentation   +353 added lines, -353 removed lines patch added patch discarded remove patch
@@ -21,227 +21,227 @@  discard block
 block discarded – undo
21 21
  */
22 22
 class Repository
23 23
 {
24
-    protected $storagePath;
25
-
26
-    protected $fileBasedSubsets = array('sitemap', 'applicationComponents', 'documentTypes', 'bricks', 'imageSet', 'images', 'files', 'users');
27
-
28
-    protected $sitemap;
29
-    protected $sitemapChanges = false;
30
-
31
-    protected $applicationComponents;
32
-    protected $applicationComponentsChanges = false;
33
-
34
-    protected $documentTypes;
35
-    protected $documentTypesChanges = false;
36
-
37
-    protected $bricks;
38
-    protected $bricksChanges = false;
39
-
40
-    protected $imageSet;
41
-    protected $imageSetChanges = false;
42
-
43
-    protected $images;
44
-    protected $imagesChanges = false;
45
-
46
-    protected $files;
47
-    protected $filesChanges = false;
48
-
49
-    protected $users;
50
-    protected $usersChanges = false;
51
-
52
-    protected $contentDbHandle;
53
-
54
-    /**
55
-     * Repository constructor.
56
-     * @param $storagePath
57
-     * @throws \Exception
58
-     */
59
-    public function __construct($storagePath)
60
-    {
61
-        $storagePath = realpath($storagePath);
62
-        if (is_dir($storagePath) && $storagePath !== false) {
63
-            $this->storagePath = $storagePath;
64
-        } else {
65
-            throw new \Exception('Repository not yet initialized.');
66
-        }
67
-    }
68
-
69
-    /**
70
-     * Creates the folder in which to create all storage related files
71
-     *
72
-     * @param $storagePath
73
-     * @return bool
74
-     */
75
-    public static function create($storagePath)
76
-    {
77
-        return mkdir($storagePath);
78
-    }
79
-
80
-    /**
81
-     * Initiates default storage
82
-     * @throws \Exception
83
-     */
84
-    public function init()
85
-    {
86
-        $storageDefaultPath = realpath('../library/cc/install/_storage.json');
87
-        $contentSqlPath = realpath('../library/cc/install/content.sql');
88
-
89
-        $this->initConfigStorage($storageDefaultPath);
90
-        $this->initContentDb($contentSqlPath);
91
-
92
-        $this->save();
93
-    }
94
-
95
-    /**
96
-     * Load filebased subset and return it's contents
97
-     *
98
-     * @param $name
99
-     * @return mixed|string
100
-     * @throws \Exception
101
-     */
102
-    public function __get($name)
103
-    {
104
-        if (isset($this->$name)) {
105
-            if (in_array($name, $this->fileBasedSubsets)) {
106
-                return $this->$name;
107
-            } else {
108
-                throw new \Exception('Trying to get undefined property from Repository: ' . $name);
109
-            }
110
-        } else {
111
-            if (in_array($name, $this->fileBasedSubsets)) {
112
-                return $this->loadSubset($name);
113
-            } else {
114
-                throw new \Exception('Trying to get undefined property from Repository: ' . $name);
115
-            }
116
-        }
117
-    }
118
-
119
-    /**
120
-     * Set filebased subset contents
121
-     * @param $name
122
-     * @param $value
123
-     * @throws \Exception
124
-     */
125
-    public function __set($name, $value)
126
-    {
127
-        if (in_array($name, $this->fileBasedSubsets)) {
128
-            $this->$name = $value;
129
-            $changes = $name . 'Changes';
130
-            $this->$changes = true;
131
-        } else {
132
-            throw new \Exception('Trying to persist unknown subset in repository: ' . $name . ' <br /><pre>' . print_r($value, true) . '</pre>');
133
-        }
134
-    }
135
-
136
-    /**
137
-     * Persist all subsets
138
-     */
139
-    public function save()
140
-    {
141
-        $this->sitemapChanges ? $this->saveSubset('sitemap') : null;
142
-        $this->applicationComponentsChanges ? $this->saveSubset('applicationComponents') : null;
143
-        $this->documentTypesChanges ? $this->saveSubset('documentTypes') : null;
144
-        $this->bricksChanges ? $this->saveSubset('bricks') : null;
145
-        $this->imageSetChanges ? $this->saveSubset('imageSet') : null;
146
-        $this->imagesChanges ? $this->saveSubset('images') : null;
147
-        $this->filesChanges ? $this->saveSubset('files') : null;
148
-        $this->usersChanges ? $this->saveSubset('users') : null;
149
-    }
150
-
151
-    /**
152
-     * Persist subset to disk
153
-     * @param $subset
154
-     */
155
-    protected function saveSubset($subset)
156
-    {
157
-        $json = json_encode($this->$subset, JSON_PRETTY_PRINT);
158
-        $subsetStoragePath = $this->storagePath . DIRECTORY_SEPARATOR . $subset . '.json';
159
-        file_put_contents($subsetStoragePath, $json);
160
-        $changes = $subset . 'Changes';
161
-        $this->$changes = false;
162
-    }
163
-
164
-    /**
165
-     * Load subset from disk
166
-     * @param $subset
167
-     * @return mixed|string
168
-     */
169
-    protected function loadSubset($subset)
170
-    {
171
-        $subsetStoragePath = $this->storagePath . DIRECTORY_SEPARATOR . $subset . '.json';
172
-        $json = file_get_contents($subsetStoragePath);
173
-        $json = json_decode($json);
174
-        $this->$subset = $json;
175
-        return $json;
176
-    }
177
-
178
-    /**
179
-     * @param $contentSqlPath
180
-     */
181
-    protected function initContentDb($contentSqlPath)
182
-    {
183
-        $db = $this->getContentDbHandle();
184
-        $sql = file_get_contents($contentSqlPath);
185
-        $db->exec($sql);
186
-    }
187
-
188
-    /**
189
-     * @param $storageDefaultPath
190
-     */
191
-    protected function initConfigStorage($storageDefaultPath)
192
-    {
193
-        $json = file_get_contents($storageDefaultPath);
194
-        $json = json_decode($json);
195
-        $this->sitemap = $json->sitemap;
196
-        $this->sitemapChanges = true;
197
-        $this->applicationComponents = $json->applicationComponents;
198
-        $this->applicationComponentsChanges = true;
199
-        $this->documentTypes = $json->documentTypes;
200
-        $this->documentTypesChanges = true;
201
-        $this->bricks = $json->bricks;
202
-        $this->bricksChanges = true;
203
-        $this->imageSet = $json->imageSet;
204
-        $this->imageSetChanges = true;
205
-        $this->images = $json->images;
206
-        $this->imagesChanges = true;
207
-        $this->files = $json->files;
208
-        $this->filesChanges = true;
209
-        $this->users = $json->users;
210
-        $this->usersChanges = true;
211
-    }
212
-
213
-    /**
214
-     * @return \PDO
215
-     */
216
-    public function getContentDbHandle()
217
-    {
218
-        if ($this->contentDbHandle === null) {
219
-            $this->contentDbHandle = new \PDO('sqlite:' . $this->storagePath . DIRECTORY_SEPARATOR . 'content.db');
220
-        }
221
-        return $this->contentDbHandle;
222
-    }
223
-
224
-    /**
225
-     * Get all documents
226
-     * @return array
227
-     */
228
-    public function getDocuments()
229
-    {
230
-        return $this->getDocumentsByPath('/');
231
-    }
232
-
233
-    /**
234
-     * Get all documents and folders in a certain path
235
-     * @param $folderPath
236
-     * @return array
237
-     * @throws \Exception
238
-     */
239
-    public function getDocumentsByPath($folderPath)
240
-    {
241
-        $db = $this->getContentDbHandle();
242
-        $folderPathWithWildcard = $folderPath . '%';
243
-
244
-        $stmt = $this->getDbStatement('
24
+	protected $storagePath;
25
+
26
+	protected $fileBasedSubsets = array('sitemap', 'applicationComponents', 'documentTypes', 'bricks', 'imageSet', 'images', 'files', 'users');
27
+
28
+	protected $sitemap;
29
+	protected $sitemapChanges = false;
30
+
31
+	protected $applicationComponents;
32
+	protected $applicationComponentsChanges = false;
33
+
34
+	protected $documentTypes;
35
+	protected $documentTypesChanges = false;
36
+
37
+	protected $bricks;
38
+	protected $bricksChanges = false;
39
+
40
+	protected $imageSet;
41
+	protected $imageSetChanges = false;
42
+
43
+	protected $images;
44
+	protected $imagesChanges = false;
45
+
46
+	protected $files;
47
+	protected $filesChanges = false;
48
+
49
+	protected $users;
50
+	protected $usersChanges = false;
51
+
52
+	protected $contentDbHandle;
53
+
54
+	/**
55
+	 * Repository constructor.
56
+	 * @param $storagePath
57
+	 * @throws \Exception
58
+	 */
59
+	public function __construct($storagePath)
60
+	{
61
+		$storagePath = realpath($storagePath);
62
+		if (is_dir($storagePath) && $storagePath !== false) {
63
+			$this->storagePath = $storagePath;
64
+		} else {
65
+			throw new \Exception('Repository not yet initialized.');
66
+		}
67
+	}
68
+
69
+	/**
70
+	 * Creates the folder in which to create all storage related files
71
+	 *
72
+	 * @param $storagePath
73
+	 * @return bool
74
+	 */
75
+	public static function create($storagePath)
76
+	{
77
+		return mkdir($storagePath);
78
+	}
79
+
80
+	/**
81
+	 * Initiates default storage
82
+	 * @throws \Exception
83
+	 */
84
+	public function init()
85
+	{
86
+		$storageDefaultPath = realpath('../library/cc/install/_storage.json');
87
+		$contentSqlPath = realpath('../library/cc/install/content.sql');
88
+
89
+		$this->initConfigStorage($storageDefaultPath);
90
+		$this->initContentDb($contentSqlPath);
91
+
92
+		$this->save();
93
+	}
94
+
95
+	/**
96
+	 * Load filebased subset and return it's contents
97
+	 *
98
+	 * @param $name
99
+	 * @return mixed|string
100
+	 * @throws \Exception
101
+	 */
102
+	public function __get($name)
103
+	{
104
+		if (isset($this->$name)) {
105
+			if (in_array($name, $this->fileBasedSubsets)) {
106
+				return $this->$name;
107
+			} else {
108
+				throw new \Exception('Trying to get undefined property from Repository: ' . $name);
109
+			}
110
+		} else {
111
+			if (in_array($name, $this->fileBasedSubsets)) {
112
+				return $this->loadSubset($name);
113
+			} else {
114
+				throw new \Exception('Trying to get undefined property from Repository: ' . $name);
115
+			}
116
+		}
117
+	}
118
+
119
+	/**
120
+	 * Set filebased subset contents
121
+	 * @param $name
122
+	 * @param $value
123
+	 * @throws \Exception
124
+	 */
125
+	public function __set($name, $value)
126
+	{
127
+		if (in_array($name, $this->fileBasedSubsets)) {
128
+			$this->$name = $value;
129
+			$changes = $name . 'Changes';
130
+			$this->$changes = true;
131
+		} else {
132
+			throw new \Exception('Trying to persist unknown subset in repository: ' . $name . ' <br /><pre>' . print_r($value, true) . '</pre>');
133
+		}
134
+	}
135
+
136
+	/**
137
+	 * Persist all subsets
138
+	 */
139
+	public function save()
140
+	{
141
+		$this->sitemapChanges ? $this->saveSubset('sitemap') : null;
142
+		$this->applicationComponentsChanges ? $this->saveSubset('applicationComponents') : null;
143
+		$this->documentTypesChanges ? $this->saveSubset('documentTypes') : null;
144
+		$this->bricksChanges ? $this->saveSubset('bricks') : null;
145
+		$this->imageSetChanges ? $this->saveSubset('imageSet') : null;
146
+		$this->imagesChanges ? $this->saveSubset('images') : null;
147
+		$this->filesChanges ? $this->saveSubset('files') : null;
148
+		$this->usersChanges ? $this->saveSubset('users') : null;
149
+	}
150
+
151
+	/**
152
+	 * Persist subset to disk
153
+	 * @param $subset
154
+	 */
155
+	protected function saveSubset($subset)
156
+	{
157
+		$json = json_encode($this->$subset, JSON_PRETTY_PRINT);
158
+		$subsetStoragePath = $this->storagePath . DIRECTORY_SEPARATOR . $subset . '.json';
159
+		file_put_contents($subsetStoragePath, $json);
160
+		$changes = $subset . 'Changes';
161
+		$this->$changes = false;
162
+	}
163
+
164
+	/**
165
+	 * Load subset from disk
166
+	 * @param $subset
167
+	 * @return mixed|string
168
+	 */
169
+	protected function loadSubset($subset)
170
+	{
171
+		$subsetStoragePath = $this->storagePath . DIRECTORY_SEPARATOR . $subset . '.json';
172
+		$json = file_get_contents($subsetStoragePath);
173
+		$json = json_decode($json);
174
+		$this->$subset = $json;
175
+		return $json;
176
+	}
177
+
178
+	/**
179
+	 * @param $contentSqlPath
180
+	 */
181
+	protected function initContentDb($contentSqlPath)
182
+	{
183
+		$db = $this->getContentDbHandle();
184
+		$sql = file_get_contents($contentSqlPath);
185
+		$db->exec($sql);
186
+	}
187
+
188
+	/**
189
+	 * @param $storageDefaultPath
190
+	 */
191
+	protected function initConfigStorage($storageDefaultPath)
192
+	{
193
+		$json = file_get_contents($storageDefaultPath);
194
+		$json = json_decode($json);
195
+		$this->sitemap = $json->sitemap;
196
+		$this->sitemapChanges = true;
197
+		$this->applicationComponents = $json->applicationComponents;
198
+		$this->applicationComponentsChanges = true;
199
+		$this->documentTypes = $json->documentTypes;
200
+		$this->documentTypesChanges = true;
201
+		$this->bricks = $json->bricks;
202
+		$this->bricksChanges = true;
203
+		$this->imageSet = $json->imageSet;
204
+		$this->imageSetChanges = true;
205
+		$this->images = $json->images;
206
+		$this->imagesChanges = true;
207
+		$this->files = $json->files;
208
+		$this->filesChanges = true;
209
+		$this->users = $json->users;
210
+		$this->usersChanges = true;
211
+	}
212
+
213
+	/**
214
+	 * @return \PDO
215
+	 */
216
+	public function getContentDbHandle()
217
+	{
218
+		if ($this->contentDbHandle === null) {
219
+			$this->contentDbHandle = new \PDO('sqlite:' . $this->storagePath . DIRECTORY_SEPARATOR . 'content.db');
220
+		}
221
+		return $this->contentDbHandle;
222
+	}
223
+
224
+	/**
225
+	 * Get all documents
226
+	 * @return array
227
+	 */
228
+	public function getDocuments()
229
+	{
230
+		return $this->getDocumentsByPath('/');
231
+	}
232
+
233
+	/**
234
+	 * Get all documents and folders in a certain path
235
+	 * @param $folderPath
236
+	 * @return array
237
+	 * @throws \Exception
238
+	 */
239
+	public function getDocumentsByPath($folderPath)
240
+	{
241
+		$db = $this->getContentDbHandle();
242
+		$folderPathWithWildcard = $folderPath . '%';
243
+
244
+		$stmt = $this->getDbStatement('
245 245
             SELECT *
246 246
               FROM documents
247 247
              WHERE `path` LIKE ' . $db->quote($folderPathWithWildcard) . '
@@ -250,53 +250,53 @@  discard block
 block discarded – undo
250 250
           ORDER BY `type` DESC, `path` ASC
251 251
         ');
252 252
 
253
-        $documents = $stmt->fetchAll(\PDO::FETCH_CLASS, '\library\storage\Document');
254
-        foreach ($documents as $key => $document) {
255
-            if ($document->type === 'folder') {
256
-                $document->dbHandle = $db;
257
-                $documents[$key] = $document;
258
-            }
259
-        }
260
-        return $documents;
261
-    }
262
-
263
-
264
-    /**
265
-     * @param $path
266
-     * @return bool|Document
267
-     */
268
-    public function getDocumentContainerByPath($path)
269
-    {
270
-        $document = $this->getDocumentByPath($path);
271
-        if ($document === false) {
272
-            return false;
273
-        }
274
-        $slugLength = strlen($document->slug);
275
-        $containerPath = substr($path, 0, -$slugLength);
276
-        if ($containerPath === '/') {
277
-            return $this->getRootFolder();
278
-        }
279
-        $containerFolder = $this->getDocumentByPath($containerPath);
280
-        return $containerFolder;
281
-    }
282
-
283
-    /**
284
-     * @param $path
285
-     * @return bool|Document
286
-     */
287
-    public function getDocumentByPath($path)
288
-    {
289
-        $db = $this->getContentDbHandle();
290
-        $document = $this->fetchDocument('
253
+		$documents = $stmt->fetchAll(\PDO::FETCH_CLASS, '\library\storage\Document');
254
+		foreach ($documents as $key => $document) {
255
+			if ($document->type === 'folder') {
256
+				$document->dbHandle = $db;
257
+				$documents[$key] = $document;
258
+			}
259
+		}
260
+		return $documents;
261
+	}
262
+
263
+
264
+	/**
265
+	 * @param $path
266
+	 * @return bool|Document
267
+	 */
268
+	public function getDocumentContainerByPath($path)
269
+	{
270
+		$document = $this->getDocumentByPath($path);
271
+		if ($document === false) {
272
+			return false;
273
+		}
274
+		$slugLength = strlen($document->slug);
275
+		$containerPath = substr($path, 0, -$slugLength);
276
+		if ($containerPath === '/') {
277
+			return $this->getRootFolder();
278
+		}
279
+		$containerFolder = $this->getDocumentByPath($containerPath);
280
+		return $containerFolder;
281
+	}
282
+
283
+	/**
284
+	 * @param $path
285
+	 * @return bool|Document
286
+	 */
287
+	public function getDocumentByPath($path)
288
+	{
289
+		$db = $this->getContentDbHandle();
290
+		$document = $this->fetchDocument('
291 291
             SELECT *
292 292
               FROM documents
293 293
              WHERE path = ' . $db->quote($path) . '
294 294
         ');
295
-        if ($document instanceof Document && $document->type === 'folder') {
296
-            $document->dbHandle = $db;
297
-        }
298
-        return $document;
299
-    }
295
+		if ($document instanceof Document && $document->type === 'folder') {
296
+			$document->dbHandle = $db;
297
+		}
298
+		return $document;
299
+	}
300 300
 
301 301
 	/**
302 302
 	 * Returns the count of all documents stored in the db
@@ -317,70 +317,70 @@  discard block
 block discarded – undo
317 317
 	}
318 318
 
319 319
 	/**
320
-     * Return the results of the query as array of Documents
321
-     * @param $sql
322
-     * @return array
323
-     * @throws \Exception
324
-     */
325
-    protected function fetchAllDocuments($sql)
326
-    {
327
-        $stmt = $this->getDbStatement($sql);
328
-        return $stmt->fetchAll(\PDO::FETCH_CLASS, '\library\storage\Document');
329
-    }
330
-
331
-    /**
332
-     * Return the result of the query as Document
333
-     * @param $sql
334
-     * @return mixed
335
-     * @throws \Exception
336
-     */
337
-    protected function fetchDocument($sql)
338
-    {
339
-        $stmt = $this->getDbStatement($sql);
340
-        return $stmt->fetchObject('\library\storage\Document');
341
-    }
342
-
343
-    /**
344
-     * Prepare the sql statement
345
-     * @param $sql
346
-     * @return \PDOStatement
347
-     * @throws \Exception
348
-     */
349
-    protected function getDbStatement($sql)
350
-    {
351
-        $db = $this->getContentDbHandle();
352
-        $stmt = $db->query($sql);
353
-        if ($stmt === false) {
354
-            $errorInfo = $db->errorInfo();
355
-            $errorMsg = $errorInfo[2];
356
-            throw new \Exception('SQLite Exception: ' . $errorMsg . ' in SQL: <br /><pre>' . $sql . '</pre>');
357
-        }
358
-        return $stmt;
359
-    }
360
-
361
-    /**
362
-     * Create a (non-existent) root folder Document and return it
363
-     * @return Document
364
-     */
365
-    protected function getRootFolder()
366
-    {
367
-        $rootFolder = new Document();
368
-        $rootFolder->path = '/';
369
-        $rootFolder->type = 'folder';
370
-        return $rootFolder;
371
-    }
372
-
373
-    /**
374
-     * Save the document to the database
375
-     * @param Document $documentObject
376
-     * @return bool
377
-     * @throws \Exception
378
-     * @internal param $path
379
-     */
380
-    public function saveDocument($documentObject)
381
-    {
382
-        $db = $this->getContentDbHandle();
383
-        $stmt = $this->getDbStatement('
320
+	 * Return the results of the query as array of Documents
321
+	 * @param $sql
322
+	 * @return array
323
+	 * @throws \Exception
324
+	 */
325
+	protected function fetchAllDocuments($sql)
326
+	{
327
+		$stmt = $this->getDbStatement($sql);
328
+		return $stmt->fetchAll(\PDO::FETCH_CLASS, '\library\storage\Document');
329
+	}
330
+
331
+	/**
332
+	 * Return the result of the query as Document
333
+	 * @param $sql
334
+	 * @return mixed
335
+	 * @throws \Exception
336
+	 */
337
+	protected function fetchDocument($sql)
338
+	{
339
+		$stmt = $this->getDbStatement($sql);
340
+		return $stmt->fetchObject('\library\storage\Document');
341
+	}
342
+
343
+	/**
344
+	 * Prepare the sql statement
345
+	 * @param $sql
346
+	 * @return \PDOStatement
347
+	 * @throws \Exception
348
+	 */
349
+	protected function getDbStatement($sql)
350
+	{
351
+		$db = $this->getContentDbHandle();
352
+		$stmt = $db->query($sql);
353
+		if ($stmt === false) {
354
+			$errorInfo = $db->errorInfo();
355
+			$errorMsg = $errorInfo[2];
356
+			throw new \Exception('SQLite Exception: ' . $errorMsg . ' in SQL: <br /><pre>' . $sql . '</pre>');
357
+		}
358
+		return $stmt;
359
+	}
360
+
361
+	/**
362
+	 * Create a (non-existent) root folder Document and return it
363
+	 * @return Document
364
+	 */
365
+	protected function getRootFolder()
366
+	{
367
+		$rootFolder = new Document();
368
+		$rootFolder->path = '/';
369
+		$rootFolder->type = 'folder';
370
+		return $rootFolder;
371
+	}
372
+
373
+	/**
374
+	 * Save the document to the database
375
+	 * @param Document $documentObject
376
+	 * @return bool
377
+	 * @throws \Exception
378
+	 * @internal param $path
379
+	 */
380
+	public function saveDocument($documentObject)
381
+	{
382
+		$db = $this->getContentDbHandle();
383
+		$stmt = $this->getDbStatement('
384 384
             INSERT OR REPLACE INTO documents (`path`,`title`,`slug`,`type`,`documentType`,`documentTypeSlug`,`state`,`lastModificationDate`,`creationDate`,`lastModifiedBy`,`fields`,`bricks`,`dynamicBricks`)
385 385
             VALUES(
386 386
               ' . $db->quote($documentObject->path) . ',
@@ -398,37 +398,37 @@  discard block
 block discarded – undo
398 398
               ' . $db->quote(json_encode($documentObject->dynamicBricks)) . '
399 399
             )
400 400
         ');
401
-        $result = $stmt->execute();
402
-        return $result;
403
-    }
404
-
405
-    /**
406
-     * Delete the document from the database
407
-     * If it's a folder, also delete it's contents
408
-     * @param $path
409
-     * @throws \Exception
410
-     */
411
-    public function deleteDocumentByPath($path)
412
-    {
413
-        $db = $this->getContentDbHandle();
414
-        $documentToDelete = $this->getDocumentByPath($path);
415
-        if ($documentToDelete instanceof Document) {
416
-            if ($documentToDelete->type == 'document') {
417
-                $stmt = $this->getDbStatement('
401
+		$result = $stmt->execute();
402
+		return $result;
403
+	}
404
+
405
+	/**
406
+	 * Delete the document from the database
407
+	 * If it's a folder, also delete it's contents
408
+	 * @param $path
409
+	 * @throws \Exception
410
+	 */
411
+	public function deleteDocumentByPath($path)
412
+	{
413
+		$db = $this->getContentDbHandle();
414
+		$documentToDelete = $this->getDocumentByPath($path);
415
+		if ($documentToDelete instanceof Document) {
416
+			if ($documentToDelete->type == 'document') {
417
+				$stmt = $this->getDbStatement('
418 418
                     DELETE FROM documents
419 419
                           WHERE path = ' . $db->quote($path) . '
420 420
                 ');
421
-                $stmt->execute();
422
-            } elseif ($documentToDelete->type == 'folder') {
423
-                $folderPathWithWildcard = $path . '%';
424
-                $stmt = $this->getDbStatement('
421
+				$stmt->execute();
422
+			} elseif ($documentToDelete->type == 'folder') {
423
+				$folderPathWithWildcard = $path . '%';
424
+				$stmt = $this->getDbStatement('
425 425
                     DELETE FROM documents
426 426
                           WHERE (path LIKE ' . $db->quote($folderPathWithWildcard) . '
427 427
                             AND substr(`path`, ' . (strlen($path) + 1) . ', 1) = "/")
428 428
                             OR path = ' . $db->quote($path) . '
429 429
                 ');
430
-                $stmt->execute();
431
-            }
432
-        }
433
-    }
430
+				$stmt->execute();
431
+			}
432
+		}
433
+	}
434 434
 }
435 435
\ No newline at end of file
Please login to merge, or discard this patch.
cloudcontrol/library/cc/errorhandler.php 1 patch
Indentation   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -32,11 +32,11 @@
 block discarded – undo
32 32
  */
33 33
 function shutdownHandler () {
34 34
 	$error = error_get_last(); 
35
-    if (isset($error['type'], $error['message'], $error['file'], $error['line'])) { 
35
+	if (isset($error['type'], $error['message'], $error['file'], $error['line'])) { 
36 36
 		\library\cc\ErrorHandlingUtil::renderError($error['message'],$error['file'],$error['line'], $error['type']);
37
-    }elseif ($error['type'] == 1) {
38
-        dump($error);
39
-    }
37
+	}elseif ($error['type'] == 1) {
38
+		dump($error);
39
+	}
40 40
 }
41 41
 
42 42
 
Please login to merge, or discard this patch.
cloudcontrol/library/storage/Document.php 1 patch
Indentation   +69 added lines, -69 removed lines patch added patch discarded remove patch
@@ -18,87 +18,87 @@
 block discarded – undo
18 18
  */
19 19
 class Document
20 20
 {
21
-    public $id;
22
-    public $path;
23
-    public $title;
24
-    public $slug;
25
-    public $type;
26
-    public $documentType;
27
-    public $documentTypeSlug;
28
-    public $state;
29
-    public $lastModificationDate;
30
-    public $creationDate;
31
-    public $lastModifiedBy;
32
-    protected $fields;
33
-    protected $bricks;
34
-    protected $dynamicBricks;
35
-    protected $content;
21
+	public $id;
22
+	public $path;
23
+	public $title;
24
+	public $slug;
25
+	public $type;
26
+	public $documentType;
27
+	public $documentTypeSlug;
28
+	public $state;
29
+	public $lastModificationDate;
30
+	public $creationDate;
31
+	public $lastModifiedBy;
32
+	protected $fields;
33
+	protected $bricks;
34
+	protected $dynamicBricks;
35
+	protected $content;
36 36
 
37
-    protected $dbHandle;
37
+	protected $dbHandle;
38 38
 
39
-    protected $jsonEncodedFields = array('fields', 'bricks', 'dynamicBricks');
39
+	protected $jsonEncodedFields = array('fields', 'bricks', 'dynamicBricks');
40 40
 
41
-    public function __get($name) {
42
-        if (in_array($name, $this->jsonEncodedFields)) {
43
-            if (is_string($this->$name)) {
44
-                return json_decode($this->$name);
45
-            } else {
46
-                return $this->$name;
47
-            }
48
-        } elseif ($name === 'content') {
49
-            if ($this->dbHandle === null) {
50
-                throw new \Exception('Document doesnt have a dbHandle handle. (path: ' . $this->path . ')');
51
-            } else {
52
-                if ($this->content === null) {
53
-                    $this->getContent();
54
-                }
55
-                return $this->content;
56
-            }
57
-        } elseif ($name === 'dbHandle') {
58
-            throw new \Exception('Trying to get protected property repository.');
59
-        }
60
-        return $this->$name;
61
-    }
41
+	public function __get($name) {
42
+		if (in_array($name, $this->jsonEncodedFields)) {
43
+			if (is_string($this->$name)) {
44
+				return json_decode($this->$name);
45
+			} else {
46
+				return $this->$name;
47
+			}
48
+		} elseif ($name === 'content') {
49
+			if ($this->dbHandle === null) {
50
+				throw new \Exception('Document doesnt have a dbHandle handle. (path: ' . $this->path . ')');
51
+			} else {
52
+				if ($this->content === null) {
53
+					$this->getContent();
54
+				}
55
+				return $this->content;
56
+			}
57
+		} elseif ($name === 'dbHandle') {
58
+			throw new \Exception('Trying to get protected property repository.');
59
+		}
60
+		return $this->$name;
61
+	}
62 62
 
63
-    public function __set($name, $value) {
64
-        if (in_array($name, $this->jsonEncodedFields)) {
65
-            $this->$name = json_encode($value);
66
-        } elseif ($name === 'content') {
67
-            // Dont do anything for now..
68
-            return;
69
-        }
63
+	public function __set($name, $value) {
64
+		if (in_array($name, $this->jsonEncodedFields)) {
65
+			$this->$name = json_encode($value);
66
+		} elseif ($name === 'content') {
67
+			// Dont do anything for now..
68
+			return;
69
+		}
70 70
 
71
-        $this->$name = $value;
72
-    }
71
+		$this->$name = $value;
72
+	}
73 73
 
74
-    /**
75
-     * @throws \Exception
76
-     */
77
-    protected function getContent()
78
-    {
79
-        $folderPathWithWildcard = $this->path . '%';
80
-        $sql = '    SELECT *
74
+	/**
75
+	 * @throws \Exception
76
+	 */
77
+	protected function getContent()
78
+	{
79
+		$folderPathWithWildcard = $this->path . '%';
80
+		$sql = '    SELECT *
81 81
                       FROM documents
82 82
                      WHERE `path` LIKE ' . $this->dbHandle->quote($folderPathWithWildcard) . '
83 83
                        AND substr(`path`, ' . (strlen($this->path) + 2) . ') NOT LIKE "%/%"
84 84
                        AND substr(`path`, ' . (strlen($this->path) + 1) . ', 1) = "/"
85 85
                        AND path != ' . $this->dbHandle->quote($this->path) . '
86 86
                     ';
87
-        $stmt = $this->dbHandle->query($sql);
88
-        if ($stmt === false) {
89
-            $errorInfo = $this->dbHandle->errorInfo();
90
-            $errorMsg = $errorInfo[2];
91
-            throw new \Exception('SQLite Exception: ' . $errorMsg . ' in SQL: <br /><pre>' . $sql . '</pre>');
92
-        }
93
-        $contents = $stmt->fetchAll(\PDO::FETCH_CLASS, '\library\storage\Document');
94
-        foreach ($contents as $key => $document) {
95
-            if ($document->type === 'folder') {
96
-                $document->dbHandle = $this->dbHandle;
97
-                $contents[$key] = $document;
98
-            }
99
-        }
100
-        $this->content = $contents;
101
-    }
87
+		$stmt = $this->dbHandle->query($sql);
88
+		if ($stmt === false) {
89
+			$errorInfo = $this->dbHandle->errorInfo();
90
+			$errorMsg = $errorInfo[2];
91
+			throw new \Exception('SQLite Exception: ' . $errorMsg . ' in SQL: <br /><pre>' . $sql . '</pre>');
92
+		}
93
+		$contents = $stmt->fetchAll(\PDO::FETCH_CLASS, '\library\storage\Document');
94
+		foreach ($contents as $key => $document) {
95
+			if ($document->type === 'folder') {
96
+				$document->dbHandle = $this->dbHandle;
97
+				$contents[$key] = $document;
98
+			}
99
+		}
100
+		$this->content = $contents;
101
+	}
102 102
 
103 103
 	/**
104 104
 	 * @return string
Please login to merge, or discard this patch.