All pastes #886794 Raw Edit

Something

public text v1 · immutable
#886794 ·published 2008-01-31 22:45 UTC
rendered paste body
			$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);