protected function addListSortCriteriaTag($c) { if ($sort_column = $this->session->getAttribute('sort', 'indice', 'sf_admin/opp_storici/sort')) { if (!in_array($sort_column, array('presenze', 'assenze', 'missioni'))) { $sort_column = OppTagHistoryCachePeer::translateFieldName($sort_column, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_COLNAME); if ($this->session->getAttribute('type', null, 'sf_admin/opp_storici/sort') == 'asc') { $c->addAscendingOrderByColumn($sort_column); } else { $c->addDescendingOrderByColumn($sort_column); } } } }
function run_opp_compute_delta_tag($task, $args, $options) { static $loaded; // load application context if (!$loaded) { task_loader(); $loaded = true; } $data = ''; $dry_run = false; if (array_key_exists('data', $options)) { $data = $options['data']; } if (array_key_exists('dry-run', $options)) { $dry_run = true; } // definisce la data fino alla quale vanno fatti i calcoli // data_lookup serve per controllare se i record già esistono if ($data != '') { $data_lookup = $data; } else { $data_lookup = OppTagHistoryCachePeer::fetchLastData(); } $msg = sprintf("start time: %s\n", date('H:i:s')); echo $msg; // calcolo date fine mese scorso e precedente list($last_month_start, $last_month_end) = Util::getLastMonthDates($data_lookup); // calcolo delta per dati di presenza, indice e ribellioni $rs = OppTagHistoryCachePeer::getRSByData($data_lookup); $cnt = 0; while ($rs->next()) { $cnt++; $r = $rs->getRow(); printf("%6d) %1s %7d ... ", $cnt, $r['chi_tipo'], $r['chi_id']); // estrazione record storico del mese scorso $r_1 = OppTagHistoryCachePeer::retrieveByDataChiTipoChiId($last_month_end, $r['chi_tipo'], $r['chi_id']); // salta record per cui non c'è abbastanza storia if (!$r_1 instanceof OppTagHistoryCache) { printf(" NA \n"); continue; } $rilevanza_delta = indiceDelta($data_lookup, $r, $r_1); printf("d_rilevanza: %7.2f, ", $rilevanza_delta); if (!$dry_run) { $r = OppTagHistoryCachePeer::retrieveByDataChiTipoChiId($data_lookup, $r['chi_tipo'], $r['chi_id']); $r->setIndiceDelta($rilevanza_delta); $r->save(); printf(" OK!\n"); } else { printf("\n"); } } echo "data: {$data_lookup}\n"; $msg = sprintf("end time: %s\n", date('H:i:s')); echo $msg; }
/** * 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_calcola_rilevanza_tag($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)); }