Ejemplo n.º 1
0
/**
 * estrae gli N atti più rilevanti per determinati argomenti (tag)
 */
function run_a0_get_main_acts_for_tags($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;
    $n = 1;
    if (array_key_exists('nrecs', $options)) {
        $n = (int) $options['nrecs'];
    }
    if (!is_int($n) || $n < 1) {
        throw new Exception("il numero di atti deve essere un intero\n");
    }
    if (count($args) > 0) {
        $argomenti = array();
        foreach ($args as $cnt => $arg) {
            $id = TagPeer::getIdFromTagValue($arg);
            $xml_url = sprintf("http://parlamento.openpolis.it/xml/indici/tag/%d.xml", $id);
            $xsl_file = SF_ROOT_DIR . "/web/xml/indici/xslt/tagActsSorter.xslt";
            printf("Argomento %s:\n", $arg, $id);
            getImportantActs($xml_url, $xsl_file, $n);
            print "\n";
        }
    }
    $start_time = time();
    $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));
}
/**
 * calcola o ri-calcola le posizioni per indici e presenze
 * nelle tabelle cache, a una determinata data (o a tutte)
 *
 * @param string $task 
 * @param string $args 
 * @param string $options 
 * @return void
 * @author Guglielmo Celata
 */
function run_opp_rebuild_positions($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;
    }
    $msg = sprintf("start time: %s\n", date('H:i:s'));
    echo $msg;
    if ($data != '') {
        $p_dates = array($data => $data);
    }
    $p_dates = OppPoliticianHistoryCachePeer::extractDates('N', null, 10000);
    while ($rs->next()) {
        $cnt++;
        $r = $rs->getRow();
        printf("%6d) %1s %7d ... ", $cnt, $r['chi_tipo'], $r['chi_id']);
        // calcolo date fine mese scorso e precedente
        list($data_1, $data_2) = Util::getLast2MonthsDate($data);
        // estrazione record storici a due mesi
        $r_1 = OppPoliticianHistoryCachePeer::retrieveByDataChiTipoChiIdRamo($data_1, $r['chi_tipo'], $r['chi_id'], $r['ramo']);
        $r_2 = OppPoliticianHistoryCachePeer::retrieveByDataChiTipoChiIdRamo($data_2, $r['chi_tipo'], $r['chi_id'], $r['ramo']);
        // salta record per cui non c'è abbastanza storia
        if (!$r_1 instanceof OppPoliticianHistoryCache || !$r_2 instanceof OppPoliticianHistoryCache) {
            printf(" NA \n");
            continue;
        }
        list($presenze_delta, $assenze_delta, $missioni_delta) = presenzeDelta($data_lookup, $r, $r_1, $r_2);
        printf("d_presenze: %7.2f,  d_assenze: %7.2f,  d_missioni: %7.2f,  ", $presenze_delta, $assenze_delta, $missioni_delta);
        $indice_delta = indiceDelta($data_lookup, $r, $r_1, $r_2, $data_1, $data_2);
        printf("d_indice: %7.2f,  ", $indice_delta);
        $ribellioni_delta = ribellioniDelta($data_lookup, $r, $r_1, $r_2, $data_1, $data_2);
        printf("d_ribellioni: %7.2f", $ribellioni_delta);
        if (!$dry_run) {
            $r = OppPoliticianHistoryCachePeer::retrieveByDataChiTipoChiIdRamo($data_lookup, $r['chi_tipo'], $r['chi_id'], $r['ramo']);
            $r->setPresenzeDelta($presenze_delta);
            $r->setAssenzeDelta($assenze_delta);
            $r->setMissioniDelta($missioni_delta);
            $r->setIndiceDelta($indice_delta);
            $r->setRibellioniDelta($ribellioni_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;
}