| @@ 19-134 (lines=116) @@ | ||
| 16 | * This class enables getting all information about additional fields gallery for specific material. |
|
| 17 | * @author [email protected] |
|
| 18 | */ |
|
| 19 | class Gallery |
|
| 20 | { |
|
| 21 | /** @var integer materialFieldId Table materialField identifier */ |
|
| 22 | protected $materialFieldId = null; |
|
| 23 | ||
| 24 | /** @var QueryInterface Database query interface */ |
|
| 25 | protected $query; |
|
| 26 | ||
| 27 | /** |
|
| 28 | * Constructor Gallery. |
|
| 29 | * This constructor finds identifier additional field gallery from database record its material and field identifiers. |
|
| 30 | * |
|
| 31 | * @param QueryInterface $query Database query interface |
|
| 32 | * @param integer $materialId material identifier |
|
| 33 | * @param integer $fieldId field identifier |
|
| 34 | */ |
|
| 35 | public function __construct(QueryInterface $query, $materialId, $fieldId) |
|
| 36 | { |
|
| 37 | /** @var object $materialField additional field value database record*/ |
|
| 38 | $materialField = null; |
|
| 39 | ||
| 40 | //set query interface |
|
| 41 | $this->query = $query; |
|
| 42 | ||
| 43 | // Checking params by type |
|
| 44 | if (is_int($materialId) && is_int($fieldId)) { |
|
| 45 | //Find additional field value database record by its material and field identifiers. |
|
| 46 | if (MaterialField::byFieldIDAndMaterialID($query, $materialId, $fieldId, $materialField)) { |
|
| 47 | //Getting first record |
|
| 48 | $materialField = array_shift($materialField); |
|
| 49 | //Set materialFieldId |
|
| 50 | $this->materialFieldId = $materialField->id; |
|
| 51 | } |
|
| 52 | } |
|
| 53 | } |
|
| 54 | ||
| 55 | /** |
|
| 56 | * Check on empty gallery. If materialFieldId = null and quantity images not more 1 then material not has images. |
|
| 57 | * |
|
| 58 | * @return boolean |
|
| 59 | **/ |
|
| 60 | public function hasImages() |
|
| 61 | { |
|
| 62 | /**@var $hasImages */ |
|
| 63 | $hasImages = false; |
|
| 64 | ||
| 65 | if (isset($this->materialFieldId)) { |
|
| 66 | // Getting quantity images, if quantity more 0 then material has images |
|
| 67 | if ($this->query |
|
| 68 | ->entity(CMS::MATERIAL_IMAGES_RELATION_ENTITY) |
|
| 69 | ->cond(Field::F_DELETION, 1) |
|
| 70 | ->cond(MaterialField::F_PRIMARY, $this->materialFieldId) |
|
| 71 | ->count() > 0) { |
|
| 72 | $hasImages = true; |
|
| 73 | } |
|
| 74 | } |
|
| 75 | return $hasImages; |
|
| 76 | } |
|
| 77 | ||
| 78 | /** |
|
| 79 | * Getting quantity images in additional field gallery |
|
| 80 | * |
|
| 81 | * @return integer $count |
|
| 82 | */ |
|
| 83 | public function getCount() |
|
| 84 | { |
|
| 85 | /**@var integer $count quantity images in additional field gallery*/ |
|
| 86 | $count = 0; |
|
| 87 | ||
| 88 | if ($this->hasImages()) { |
|
| 89 | // Getting quantity images for gallery |
|
| 90 | $count = $this->query |
|
| 91 | ->entity(CMS::MATERIAL_IMAGES_RELATION_ENTITY) |
|
| 92 | ->cond(Field::F_DELETION, 1) |
|
| 93 | ->cond(MaterialField::F_PRIMARY, $this->materialFieldId) |
|
| 94 | ->count(); |
|
| 95 | } |
|
| 96 | ||
| 97 | return $count; |
|
| 98 | } |
|
| 99 | ||
| 100 | /** |
|
| 101 | * Get collection of images for material by gallery additional field selector. If none is passed |
|
| 102 | * all images from gallery table would be returned empty array. |
|
| 103 | * |
|
| 104 | * @param integer $currentPage current page with images. Min value = 1 |
|
| 105 | * @param integer $countView quantity view by page |
|
| 106 | * @return array |
|
| 107 | */ |
|
| 108 | public function getImages($currentPage = null, $countView = 20) |
|
| 109 | { |
|
| 110 | /** @var $images[] Get material images for this gallery */ |
|
| 111 | $images = array(); |
|
| 112 | ||
| 113 | /** @var QueryInterface $query Database query interface*/ |
|
| 114 | $query = null; |
|
| 115 | ||
| 116 | if ($this->hasImages()) { |
|
| 117 | // Select all images in DB by materialFieldId |
|
| 118 | $query = $this->query |
|
| 119 | ->entity(CMS::MATERIAL_IMAGES_RELATION_ENTITY) |
|
| 120 | ->cond(Field::F_DELETION, 1) |
|
| 121 | ->cond(MaterialField::F_PRIMARY, $this->materialFieldId); |
|
| 122 | ||
| 123 | if (isset($currentPage) && $currentPage > 0) { |
|
| 124 | //Set limit for query |
|
| 125 | $query->limit(--$currentPage * $countView, $countView); |
|
| 126 | } |
|
| 127 | ||
| 128 | // Execute query |
|
| 129 | $images = $query->exec(); |
|
| 130 | } |
|
| 131 | ||
| 132 | return $images; |
|
| 133 | } |
|
| 134 | } |
|
| @@ 19-134 (lines=116) @@ | ||
| 16 | * This class enables getting all information about additional fields gallery for specific material. |
|
| 17 | * @author [email protected] |
|
| 18 | */ |
|
| 19 | class Gallery |
|
| 20 | { |
|
| 21 | /** @var integer materialFieldId Table materialField identifier */ |
|
| 22 | protected $materialFieldId = null; |
|
| 23 | ||
| 24 | /** @var QueryInterface Database query interface */ |
|
| 25 | protected $query; |
|
| 26 | ||
| 27 | /** |
|
| 28 | * Constructor Gallery. |
|
| 29 | * This constructor finds identifier additional field gallery from database record its material and field identifiers. |
|
| 30 | * |
|
| 31 | * @param QueryInterface $query Database query interface |
|
| 32 | * @param integer $materialId material identifier |
|
| 33 | * @param integer $fieldId field identifier |
|
| 34 | */ |
|
| 35 | public function __construct(QueryInterface $query, $materialId, $fieldId) |
|
| 36 | { |
|
| 37 | /** @var object $materialField additional field value database record*/ |
|
| 38 | $materialField = null; |
|
| 39 | ||
| 40 | //set query interface |
|
| 41 | $this->query = $query; |
|
| 42 | ||
| 43 | // Checking params by type |
|
| 44 | if (is_int($materialId) && is_int($fieldId)) { |
|
| 45 | //Find additional field value database record by its material and field identifiers. |
|
| 46 | if (MaterialField::byFieldIDAndMaterialID($query, $materialId, $fieldId, $materialField)) { |
|
| 47 | //Getting first record |
|
| 48 | $materialField = array_shift($materialField); |
|
| 49 | //Set materialFieldId |
|
| 50 | $this->materialFieldId = $materialField->id; |
|
| 51 | } |
|
| 52 | } |
|
| 53 | } |
|
| 54 | ||
| 55 | /** |
|
| 56 | * Check on empty gallery. If materialFieldId = null and quantity images not more 1 then material not has images. |
|
| 57 | * |
|
| 58 | * @return boolean |
|
| 59 | **/ |
|
| 60 | public function hasImages() |
|
| 61 | { |
|
| 62 | /**@var $hasImages */ |
|
| 63 | $hasImages = false; |
|
| 64 | ||
| 65 | if (isset($this->materialFieldId)) { |
|
| 66 | // Getting quantity images, if quantity more 0 then material has images |
|
| 67 | if ($this->query |
|
| 68 | ->entity(CMS::MATERIAL_IMAGES_RELATION_ENTITY) |
|
| 69 | ->cond(Field::F_DELETION, 1) |
|
| 70 | ->cond(MaterialField::F_PRIMARY, $this->materialFieldId) |
|
| 71 | ->count() > 0) { |
|
| 72 | $hasImages = true; |
|
| 73 | } |
|
| 74 | } |
|
| 75 | return $hasImages; |
|
| 76 | } |
|
| 77 | ||
| 78 | /** |
|
| 79 | * Getting quantity images in additional field gallery |
|
| 80 | * |
|
| 81 | * @return integer $count |
|
| 82 | */ |
|
| 83 | public function getCount() |
|
| 84 | { |
|
| 85 | /**@var integer $count quantity images in additional field gallery*/ |
|
| 86 | $count = 0; |
|
| 87 | ||
| 88 | if ($this->hasImages()) { |
|
| 89 | // Getting quantity images for gallery |
|
| 90 | $count = $this->query |
|
| 91 | ->entity(CMS::MATERIAL_IMAGES_RELATION_ENTITY) |
|
| 92 | ->cond(Field::F_DELETION, 1) |
|
| 93 | ->cond(MaterialField::F_PRIMARY, $this->materialFieldId) |
|
| 94 | ->count(); |
|
| 95 | } |
|
| 96 | ||
| 97 | return $count; |
|
| 98 | } |
|
| 99 | ||
| 100 | /** |
|
| 101 | * Get collection of images for material by gallery additional field selector. If none is passed |
|
| 102 | * all images from gallery table would be returned empty array. |
|
| 103 | * |
|
| 104 | * @param integer $currentPage current page with images. Min value = 1 |
|
| 105 | * @param integer $countView quantity view by page |
|
| 106 | * @return array |
|
| 107 | */ |
|
| 108 | public function getImages($currentPage = null, $countView = 20) |
|
| 109 | { |
|
| 110 | /** @var $images[] Get material images for this gallery */ |
|
| 111 | $images = array(); |
|
| 112 | ||
| 113 | /** @var QueryInterface $query Database query interface*/ |
|
| 114 | $query = null; |
|
| 115 | ||
| 116 | if ($this->hasImages()) { |
|
| 117 | // Select all images in DB by materialFieldId |
|
| 118 | $query = $this->query |
|
| 119 | ->entity(CMS::MATERIAL_IMAGES_RELATION_ENTITY) |
|
| 120 | ->cond(Field::F_DELETION, 1) |
|
| 121 | ->cond(MaterialField::F_PRIMARY, $this->materialFieldId); |
|
| 122 | ||
| 123 | if (isset($currentPage) && $currentPage > 0) { |
|
| 124 | //Set limit for query |
|
| 125 | $query->limit(--$currentPage * $countView, $countView); |
|
| 126 | } |
|
| 127 | ||
| 128 | // Execute query |
|
| 129 | $images = $query->exec(); |
|
| 130 | } |
|
| 131 | ||
| 132 | return $images; |
|
| 133 | } |
|
| 134 | } |
|