1 <?php
2
3 /* --------------------------------------------------------------
4 CategorySettingsRepository.php 2015-11-23
5 Gambio GmbH
6 http://www.gambio.de
7 Copyright (c) 2015 Gambio GmbH
8 Released under the GNU General Public License (Version 2)
9 [http://www.gnu.org/licenses/gpl-2.0.html]
10 --------------------------------------------------------------
11 */
12
13 /**
14 * Class CategorySettingsRepository
15 *
16 * This class handles the database operations that concern settings regarding display and visibility mode of category
17 * related data of the database. It provides a layer for more complicated methods that use the writer, reader and
18 * deleter.
19 *
20 * @category System
21 * @package Category
22 * @subpackage Repositories
23 */
24 class CategorySettingsRepository implements CategorySettingsRepositoryInterface
25 {
26
27 /**
28 * Category settings repository reader.
29 *
30 * @var CategorySettingsRepositoryReaderInterface
31 */
32 protected $reader;
33
34 /**
35 * Category settings repository writer.
36 *
37 * @var CategorySettingsRepositoryWriterInterface
38 */
39 protected $writer;
40
41
42 /**
43 * CategorySettingsRepository constructor.
44 *
45 * @param CategorySettingsRepositoryReaderInterface $reader Category settings repository reader.
46 * @param CategorySettingsRepositoryWriterInterface $writer Category settings repository writer
47 */
48 public function __construct(CategorySettingsRepositoryReaderInterface $reader,
49 CategorySettingsRepositoryWriterInterface $writer)
50 {
51 $this->reader = $reader;
52 $this->writer = $writer;
53 }
54
55
56 /**
57 * Stores the category settings.
58 *
59 * @param IdType $categoryId Category ID.
60 * @param CategorySettingsInterface $settings Category settings.
61 *
62 * @return CategorySettingsRepository Same instance for chained method calls.
63 */
64 public function store(IdType $categoryId, CategorySettingsInterface $settings)
65 {
66 $this->writer->update($categoryId, $settings);
67
68 return $this;
69 }
70
71
72 /**
73 * Returns the category settings based on the given ID.
74 *
75 * @param IdType $categoryId Category ID.
76 *
77 * @return CategorySettingsInterface
78 */
79 public function getCategorySettingsById(IdType $categoryId)
80 {
81 return $this->reader->getById($categoryId);
82 }
83 }