Changeset 2708


Ignore:
Timestamp:
May 14, 2012, 2:21:30 AM (8 years ago)
Author:
goya
Message:

fix plots pour mandats interrompus et interventiosn de mibnistres hors mandat

Location:
cpc/trunk/project
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • cpc/trunk/project/apps/frontend/modules/parlementaire/templates/plotSuccess.php

    r1439 r2708  
    11<?php
    22$surtitre = "Graphes d'activité parlementaire";
    3 if ($session == 'lastyear') $titre = 'Sur les 12 derniers mois';
    4 else $titre = 'Sur la session '.preg_replace('/^(\d{4})/', '\\1-', $session);
     3$fin = myTools::isFinLegislature();
     4if ($session == 'lastyear') {
     5 if ($fin) $titre = 'Sur toute la législature';
     6 else $titre = 'Sur les 12 derniers mois';
     7} else $titre = 'Sur la session '.preg_replace('/^(\d{4})/', '\\1-', $session);
    58$sf_response->setTitle($surtitre.' de '.$parlementaire->nom.' '.strtolower($titre));
    69echo include_component('parlementaire', 'header', array('parlementaire' => $parlementaire, 'titre' => $surtitre));
     
    1013  echo '<a href="'.url_for('@parlementaire_plot?slug='.$parlementaire->slug.'&time=lastyear').'">';
    1114  else echo '<b>';
    12   echo 'Les 12 derniers mois';
     15  if ($fin) echo 'Toute la législature';
     16  else echo 'Les 12 derniers mois';
    1317  if ($session != 'lastyear') echo '</a>';
    1418  else echo '</b>';
  • cpc/trunk/project/apps/frontend/modules/plot/actions/components.class.php

    r2706 r2708  
    4545      $n_weeks = ($annee - $annee0)*53 + $sem - $sem0 + 1;
    4646    }
    47     if ($this->data['fin'])
     47    if ($this->data['fin']) {
    4848      $this->data['labels'] = $this->getLabelsMois($n_weeks, $annee0, $sem0);
    49     else $this->data['labels'] = $this->getLabelsSemaines($n_weeks, $annee0, $sem0);
    50     $this->data['vacances'] = $this->getVacances($n_weeks, $annee0, $sem0, strtotime($this->parlementaire->debut_mandat));
     49      $this->data['vacances'] = $this->getVacancesAllMandats($n_weeks, $annee0, $sem0, $this->parlementaire->getMandatsLegislature());
     50    } else {
     51      $this->data['labels'] = $this->getLabelsSemaines($n_weeks, $annee0, $sem0);
     52      $this->data['vacances'] = $this->getVacances($n_weeks, $annee0, $sem0, strtotime($this->parlementaire->debut_mandat));
     53    }
    5154
    5255    $query = Doctrine_Query::create()
     
    119122    unset($questionsorales);
    120123   }
     124    # Clean interventiosn de ministre hors périodes de mandat
     125    for($i=1; $i < $n_weeks; $i++)
     126      if ($this->data['vacances'][$i] == 20) {
     127        $this->data['n_presences']['hemicycle'][$i] = 0;
     128        $this->data['n_presences']['commission'][$i] = 0;
     129        $this->data['n_participations']['hemicycle'][$i] = 0;
     130        $this->data['n_participations']['commission'][$i] = 0;
     131        $this->data['n_mots']['hemicycle'][$i] = 0;
     132        $this->data['n_mots']['commission'][$i] = 0;
     133        if (isset($this->data['n_questions']))
     134          $this->data['n_questions'][$i] = 0;
     135      }
    121136   
    122137  }
    123138
    124139  public static function getVacances($n_weeks, $annee0, $sem0, $debut_mandat) {
     140   
    125141    $n_vacances = array_fill(1, $n_weeks, 0);
    126142    $mandat_an0 = date('Y', $debut_mandat);
     
    138154    }
    139155    return $n_vacances;
    140  }
    141 
    142  public static function getLabelsSemaines($n_weeks, $annee, $sem) {
     156  }
     157
     158  public static function getVacancesAllMandats($n_weeks, $annee0, $sem0, $mandats) {
     159    $n_vacances = array_fill(1, $n_weeks, 0);
     160    $n = 0;
     161    $annee = $annee0;
     162    $sem = $sem0;
     163    foreach($mandats as $m) {
     164      if (preg_match("/^(.*);(.*)?$/", $m, $match)) {
     165        $debut = strtotime($match[1]);
     166        $mandat_an0 = date('Y', $debut);
     167        $mandat_sem0 = date('W', $debut);
     168        if ($mandat_sem0 == 53) { $mandat_an0++; $mandat_sem0 = 1; }
     169        if ($match[2] != "")
     170          $fin = strtotime($match[2]);
     171        else $fin = time();
     172        $mandat_an1 = date('Y', $fin);
     173        $mandat_sem1 = date('W', $fin);
     174        if ($mandat_sem1 == 53) { $mandat_an1++; $mandat_sem1 = 1; }
     175        while ($n <= $n_weeks && ($annee < $mandat_an0 || ($annee == $mandat_an0 && $sem < $mandat_sem0))) {
     176          $n_vacances[$n] = 20;
     177          $sem++;
     178          if ($sem == 53) { $annee++ ; $sem = 1; }
     179          $n++;
     180        }
     181        while ($n <= $n_weeks && ($annee < $mandat_an1 || ($annee == $mandat_an1 && $sem < $mandat_sem1))) {
     182          $sem++;
     183          if ($sem == 53) { $annee++ ; $sem = 1; }
     184          $n++;
     185        }
     186      }
     187    }
     188    while ($n <= $n_weeks) {
     189      $n_vacances[$n] = 20;
     190      $n++;
     191    } 
     192    $vacances = Doctrine::getTable('VariableGlobale')->findOneByChamp('vacances');
     193    if ($vacances) foreach (unserialize($vacances->value) as $vacance) {
     194      $n = ($vacance['annee'] - $annee0)*53 + $vacance['semaine'] - $sem0 + 1;
     195      if ($n > 0 && $n <= $n_weeks)
     196        $n_vacances[$n] = 20;
     197    }
     198    return $n_vacances;
     199  }
     200
     201  public static function getLabelsSemaines($n_weeks, $annee, $sem) {
    143202    if ($sem > 1 && $sem <= 51) $an = $annee + 1;
    144203    else $an = $annee;
  • cpc/trunk/project/apps/frontend/modules/plot/templates/generatePlotParlementaireSuccess.php

    r2706 r2708  
    135135    $pos_titre = 210;
    136136    $duree = ' sa dernière année de mandat';
     137  } else if ($data['fin']) {
     138    $pos_titre = 235;
     139    $duree = ' toute la législature';
    137140  } else $duree = 's 12 derniers mois';
    138141  $shortduree = 'annee';
  • cpc/trunk/project/lib/model/doctrine/Parlementaire.class.php

    r2696 r2708  
    643643  }
    644644
     645  public function getMandatsLegislature() {
     646    $mandats = array();
     647    $debut = strtotime(myTools::getDebutLegislature());
     648    foreach (unserialize($this->getAnciensMandats()) as $m) {
     649      if (preg_match("/^(.*) \/ (.*) \/ (.*)$/", $m, $match)) {
     650        $match[1] = preg_replace("#^(\d+)/(\d+)/(\d+)$#", "\\3-\\2-\\1", $match[1]);
     651        if ($match[2] != "")
     652          $match[2] = preg_replace("#^(\d+)/(\d+)/(\d+)$#", "\\3-\\2-\\1", $match[2]);
     653        if (strtotime($match[1]) >= $debut)
     654          $mandats[] = $match[1].";".$match[2];
     655      }
     656    }
     657    sort($mandats);
     658    return $mandats;
     659  }
     660
    645661  private function setInternalPhoto($photo) {
    646662    $this->photo = $photo;
Note: See TracChangeset for help on using the changeset viewer.