Ajout du modèle GalerieInfo
[zf2.biz/galerie.git] / module / Galerie / src / Galerie / Model / GalerieArrayTable.php
1 <?php
2 namespace Galerie\Model;
3
4 use Zend\Db\Adapter\Adapter;
5 use Zend\Db\ResultSet\ResultSet;
6 use Zend\Db\TableGateway\AbstractTableGateway;
7
8
9 class GalerieArrayTable extends AbstractTableGateway
10 {
11     public $table = 'gallery';
12
13     public function __construct(Adapter $adapter)
14     {
15         // Composition avec l'adaptateur
16         $this->adapter = $adapter;
17
18         // Utilisation du patron de conception Prototype
19         // pour la création des objets ResultSet
20         $this->resultSetPrototype = new ResultSet();
21         $this->resultSetPrototype->setArrayObjectPrototype(
22             new GalerieArray()
23         );
24
25         // Initialisation du gestionnaire
26         $this->initialize();
27     }
28
29     public function fetchAll()
30     {
31         return $this->select();
32     }
33
34     public function getGalerie($id)
35     {
36         if ($id === null) {
37             $row = null;
38         } else {
39             $row = $this->select(array(
40                 'id' => (int) $id,
41             ))->current();
42         }
43         if (!$row) {
44             throw new \Exception("cannot get row $id in table 'galerie'");
45         }
46         return $row;
47     }
48
49     public function saveGalerie(GalerieArray $galerie)
50     {
51         if ($galerie->id === null) {
52             $this->insert(
53                 array(
54                     'name' => $galerie->name,
55                     'description' => $galerie->description,
56                 )
57             );
58         } elseif ($this->getGalerie($galerie->id)) {
59             $this->update(
60                 array(
61                     'name' => $galerie->name,
62                     'description' => $galerie->description,
63                 ),
64                 array(
65                     'id' => $galerie->id,
66                 )
67             );
68         } else {
69             throw new \Exception("cannot update row $galerie->id in table 'galerie'");
70         }
71     }
72
73     public function deleteGalerie($id)
74     {
75         $this->delete(array(
76                 'id' => (int) $id
77             )
78         );
79     }
80
81 }