1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
<?php
/* --------------------------------------------------------------
SliderRepositoryReader.inc.php 2016-08-30
Gambio GmbH
http://www.gambio.de
Copyright (c) 2016 Gambio GmbH
Released under the GNU General Public License (Version 2)
[http://www.gnu.org/licenses/gpl-2.0.html]
--------------------------------------------------------------
*/
MainFactory::load_class('SliderRepositoryReaderInterface');
/**
* Class SliderRepositoryReader
*
* @category System
* @package Slider
* @subpackage Repositories
*/
class SliderRepositoryReader implements SliderRepositoryReaderInterface
{
/**
* Table name
*
* @var string
*/
protected $table = 'sliders';
/**
* Query builder.
*
* @var CI_DB_query_builder
*/
protected $db;
/**
* SliderRepositoryReader constructor.
*
* @param CI_DB_query_builder $db Query builder.
*/
public function __construct(CI_DB_query_builder $db)
{
$this->db = $db;
}
/**
* Returns a Slider instance by the given slider ID.
*
* @param IdType $sliderId
*
* @throws UnexpectedValueException if no slider record for the provided slider ID was found.
*
* @return SliderInterface
*/
public function getById(IdType $sliderId)
{
$sliderData = $this->db->get_where($this->table, ['slider_id' => $sliderId->asInt()])->row_array();
if($sliderData === null)
{
throw new UnexpectedValueException('The requested slider was not found in database (ID:'
. $sliderId->asInt() . ')');
}
$slider = MainFactory::create('Slider');
$this->_setDbValues($slider, $sliderData);
return $slider;
}
/**
* Returns a SliderCollection with all existing Slider objects.
*
* @return SliderCollection
*/
public function getAll()
{
$sliderArray = [];
$result = $this->db->get($this->table)->result_array();
foreach($result as $row)
{
$slider = MainFactory::create('Slider');
$this->_setDbValues($slider, $row);
$sliderArray[] = $slider;
}
return MainFactory::create('SliderCollection', $sliderArray);
}
/**
* Get the Slider for the start page.
*
* @return SliderInterface|null Returns the start page slider instance or null if no record was found.
*/
public function getStartPageSlider()
{
$row = $this->db->get_where($this->table, ['start_page' => 1])->row_array();
if(empty($row))
{
return null; // No record matches the query.
}
$slider = MainFactory::create('Slider');
$this->_setDbValues($slider, $row);
return $slider;
}
/**
* Assign the Slider values via the setter.
*
* @param Slider $slider
* @param array $row
*
* @throws InvalidArgumentException If $row contains invalid values.
*/
protected function _setDbValues(Slider $slider, array $row)
{
$slider->setId(new IdType($row['slider_id']));
$slider->setName(new StringType($row['name']));
$slider->setSpeed(new DecimalType($row['speed']));
$slider->setShowOnStartPage(new BoolType($row['start_page']));
}
}