From: Sébastien CHAZALLET Date: Fri, 30 Nov 2012 10:16:35 +0000 (+0100) Subject: Rajout de la gestion des paires pour les select X-Git-Url: http://git.inspyration.org/?p=zf2.biz%2Fgalerie.git;a=commitdiff_plain;h=6e6b3a29762f19d038b6c88bf51b0859339a69a2 Rajout de la gestion des paires pour les select --- diff --git a/vendor/zf2biz/Custom/Model/EntityManager.php b/vendor/zf2biz/Custom/Model/EntityManager.php new file mode 100644 index 0000000..62fc9e9 --- /dev/null +++ b/vendor/zf2biz/Custom/Model/EntityManager.php @@ -0,0 +1,113 @@ +adapter = $adapter; + + // Composition avec l'entité + $this->entity = $entity; + + // Utilisation du patron de conception Prototype + // pour la création des objets ResultSet + $this->resultSetPrototype = new ResultSet(); + $this->resultSetPrototype->setArrayObjectPrototype( + $entity + ); + + // Initialisation du gestionnaire + $this->initialize(); + } + + public function all() + { + return $this->select(); + } + + public function one($primary_array=array()) + { + if (!count($primary_array)) { + $row = null; + } else { + $valid = true; + foreach($primary_array as $p) { + if ($p === null) { + $row = null; + $valid = false; + break; + } + } + if ($valid) { + $row = $this->select($primary_array)->current(); + } + } + if (!$row) { + $keys = array(); + foreach($primary_array as $k => $v) { + $keys[] = "{$k}: {$v}"; + } + $keys = implode(', ', $keys); + throw new \Exception("cannot get row {{$keys}} in table 'galerie'"); + } + return $row; + } + + public function any($primary_array) + { + if (!count($primary_array)) { + $row = null; + } else { + $valid = true; + foreach($primary_array as $p) { + if ($p === null) { + $row = null; + $valid = false; + break; + } + } + if ($valid) { + $row = $this->select($primary_array)->current(); + } + } + return $row; + } + + protected abstract function is_new(Entity $entity); + protected abstract function extract_primary(Entity $entity); + + public function save(Entity $entity) + { + if ($this->is_new($entity)) { + $this->insert( + $entity->toUpdatableArray() + ); + } elseif ($this->any($this->extract_primary($entity))) { + $this->update( + $entity->toUpdatableArray(), + $entity->toPrimaryArray() + ); + } else { + $keys = array(); + foreach($primary_array as $k => $v) { + $keys[] = "{$k}: {$v}"; + } + $keys = implode(', ', $keys); + throw new \Exception("cannot update row {{$keys}} in table 'galerie'"); + } + } + + // La fonction delete du père suffit à notre besoin. + +} diff --git a/vendor/zf2biz/Custom/Model/Manager.php b/vendor/zf2biz/Custom/Model/Manager.php deleted file mode 100644 index e7ae619..0000000 --- a/vendor/zf2biz/Custom/Model/Manager.php +++ /dev/null @@ -1,113 +0,0 @@ -adapter = $adapter; - - // Composition avec l'entité - $this->entity = $entity; - - // Utilisation du patron de conception Prototype - // pour la création des objets ResultSet - $this->resultSetPrototype = new ResultSet(); - $this->resultSetPrototype->setArrayObjectPrototype( - $entity - ); - - // Initialisation du gestionnaire - $this->initialize(); - } - - public function all() - { - return $this->select(); - } - - public function one($primary_array=array()) - { - if (!count($primary_array)) { - $row = null; - } else { - $valid = true; - foreach($primary_array as $p) { - if ($p === null) { - $row = null; - $valid = false; - break; - } - } - if ($valid) { - $row = $this->select($primary_array)->current(); - } - } - if (!$row) { - $keys = array(); - foreach($primary_array as $k => $v) { - $keys[] = "{$k}: {$v}"; - } - $keys = implode(', ', $keys); - throw new \Exception("cannot get row {{$keys}} in table 'galerie'"); - } - return $row; - } - - public function any($primary_array) - { - if (!count($primary_array)) { - $row = null; - } else { - $valid = true; - foreach($primary_array as $p) { - if ($p === null) { - $row = null; - $valid = false; - break; - } - } - if ($valid) { - $row = $this->select($primary_array)->current(); - } - } - return $row; - } - - protected abstract function is_new(Entity $entity); - protected abstract function extract_primary(Entity $entity); - - public function save(Entity $entity) - { - if ($this->is_new()) { - $this->insert( - $entity->toUpdatableArray() - ); - } elseif ($this->getGalerie(extract_primary($entity))) { - $this->update( - $entity->toUpdatableArray(), - $entity->toPrimaryArray() - ); - } else { - $keys = array(); - foreach($primary_array as $k => $v) { - $keys[] = "{$k}: {$v}"; - } - $keys = implode(', ', $keys); - throw new \Exception("cannot update row {{$keys}} in table 'galerie'"); - } - } - - // La fonction delete du père suffit à notre besoin. - -} diff --git a/vendor/zf2biz/Custom/Model/Pair.php b/vendor/zf2biz/Custom/Model/Pair.php new file mode 100644 index 0000000..203fe8f --- /dev/null +++ b/vendor/zf2biz/Custom/Model/Pair.php @@ -0,0 +1,34 @@ +id = $data[static::$field_id]; + $this->name = $data[static::$field_name]; + } + + public function toArray() { + return array( + 'id' => $this->id, + 'name' => $this->name, + ); + } + + public function getArrayCopy() { + return array( + 'id' => $this->id, + 'name' => $this->name, + ); + } + +} diff --git a/vendor/zf2biz/Custom/Model/PairFeature.php b/vendor/zf2biz/Custom/Model/PairFeature.php new file mode 100644 index 0000000..10cfbac --- /dev/null +++ b/vendor/zf2biz/Custom/Model/PairFeature.php @@ -0,0 +1,24 @@ +toArray(); + $result[$r['id']] = $r['name']; + } + $this->tableGateway->setResult($result); + } + +} diff --git a/vendor/zf2biz/Custom/Model/PairManager.php b/vendor/zf2biz/Custom/Model/PairManager.php new file mode 100644 index 0000000..4519805 --- /dev/null +++ b/vendor/zf2biz/Custom/Model/PairManager.php @@ -0,0 +1,56 @@ +adapter = $adapter; + + // Détermination de la table principale à requêter + $this->table = $table; + + // Composition avec l'entité + if ($pair === null) { + $this->pair = new Pair; + } else { + $this->pair = $pair; + } + + // Utilisation du patron de conception Prototype + // pour la création des objets ResultSet + $this->resultSetPrototype = new ResultSet(); + $this->resultSetPrototype->setArrayObjectPrototype( + $this->pair + ); + + // Initialisation du gestionnaire + $this->initialize(); + $this->featureSet->addFeature(new PairFeature); + } + + public function all() + { + $this->select(); + return $this->result; + } + + public function setResult($result) + { + $this->result = $result; + } + +}