/** * 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)); }
$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>";
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; }
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; }