Changeset 1327


Ignore:
Timestamp:
Sep 5, 2010, 9:57:14 PM (10 years ago)
Author:
teymour
Message:

La mécanique des alertes mails :
Dans la table alerte :

  • query : est la query solr correspondant à l'alerte (mot clé et/ou filtre)
  • last_mail : la date du dernier object envoyé (soit du dernier envoi mais ca permet de ne pas rater d'object), ces changements de date sont générés par la tache d'envoi, il faut donc justr l'initialiser à la création avec la date courrante
  • titre : soit les mots clés soit une explication textuelle de l'alerte (pour les alertes complexe, genre « commentaire en réponse à votre commentaire du 10 juin »)

pour la query les filtres peuvent être :
object_name:<Table>
object_id:<tupple_id>
ou des tags
tag:<nom_tag>

un certains nombre de tags sont autogérés. Pour les commentaires, par exemple, la référence à l'object est généré par tag.
Pour s'abonner aux commentaires en réponse à Intervention/XXX car donne la query :
tag:object_type=Intervention tag:object_id=XXX

Location:
cpc/trunk/project
Files:
4 added
8 edited

Legend:

Unmodified
Added
Removed
  • cpc/trunk/project/apps/frontend/modules/solr/actions/actions.class.php

    r1322 r1327  
    1212{
    1313
    14   private function getLink($obj) {
    15     sfProjectConfiguration::getActive()->loadHelpers(array('Url'));
    16     switch(get_class($obj)) {
    17     case 'Intervention':
    18       return url_for('@interventions_seance?seance='.$obj->getSeance()->id).'#inter_'.$obj->getMd5();
    19     case 'QuestionEcrite':
    20       return url_for('@question_numero?numero='.$obj->numero);
    21     case 'Amendement':
    22       return url_for('@amendement?loi='.$obj->texteloi_id.'&numero='.$obj->numero);
    23     case 'Parlementaire':
    24       return url_for('@parlementaire?slug='.$obj->slug);
    25     case 'Commentaire':
    26       return $obj->lien;
    27     }
    28   }
    29   private function getPersonne($obj) {
    30     sfProjectConfiguration::getActive()->loadHelpers(array('Url'));
    31     switch(get_class($obj)) {
    32     case 'Intervention':
    33       return $obj->getIntervenant()->getNom();
    34     case 'QuestionEcrite':
    35       return $obj->getParlementaire()->getNom();
    36     case 'Amendement':
    37       return '';
    38     case 'Parlementaire':
    39       return '';
    40     case 'Commentaire':
    41       return $obj->getCitoyen()->getLogin();
    42     }
    43   }
    4414  private function getPhoto($obj) {
    4515    sfProjectConfiguration::getActive()->loadHelpers(array('Url'));
     
    11888    for($i = 0 ; $i < count($this->results['docs']) ; $i++) {
    11989      $res = $this->results['docs'][$i];
    120       $obj = Doctrine::getTable($res['object_name'])->find($res['object_id']);
    121       $this->results['docs'][$i]['link'] = $this->getLink($obj);
     90      $obj = $res['object'];
     91      $this->results['docs'][$i]['link'] = $obj->getLink();
    12292      $this->results['docs'][$i]['photo'] = $this->getPhoto($obj);
    12393      $this->results['docs'][$i]['titre'] = $obj->getTitre();
    124       $this->results['docs'][$i]['personne'] = $this->getPersonne($obj);
     94      $this->results['docs'][$i]['personne'] = $obj->getPersonne();
    12595      $this->results['docs'][$i]['highlighting'] = preg_replace('/^'.$this->results['docs'][$i]['personne'].'/', '', implode('...', $results['highlighting'][$res['id']]['text']));
    12696     
     
    12898    $this->results['end'] = $deb + $nb;
    12999    $this->results['page'] = $deb/$nb + 1;
    130     if ($this->results['end'] > $this->results['numFound']) {
     100    if ($this->results['end'] > $this->results['numFound'] && $this->results['numFound']) {
    131101      $this->results['end'] = $this->results['numFound'] + 1;
    132102    }
  • cpc/trunk/project/config/doctrine/schema.yml

    r1324 r1327  
    554554      foreignAlias: SousSections
    555555
     556Alerte:
     557  actAs:
     558    Timestampable:
     559  columns:
     560    email: string(128)
     561    query: string(128)
     562    titre: string
     563    confirmed: boolean
     564    period:
     565      type: enum
     566      values: ['HOUR', 'DAY', 'WEEK', 'MONTH']
     567    next_mail: datetime
     568    last_mail: datetime
     569    citoyen_id: integer
     570    verif: string(128)
     571  relations:
     572    Citoyen:
     573      class: Citoyen
     574      foreignAlias: Alertes
     575   
     576   
  • cpc/trunk/project/lib/model/doctrine/Amendement.class.php

    r1274 r1327  
    77
    88  public function getLink() {
    9     return '@amendement_id?id='.$this->id;
     9    sfProjectConfiguration::getActive()->loadHelpers(array('Url'));
     10    return url_for('@amendement?loi='.$this->texteloi_id.'&numero='.$this->numero);
     11  }
     12  public function getPersonne($obj) {
     13    return '';
    1014  }
    1115
  • cpc/trunk/project/lib/model/doctrine/Commentaire.class.php

    r1319 r1327  
    66class Commentaire extends BaseCommentaire
    77{
     8  public function getLink() {
     9    return $this->lien;
     10  }
     11  public function getPersonne() {
     12    return $this->citoyen->getLogin();
     13  }
    814  public function getTitre() {
    915    return $this->getPresentation();
  • cpc/trunk/project/lib/model/doctrine/Intervention.class.php

    r1274 r1327  
    77{
    88  public function getLink() {
    9     return '@intervention?id='.$this->id;
     9    sfProjectConfiguration::getActive()->loadHelpers(array('Url'));
     10    return url_for('@interventions_seance?seance='.$this->getSeance()->id).'#inter_'.$this->getMd5();
     11  }
     12
     13  public function getPersonne() {
     14    sfProjectConfiguration::getActive()->loadHelpers(array('Url'));
     15    return $this->getIntervenant()->getNom();
    1016  }
    1117
  • cpc/trunk/project/lib/model/doctrine/Parlementaire.class.php

    r1317 r1327  
    66class Parlementaire extends BaseParlementaire
    77{
    8 
     8  public function getLink() {
     9    sfProjectConfiguration::getActive()->loadHelpers(array('Url'));
     10    return url_for('@parlementaire?slug='.$this->slug);
     11  }
    912  public function getTitre() {
    1013    return $this->getNom();
    1114  }
    12 
     15  public function getPersonne() {
     16    return '';
     17  }
    1318  public function __tostring() {
    1419    return $this->getNom();
  • cpc/trunk/project/lib/model/doctrine/QuestionEcrite.class.php

    r1189 r1327  
    88
    99  public function getLink() {
    10     return '@question?id='.$this->id;
     10    sfProjectConfiguration::getActive()->loadHelpers(array('Url'));
     11    return url_for('@question_numero?numero='.$this->numero);
     12  }
     13  public function getPersonne() {
     14    return $this->getParlementaire()->getNom();
    1115  }
    1216
  • cpc/trunk/project/lib/model/solr/SolrConnector.class.php

    r1325 r1327  
    8484        $maxHits = sfConfig::get('app_solr_max_hits', 256);
    8585    $response = $this->solr->search($queryString, $offset, $maxHits, $params);
    86     return unserialize($response->getRawResponse());
     86    $results = unserialize($response->getRawResponse());
     87    for ($i = 0 ; $i < count($results['response']['docs']); $i++) {
     88      $res = $results['response']['docs'][$i];
     89      $results['response']['docs'][$i]['object'] = Doctrine::getTable($res['object_name'])->find($res['object_id']);
     90    }
     91    return $results;
    8792  }
    8893 
Note: See TracChangeset for help on using the changeset viewer.