コード例 #1
0
ファイル: PhotosEnvoyer.php プロジェクト: bersace/strass
 function fetch($annee = NULL)
 {
     if (!$this->activite) {
         return array('activites' => $this->unite->findActivites($annee));
     } else {
         $this->controller->assert(null, $this->activite, 'envoyer-photo', "Vous n'avez pas le droit d'envoyer de photo de " . $this->activite->getIntituleComplet() . ".");
     }
     $m = new Wtk_Form_Model('envoyer');
     $i = $m->addString('titre', 'Titre');
     $m->addConstraintRequired($i);
     $m->addFile('photo', "Photo");
     $m->addString('commentaire', 'Votre commentaire');
     $m->addBool('envoyer', "J'ai d'autres photos à envoyer", true);
     $m->addNewSubmission('envoyer', "Envoyer");
     $t = new Photos();
     if ($m->validate()) {
         $p = new Photo();
         $p->titre = $m->titre;
         $p->slug = $t->createSlug(wtk_strtoid($m->titre));
         $p->activite = $this->activite->id;
         $action = $m->envoyer ? 'envoyer' : 'consulter';
         $c = new Commentaire();
         $c->auteur = Zend_Registry::get('individu')->id;
         $c->message = $m->commentaire;
         $db = $t->getAdapter();
         $db->beginTransaction();
         try {
             $c->save();
             $p->commentaires = $c->id;
             $p->save();
             $i = $m->getInstance('photo');
             if ($i->isUploaded()) {
                 $tmp = $i->getTempFilename();
                 $p->storeFile($tmp);
             }
             $url = $this->controller->_helper->Url('voir', 'photos', null, array('photo' => $p->slug), true);
             $this->controller->logger->info("Photo envoyée", $url);
             foreach ($this->activite->findUnitesParticipantesExplicites() as $u) {
                 $ident = new Identification();
                 $ident->photo = $p->id;
                 $ident->unite = $u->id;
                 $ident->save();
                 $this->controller->logger->info("Unité identifiée sur une photo", $url);
             }
             $db->commit();
         } catch (Exception $e) {
             $db->rollBack();
             throw $e;
         }
         $this->controller->_helper->Flash->info("Photo envoyée");
         $this->controller->redirectSimple($action, null, null, array('album' => $this->activite->slug));
     }
     $photos = $this->activite->findPhotos($t->select()->order('date'));
     return array('unite' => $this->unite, 'annee' => $annee, 'model' => $m, 'activite' => $this->activite, 'photos' => $photos);
 }
コード例 #2
0
ファイル: Unites.php プロジェクト: bersace/strass
 function findPhotosAleatoires($annee = null)
 {
     // Une photos aléatoire d'une activité où l'unité à participé
     $t = new Photos();
     $db = $t->getAdapter();
     $s = $t->select()->setIntegrityCheck(false)->distinct()->from('photo');
     /* Rechercher les albums ou l'unité a participé */
     $s->join('participation', 'participation.activite = photo.activite' . ' AND ' . $db->quoteInto("participation.unite = ?", $this->id), array());
     /* Rechercher si l'unité est identifiée sur la photo */
     $s->joinLeft(array('identification' => 'photo_identification'), $db->quoteInto('identification.photo = photo.id' . ' AND ' . 'identification.unite = ?', $this->id), array());
     /* Préfére les photos où l'unité est identifiée explicitement. */
     $s->order('identification.unite DESC');
     /* Préfère les photo comm. */
     $s->order('photo.promotion DESC');
     /* Mélanger les photos comm. et identifie */
     $s->order('RANDOM()');
     if ($annee) {
         $s->where("strftime('%Y', activite.debut, '-8 months') = ?", strval($annee));
     }
     $s->limit(6);
     // paramétrable ?
     return $t->fetchAll($s);
 }