function inscriptionAction() { $this->metas(array('DC.Title' => "Fiche d'inscription")); $this->branche->append(); $m = new Wtk_Form_Model('inscription'); // FICHE INDIVIDU $g = $m->addGroup('fiche'); $i = $g->addString('prenom', "Prénom"); $m->addConstraintRequired($i); $i = $g->addString('nom', "Nom"); $m->addConstraintRequired($i); $t = new Unites(); $sexes = $t->findSexesAccueillis(); if (in_array('m', $sexes) || count($sexes) > 1) { $enum = array('h' => 'Masculin', 'f' => 'Féminin'); $i = $g->addEnum('sexe', 'Sexe', null, $enum); $m->addConstraintRequired($i); } else { $i = $g->addString('sexe', 'Sexe', $sexes[0])->setReadonly(true); } $i = $g->addDate('naissance', "Date de naissance", 0); $m->addConstraintRequired($i); // COMPTE $g = $m->addGroup('compte'); $i = $g->addEMail('adelec', "Adresse électronique"); $t = new Inscriptions(); $m->addConstraintForbid($i, $t->findAllEMails(), "Cette adresse électronique est déjà utilisée"); $i0 = $g->addString('motdepasse', "Mot de passe"); $m->addConstraintLength($i0, 6); $i1 = $g->addString('confirmer', "Confirmer"); $m->addConstraintEqual($i1, $i0); $i = $g->addString('presentation', "Présentation"); $m->addConstraintRequired($i); $this->view->model = $pm = new Wtk_Pages_Model_Form($m); if ($pm->validate()) { $data = $m->get('fiche'); $data['adelec'] = strtolower($m->get('compte/adelec')); $data['password'] = Users::hashPassword($m->get('compte/adelec'), $m->get('compte/motdepasse')); $data['presentation'] = $m->compte->presentation; $db = $t->getAdapter(); $db->beginTransaction(); try { $k = $t->insert($data); $i = $t->findOne($k); $this->logger->info("Nouvelle inscription", $this->_helper->Url('valider', 'membres', null, array('adelec' => $i->adelec))); $this->_helper->Flash->info("Inscription en modération"); $mail = new Strass_Mail_Inscription($i); try { $mail->send(); } catch (Zend_Mail_Transport_Exception $e) { $this->logger->error("Échec de l'envoi de mail aux admins", null, $e); } $db->commit(); } catch (Exception $e) { $db->rollBack(); throw $e; } $this->redirectSimple('index', 'unites', null, array(), true); } }