/** * esporta csv con dati storici della somma della rilevanza dei tag op_geo * aggregati per macro-regioni * * @return void * @author Guglielmo Celata */ public function executeGeoAggregatiRilevanzaTagExport() { 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); // fetch delle macrozone e degli id delle località relative (city, prov, reg) $macroregions = OppLocationPeer::retrieveMacroregions(); foreach ($macroregions as $cnt => $macro_region) { $macro_region_id = $macro_region['macroregional_id']; $macro_region_name = $macro_region['name']; $csv_row = $macro_region_name . ","; $locations_ids = OppLocationPeer::getLocationsIdsByMacroRegion($macro_region_id); $storico = OppTagHistoryCachePeer::getGeoAggregatedHistory('S', $locations_ids); 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; $regions = OppLocationPeer::getRegionsByMacroRegion($macro_region_id); foreach ($regions as $cnt => $region) { $region_id = $region['regional_id']; $region_name = $region['name']; $csv_row = $region_name . ","; $locations_ids = OppLocationPeer::getLocationsIdsByRegion($region_id); $storico = OppTagHistoryCachePeer::getGeoAggregatedHistory('S', $locations_ids); 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 = "(macro)region name," . implode(",", $date); $this->csv_rows = $csv_rows; $this->setLayout(false); $this->setTemplate('rilevanzaTagExport'); $this->response->setContentType('text/plain'); }