public function exportPAES($request) { require_once R3_CLASS_DIR . 'obj.global_result_table.php'; require_once R3_CLASS_DIR . 'obj.global_plain_table.php'; $id = empty($request['id']) ? $this->id : (int) $request['id']; set_time_limit(5 * 60); ini_set('memory_limit', '2G'); ignore_user_abort(true); $db = ezcDbInstance::get(); $driverInfo = $this->auth->getConfigValue('APPLICATION', 'EXPORT_PAES', array()); if (!isset($driverInfo[$request['driver']]['driver'])) { throw new Exception(_("Invalid driver \"{$request['driver']}\"")); } $exportDriverName = $driverInfo[$request['driver']]['driver']; $exportDriver = R3ExportPAES::factory($exportDriverName, $this->auth, isset($driverInfo[$request['driver']]['params']) ? $driverInfo[$request['driver']]['params'] : null); $q = $db->createSelectQuery(); $q->select('*')->from('global_strategy_data')->where("gst_id={$id}"); $globalStrategyData['general'] = $db->query($q)->fetch(PDO::FETCH_ASSOC); $globalStrategyData['general']['gst_reduction_target_text'] = $globalStrategyData['general']['gst_reduction_target_absolute'] ? _('Riduzione assoluta') : _('Riduzione "pro capite"'); $budgetEuro = $globalStrategyData['general']['gst_budget'] == '' ? '' : '€' . R3NumberFormat($globalStrategyData['general']['gst_budget'], 2, true); if ($globalStrategyData['general']['gst_budget_text_1'] != '' && $globalStrategyData['general']['gst_budget'] != '') { $globalStrategyData['general']['gst_budget_text_1'] = sprintf('%s - %s', $budgetEuro, $globalStrategyData['general']['gst_budget_text_1']); } else { $globalStrategyData['general']['gst_budget_text_1'] = $budgetEuro . $globalStrategyData['general']['gst_budget_text_1']; } if ($globalStrategyData['general']['gst_budget_text_2'] != '' && $globalStrategyData['general']['gst_budget'] != '') { $globalStrategyData['general']['gst_budget_text_2'] = sprintf('%s - %s', $budgetEuro, $globalStrategyData['general']['gst_budget_text_2']); } else { $globalStrategyData['general']['gst_budget_text_2'] = $budgetEuro . $globalStrategyData['general']['gst_budget_text_2']; } $q = $db->createSelectQuery(); $q->select('*')->from('global_plain_data')->where("gp_id=" . (int) $globalStrategyData['general']['gp_id']); $actionPlanData['general'] = $db->query($q)->fetch(PDO::FETCH_ASSOC); if (isset($actionPlanData['general']['gp_approval_date'])) { $actionPlanData['general']['gp_approval_date'] = ' ' . SQLDateToStr($actionPlanData['general']['gp_approval_date'], 'd/m/Y'); } // SHEET 2: EMISSION INVENTORY $udm_divider = 1000; // MWh (in db data are stored in kWh) $inventoryTableKinds = array('CONSUMPTION', 'EMISSION', 'ENERGY_PRODUCTION', 'HEATH_PRODUCTION'); $emissionInventoryData = array(); for ($i = 1; $i <= 2; $i++) { $ge_id = $i == 1 ? $globalStrategyData['general']['ge_id'] : $globalStrategyData['general']['ge_id_2']; if ($ge_id != '') { $q = $db->createSelectQuery(); $q->select('*, ge_green_electricity_purchase/1000 AS ge_green_electricity_purchase')->from('global_entry_data')->where('ge_id=' . (int) $ge_id); $emissionInventoryData[$i]['general'] = $db->query($q)->fetch(PDO::FETCH_ASSOC); $emissionInventoryData[$i]['general']['gst_emission_factor_text'] = $globalStrategyData['general']['gst_emission_factor_type_ipcc'] ? _('Fattori di emissione standard in linea con i principi IPCC') : _('Fattori LCA (valutazione del ciclo di vita)'); $emissionInventoryData[$i]['general']['gst_emission_unit_text'] = $globalStrategyData['general']['gst_emission_unit_co2'] ? _('Emissioni di CO2') : _('Emissioni equivalenti di CO2'); foreach ($inventoryTableKinds as $kind) { $emissionInventoryData[$i][$kind]['header'] = R3EcoGisGlobalTableHelper::getParameterList($kind, array('show_udm' => true)); $emissionInventoryData[$i][$kind]['rows'] = R3EcoGisGlobalTableHelper::getCategoriesData($ge_id, $kind, $udm_divider); } } } $ext = '.' . (isset($driverInfo[$request['driver']]['output_format']) ? $driverInfo[$request['driver']]['output_format'] : 'xlsx'); $fileName = R3_TMP_DIR . date('YmdHis') . '.' . md5(time()) . $ext; $opt = array('GENERAL' => $globalStrategyData, 'ACTION_PLAN' => $actionPlanData); for ($i = 1; $i <= 2; $i++) { if (isset($emissionInventoryData[$i])) { $opt["EMISSION_INVENTORY_{$i}"] = $emissionInventoryData[$i]; } } if ($globalStrategyData['general']['gp_id'] != '') { $opt['GLOBAL_PLAN'] = R3EcoGisGlobalPlainTableHelper::getData($this->do_id, $globalStrategyData['general']['gp_id']); } $opt['METADATA'] = array('creator' => $this->auth->getUserName(), 'title' => _('TEMPLATE') . ' - ' . _('POWER BY R3-EcoGIS 2')); $opt['SHEET-NAME'] = array('GENERAL' => _('Strategia generale'), 'EMISSION_INVENTORY_1' => _('Inventario base emissioni (1)'), 'EMISSION_INVENTORY_2' => _('Inventario base emissioni (2)'), 'ACTION_PLAN' => _("Piano d'azione SEAP")); $opt['logger'] = new R3ExportLogger(); // Close immediatly the session to allow concurrency session session_write_close(); $exportDriver->export($fileName, R3_SMARTY_TEMPLATE_DIR_DOC . $driverInfo[$request['driver']]['template'], $opt); $httpFileName = basename($fileName); $url = "getfile.php?type=tmp&file={$httpFileName}&disposition=download&name=PAES_" . date('Y-m-d') . $ext; return array('status' => R3_AJAX_NO_ERROR, 'url' => $url); }
/** * Return the data for a single customer */ public function getData($id = null) { $lang = R3Locale::getLanguageID(); $db = ezcDbInstance::get(); $vlu = array(); if ($this->act != 'add') { $sql = "SELECT mu_type FROM ecogis.global_plain_data WHERE gp_id=" . (int) $this->gp_id; $vlu['mu_type'] = $db->query($sql)->fetchColumn(); $vlu['merge_municipality_data'] = $this->merge_municipality_data; $vlu['data'] = R3EcoGisGlobalPlainTableHelper::getData($this->do_id, $this->gp_id, $this->merge_municipality_data); $vlu['can_monitoring'] = R3EcoGisGlobalPlainTableHelper::canMonitoring($this->do_id, $this->gp_id); } $this->data = $vlu; // Save the data (prevent multiple sql) return $vlu; }