public function executeTabellaDelta() { $this->data = $this->getRequestParameter('data'); $this->mesi = $this->getRequestParameter('mesi'); $this->ramo = $this->getRequestParameter('ramo'); $this->dato = $this->getRequestParameter('dato'); // calcolo date fine mese scorso e n_mesi prima list($this->data_2, $this->data_1) = Util::getLastNMonthsDates($this->data, $this->mesi); $this->parlamentari_rs = OppPoliticianHistoryCachePeer::getDeltaPoliticiRSByDataRamo($this->data_1, $this->data_2, $this->ramo, $this->dato); if ($this->data_2 == 0) { $leg = OppLegislaturaPeer::getActive(); $this->data_2 = OppLegislaturaPeer::$legislature[$leg]['data_inizio']; } }
/** * estrae i parlamentari di un ramo, per una legislatura, attivi durante una settimana * se ramo e settimana non sono specificati, l'estrazione riguarda tutti i rami/periodi * @param string $ramo ['', 'camera', 'senato', 'governo'] * @param integer $legislatura * @param string $settimana ['', 'y-m-d'] * @return array di OppCaricaObject (join con OppPolitico) * @author Guglielmo Celata */ public static function getParlamentariRamoSettimana($ramo, $settimana, $offset = null, $limit = null) { // calcolo della legislatura if ($settimana != '') { $legislatura = OppLegislaturaPeer::getCurrent($settimana); } else { $legislatura = OppLegislaturaPeer::getCurrent(); } $c = new Criteria(); $c->addJoin(OppCaricaPeer::POLITICO_ID, OppPoliticoPeer::ID); $c->addAscendingOrderByColumn(OppCaricaPeer::TIPO_CARICA_ID); $c->addAscendingOrderByColumn(OppPoliticoPeer::COGNOME); if ($ramo == 'camera') { $c->add(OppCaricaPeer::LEGISLATURA, $legislatura, Criteria::EQUAL); $c->add(OppCaricaPeer::TIPO_CARICA_ID, '1', Criteria::EQUAL); } else { if ($ramo == 'senato') { // in questo modo considero i senatori a vita $cton = $c->getNewCriterion(OppCaricaPeer::LEGISLATURA, $legislatura, Criteria::EQUAL); $cton1 = $c->getNewCriterion(OppCaricaPeer::LEGISLATURA, null, Criteria::EQUAL); $cton->addOr($cton1); $c->add($cton); $c->add(OppCaricaPeer::TIPO_CARICA_ID, array(4, 5), Criteria::IN); } else { if ($ramo == 'governo') { // considero presidente del consiglio, ministri, vicemoinistri e sottosegretari $c->add(OppCaricaPeer::TIPO_CARICA_ID, array(2, 3, 6, 7), Criteria::IN); } else { if ($ramo == '') { /** * criteri composti per estrarre deputati, senatori e senatori a vita * (oppCarica.legislatura = leg OR oppCarica.legislatura IS NULL) AND * (oppCarica.tipo_carica in (4, 5) OR (oppCarica.legislatura = leg AND oppCarica.tipo_carica = 1)) * **/ $crit0 = $c->getNewCriterion(OppCaricaPeer::LEGISLATURA, $legislatura); $crit1 = $c->getNewCriterion(OppCaricaPeer::LEGISLATURA, null, Criteria::ISNULL); $crit2 = $c->getNewCriterion(OppCaricaPeer::TIPO_CARICA_ID, array(4, 5), Criteria::IN); $crit3 = $c->getNewCriterion(OppCaricaPeer::LEGISLATURA, $legislatura); $crit4 = $c->getNewCriterion(OppCaricaPeer::TIPO_CARICA_ID, 1); $crit0->addOr($crit1); $crit3->addAnd($crit4); $crit2->addOr($crit3); $crit0->addAnd($crit2); $c->add($crit0); } } } } // in carica al momento del calcolo if ($settimana != '') { $cton0 = $c->getNewCriterion(OppCaricaPeer::DATA_INIZIO, strtotime("+1 week", strtotime($settimana)), Criteria::LESS_THAN); $cton1 = $c->getNewCriterion(OppCaricaPeer::DATA_FINE, $settimana, Criteria::GREATER_EQUAL); $cton2 = $c->getNewCriterion(OppCaricaPeer::DATA_FINE, null, Criteria::ISNULL); $cton1->addOr($cton2); $cton0->addAnd($cton1); $c->add($cton0); } else { $c->add(OppCaricaPeer::DATA_FINE, null, Criteria::EQUAL); } if ($offset) { $c->setOffset($offset); } if ($limit) { $c->setLimit($limit); } return self::doSelect($c); }
/** * torna gli emendamenti presentati da questa carica (primo firmatario) * fino a una certa data * * @param string $settimana * @return array of Opp * @author Guglielmo Celata */ public function getPresentedEmendamentos($data = '') { // quando l'incarico è appena stato creato, non ci sono ancora firme if (!$this->isNew()) { $c = new Criteria(); $c->addJoin(OppCaricaHasEmendamentoPeer::EMENDAMENTO_ID, OppEmendamentoPeer::ID); $c->add(OppCaricaHasEmendamentoPeer::TIPO, 'P'); $c->add(OppCaricaHasEmendamentoPeer::CARICA_ID, $this->getId()); if ($data != '') { $c->add(OppCaricaHasEmendamentoPeer::DATA, $data, Criteria::LESS_THAN); $c->add(OppEmendamentoPeer::LEGISLATURA, OppLegislaturaPeer::getCurrent($data)); } else { $c->add(OppEmendamentoPeer::LEGISLATURA, OppLegislaturaPeer::getCurrent()); } $res = OppEmendamentoPeer::doSelect($c); return $res; } return null; }
/** * Calcola o ri-calcola la rilevanza degli argomenti, come somma della rilevanza degli atti taggati * Si può specificare il una data fino alla quale calcolare la rilevanza * Se sono passati degli ID (argomenti), sono interpretati come ID di argomenti e il calcolo è fatto solo per loro */ function run_opp_build_cache_tags($task, $args, $options) { static $loaded; // load application context if (!$loaded) { _loader(); } echo "memory usage: " . memory_get_usage() . "\n"; $data = ''; $verbose = false; $offset = null; $limit = null; $start_time = time(); if (array_key_exists('data', $options)) { $data = $options['data']; } if (array_key_exists('verbose', $options)) { $verbose = true; } if (array_key_exists('offset', $options)) { $offset = $options['offset']; } if (array_key_exists('limit', $options)) { $limit = $options['limit']; } if ($data != '') { $legislatura_corrente = OppLegislaturaPeer::getCurrent($data); $data_lookup = $data; } else { $legislatura_corrente = OppLegislaturaPeer::getCurrent(); $data = date('Y-m-d'); $data_lookup = OppTagHistoryCachePeer::fetchLastData(); } $msg = sprintf("calcolo rilevanza tag - fino a: %10s\n", $data); echo pakeColor::colorize($msg, array('fg' => 'cyan', 'bold' => true)); if (count($args) > 0) { $tags_ids = $args; } else { $tags_ids = TaggingPeer::getActiveTagsIds('OppAtto'); } $n_tags = count($tags_ids); echo "memory usage: " . memory_get_usage() . "\n"; foreach ($tags_ids as $cnt => $tag_id) { printf("%5d/%6d) %40s %6d ... ", $cnt + 1, $n_tags, TagPeer::retrieveByPK($tag_id), $tag_id); $indice = OppIndiceRilevanzaPeer::calcola_rilevanza_tag($tag_id, $data, $verbose); // inserimento o aggiornamento del valore in opp_tag_history_cache $cache_record = OppTagHistoryCachePeer::retrieveByDataChiTipoChiId($data_lookup, 'S', $tag_id); if (!$cache_record) { $cache_record = new OppTagHistoryCache(); } $cache_record->setLegislatura($legislatura_corrente); $cache_record->setChiTipo('S'); $cache_record->setChiId($tag_id); $cache_record->setIndice($indice); $cache_record->setData($data); $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("%7.2f", $indice); 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("%d tag elaborati\n", $cnt + 1); echo pakeColor::colorize($msg, array('fg' => 'cyan', 'bold' => true)); }
} $n_ribellioni = OppVotazioneHasCaricaPeer::countRibellioniCaricaData($p['id'], $legislatura_corrente, $data, $gruppo_obj->getDataInizio()); $gruppo_obj->setRibelle($n_ribellioni); $gruppo_obj->save(); printf("carica: %d, gruppo: %d, n_ribellioni: %d\n", $carica_id, $gruppo_id, $n_ribellioni); } // mail("*****@*****.**", "OK - Update Ribellioni", "aggiornamento a buon fine", "From: BatchOpp"); */ define('SF_ROOT_DIR', realpath(dirname(__FILE__) . '/..')); define('SF_APP', 'fe'); define('SF_ENVIRONMENT', 'prod'); define('SF_DEBUG', false); require_once SF_ROOT_DIR . DIRECTORY_SEPARATOR . 'apps' . DIRECTORY_SEPARATOR . SF_APP . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'config.php'; sfContext::getInstance(); echo $leg = OppLegislaturaPeer::getCurrent(); print "Fetching data... \n"; // DEPUTATI E SENATORI $c = new Criteria(); $crit0 = $c->getNewCriterion(OppCaricaPeer::TIPO_CARICA_ID, 1); $crit1 = $c->getNewCriterion(OppCaricaPeer::TIPO_CARICA_ID, 4); $crit0->addOr($crit1); $crit2 = $c->getNewCriterion(OppCaricaPeer::LEGISLATURA, $leg); $crit0->addAnd($crit2); $crit3 = $c->getNewCriterion(OppCaricaPeer::TIPO_CARICA_ID, 5); $crit4 = $c->getNewCriterion(OppCaricaPeer::DATA_FINE, NULL, Criteria::ISNULL); $crit3->addAnd($crit4); $crit0->addOr($crit3); $c->add($crit0); $cariche = OppCaricaPeer::doSelect($c); foreach ($cariche as $carica) {
protected function impactFactorCSV($ramo) { sfLoader::loadHelpers(array('Number')); $this->opp_user = OppUserPeer::retrieveByPK($this->getUser()->getId()); $this->forward404Unless($this->getUser()->hasCredential('adhoc')); // get user's monitored tags $this->tags_ids = $this->opp_user->getMonitoredPks('Tag'); $limit = sfConfig::get('app_limit_classifica_parlamentari_sioccupanodi', 15); $data_inizio = OppLegislaturaPeer::$legislature[OppLegislaturaPeer::getCurrent()]['data_inizio']; $data_fine = OppActHistoryCachePeer::fetchLastData(); $date = array_reverse(Util::buildCacheDatesArray($data_inizio, $data_fine)); $politici_csv = array(); if (count($this->tags_ids)) { $this->group_filter = $this->getRequestParameter('group_filter'); if (is_array($this->group_filter)) { $c = new Criteria(); $c->add(OppGruppoPeer::ID, $this->group_filter, Criteria::IN); } else { $this->group_filter = array(); } // estrazione classifica dei politici che più si interessano degli argomenti monitorati $politici = OppCaricaPeer::getClassificaPoliticiSiOccupanoDiArgomenti($this->tags_ids, $ramo, $data_fine, $limit, $this->group_filter); // costruzione delle serie storiche per ogni politico (da inizio legislatura) foreach ($politici as $carica_id => $politico) { // genero il label $label = sprintf("%s %s (%s)", $politico['nome'], $politico['cognome'], $politico['acronimo']); // arrotonda l'array dei valori storici a due cifre decimali (max) $storico = OppCaricaPeer::getStoricoInteressePoliticoArgomenti($carica_id, $this->tags_ids); // calcola la posizione del politico $posizione = OppCaricaPeer::getPosizionePoliticoOggettiVotatiPerArgomenti($carica_id, $this->tags_ids, $this->getUser()->getId()); $posizione = format_number(round($posizione, 2), 'it_IT'); // primi campi (dati fissi) $csv_row = "{$carica_id},\"{$label}\",\"{$posizione}\","; foreach ($date as $cnt => $data) { if (array_key_exists($data, $storico)) { $storico[$data] = format_number(round($storico[$data], 2), 'it_IT'); } else { $storico[$data] = 0; } $csv_row .= '"' . $storico[$data] . '"'; if ($cnt < count($date) - 1) { $csv_row .= ","; } } $politici_csv[] = $csv_row; } } $this->date_csv = "carica_id,politico,posizione," . implode(",", $date); $this->politici_csv = $politici_csv; $this->setLayout(false); $this->setTemplate('impactFactorCSV'); $this->response->setContentType('text/csv'); }
/** * esporta csv con dati storici della rilevanza dei tag, con limite custom * * @return void * @author Guglielmo Celata */ public function executeRilevanzaTagExport() { sfLoader::loadHelpers(array('Number')); $this->session = $this->getUser(); $this->forward404Unless($this->session->hasCredential('adhoc')); $data_inizio = OppLegislaturaPeer::$legislature[OppLegislaturaPeer::getCurrent()]['data_inizio']; $data_fine = OppTagHistoryCachePeer::fetchLastData(); $date = Util::buildCacheDatesArray($data_inizio, $data_fine); $limit = $this->getRequestParameter('limit', 50); $c = new Criteria(); $c->addJoin(TagPeer::ID, OppTagHistoryCachePeer::CHI_ID); $c->add(OppTagHistoryCachePeer::CHI_TIPO, 'S'); $c->add(OppTagHistoryCachePeer::DATA, $data_fine); $c->addDescendingOrderByColumn(OppTagHistoryCachePeer::INDICE); $c->setLimit($limit); $tags = TagPeer::doSelect($c); $csv_rows = array(); // costruzione delle serie storiche per ogni politico (da inizio legislatura) foreach ($tags as $cnt => $tag) { $tag_id = $tag->getId(); // genero il label $label = sprintf("%s(%s)", $tag->getTripleValue(), $tag->getTripleNamespace()); // arrotonda l'array dei valori storici a due cifre decimali (max) $storico = OppTagHistoryCachePeer::getHistory('S', $tag->getId()); // primi campi (dati fissi) $csv_row = "{$tag_id},\"{$label}\","; foreach ($date as $cnt => $data) { if (array_key_exists($data, $storico)) { $storico[$data] = format_number(round($storico[$data], 2), 'it_IT'); } else { $storico[$data] = 0; } $csv_row .= '"' . $storico[$data] . '"'; if ($cnt < count($date) - 1) { $csv_row .= ","; } } $csv_rows[] = $csv_row; } $this->csv_header = "tag_id,tag(namespace)," . implode(",", $date); $this->csv_rows = $csv_rows; $this->setLayout(false); $this->response->setContentType('text/plain'); }
/** * estrae gli atti presentati in un intervallo di date (al massimo 200) * estrae solo gli atti al primo step dell'iter (pred=null) * @param string $data_inizio ['y-m-d'] * @param string $data_fine ['y-m-d'] * @param integer $ramo * @param integer $tipo_atto * @param integer $escludi_tipi - array di id opp_tipo_atto * @return array di OppAtto * @author Guglielmo Celata */ public static function getAttiInDateInterval($data_inizio, $data_fine, $ramo = null, $tipo_atto = null, $escludi_tipi = array()) { if ($data_fine < $data_inizio) { throw new Exception('La data_inizio deve essere precedente o uguale alla data_fine'); } // calcolo della legislatura $legislatura = OppLegislaturaPeer::getCurrent($data_inizio); $c = new Criteria(); $c->add(self::LEGISLATURA, $legislatura); // $c->add(self::PRED, null, Criteria::ISNULL); $c1 = $c->getNewCriterion(self::DATA_PRES, $data_inizio, Criteria::GREATER_EQUAL); $c2 = $c->getNewCriterion(self::DATA_PRES, $data_fine, Criteria::LESS_THAN); $c2->addAnd($c1); $c->add($c2); if ($ramo) { $c->add(self::RAMO, $ramo); } // non sono estratti odg e comunicati gov, a meno che non siano richiesti esplicitamente if ($tipo_atto) { $tipi_ids = self::getTipiIdsFromDenominazioneFB($tipo_atto); $c->add(self::TIPO_ATTO_ID, $tipi_ids, Criteria::IN); } else { // di default esclude atti di tipo ODG e Comunicati del Governo $escludi_tipi_ids = array(10, 11, 13); foreach ($escludi_tipi as $tipo_atto) { $escludi_tipi_ids = array_merge($escludi_tipi_ids, self::getTipiIdsFromDenominazioneFB(trim($tipo_atto))); } $c->add(self::TIPO_ATTO_ID, $escludi_tipi_ids, Criteria::NOT_IN); } $c->setLimit(500); $c->addDescendingOrderByColumn(self::DATA_PRES); return self::doSelect($c); }