CLICK HERE TO BUY IT TODAY! OR GET IT FREE VIA TRIALPAY  

PHP Demo Application - Source Code

/Framework/Model/Libraries/Export.php

<?php
/**
* Script Contents: Apeel_Framework_Model_Libraries_Export Class Library
* @package Apeel_Framework_Model_Libraries
*/

/**
* Library to provide Data Export functionality in Word, Excel and PDF 
* formats.  

* Word documents are created by outputing HTML with a header telling the client
* browser it is a Word document.  

* Excel documents are created by outputing CSV formatted data with a header
* telling the client browser it is an Excel file.  

* PDF documents are generated by the flexible TCPDF PDF Generating library.  

* @package      Apeel_Framework_Model_Libraries 
* @version      1.1.0
* @author       John W. King (email: contact@apeelframework.net)
* @copyright    City Business Logic Limited 2001-2011
* @license      Dual MIT / GNU Lesser General Public License Version 3
*/
class Apeel_Framework_Model_Libraries_Export {

    
/**
    * Generates document in chosen format.  
    * 
    * When generating Word or PDF format it takes an HTML template and 
    * replaces the tokens in {$field} format with the corresponding value in
    * the $templateReplacements array, using the loadAndProcessTemplate 
    * method.  
    * 
    * In Excel format it outputs a csv file and ignores any supplied template.
    * 
    * The generated document it output with the given filename.    
    * 
    * @param string $outputFormat ('pdf', 'word' or 'excel')
    * @param string $templateFilename
    * @param string $templateReplacements
    * @param string $filename
    * @return void
    */
    
public static function generateDocument(
        
$outputFormat
        
$templateFilename
        
$data
        
$filename
    
) {
        
        if ((
$outputFormat == 'pdf') || ($outputFormat == 'word')) {            
            
// Get template and fill with data
            
$reportData self::loadAndProcessTemplate($templateFilename$data);
            
            
// Word and PDF formats take HTML formatted data.  
            
if ($outputFormat == 'pdf') {
                
$columns $data['extra']['columns'];
                
$pdfDocument = new Apeel_Framework_Model_Libraries_Export_OutputFormats_Pdf($columns);
                
$pdfDocument->generateDocument($reportData$filename);
            } elseif (
$outputFormat == 'word') {
                
$wordDocument = new Apeel_Framework_Model_Libraries_Export_OutputFormats_Word;
                
$wordDocument->generateDocument($reportData$filename);
            }
        } elseif (
$outputFormat == 'excel') {             
            
// Check if PHPExcel Plugin has been installed, otherwise use CSV format to generate Excel document.  
            
if (APEEL_HAS_ADVANCED_EXCEL_SUPPORT) {
                
$excelAdvancedDocument = new Apeel_Framework_Model_Libraries_Export_OutputFormats_Excel_Advanced;
                
$excelAdvancedDocument->generateDocument($data$filename);                
            } else {
                
$reportData $data['data'];
                
$excelDocument = new Apeel_Framework_Model_Libraries_Export_OutputFormats_Excel;
                
$excelDocument->generateDocument($reportData$filename);
            }
        } else {
            throw new 
Exception('Invalid Document Format: ' $outputFormat);
        }        
    }
    
    
    
/**
    * Loads the requested template and replaces the tokens.  
    * 
    * Tokens are in {$token} format, and the $templateReplacements array 
    * should be in  $templateReplacements['token'] => 'value' format.  
    * 
    * @param string $templateFilename
    * @param array $templateReplacements
    * @return string
    */
    
private static function loadAndProcessTemplate(
        
$templateFilename
        
$templateReplacements NULL
    
) {
        
$template = @file_get_contents($templateFilename);
        if (
$template) {
            if (
$templateReplacements) {
                foreach(
$templateReplacements as $index => $replacement) {
                    if (
$index != 'extra') {
                        
$template str_replace('{$' $index '}'$replacement$template);
                    }
                }
                return 
$template;
            }
        } else {
            throw new 
Exception('Unable to load template: ' $templateFilename);
        }
    }        
}
  
?>

PHP Demo Source Code Index