Esempio n. 1
0
 function indexAction()
 {
     $m = new Wtk_Form_Model('installation');
     $g = $m->addGroup('site', "Le site");
     $i = $g->addEnum('association', "Association", null, self::$associations);
     $m->addConstraintRequired($i);
     $g = $m->addGroup('admin', "Votre compte");
     $i = $g->addString('prenom', "Votre prénom");
     $m->addConstraintRequired($i);
     $i = $g->addString('nom', "Votre nom");
     $m->addConstraintRequired($i);
     $i = $g->addEnum('sexe', "Sexe", null, array('h' => 'Masculin', 'f' => 'Féminin'));
     $m->addConstraintRequired($i);
     $i = $g->addDate('naissance', "Date de naissance", 0);
     $m->addConstraintRequired($i);
     $i = $g->addString('adelec', "Adélec");
     $m->addConstraintRequired($i);
     $i = $i0 = $g->addString('motdepasse', "Mot de passe");
     $m->addConstraintRequired($i);
     $i = $i1 = $g->addString('confirmation', "Confirmation");
     $m->addConstraintEqual($i1, $i0);
     $this->view->model = $pm = new Wtk_Pages_Model_Form($m);
     if ($pm->validate()) {
         $installer = new Strass_Installer($m->get());
         $installer->run();
         /* Autologin. Écrire dans la session l'identité de l'admin */
         $t = new Users();
         $admin = $t->findByUsername($m->get('admin/adelec'));
         $auth = Zend_Auth::getInstance();
         $auth->getStorage()->write($admin->getIdentity());
         $this->_redirect('/', array('prependBase' => false, 'exit' => true));
     }
 }
Esempio n. 2
0
 function editerAction()
 {
     $this->view->journal = $j = $this->_helper->Journal();
     $this->metas(array('DC.Title' => "Modifier " . $j->nom));
     $this->assert(null, $j, 'editer', "Vous n'avez pas le droit de modifier ce journal");
     $this->view->model = $m = new Wtk_Form_Model('journal');
     $i = $m->addString('nom', 'Nom', $j->nom);
     $m->addConstraintRequired($i);
     $m->addNewSubmission('enregistrer', 'Enregistrer');
     if ($m->validate()) {
         $t = $j->getTable();
         $db = $t->getAdapter();
         $db->beginTransaction();
         try {
             $j->nom = $m->get('nom');
             $j->slug = $t->createSlug(wtk_strtoid($j->nom), $j->slug);
             $j->save();
             $this->logger->info("Journal édité", $this->_helper->Url('index', null, null, array('journal' => $j->slug)));
             $db->commit();
         } catch (Exception $e) {
             $db->rollBack();
             throw $e;
         }
         $this->redirectSimple('index', null, null, array('journal' => $j->slug));
     }
 }
Esempio n. 3
0
 function supprimerAction()
 {
     $p = $this->_helper->Photo(false);
     $this->metas(array('DC.Title' => 'Supprimer un commentaire'));
     $this->view->commentaire = $c = $this->_helper->Commentaire();
     $this->assert(null, $c, 'editer', "Vous n'avez pas le droit de supprimer ce commentaire !");
     $this->view->model = $m = new Wtk_Form_Model('supprimer');
     $m->addNewSubmission('continuer', 'Continuer');
     $m->addBool('confirmer', "Je confirmer la suppression", false);
     if ($m->validate()) {
         if ($m->get('confirmer')) {
             if ($p) {
                 $url = $this->_helper->Url('voir', 'photos', null, array('message' => null));
             } else {
                 $url;
             }
             $db = $c->getTable()->getAdapter();
             $db->beginTransaction();
             try {
                 $c->delete();
                 $this->_helper->Flash->info("Commentaire supprimé");
                 $this->logger->info('Commentaire supprimé', $url);
                 $db->commit();
             } catch (Exception $e) {
                 $db->rollBack();
                 throw $e;
             }
         }
         if ($p) {
             $this->redirectSimple('voir', 'photos', null, array('message' => null));
         }
     }
 }
Esempio n. 4
0
 function editerAction()
 {
     $t = new Liens();
     $this->assert(null, $t, 'editer', "Vous n'avez pas le droit d'éditer de liens");
     $this->metas(array('DC.Title' => 'Éditer les liens'));
     $this->view->model = $m = new Wtk_Form_Model('liens');
     $i = $m->addTable('liens', "Liens", array('url' => array('String', "URL"), 'nom' => array('String', 'Nom'), 'description' => array('String', 'Description')));
     $lns = $t->fetchAll();
     foreach ($lns as $lien) {
         $i->addRow($lien->toArray());
     }
     $i->addRow();
     $m->addNewSubmission('enregistrer', "Enregistrer");
     if ($m->validate()) {
         $db = $t->getAdapter();
         $db->beginTransaction();
         try {
             $listes = $m->get('liens');
             $db->query('DELETE FROM `lien`;');
             foreach ($listes as $data) {
                 if ($data['url']) {
                     $t->insert($data);
                 }
             }
             $this->logger->info("Liens édités");
             $db->commit();
             $this->redirectSimple('index', 'liens');
         } catch (Exception $e) {
             $db->rollBack();
             throw $e;
         }
     }
 }
Esempio n. 5
0
 function supprimerAction()
 {
     $tc = new Citation();
     $this->assert(null, $tc, 'supprimer', "Vous n'avez pas le droit de supprimer les citations.");
     $this->view->citation = $citation = $tc->find($this->_getParam('citation'))->current();
     $this->metas(array('DC.Title' => 'Supprimer une citation'));
     $this->view->model = $m = new Wtk_Form_Model('citation');
     $m->addBool('confirmer', "Je confirme vouloir supprimer cette citation.");
     $m->addNewSubmission('continuer', 'continuer');
     if ($m->validate()) {
         if ($m->get('confirmer')) {
             $db = $tc->getAdapter();
             $db->beginTransaction();
             try {
                 $this->logger->warn("Citation de " . $citation->auteur . " supprimée", array('controller' => 'citation'));
                 $citation->delete();
                 $db->commit();
             } catch (Exception $e) {
                 $db->rollback();
                 throw $e;
             }
         }
         $this->redirectSimple('index', null, null, null, true);
     }
 }
Esempio n. 6
0
 function editerAction()
 {
     $page = $this->_getParam('page');
     if (!$page) {
         throw new Strass_Controller_Action_Exception("Aucune page à éditer");
     }
     $this->view->statique = $page = new Statique($page);
     $this->metas(array('DC.Title' => "Éditer " . $page->getTitle()));
     $this->branche->append($page->getTitle(), array('action' => 'index'));
     $this->branche->append('Éditer');
     $this->assert(null, $page, 'editer', "Vous n'avez pas le droit d'éditer cette page");
     $this->view->model = $m = new Wtk_Form_Model('editer');
     $m->addNewSubmission('enregistrer', 'Enregistrer');
     $m->addString('wiki', 'Texte', $page->read());
     if ($m->validate()) {
         $page->write($m->get('wiki'));
         $this->redirectSimple('index');
     }
 }
Esempio n. 7
0
 function parametresAction()
 {
     $moi = Zend_Registry::get('user');
     $this->view->user = $user = $this->_helper->Membre($moi);
     $this->view->individu = $individu = $user->findParentIndividus();
     $this->assert($moi, $user, 'parametres', "Vous n'avez pas le droit de modifier les paramètres de cet utilisateur.");
     $this->metas(array('DC.Title' => "Éditer l'utilisateur " . $user->username));
     $autoedit = $moi->id == $user->id;
     $db = Zend_Registry::get('db');
     /* Migration de l'identifiant */
     if ($autoedit && $user->username != $individu->adelec) {
         $this->view->migrate = $m = new Wtk_Form_Model('migrate');
         $m->addConstraintRequired($m->addString('motdepasse', 'Mot de passe'));
         $m->addNewSubmission('migrer', 'Migrer');
         if ($m->validate()) {
             $db->beginTransaction();
             try {
                 if (!$user->testPassword($m->get('motdepasse'))) {
                     throw new Wtk_Form_Model_Exception('Mot de passe erroné', $m->getInstance('motdepasse'));
                 }
                 $user->username = $individu->adelec;
                 $user->setPassword($m->get('motdepasse'));
                 $user->save();
                 $this->logger->info("Migration du compte", $this->_helper->Url('fiche', 'individus', null, array('individu' => $individu->slug)));
                 $db->commit();
                 $auth = Zend_Auth::getInstance();
                 $id = $auth->getIdentity();
                 $id['username'] = $user->username;
                 $auth->getStorage()->write($id);
             } catch (Wtk_Form_Model_Exception $e) {
                 $db->rollBack();
                 $m->errors[] = $e;
             } catch (Exception $e) {
                 $db->rollBack();
                 throw $e;
             }
             $this->redirectSimple('fiche', 'individus', null, array('individu' => $individu->slug), true);
         }
     }
     /* Changement d'adélec */
     if ($autoedit) {
         $this->view->adelec = $m = new Wtk_Form_Model('adelec');
         $i = $m->addString('adelec', 'Adelec', $individu->adelec);
         $m->addConstraintRequired($i);
         $m->addConstraintEMail($i);
         $m->addConstraintRequired($m->addString('motdepasse', 'Mot de passe'));
         $m->addNewSubmission('enregistrer', 'Enregistrer');
         if ($m->validate()) {
             $db->beginTransaction();
             try {
                 if (!$user->testPassword($m->get('motdepasse'))) {
                     throw new Wtk_Form_Model_Exception('Mot de passe erroné', $m->getInstance('motdepasse'));
                 }
                 if ($user->username == $individu->adelec) {
                     $user->username = $m->get('adelec');
                     $user->setPassword($m->get('motdepasse'));
                     $user->save();
                     $auth = Zend_Auth::getInstance();
                     $id = $auth->getIdentity();
                     $id['username'] = $user->username;
                     $auth->getStorage()->write($id);
                 }
                 $individu->adelec = $m->get('adelec');
                 $individu->save();
                 $this->logger->info("Changement d'adélec", $this->_helper->Url('fiche', 'individus', null, array('individu' => $individu->slug)));
                 $db->commit();
             } catch (Wtk_Form_Model_Exception $e) {
                 $db->rollBack();
                 $m->errors[] = $e;
             } catch (Exception $e) {
                 $db->rollBack();
                 throw $e;
             }
             $this->redirectSimple('fiche', 'individus', null, array('individu' => $individu->slug), true);
         }
     }
     /* Changement de mot de passe */
     $this->view->change = $m = new Wtk_Form_Model('chpass');
     $g = $m->addGroup('mdp', "Change le mot de passe");
     if (!$this->assert(null) || $autoedit) {
         $m->addConstraintRequired($g->addString('ancien', 'Ancien'));
     }
     $m->addConstraintRequired($g->addString('nouveau', 'Nouveau'));
     $m->addConstraintRequired($g->addString('confirmation', "Confirmation"));
     $m->addNewSubmission('valider', 'Valider');
     if ($m->validate()) {
         $db->beginTransaction();
         try {
             $mdp = $m->get('mdp');
             if (array_key_exists('ancien', $mdp)) {
                 if (!$user->testPassword($mdp['ancien'])) {
                     throw new Wtk_Form_Model_Exception("Ancien mot de passe erroné.", $m->getInstance('mdp/ancien'));
                 }
             }
             if ($mdp['nouveau'] != $mdp['confirmation']) {
                 throw new Wtk_Form_Model_Exception("Le mot de passe de confirmation n'est pas identique " . "au nouveau.");
             }
             $user->setPassword($mdp['nouveau']);
             $user->save();
             $this->logger->info("Mot de passe changé", $this->_helper->Url('fiche', 'individus', null, array('individu' => $individu->slug)));
             $db->commit();
         } catch (Wtk_Form_Model_Exception $e) {
             $db->rollBack();
             $m->errors[] = $e;
         } catch (Exception $e) {
             $db->rollBack();
             throw $e;
         }
         $this->redirectSimple('fiche', 'individus', null, array('individu' => $individu->slug), true);
     }
     /* Notifications */
     $this->view->notifications = $m = new Wtk_Form_Model('notifications');
     $m->addBool('send_mail', "Recevoir des notifications par mail", $user->send_mail);
     $m->addNewSubmission('valider', 'Valider');
     if ($m->validate()) {
         $db->beginTransaction();
         try {
             $user->send_mail = (bool) $m->get('send_mail');
             $user->save();
             $db->commit();
             if ($user->send_mail) {
                 $msg = "Notifications activées";
             } else {
                 $msg = "Notifications désactivées";
             }
             $this->logger->info($msg, $this->_helper->Url('fiche', 'individus', null, array('individu' => $individu->slug)));
         } catch (Exception $e) {
             $db->rollBack();
             throw $e;
         }
         $this->redirectSimple('fiche', 'individus', null, array('individu' => $individu->slug), true);
     }
     /* Promotion à l'administration */
     if ($this->assert($moi, $user, 'admin') && !$autoedit) {
         $this->view->admin = $m = new Wtk_Form_Model('admin');
         $m->addBool('admin', "Accorder tous les privilèges sur le site à " . $user->findParentIndividus()->getFullName(), $user->admin);
         $m->addNewSubmission('valider', 'Valider');
         if ($m->validate()) {
             $db->beginTransaction();
             try {
                 $user->admin = $m->get('admin');
                 $user->save();
                 $db->commit();
                 $msg = $user->admin ? "Privilèges accordés" : "Privilèges refusés";
                 $this->logger->warn($msg, $this->_helper->Url('fiche', 'individus', null, array('individu' => $individu->slug)));
             } catch (Exception $e) {
                 $db->rollBack();
                 throw $e;
             }
             $this->redirectSimple('fiche', 'individus', null, array('individu' => $individu->slug), true);
         }
     }
 }
Esempio n. 8
0
 function parametresAction()
 {
     $this->metas(array('DC.Title' => 'Paramètres'));
     $this->branche->append();
     $config = Zend_Registry::get('config');
     $this->view->model = $m = new Wtk_Form_Model('parametres');
     $g = $m->addGroup('metas', "Informations");
     $g->addString('title', 'Titre', $config->metas->title);
     $g->addString('short_title', 'Titre court', $config->system->short_title);
     $g->addString('subject', 'Mots clefs', $config->metas->subject);
     $g->addString('author', 'Créateur du site', $config->metas->author);
     $g->addInteger('creation', 'Date de création du site', $config->metas->creation);
     $g = $m->addGroup('system', 'Système');
     $enum = array();
     foreach (Wtk_Document_Style::listAvailables() as $style) {
         $enum[$style->id] = $style->title;
     }
     $g->addEnum('style', 'Style', $config->system->style, $enum);
     $g->addString('admin', 'E-mail système', $config->system->admin);
     $g = $g->addGroup('mail');
     $i0 = $g->addBool('enable', 'Envoyer les mails', $config->system->mail->enable);
     $i1 = $g->addString('smtp', 'Serveur SMTP', $config->system->mail->smtp);
     $m->addConstraintDepends($i1, $i0);
     $m->addNewSubmission('enregistrer', 'Enregistrer');
     if ($m->validate()) {
         $new = new Strass_Config_Php('strass', $m->get());
         /* Migration en douceur de mouvement vers association. */
         if ($config->system->mouvement) {
             $new->system->association = $config->system->mouvement;
             unset($new->system->mouvement);
         }
         $new->system->short_title = $new->metas->short_title;
         unset($new->metas->short_title);
         $config->merge($new);
         $config->write();
         $this->logger->warn("Configuration mise-à-jour");
         $this->redirectSimple('index');
     }
 }
Esempio n. 9
0
 function supprimerAction()
 {
     $this->view->unite = $u = $this->_helper->Unite();
     $this->assert(null, $u, null, "Vous n'avez pas le droit de supprimer cette unité.");
     $this->metas(array('DC.Title' => 'Supprimer ' . $u->getFullname()));
     $this->view->model = $m = new Wtk_Form_Model('supprimer');
     $m->addBool('confirmer', "Je confirme la suppression de l'unité et de toutes ses données.", false);
     $m->addNewSubmission('continuer', 'Continuer');
     if ($m->validate()) {
         if ($m->get('confirmer')) {
             $db = $u->getTable()->getAdapter();
             $db->beginTransaction();
             try {
                 $u->delete();
                 $message = $u . " supprimé";
                 $this->logger->warn($message, $this->_helper->Url('index', 'unites'));
                 $this->_helper->Flash->info($message);
                 $db->commit();
             } catch (Exception $e) {
                 $db->rollBack();
                 throw $e;
             }
             $this->redirectSimple('unites', 'admin', null, null, true);
         } else {
             $this->redirectSimple('index', null, null, array('unite' => $u->slug));
         }
     }
 }
Esempio n. 10
0
 function supprimerAction()
 {
     $this->view->individu = $i = $this->_helper->Individu();
     $this->assert(null, $i, 'supprimer', "Vous n'avez pas le droit de supprime cette fiche.");
     $this->metas(array('DC.Title' => 'Supprimer ' . $i->getFullname()));
     $this->view->model = $m = new Wtk_Form_Model('desinscrire');
     $m->addBool('confirmer', "Je confirme la destruction de cette fiche.", false);
     $m->addNewSubmission('continuer', 'Continuer');
     if ($m->validate()) {
         if ($m->get('confirmer')) {
             $db = $i->getTable()->getAdapter();
             $db->beginTransaction();
             try {
                 $this->logger->warn("Suppression de " . $i->getFullname(), $this->_helper->Url('individus', 'admin'));
                 $i->delete();
                 $db->commit();
             } catch (Exception $e) {
                 $db->rollBack();
                 throw $e;
             }
             $this->_helper->Flash->info("Fiche supprimée");
             $this->redirectSimple('individus', 'admin');
         } else {
             $this->redirectSimple('fiche', 'individus', null, array('individu' => $i->slug));
         }
     }
 }
Esempio n. 11
0
 function supprimerAction()
 {
     $this->view->photo = $p = $this->_helper->Photo();
     $a = $p->findParentActivites();
     $this->assert(null, $p, 'supprimer', "Vous n'avez pas le droit de supprimer la photo " . $p->titre . ".");
     $this->metas(array('DC.Title' => "Supprimer " . $p->titre, 'DC.Subject' => 'photo,image', 'DC.Date.created' => $p->date));
     $this->view->model = $m = new Wtk_Form_Model('supprimer');
     $m->addBool('confirmer', "Je confirme la suppression de cette photo.", false);
     $m->addNewSubmission('continuer', 'Continuer');
     if ($m->validate()) {
         if ($m->get('confirmer')) {
             $db = $p->getTable()->getAdapter();
             $db->beginTransaction();
             try {
                 $p->delete();
                 $this->logger->warn("Photo supprimée", $this->_helper->Url('consulter', 'photos', null, array('album' => $a->slug), true));
                 $db->commit();
             } catch (Exception $e) {
                 $db->rollBack();
                 throw $e;
             }
             $this->redirectSimple('consulter', null, null, array('album' => $a->slug, 'photo' => null));
         } else {
             $this->redirectSimple('voir');
         }
     }
 }
Esempio n. 12
0
 function fetch($annee = NULL)
 {
     $u = $this->unite;
     $a = $annee;
     $m = new Wtk_Form_Model('prevoir');
     $t = new Unites();
     $enum = array();
     foreach ($t->fetchAll() as $unite) {
         if ($this->controller->assert(null, $unite, 'prevoir')) {
             $enum[$unite->id] = $unite->getFullname();
         }
     }
     if (!$enum) {
         throw new Strass_Controller_Action_Exception_Notice("Vous ne pouvez pas enregistrer une activité");
     }
     $i = $m->addEnum('unites', 'Unités participantes', $u->id, $enum, true);
     // multiple
     $m->addConstraintRequired($i);
     $annee = $this->controller->_helper->Annee(false);
     /* On cherche la date probable de l'activité qu'on veut prévoir. Soit
      * aucune activité n'est prévue cette année, alors on propose une date
      * près de la rentrée. Soit le calendrier est déjà remplis, alors on
      * propose comme date 4 semaines après la dernière activité
      * prévue. Comme ça on enchaîne l'enregistrement des activités. */
     $repere = $u->findLastDate($annee);
     if (!$repere) {
         $repere = Strass_Controller_Action_Helper_Annee::dateDebut($annee);
     } else {
         $debut = strftime('%Y-%m-%d', strtotime($repere . ' next saturday +4 weeks'));
         $fin = strftime('%Y-%m-%d', strtotime($repere . ' next sunday +4 weeks'));
     }
     $m->addDate('debut', 'Début', $debut . ' 14:30', '%Y-%m-%d %H:%M');
     $m->addDate('fin', 'Fin', $fin . '17:00', '%Y-%m-%d %H:%M');
     $m->addString('intitule', 'Intitulé explicite', "");
     $m->addBool('prevoir', "J'ai d'autres activités à prévoir", true);
     $m->addNewSubmission('ajouter', 'Ajouter');
     $m->addConstraintRequired($m->getInstance('unites'));
     if ($m->validate()) {
         $t = new Activites();
         $tu = new Unites();
         $td = new Documents();
         $a = new Activite();
         $a->debut = $m->debut;
         $a->fin = $m->fin;
         $unites = call_user_func(array($tu, 'find'), (array) $m->unites);
         // génération de l'intitulé
         $type = $unites->current()->findParentTypesUnite();
         $a->intitule = $m->intitule;
         $intitule = $type->getIntituleCompletActivite($a);
         $a->slug = $slug = $t->createSlug($intitule);
         $db = $t->getAdapter();
         $db->beginTransaction();
         try {
             $a->save();
             $a->updateUnites($unites);
             $this->controller->_helper->Flash->info("Activité enregistrée");
             $this->controller->logger->info("Nouvelle activite", $this->controller->_helper->Url('consulter', null, null, array('activite' => $a->slug)));
             $db->commit();
         } catch (Exception $e) {
             $db->rollBack();
             throw $e;
         }
         if ($m->get('prevoir')) {
             $this->controller->redirectSimple('prevoir');
         } else {
             $this->controller->redirectSimple('consulter', null, null, array('activite' => $slug));
         }
     }
     return array('model' => $m, 'calendrier' => $u->findActivites($this->current));
 }