From 0b515ff07ddf70850c5e98428c9d2fb36c85c0f1 Mon Sep 17 00:00:00 2001 From: Mark Baker Date: Wed, 11 Jan 2012 11:30:33 +0000 Subject: [PATCH] Configuration options for Chart and PDF rendering, in preparation for chart handling and making the PDF writer confugrable via a choice of 3rd party external libraries git-svn-id: https://phpexcel.svn.codeplex.com/svn/trunk@85115 2327b42d-5241-43d6-9e2a-de5ac946f064 --- Classes/PHPExcel/Settings.php | 256 ++++++++++++++++++++++++++++++++-- 1 file changed, 241 insertions(+), 15 deletions(-) diff --git a/Classes/PHPExcel/Settings.php b/Classes/PHPExcel/Settings.php index e157e87c..63e9222f 100644 --- a/Classes/PHPExcel/Settings.php +++ b/Classes/PHPExcel/Settings.php @@ -2,7 +2,7 @@ /** * PHPExcel * - * Copyright (c) 2006 - 2011 PHPExcel + * Copyright (c) 2006 - 2012 PHPExcel * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -20,7 +20,7 @@ * * @category PHPExcel * @package PHPExcel_Settings - * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) + * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel) * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @version ##VERSION##, ##DATE## */ @@ -38,12 +38,32 @@ if (!defined('PHPEXCEL_ROOT')) { class PHPExcel_Settings { /** constants */ + /** Available Zip library classes */ const PCLZIP = 'PHPExcel_Shared_ZipArchive'; const ZIPARCHIVE = 'ZipArchive'; + /** Optional Chart Rendering libraries */ + const CHART_RENDERER_JPGRAPH = 'jpgraph'; + + /** Optional PDF Rendering libraries */ + const PDF_RENDERER_TCPDF = 'tcpdf'; + const PDF_RENDERER_DOMPDF = 'dompdf'; + const PDF_RENDERER_MPDF = 'mpdf'; + + + private static $_chartRenderers = array( + self::CHART_RENDERER_JPGRAPH, + ); + + private static $_pdfRenderers = array( + self::PDF_RENDERER_TCPDF, + self::PDF_RENDERER_DOMPDF, + self::PDF_RENDERER_MPDF, + ); + /** - * Reference to the class used for Zip file management + * Name of the class used for Zip file management * e.g. * ZipArchive * @@ -53,48 +73,254 @@ class PHPExcel_Settings /** - * Set the Zip Class to use (PCLZip or ZipArchive) + * Name of the external Library used for rendering charts + * e.g. + * jpgraph * - * @param string $zipClass PHPExcel_Settings::PCLZip or PHPExcel_Settings::ZipArchive - * @return boolean Success or failure + * @var string + */ + private static $_chartRendererName = NULL; + + /** + * Directory Path to the external Library used for rendering charts + * + * @var string + */ + private static $_chartRendererPath = NULL; + + + /** + * Name of the external Library used for rendering PDF files + * e.g. + * mPDF + * + * @var string + */ + private static $_pdfRendererName = NULL; + + /** + * Directory Path to the external Library used for rendering PDF files + * + * @var string + */ + private static $_pdfRendererPath = NULL; + + + /** + * Set the Zip handler Class that PHPExcel should use for Zip file management (PCLZip or ZipArchive) + * + * @param string $zipClass The Zip handler class that PHPExcel should use for Zip file management + * e.g. PHPExcel_Settings::PCLZip or PHPExcel_Settings::ZipArchive + * @return boolean Success or failure */ public static function setZipClass($zipClass) { - if (($zipClass == self::PCLZIP) || - ($zipClass == self::ZIPARCHIVE)) { + if (($zipClass === self::PCLZIP) || + ($zipClass === self::ZIPARCHIVE)) { self::$_zipClass = $zipClass; - return True; + return TRUE; } - return False; + return FALSE; } // function setZipClass() /** - * Return the Zip Class to use (PCLZip or ZipArchive) + * Return the name of the Zip handler Class that PHPExcel is configured to use (PCLZip or ZipArchive) + * for Zip file management * - * @return string Zip Class to use - PHPExcel_Settings::PCLZip or PHPExcel_Settings::ZipArchive + * @return string Name of the Zip handler Class that PHPExcel is configured to use + * for Zip file management + * e.g. PHPExcel_Settings::PCLZip or PHPExcel_Settings::ZipArchive */ public static function getZipClass() { return self::$_zipClass; } // function getZipClass() + /** + * Return the name of the method that is currently configured for cell cacheing + * + * @return string Name of the cacheing method + */ public static function getCacheStorageMethod() { return PHPExcel_CachedObjectStorageFactory::$_cacheStorageMethod; } // function getCacheStorageMethod() + /** + * Return the name of the class that is currently being used for cell cacheing + * + * @return string Name of the class currently being used for cacheing + */ public static function getCacheStorageClass() { return PHPExcel_CachedObjectStorageFactory::$_cacheStorageClass; } // function getCacheStorageClass() - public static function setCacheStorageMethod($method = PHPExcel_CachedObjectStorageFactory::cache_in_memory, $arguments = array()) { - return PHPExcel_CachedObjectStorageFactory::initialize($method,$arguments); + /** + * Set the method that should be used for cell cacheing + * + * @param string $method Name of the cacheing method + * @param array $arguments Optional configuration arguments for the cacheing method + * @return boolean Success or failure + */ + public static function setCacheStorageMethod($method = PHPExcel_CachedObjectStorageFactory::cache_in_memory, + $arguments = array()) { + return PHPExcel_CachedObjectStorageFactory::initialize($method, $arguments); } // function setCacheStorageMethod() - public static function setLocale($locale){ + /** + * Set the locale code to use for formula translations and any special formatting + * + * @param string $locale The locale code to use (e.g. "fr" or "pt_br" or "en_uk") + * @return boolean Success or failure + */ + public static function setLocale($locale='en_us') { return PHPExcel_Calculation::getInstance()->setLocale($locale); } // function setLocale() + + /** + * Set details of the external library that PHPExcel should use for rendering charts + * + * @param string $libraryName Internal reference name of the library + * e.g. PHPExcel_Settings::CHART_RENDERER_JPGRAPH + * @param string $libraryBaseDir Directory path to the library's base folder + * @return boolean Success or failure + */ + public static function setChartRenderer($libraryName, $libraryBaseDir) { + if (!self::setChartRendererName($libraryName)) + return FALSE; + return self::setChartRendererPath($libraryBaseDir); + } // function setChartRenderer() + + + /** + * Identify to PHPExcel the external library to use for rendering charts + * + * @param string $libraryName Internal reference name of the library + * e.g. PHPExcel_Settings::CHART_RENDERER_JPGRAPH + * @return boolean Success or failure + */ + public static function setChartRendererName($libraryName) { + if (!in_array($libraryName,self::$_chartRenderers)) { + return FALSE; + } + + self::$_chartRendererName = $libraryName; + + return TRUE; + } // function setChartRendererName() + + + /** + * Tell PHPExcel where to find the external library to use for rendering charts + * + * @param string $libraryBaseDir Directory path to the library's base folder + * @return boolean Success or failure + */ + public static function setChartRendererPath($libraryBaseDir) { + self::$_chartRendererPath = $libraryBaseDir; + + return TRUE; + } // function setChartRendererPath() + + + /** + * Return the Chart Rendering Library that PHPExcel is currently configured to use (e.g. jpgraph) + * + * @return string Internal reference name of the Chart Rendering Library that PHPExcel is + * currently configured to use + * e.g. PHPExcel_Settings::CHART_RENDERER_JPGRAPH + */ + public static function getChartRendererName() { + return self::$_chartRendererName; + } // function getChartRendererName() + + + /** + * Return the directory path to the Chart Rendering Library that PHPExcel is currently configured to use + * + * @return string Directory Path to the Chart Rendering Library that PHPExcel is + * currently configured to use + */ + public static function getChartRendererPath() { + return self::$_chartRendererPath; + } // function getChartRendererPath() + + + /** + * Set details of the external library that PHPExcel should use for rendering PDF files + * + * @param string $libraryName Internal reference name of the library + * e.g. PHPExcel_Settings::PDF_RENDERER_TCPDF, + * PHPExcel_Settings::PDF_RENDERER_DOMPDF + * or PHPExcel_Settings::PDF_RENDERER_MPDF + * @param string $libraryBaseDir Directory path to the library's base folder + * @return boolean Success or failure + */ + public static function setPdfRenderer($libraryName, $libraryBaseDir) { + if (!self::setPdfRendererName($libraryName)) + return FALSE; + return self::setPdfRendererPath($libraryBaseDir); + } // function setPdfRenderer() + + + /** + * Identify to PHPExcel the external library to use for rendering PDF files + * + * @param string $libraryName Internal reference name of the library + * e.g. PHPExcel_Settings::PDF_RENDERER_TCPDF, + * PHPExcel_Settings::PDF_RENDERER_DOMPDF + * or PHPExcel_Settings::PDF_RENDERER_MPDF + * @return boolean Success or failure + */ + public static function setPdfRendererName($libraryName) { + if (!in_array($libraryName,self::$_pdfRenderers)) { + return FALSE; + } + + self::$_pdfRendererName = $libraryName; + + return TRUE; + } // function setPdfRendererName() + + + /** + * Tell PHPExcel where to find the external library to use for rendering PDF files + * + * @param string $libraryBaseDir Directory path to the library's base folder + * @return boolean Success or failure + */ + public static function setPdfRendererPath($libraryBaseDir) { + self::$_pdfRendererPath = $libraryBaseDir; + + return TRUE; + } // function setPdfRendererPath() + + + /** + * Return the PDF Rendering Library that PHPExcel is currently configured to use (e.g. dompdf) + * + * @return string Internal reference name of the PDF Rendering Library that PHPExcel is + * currently configured to use + * e.g. PHPExcel_Settings::PDF_RENDERER_TCPDF, + * PHPExcel_Settings::PDF_RENDERER_DOMPDF + * or PHPExcel_Settings::PDF_RENDERER_MPDF + */ + public static function getPdfRendererName() { + return self::$_pdfRendererName; + } // function getPdfRendererName() + + + /** + * Return the directory path to the PDF Rendering Library that PHPExcel is currently configured to use + * + * @return string Directory Path to the PDF Rendering Library that PHPExcel is + * currently configured to use + */ + public static function getPdfRendererPath() { + return self::$_pdfRendererPath; + } // function getPdfRendererPath() + } \ No newline at end of file