$save_filename = $this->temp_dir . 'reports_' . $id . '.pdf'; $local_path = $_SERVER['DOCUMENT_ROOT'].$this->webroot.'app/webroot/img/' . $this->Session->read('layout') . '/'; $this->set('save_filename', $save_filename); $this->set('preview', false); $this->layout = 'pdf'; $this->render(); $files = array($save_filename); $spec_sheets = array(); $certificates = array(); //Grab certificates and PDFs (save to temporary location) foreach ($system['Unit'] as $unit) { //Determine unit type if (!empty($unit['WaterHeater'])) { $spec_sheet = $local_path . $unit['WaterHeater']['pdf'] . ".pdf"; if (!empty($unit['WaterHeater']['pdf']) && !in_array($spec_sheet, $spec_sheets)) $spec_sheets[] = $spec_sheet; }else if (!empty($unit['Accessory'])) { $spec_sheet = $local_path . $unit['Accessory']['pdf'] . ".pdf"; if (!empty($unit['Accessory']['pdf']) && !in_array($spec_sheet, $spec_sheets)) $spec_sheets[] = $spec_sheet; }else if (!empty($unit['Parcel'])) { if ($unit['Parcel']['cooler_id'] > 0) { $spec_sheet = $local_path . $unit['Parcel']['Cooler']['pdf'] . ".pdf"; if (!empty($unit['Parcel']['Cooler']['pdf']) && !in_array($spec_sheet, $spec_sheets)) $spec_sheets[] = $spec_sheet; } if ($unit['Parcel']['heater_id'] > 0) { $spec_sheet = $local_path . $unit['Parcel']['Heater']['pdf'] . ".pdf"; if (!empty($unit['Parcel']['Heater']['pdf']) && !in_array($spec_sheet, $spec_sheets)) $spec_sheets[] = $spec_sheet; } if ($unit['Parcel']['backup_heater_id'] > 0) { $spec_sheet = $local_path . $unit['Parcel']['BackupHeater']['pdf'] . ".pdf"; if (!empty($unit['Parcel']['BackupHeater']['pdf']) && !in_array($spec_sheet, $spec_sheets)) $spec_sheets[] = $spec_sheet; } } //If this is a parcel, get the ARI or GAMA certificate (or both) if ($unit['program'] == 'parcels') { if ($unit['Parcel']['cooler_id'] > 0 && $unit['Parcel']['heater_id'] > 0 && $unit['Parcel']['backup_heater_id'] > 0) { //Heat pump with a furnace (dual fuel), get ARI and GAMA certificates $certificates["certificate_" . $id . "_" . $unit['Parcel']['reference_number']] = "http://www.aridirectory.org/ari/pdf/reports/certification_printout.php?table=hp&search_screen=hp&refno=" . $unit['Parcel']['reference_number']; $certificates["certificate_" . $id . "_" . $unit['Parcel']['BackupHeater']['gama_id']] = "http://gamapower.org/pdf/reports/furn_certification_printout.php?search_screen=furnaces&model_id=" . $unit['Parcel']['BackupHeater']['gama_id']; }else if ($unit['Parcel']['cooler_id'] > 0 && $unit['Parcel']['heater_id'] > 0 && $unit['Parcel']['backup_heater_id'] == 0) { //Could be a straight-cool or a heat pump if ($unit['Parcel']['Heater']['gama_id'] != 0) { //Straight-cool, get ARI and GAMA certificates $certificates["certificate_" . $id . "_" . $unit['Parcel']['reference_number']] = "http://www.aridirectory.org/ari/pdf/reports/certification_printout.php?table=ac&search_screen=ac&refno=" . $unit['Parcel']['reference_number']; $certificates["certificate_" . $id . "_" . $unit['Parcel']['Heater']['gama_id']] = "http://gamapower.org/pdf/reports/furn_certification_printout.php?search_screen=furnaces&model_id=" . $unit['Parcel']['Heater']['gama_id']; }else{ //Could be a water-brine-air-heat-pump or air-source heat pump if ($unit['Parcel']['Heater']['program'] == 'water_brine_air_heat_pump') { //Water-brine-air-heat-pump, get ARI certificate $url = "http://www.aridirectory.org/ari/pdf/reports/certification_printout.php?table=wbahp&search_screen=wbahp&refno=" . $unit_id; }else{ //Air-source heat pump, get ARI certificate $certificates["certificate_" . $id . "_" . $unit['Parcel']['reference_number']] = "http://www.aridirectory.org/ari/pdf/reports/certification_printout.php?table=hp&search_screen=hp&refno=" . $unit['Parcel']['reference_number']; } } }else if ($unit['Parcel']['cooler_id'] > 0 && $unit['Parcel']['heater_id'] == 0 && $unit['Parcel']['backup_heater_id'] == 0) { //Air conditioner $certificates["certificate_" . $id . "_" . $unit['Parcel']['reference_number']] = "http://www.aridirectory.org/ari/pdf/reports/certification_printout.php?table=ac&search_screen=ac&refno=" . $unit['Parcel']['reference_number']; }else if ($unit['Parcel']['cooler_id'] == 0 && $unit['Parcel']['heater_id'] > 0 && $unit['Parcel']['backup_heater_id'] == 0) { //Furnace $certificates["certificate_" . $id . "_" . $unit['Parcel']['Heater']['gama_id']] = "http://gamapower.org/pdf/reports/furn_certification_printout.php?search_screen=furnaces&model_id=" . $unit['Parcel']['Heater']['gama_id']; }else{ //Hey, we aren't grabbing ULE certificates now? And what about mix-matches? } } } //Download all certificates foreach ($certificates as $filename => $url) { $save_filename = $this->temp_dir . $filename . ".pdf"; $curl = curl_init($url); $proposal_fp = fopen($save_filename, 'w'); curl_setopt($curl, CURLOPT_FILE, $proposal_fp); curl_setopt($curl, CURLOPT_HEADER, 0); curl_exec($curl); curl_close($curl); fclose($proposal_fp); $files[] = $save_filename; } //Merge with PDFTK $result_file = "proposal_" . $id . ".pdf"; $line = '/usr/local/bin/pdftk'; foreach ($files as $filename) { $line .= " " . $filename; } foreach ($spec_sheets as $filename) { $line .= " " . $filename; } $line .= " output " . $this->temp_dir.$result_file . " dont_ask"; exec($line); //Cleanup foreach ($files as $filename) { @unlink($filename); } //Serve header("Content-type: application/pdf"); header('Content-Length: ' . filesize($this->temp_dir.$result_file)); header('Content-Disposition: attachment; filename="proposal.pdf"'); readfile($this->temp_dir.$result_file); //Delete served file @unlink($this->temp_dir.$result_file);