コード例 #1
0
/**
 * Calcola o ri-calcola i dati da cachare per i politici
 * - presenze, assenze, missioni
 * - indice di attività (nuovo)
 * - ribellioni
 * Si può specificare:
 * - il ramo (camera, senato, governo, parlamento, tutti*)
 * - la data (da inizio legislatura a quella data)
 * Se sono passati degli ID (argomenti), sono interpretati come ID di politici e il calcolo è fatto solo per loro
 * L'opzione --verbose, permette di visualizzare il dettaglio dei calcoli svolti
 */
function run_opp_build_cache_politici($task, $args, $options)
{
    static $loaded;
    // load application context
    if (!$loaded) {
        task_loader();
        $loaded = true;
    }
    echo "memory usage: " . memory_get_usage() . "\n";
    $msg = sprintf("start time: %s\n", date('H:i:s'));
    echo $msg;
    $data = '';
    $ramo = 'tutti';
    $tipo = 'P';
    $verbose = false;
    $dry_run = false;
    if (array_key_exists('data', $options)) {
        $data = $options['data'];
    }
    if (array_key_exists('ramo', $options)) {
        $ramo = strtoupper($options['ramo'][0]);
    }
    if (array_key_exists('verbose', $options)) {
        $verbose = true;
    }
    if (array_key_exists('dry_run', $options)) {
        $dry_run = true;
    }
    // restrizione su un subset di atti/emendamenti per eventuale debug
    $atti_ids = array();
    if (array_key_exists('atti', $options)) {
        $atti_ids = explode(",", $options['atti']);
    }
    $emendamenti_ids = array();
    if (array_key_exists('emendamenti', $options)) {
        $emendamenti_ids = explode(",", $options['emendamenti']);
    }
    // definisce la data fino alla quale vanno fatti i calcoli
    // data_lookup serve per controllare se i record già esistono
    if ($data != '') {
        $legislatura_corrente = OppLegislaturaPeer::getCurrent($data);
        $data_lookup = $data;
    } else {
        $legislatura_corrente = OppLegislaturaPeer::getCurrent();
        $data = date('Y-m-d');
        if ($ramo == 'tutti') {
            $data_lookup = OppPoliticianHistoryCachePeer::fetchLastData('P');
        } else {
            $data_lookup = OppPoliticianHistoryCachePeer::fetchLastData('P', $ramo);
        }
    }
    $msg = sprintf("calcolo cache per politici data: %10s, ramo: %10s\n", $data ? $data : '-', $ramo);
    echo pakeColor::colorize($msg, array('fg' => 'cyan', 'bold' => true));
    if (count($args) > 0) {
        try {
            $parlamentari_rs = OppCaricaPeer::getRSFromIDArray($args);
        } catch (Exception $e) {
            throw new Exception("Specificare degli ID validi. \n" . $e);
        }
    } else {
        $parlamentari_rs = OppCaricaPeer::getParlamentariRamoDataRS($ramo, $legislatura_corrente, $data);
    }
    echo "memory usage: " . memory_get_usage() . "\n";
    $start_time = time();
    $cnt = 0;
    $indice_ar = array();
    $presenze_ar = array();
    $missioni_ar = array();
    $assenze_ar = array();
    while ($parlamentari_rs->next()) {
        $cnt++;
        $p = $parlamentari_rs->getRow();
        $nome = $p['nome'];
        $cognome = $p['cognome'];
        $tipo_carica_id = $p['tipo_carica_id'];
        $id = $p['id'];
        list($mio_ramo, $prefisso) = OppTipoCaricaPeer::getRamoPrefisso($tipo_carica_id);
        $gruppo = OppCaricaPeer::getGruppo($id, $data);
        $politico_stringa = sprintf("%s %s %s", $prefisso, $nome, strtoupper($cognome));
        printf("%4d) %40s %7s [%06d] ... ", $cnt, $politico_stringa, "(" . $gruppo['acronimo'] . ")", $id);
        $indice = OppIndiceAttivitaPeer::calcola_indice_politico($id, $legislatura_corrente, $data, $verbose, $atti_ids);
        list($presenze, $assenze, $missioni) = OppVotazioneHasCaricaPeer::getDatiPresenzaCaricaData($id, $legislatura_corrente, $data);
        $ribellioni = OppVotazioneHasCaricaPeer::countRibellioniCaricaData($id, $legislatura_corrente, $data);
        // inserimento o aggiornamento del valore in opp_politician_history_cache
        if (!$dry_run) {
            $cache_record = OppPoliticianHistoryCachePeer::retrieveByDataChiTipoChiIdRamo($data_lookup, 'P', $id, $mio_ramo);
            if (!$cache_record) {
                $cache_record = new OppPoliticianHistoryCache();
            }
            $cache_record->setLegislatura($legislatura_corrente);
            $cache_record->setChiTipo('P');
            $cache_record->setChiId($id);
            $cache_record->setRamo($mio_ramo);
            $cache_record->setGruppoId($gruppo['id']);
            $cache_record->setIndice($indice);
            $cache_record->setPresenze($presenze);
            $cache_record->setAssenze($assenze);
            $cache_record->setMissioni($missioni);
            $cache_record->setRibellioni($ribellioni);
            $cache_record->setData($data);
            $cache_record->setNumero(1);
            // il dato riguarda un solo soggetto
            $cache_record->setUpdatedAt(date('Y-m-d H:i'));
            // forza riscrittura updated_at, per tenere traccia esecuzioni
            $cache_record->save();
            unset($cache_record);
        }
        $msg = sprintf("i: %7.2f   p:%4d    a:%4d   m:%4d,   r:%4d", $indice, $presenze, $assenze, $missioni, $ribellioni);
        echo pakeColor::colorize($msg, array('fg' => 'cyan', 'bold' => true));
        $msg = sprintf(" [%4d sec] [%10d bytes]\n", time() - $start_time, memory_get_usage());
        echo pakeColor::colorize($msg, array('fg' => 'red', 'bold' => false));
    }
    $msg = sprintf("end time: %s\n", date('H:i:s'));
    echo $msg;
    $msg = sprintf("memory usage: %10d\n", memory_get_usage());
    echo pakeColor::colorize($msg, array('fg' => 'red', 'bold' => false));
    $msg = sprintf("%d parlamentari elaborati\n", $cnt);
    echo pakeColor::colorize($msg, array('fg' => 'cyan', 'bold' => true));
}
コード例 #2
0
            $uri = "@giunte?ramo={$ramo}";
        } elseif (OppSedePeer::retrieveByPk($carica->getSedeId())->getTipologia() == 'Presidenza') {
            $uri = "@organi?ramo={$ramo}";
        }
        echo link_to('<span style="font-size:12px;">' . OppSedePeer::retrieveByPk($carica->getSedeId())->getDenominazione() . '</span>', $uri . "#" . $carica->getSedeId()) . "</p>";
    }
}
if (count($pasts) > 0) {
    echo "<p class='indent' style='font-weight:normal;'>guarda i <strong>" . count($pasts) . "</strong> incarichi passati in questa legislatura ...";
    echo "[" . link_to('apri', '#', array('class' => 'btn-open action')) . link_to('chiudi', '#', array('class' => 'btn-close action', 'style' => 'display:none')) . " ]<br /><br />";
    echo "</p> <div class='more-results float-container' style='display: none;'>";
    foreach ($pasts as $carica) {
        echo "<p style='font-weight:normal;'><label>";
        echo "dal " . $carica->getDataInizio('d/m/Y');
        echo " al " . $carica->getDataFine('d/m/Y') . ": ";
        echo OppTipoCaricaPeer::retrieveByPk($carica->getTipoCaricaId())->getNome() . " ";
        if (stristr(OppSedePeer::retrieveByPk($carica->getSedeId())->getDenominazione(), "commissione") == false && stristr(OppSedePeer::retrieveByPk($carica->getSedeId())->getDenominazione(), "giunta") == false && stristr(OppSedePeer::retrieveByPk($carica->getSedeId())->getDenominazione(), "presidenza") == false) {
            echo OppSedePeer::retrieveByPk($carica->getSedeId())->getTipologia() . " ";
        }
        echo strpos(OppSedePeer::retrieveByPk($carica->getSedeId())->getDenominazione(), "giunta");
        if (OppSedePeer::retrieveByPk($carica->getSedeId())->getTipologia() == 'Commissione permanente') {
            $uri = "@commissioni_{$ramo}";
        } elseif (OppSedePeer::retrieveByPk($carica->getSedeId())->getTipologia() == 'Commissione bicamerale') {
            $uri = "@commissioni_bicamerali?ramo={$ramo}";
        } elseif (OppSedePeer::retrieveByPk($carica->getSedeId())->getTipologia() == 'Giunta') {
            $uri = "@giunte?ramo={$ramo}";
        } elseif (OppSedePeer::retrieveByPk($carica->getSedeId())->getTipologia() == 'Presidenza') {
            $uri = "@organi?ramo={$ramo}";
        }
        echo link_to(OppSedePeer::retrieveByPk($carica->getSedeId())->getDenominazione(), $uri . "#" . $carica->getSedeId());
        echo "</label></p>";
コード例 #3
0
 public function executeCommissioniPermanenti()
 {
     $gruppi_all = array();
     $gruppi_p = array();
     $gruppi_q = array();
     $gruppi_vp = array();
     $gruppi_s = array();
     $gruppi_c = array();
     $membri_regione = array(21 => 0, 23 => 0, 25 => 0, 32 => 0, 34 => 0, 36 => 0, 42 => 0, 45 => 0, 52 => 0, 55 => 0, 57 => 0, 62 => 0, 65 => 0, 67 => 0, 72 => 0, 75 => 0, 77 => 0, 78 => 0, 82 => 0, 88 => 0);
     $c = new Criteria();
     $c->addJoin(OppCaricaInternaPeer::CARICA_ID, OppCaricaPeer::ID);
     $c->add(OppCaricaPeer::LEGISLATURA, $this->leg);
     $c->add(OppCaricaInternaPeer::SEDE_ID, $this->sede_id);
     $c->add(OppCaricaInternaPeer::DATA_FINE, NULL, Criteria::ISNULL);
     $membri = OppCaricaInternaPeer::doSelect($c);
     foreach ($membri as $membro) {
         $regione = strtolower(str_replace(array(" ", "'", "-"), "_", $membro->getOppCarica()->getCircoscrizione()));
         $codice_regione = sfConfig::get('app_circoscrizioni_' . $regione);
         if (array_key_exists($codice_regione, $membri_regione)) {
             $membri_regione[$codice_regione] = $membri_regione[$codice_regione] + 1;
         }
         $gruppo_id = OppCaricaHasGruppoPeer::getGruppoCorrentePerCarica($membro->getCaricaId())->getId();
         $tipo_carica = OppTipoCaricaPeer::retrieveByPk($membro->getTipoCaricaId())->getNome();
         if (array_key_exists($gruppo_id, $gruppi_all)) {
             $gruppi_all[$gruppo_id] = $gruppi_all[$gruppo_id] + 1;
         } else {
             $gruppi_all[$gruppo_id] = 1;
         }
         if ($tipo_carica == 'Presidente') {
             if (array_key_exists($gruppo_id, $gruppi_p)) {
                 $gruppi_p[$gruppo_id] = $gruppi_p[$gruppo_id] + 1;
             } else {
                 $gruppi_p[$gruppo_id] = 1;
             }
         }
         if ($tipo_carica == 'Questore') {
             if (array_key_exists($gruppo_id, $gruppi_q)) {
                 $gruppi_q[$gruppo_id] = $gruppi_q[$gruppo_id] + 1;
             } else {
                 $gruppi_q[$gruppo_id] = 1;
             }
         }
         if ($tipo_carica == 'Vicepresidente') {
             if (array_key_exists($gruppo_id, $gruppi_vp)) {
                 $gruppi_vp[$gruppo_id] = $gruppi_vp[$gruppo_id] + 1;
             } else {
                 $gruppi_vp[$gruppo_id] = 1;
             }
         }
         if ($tipo_carica == 'Segretario') {
             if (array_key_exists($gruppo_id, $gruppi_s)) {
                 $gruppi_s[$gruppo_id] = $gruppi_s[$gruppo_id] + 1;
             } else {
                 $gruppi_s[$gruppo_id] = 1;
             }
         }
         if ($tipo_carica == 'Componente') {
             if (array_key_exists($gruppo_id, $gruppi_c)) {
                 $gruppi_c[$gruppo_id] = $gruppi_c[$gruppo_id] + 1;
             } else {
                 $gruppi_c[$gruppo_id] = 1;
             }
         }
     }
     $this->gruppi_all = $gruppi_all;
     $this->gruppi_p = $gruppi_p;
     $this->gruppi_q = $gruppi_q;
     $this->gruppi_vp = $gruppi_vp;
     $this->gruppi_s = $gruppi_s;
     $this->gruppi_c = $gruppi_c;
     $this->membri_regione = $membri_regione;
 }
コード例 #4
0
 public function executeOrgani()
 {
     $c = new Criteria();
     if ($this->getRequestParameter('ramo') == 'camera') {
         $this->getResponse()->setTitle('Componenti e statistiche di commissioni e giunte della Camera - ' . sfConfig::get('app_main_title'));
         $this->response->addMeta('description', 'Il potere dei gruppi parlamentari in tutti gli organi della Camera dei Deputati', true);
         $c->add(OppSedePeer::RAMO, 'C');
     } else {
         $this->getResponse()->setTitle('Componenti e statistiche di commissioni e giunte del Senato - ' . sfConfig::get('app_main_title'));
         $this->response->addMeta('description', 'Il potere dei gruppi parlamentari in tutti gli organi del Senato', true);
         $c->add(OppSedePeer::RAMO, 'S');
     }
     $c->add(OppSedePeer::TIPOLOGIA, 'Presidenza');
     $this->comm = OppSedePeer::doSelectOne($c);
     $this->ramo = $this->getRequestParameter('ramo');
     $gruppi_all = array();
     $gruppi_p = array();
     $gruppi_q = array();
     $gruppi_vp = array();
     $gruppi_s = array();
     $gruppi_c = array();
     $membri_regione = array(21 => 0, 23 => 0, 25 => 0, 32 => 0, 34 => 0, 36 => 0, 42 => 0, 45 => 0, 52 => 0, 55 => 0, 57 => 0, 62 => 0, 65 => 0, 67 => 0, 72 => 0, 75 => 0, 77 => 0, 78 => 0, 82 => 0, 88 => 0);
     $c = new Criteria();
     $c->addJoin(OppCaricaInternaPeer::CARICA_ID, OppCaricaPeer::ID);
     $c->addJoin(OppCaricaInternaPeer::SEDE_ID, OppSedePeer::ID);
     if ($this->getRequestParameter('ramo') == 'camera') {
         $c->add(OppSedePeer::RAMO, array('C', 'CS'), Criteria::IN);
         $c->add(OppCaricaPeer::TIPO_CARICA_ID, 1);
     } else {
         $c->add(OppSedePeer::RAMO, array('S', 'CS'), Criteria::IN);
         $c->add(OppCaricaPeer::TIPO_CARICA_ID, 4);
     }
     $c->add(OppCaricaInternaPeer::DATA_FINE, NULL, Criteria::ISNULL);
     $membri = OppCaricaInternaPeer::doSelect($c);
     foreach ($membri as $membro) {
         $regione = strtolower(str_replace(array(" ", "'", "-"), "_", $membro->getOppCarica()->getCircoscrizione()));
         $codice_regione = sfConfig::get('app_circoscrizioni_' . $regione);
         if (array_key_exists($codice_regione, $membri_regione)) {
             $membri_regione[$codice_regione] = $membri_regione[$codice_regione] + 1;
         }
         $gruppo_id = OppCaricaHasGruppoPeer::getGruppoCorrentePerCarica($membro->getCaricaId())->getId();
         $tipo_carica = OppTipoCaricaPeer::retrieveByPk($membro->getTipoCaricaId())->getNome();
         if (array_key_exists($gruppo_id, $gruppi_all)) {
             $gruppi_all[$gruppo_id] = $gruppi_all[$gruppo_id] + 1;
         } else {
             $gruppi_all[$gruppo_id] = 1;
         }
         if ($tipo_carica == 'Presidente') {
             if (array_key_exists($gruppo_id, $gruppi_p)) {
                 $gruppi_p[$gruppo_id] = $gruppi_p[$gruppo_id] + 1;
             } else {
                 $gruppi_p[$gruppo_id] = 1;
             }
         }
         if ($tipo_carica == 'Questore') {
             if (array_key_exists($gruppo_id, $gruppi_q)) {
                 $gruppi_q[$gruppo_id] = $gruppi_q[$gruppo_id] + 1;
             } else {
                 $gruppi_q[$gruppo_id] = 1;
             }
         }
         if ($tipo_carica == 'Vicepresidente') {
             if (array_key_exists($gruppo_id, $gruppi_vp)) {
                 $gruppi_vp[$gruppo_id] = $gruppi_vp[$gruppo_id] + 1;
             } else {
                 $gruppi_vp[$gruppo_id] = 1;
             }
         }
         if ($tipo_carica == 'Segretario') {
             if (array_key_exists($gruppo_id, $gruppi_s)) {
                 $gruppi_s[$gruppo_id] = $gruppi_s[$gruppo_id] + 1;
             } else {
                 $gruppi_s[$gruppo_id] = 1;
             }
         }
         if ($tipo_carica == 'Componente') {
             if (array_key_exists($gruppo_id, $gruppi_c)) {
                 $gruppi_c[$gruppo_id] = $gruppi_c[$gruppo_id] + 1;
             } else {
                 $gruppi_c[$gruppo_id] = 1;
             }
         }
     }
     $this->gruppi_all = $gruppi_all;
     $this->gruppi_p = $gruppi_p;
     $this->gruppi_q = $gruppi_q;
     $this->gruppi_vp = $gruppi_vp;
     $this->gruppi_s = $gruppi_s;
     $this->gruppi_c = $gruppi_c;
     $this->membri_regione = $membri_regione;
 }