Passed
Push — develop ( 4abc61...39fefa )
by Jens
03:39
created

SitemapStorage::getSitemapItemBySlug()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 11
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 6
nc 3
nop 1
dl 0
loc 11
rs 9.4285
c 0
b 0
f 0
1
<?php
2
/**
3
 * User: jensk
4
 * Date: 17-3-2017
5
 * Time: 10:29
6
 */
7
8
namespace library\storage\storage;
9
10
11
use library\storage\factories\SitemapItemFactory;
12
use library\storage\Repository;
13
14
class SitemapStorage
15
{
16
	/**
17
	 * @var Repository
18
	 */
19
	protected $repository;
20
21
	public function __construct($repository)
22
	{
23
		$this->repository = $repository;
24
	}
25
26
	/**
27
	 * @return array
28
	 */
29
	public function getSitemap()
30
	{
31
		return $this->repository->sitemap;
32
	}
33
34
	/**
35
	 * Add a sitemap item
36
	 *
37
	 * @param $postValues
38
	 *
39
	 * @throws \Exception
40
	 */
41
	public function addSitemapItem($postValues)
42
	{
43
		$sitemapObject = SitemapItemFactory::createSitemapItemFromPostValues($postValues);
44
		$sitemap = $this->repository->sitemap;
45
		$sitemap[] = $sitemapObject;
46
		$this->repository->sitemap = $sitemap;
47
		$this->save();
48
	}
49
50
	/**
51
	 * Save changes to a sitemap item
52
	 *
53
	 * @param $slug
54
	 * @param $postValues
55
	 *
56
	 * @throws \Exception
57
	 */
58
	public function saveSitemapItem($slug, $postValues)
59
	{
60
		$sitemapObject = SitemapItemFactory::createSitemapItemFromPostValues($postValues);
61
62
		$sitemap = $this->repository->sitemap;
63
		foreach ($sitemap as $key => $sitemapItem) {
64
			if ($sitemapItem->slug == $slug) {
65
				$sitemap[$key] = $sitemapObject;
66
			}
67
		}
68
		$this->repository->sitemap = $sitemap;
69
		$this->save();
70
	}
71
72
	/**
73
	 * Delete a sitemap item by its slug
74
	 *
75
	 * @param $slug
76
	 *
77
	 * @throws \Exception
78
	 */
79
	public function deleteSitemapItemBySlug($slug)
80
	{
81
		$sitemap = $this->repository->sitemap;
82
		foreach ($sitemap as $key => $sitemapItem) {
83
			if ($sitemapItem->slug == $slug) {
84
				unset($sitemap[$key]);
85
			}
86
		}
87
		$sitemap = array_values($sitemap);
88
		$this->repository->sitemap = $sitemap;
89
		$this->save();
90
	}
91
92
	/**
93
	 * Save changes to a sitemap item
94
	 *
95
	 * @param $postValues
96
	 *
97
	 * @throws \Exception
98
	 */
99
	public function saveSitemap($postValues)
100
	{
101
		if (isset($postValues['sitemapitem']) && is_array($postValues['sitemapitem'])) {
102
			$sitemap = array();
103
			foreach ($postValues['sitemapitem'] as $sitemapItem) {
104
				$sitemapItemObject = json_decode($sitemapItem);
105
				if (isset($sitemapItemObject->object)) {
106
					unset($sitemapItemObject->object);
107
				}
108
				$sitemap[] = $sitemapItemObject;
109
			}
110
			$this->repository->sitemap = $sitemap;
111
			$this->save();
112
		}
113
	}
114
115
	/**
116
	 * Get a sitemap item by its slug
117
	 *
118
	 * @param $slug
119
	 *
120
	 * @return mixed
121
	 */
122
	public function getSitemapItemBySlug($slug)
123
	{
124
		$sitemap = $this->repository->sitemap;
125
		foreach ($sitemap as $sitemapItem) {
126
			if ($sitemapItem->slug == $slug) {
127
				return $sitemapItem;
128
			}
129
		}
130
131
		return null;
132
	}
133
134
	/**
135
	 * Save changes made to the repository
136
	 *
137
	 * @throws \Exception
138
	 */
139
	private function save()
140
	{
141
		$this->repository->save();
142
	}
143
}