source: cpc/trunk/project/lib/model/doctrine/Commentaire.class.php @ 1438

Last change on this file since 1438 was 1438, checked in by teymour, 11 years ago

Bug étrange avec les url_for dans les task
Gestion plus rationnelle du app.yml
Parametrage de l'envoi des alertes

File size: 4.2 KB
Line 
1<?php
2
3/**
4 * This class has been auto-generated by the Doctrine ORM Framework
5 */
6class Commentaire extends BaseCommentaire
7{
8  public function getLink() {
9    if (!function_exists('url_for'))
10      sfProjectConfiguration::getActive()->loadHelpers(array('Url'));
11    return url_for($this->lien).'#Commentaire_'.$this->id;
12  }
13  public function getPersonne() {
14    if ($this->getCitoyen())
15      return $this->getCitoyen()->getLogin();
16    return '';
17  }
18  public function getTitre() {
19    return $this->getPresentation();
20  }
21
22  public function __toString() {
23    $str = substr($this->commentaire, 0, 250);
24    if (strlen($str) == 250) {
25      $str .= '...';
26    }
27    return $str;
28  }
29
30  protected static $mois = array('01'=>'janvier', '02'=>'février', '03'=>'mars', '04'=>'avril', '05'=>'mai', '06'=>'juin', '07'=>'juillet', '08'=>'août', '09'=>'septembre', '10'=>'octobre', '11'=>'novembre', '12'=>'décembre');
31
32 /**
33  * Overrides getPresentation from corresponding column
34  * if $format is set to specific strings, returns a modified version :
35  *   'none' => empty string
36  *   'noauteur' => presentation without the author information
37  *   'nodossier' => presentation without the section information
38  *   'noloi' => presentation without the name of the law
39  *   'noarticle' => presentation without the name of the law nor the article's
40  * if $virgule is set to 1, adds a ', ' at the end of the string
41  */
42  public function getPresentation($format = '', $virgule = 0) {
43    if ($format == 'none') return '';
44    else $present = $this->_get('presentation');
45    if ($format == 'noauteur') {
46      $present = preg_replace('/\sd(\'|e\s)[A-ZÉÈÊ][\wçàéëêèïîôöûüÉ\s\-]+\sle\s(\d)/', ' du \2', $present);
47      $present = preg_replace('/Suite aux/', 'Suite à ses', $present);
48    } else if ($format == 'nodossier') {
49      $present = preg_replace('/^.* - (Suite aux|Au sujet)/', '\1', $present);
50    } else if ($format == 'noloi' || $format == 'noarticle') {
51      $present = preg_replace('/^.* - /', '', $present);
52    }
53    if ($format == 'noarticle') {
54      $present = preg_replace('/(A propos de l\')article\s.*\s(alinéa\s\d+)/', '\1\2', $present);
55      $present = preg_replace('/A propos de l\'article\s.*$/', '', $present);
56    }
57    if ($virgule == 1 && $present != '') return $present.', ';
58    else return $present;
59  }
60
61  public function addObject($object_type, $object_id) {
62    if (!$this->id) {
63      throw new Exception('no commentaire id');
64    }
65    $object = Doctrine::getTable($object_type)->find($object_id);
66    if ($object) {
67      Doctrine::getTable('CommentaireObject')->findUniqueOrCreate($object_type, $object_id, $this->id);
68      $object->updateNbCommentaires();
69      if ($object_type == 'Section' && $object->id != $object->section_id)
70        $this->addObject($object_type, $object->section_id);
71      else if ($object_type == 'TitreLoi') {
72        if ($object->id != $object->titre_loi_id)
73          $this->addObject($object_type, $object->titre_loi_id);
74        if ($object->parlementaire_id)
75          $this->addObject('Parlementaire', $object->parlementaire_id);
76        $this->addObject('Texteloi', $object->texteloi_id);
77      } else if ($object_type == 'ArticleLoi' && $object->titre_loi_id)
78        $this->addObject('TitreLoi', $object->titre_loi_id);
79      else if ($object_type == 'Texteloi' && $section = $object->getSection())
80        $this->addObject('Section', $section->id);
81    }
82  }
83
84  public function getParlementaires() {
85    return Doctrine::getTable('CommentaireObject')->getParlementaires($this->id);
86  }
87
88  public function updateNbCommentaires($inc = 0) {
89    if ($this->object_type) {
90      $o = Doctrine::getTable($this->object_type)->find($this->object_id);
91      $o->updateNbCommentaires($inc);
92    }
93    foreach ($this->getObjects() as $object) {
94      $o = Doctrine::getTable($object->object_type)->find($object->object_id);
95      if (isset($o))
96        $o->updateNbCommentaires($inc);
97    }
98  }
99
100  public function getLien() {
101    return preg_replace('/@amendement\?id=/', '@amendement_id?id=', $this->_get('lien'));
102  }
103
104  public function save(Doctrine_Connection $c = null) {
105    parent::save($c);
106    $b = $this->is_public;
107    $this->updateNbCommentaires(($b) ? 1 : -1);
108  }
109}
Note: See TracBrowser for help on using the repository browser.