c8571122a0006f5baacc4d14e26b8507d5e47188
[zf2.biz/galerie.git] / module / Galerie / src / Galerie / Model / GalerieATable.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 GalerieATable 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 GalerieA()
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(GalerieA $galerie)
50     {
51         if ($galerie->id === null) {
52             $this->insert(
53                 array(
54                     'id_user' => $galerie->id_user,
55                     'name' => $galerie->name,
56                     'description' => $galerie->description,
57                 )
58             );
59         } elseif ($this->getGalerie($galerie->id)) {
60             $this->update(
61                 array(
62                     'id_user' => $galerie->id_user,
63                     'name' => $galerie->name,
64                     'description' => $galerie->description,
65                 ),
66                 array(
67                     'id' => $galerie->id,
68                 )
69             );
70         } else {
71             throw new \Exception("cannot update row {$galerie->id} in table 'galerie'");
72         }
73     }
74
75     public function deleteGalerie($id)
76     {
77         $this->delete(array(
78                 'id' => (int) $id
79             )
80         );
81     }
82
83 }