1 <?php
2
3 4 5 6 7 8 9 10 11
12
13 14 15 16 17 18 19 20 21 22
23 class CategoryRepositoryWriter implements CategoryRepositoryWriterInterface
24 {
25 26 27
28 protected $db;
29
30 31 32
33 protected $categoriesTable = 'categories';
34
35 36 37
38 protected $languageProvider;
39
40
41 42 43 44 45 46
47 public function __construct(CI_DB_query_builder $db, YetAnotherLanguageProvider $languageHelper)
48 {
49 $this->db = $db;
50 $this->languageProvider = $languageHelper;
51 }
52
53
54 55 56 57 58 59 60 61 62
63 public function insert(CategoryInterface $category)
64 {
65
66 $categoryDataArray = $this->_parseCategoryData($category);
67
68 $this->db->insert($this->categoriesTable, $categoryDataArray);
69
70 $categoryId = $this->db->insert_id();
71
72
73 foreach($this->languageProvider->getActiveCodes() as $languageCode)
74 {
75 $languageId = $this->languageProvider->getIdByCode($languageCode);
76
77 $categoryDescriptionDataArray = $this->_parseCategoryDescriptionData($category, $languageCode);
78 $categoryDescriptionDataArray['language_id'] = $languageId;
79 $categoryDescriptionDataArray['categories_id'] = $categoryId;
80
81 $this->db->insert('categories_description', $categoryDescriptionDataArray);
82 }
83
84 return $categoryId;
85 }
86
87
88 89 90 91 92 93 94 95
96 public function update(StoredCategoryInterface $category)
97 {
98
99 $categoryDataArray = $this->_parseCategoryData($category);
100 $this->db->update($this->categoriesTable,
101 $categoryDataArray,
102 array('categories_id' => $category->getCategoryId()));
103
104
105 foreach($this->languageProvider->getActiveCodes() as $languageCode)
106 {
107 $languageId = $this->languageProvider->getIdByCode($languageCode);
108
109 $categoryDescriptionDataArray = $this->_parseCategoryDescriptionData($category, $languageCode);
110 $this->db->update('categories_description',
111 $categoryDescriptionDataArray,
112 array(
113 'categories_id' => $category->getCategoryId(),
114 'language_id' => $languageId
115 ));
116 }
117
118 return $this;
119 }
120
121
122 protected function _parseCategoryData(CategoryInterface $category)
123 {
124 $categoryDataArray = array(
125 'categories_image' => $category->getImage(),
126 'parent_id' => $category->getParentId(),
127 'categories_status' => $category->isActive(),
128 'sort_order' => $category->getSortOrder(),
129 'date_added' => $category->getAddedDateTime()->format('Y-m-d H:i:s'),
130 'last_modified' => $category->getLastModifiedDateTime()->format('Y-m-d H:i:s'),
131 'categories_icon' => $category->getIcon(),
132 );
133
134 return $categoryDataArray;
135 }
136
137
138 protected function _parseCategoryDescriptionData(CategoryInterface $category, LanguageCode $languageCode)
139 {
140 $categoryDescriptionDataArray = array(
141 'categories_name' => $category->getName($languageCode),
142 'categories_heading_title' => $category->getHeadingTitle($languageCode),
143 'categories_description' => $category->getDescription($languageCode),
144 'categories_meta_title' => $category->getMetaTitle($languageCode),
145 'categories_meta_description' => $category->getMetaDescription($languageCode),
146 'categories_meta_keywords' => $category->getMetaKeywords($languageCode),
147 'gm_alt_text' => $category->getImageAltText($languageCode),
148 'gm_url_keywords' => $category->getUrlKeywords($languageCode),
149 );
150
151 return $categoryDescriptionDataArray;
152 }
153 }