<commit_before><?php

/**
 * Texteloi
 * 
 * This class has been auto-generated by the Doctrine ORM Framework
 * 
 * @package    cpc
 * @subpackage model
 * @author     Your name here
 * @version    SVN: $Id: Builder.php 7490 2010-03-29 19:53:27Z jwage $
 */
class Texteloi extends BaseTexteloi
{

  protected $cpt = 0;

  public function getLink() {
    sfProjectConfiguration::getActive()->loadHelpers(array('Url'));
    return url_for('@document?id='.$this->id);
  }

  public function __toString() {
    $str = substr($this->getExtract(), 0, 250);
    if (strlen($str) == 250) {
      $str .= '...';
    } else if (!$str) $str = "";
    return $str;
  }

  public function getPersonne() {
    $auteurs = $this->getAuteurs();
    if (!$auteurs) return "";
    return $auteurs[0]['nom'];
  }

  public function getAmendements($help = 0) {
    return self::getAmdmts($this->type, $this->numero, $help);
  }

  public static function getAmdmts($type, $numero, $help = 0) {
    if (!($type === "Rapport" && $help) && !preg_match('/(Projet de loi|Proposition de loi|Proposition de résolution|Texte de la commission)/', $type))
      return 0;
    $res = count(Doctrine::getTable('Amendement')->createQuery('a')
      ->where('texteloi_id = ?', $numero)
      ->fetchArray());
    return $res;
  }

  public function getSection() {
    $section = Doctrine::getTable('Section')->findOneByIdDossierAn($this->id_dossier_an);
    if (!$section) $section = Doctrine_Query::create()
      ->select('s.id')
      ->from('Section s, Tagging ta, Tag t')
      ->where('s.section_id = s.id')
      ->andWhere('ta.taggable_id = s.id')
      ->andWhere('ta.tag_id = t.id')
      ->andWhere('ta.taggable_model = ?', "Section")
      ->andWhere('t.name = ?', "loi:numero=".$this->numero)
      ->fetchOne();
    return $section;
  }

  public function setDossier($urldossier) {
    $this->id_dossier_an = $urldossier;
    $section = Doctrine::getTable('Section')->findOneByIdDossierAn($urldossier);
    if ($section) {
   # cela parait plus cohérent que les dossiers apparaissent comme récemment modifiés uniquement s'ils sont discutés et pas si un nouveau rapport vient les compléter je pense mais on peut envisager de le mettre tout de même si c utile pour solr par exemple
   #   $section->setMaxDate($this->date);
   #   $section->save();
 #print "$section->id, $this->id_dossier_an\n";
      return true;
    }
    $sections = Doctrine_Query::create()
      ->select('s.id')
      ->from('Section s, Tagging ta, Tag t')
      ->where('s.section_id = s.id')
      ->andWhere('ta.taggable_id = s.id')
      ->andWhere('ta.tag_id = t.id')
      ->andWhere('ta.taggable_model = ?', "Section")
      ->andWhere('t.name = ?', "loi:numero=".$this->numero)
      ->fetchArray();
    $res = count($sections);
    if ($res == O) {
     #print "Pas de dossier trouvé pour le texte $this->id\n";
     return false;
    } else if ($res == 1) {
      $section = Doctrine::getTable('Section')->find($sections[0]['id']);
      $section->id_dossier_an = $urldossier;
   # voir plus haut
   #  $section->setMaxDate($this->date);
      $section->save();
     #print "$section->id, $this->id_dossier_an\n";
      return true;
    } else {
     echo "$this->source : Plusieurs dossiers trouvés pour le texte $this->id de type $this->type\n";
     return false;
    }
  }

  public function setAuteurs($signataires) {    
    //$debug=1;
    $this->signataires = $signataires;
   //Set signatires, auteurs via PArlemnaitreTexteDocu et Organisme
    $orga = null;
    $sexe = null;
    $fonction = null;
    $signataires = preg_replace("/(Auteur|Cosignataire|Rapporteur), /", "\\1#", $signataires);
    if ($debug) echo $this->source." : ".$signataires."\n";
    $signataires = preg_split('/#/', $signataires);
    foreach ($signataires as $depute) {
      if (preg_match('/^(M[\.mle]+)/', $depute, $match)) 
        continue;
      if (preg_match('/^(.*)(\set apparentés)?\s+(Auteur|Cosignataire|Rapporteur)/', $depute, $match)) {
        $orga = trim($match[1]).$match[2];
        $organisme = Doctrine::getTable('Organisme')->findOneByNomType($orga, 'parlementaire');
        if ($organisme) {
          $this->setOrganisme($organisme);<commit_msg>remove php notices<commit_after><?php

/**
 * Texteloi
 * 
 * This class has been auto-generated by the Doctrine ORM Framework
 * 
 * @package    cpc
 * @subpackage model
 * @author     Your name here
 * @version    SVN: $Id: Builder.php 7490 2010-03-29 19:53:27Z jwage $
 */
class Texteloi extends BaseTexteloi
{

  protected $cpt = 0;

  public function getLink() {
    sfProjectConfiguration::getActive()->loadHelpers(array('Url'));
    return url_for('@document?id='.$this->id);
  }

  public function __toString() {
    $str = substr($this->getExtract(), 0, 250);
    if (strlen($str) == 250) {
      $str .= '...';
    } else if (!$str) $str = "";
    return $str;
  }

  public function getPersonne() {
    $auteurs = $this->getAuteurs();
    if (!$auteurs) return "";
    return $auteurs[0]['nom'];
  }

  public function getAmendements($help = 0) {
    return self::getAmdmts($this->type, $this->numero, $help);
  }

  public static function getAmdmts($type, $numero, $help = 0) {
    if (!($type === "Rapport" && $help) && !preg_match('/(Projet de loi|Proposition de loi|Proposition de résolution|Texte de la commission)/', $type))
      return 0;
    $res = count(Doctrine::getTable('Amendement')->createQuery('a')
      ->where('texteloi_id = ?', $numero)
      ->fetchArray());
    return $res;
  }

  public function getSection() {
    $section = Doctrine::getTable('Section')->findOneByIdDossierAn($this->id_dossier_an);
    if (!$section) $section = Doctrine_Query::create()
      ->select('s.id')
      ->from('Section s, Tagging ta, Tag t')
      ->where('s.section_id = s.id')
      ->andWhere('ta.taggable_id = s.id')
      ->andWhere('ta.tag_id = t.id')
      ->andWhere('ta.taggable_model = ?', "Section")
      ->andWhere('t.name = ?', "loi:numero=".$this->numero)
      ->fetchOne();
    return $section;
  }

  public function setDossier($urldossier) {
    $this->id_dossier_an = $urldossier;
    $section = Doctrine::getTable('Section')->findOneByIdDossierAn($urldossier);
    if ($section) {
   # cela parait plus cohérent que les dossiers apparaissent comme récemment modifiés uniquement s'ils sont discutés et pas si un nouveau rapport vient les compléter je pense mais on peut envisager de le mettre tout de même si c utile pour solr par exemple
   #   $section->setMaxDate($this->date);
   #   $section->save();
 #print "$section->id, $this->id_dossier_an\n";
      return true;
    }
    $sections = Doctrine_Query::create()
      ->select('s.id')
      ->from('Section s, Tagging ta, Tag t')
      ->where('s.section_id = s.id')
      ->andWhere('ta.taggable_id = s.id')
      ->andWhere('ta.tag_id = t.id')
      ->andWhere('ta.taggable_model = ?', "Section")
      ->andWhere('t.name = ?', "loi:numero=".$this->numero)
      ->fetchArray();
    $res = count($sections);
    if ($res == O) {
     #print "Pas de dossier trouvé pour le texte $this->id\n";
     return false;
    } else if ($res == 1) {
      $section = Doctrine::getTable('Section')->find($sections[0]['id']);
      $section->id_dossier_an = $urldossier;
   # voir plus haut
   #  $section->setMaxDate($this->date);
      $section->save();
     #print "$section->id, $this->id_dossier_an\n";
      return true;
    } else {
     echo "$this->source : Plusieurs dossiers trouvés pour le texte $this->id de type $this->type\n";
     return false;
    }
  }

  public function setAuteurs($signataires) {    
    $debug=0;
    $this->signataires = $signataires;
   //Set signatires, auteurs via PArlemnaitreTexteDocu et Organisme
    $orga = null;
    $sexe = null;
    $fonction = null;
    $signataires = preg_replace("/(Auteur|Cosignataire|Rapporteur), /", "\\1#", $signataires);
    if ($debug) echo $this->source." : ".$signataires."\n";
    $signataires = preg_split('/#/', $signataires);
    foreach ($signataires as $depute) {
      if (preg_match('/^(M[\.mle]+)/', $depute, $match)) 
        continue;
      if (preg_match('/^(.*)(\set apparentés)?\s+(Auteur|Cosignataire|Rapporteur)/', $depute, $match)) {
        $orga = trim($match[1]).$match[2];
        $organisme = Doctrine::getTable('Organisme')->findOneByNomType($orga, 'parlementaire');
        if ($organisme) {
          $this->setOrganisme($organisme);
{'fraction_non_alphanumeric': 0.17972732661529342, 'fraction_numerical': 0.00853586247777119, 'mean_word_length': 3.2757222503801318, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 105, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2999936', 'n_tokens_mistral': 3042, 'n_tokens_neox': 2935, 'n_words': 635}