|
Server : Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 DAV/2 PHP/5.2.17 System : Linux localhost 2.6.18-419.el5 #1 SMP Fri Feb 24 22:47:42 UTC 2017 x86_64 User : nobody ( 99) PHP Version : 5.2.17 Disable Function : NONE Directory : /home/queenjbs/www/FusionChart/Code/PHPClass/Class/ |
Upload File : |
<?php
/***********************************************************************************
* FUSIONCHARTS XT API PHP CLASS
* @author FusionCharts
* @version 3.2.2.1
*
*
* Version 3.3 (31 December 2012)
* - Fixes in chart alias
*
*
* Version 3.2.2.1 (20 August 2012)
* - Fixed issue with use of quotes
*
*
* Version 3.2.2 (16 August 2011)
* - Added support for all FusionChart v3.2.2 chart types
* - encodeChars property is set to false by default
* - Added support for external JSON string data
* - Added support to enable Print Manager
* - Added support to set renderer to JavaScript mode.
*
*
* 30/12/2008 [
* A new Parameter - 'display' in renderChart() to return chart HTML
* as string rather that sending it to response;
* Function encodeSpecialChars modified for PHP 4 Support;
* Function renderChartHTML modified for <embed> tag.
* ]
* Version: 1.0.1 (10 November 2008) [ Fix PHP Short Tag, MSColumnLine3D Fix, Function
* addDatasetsFromDatabase Modifiaction for Transposed Data,
* Fix Transparent setting ]
* Version: 1.0 (30 July 2008)
*
* FusionCharts PHP Class easily handles all FusionCharts XML elements like
* chart, categories, dataset, set, Trendlines, vTrendlines, vline, styles etc.
* It's easy to use. It binds data into FusionCharts XML Structures.
*
***********************************************************************************
*/
class FusionCharts{
var $chartType; # Type of Chart
var $chartID; # ID of the Chart for JS interactivity(optional)
var $SWFFile; # Name of the required FusionCharts SWF file
var $SWFPath; # Relative path to FusionCharts SWF files
var $width; # FusionCharts width
var $height; # FusionCharts height
# Separator/Delimiter for list of Parameters
var $del;
# Chart XML string
var $strXML;
# Chart Series Types : 1 => single series, 2=> multi-series,
# 3=> scatter and bubble, 4 => MSStacked
var $seriesType;
# Chart Atributes
var $chartParams = array(); # List of Chart Parameters
var $categoriesParam; # Categories Parameter Setting
var $categoryNames = array(); # Category array for storing Category set
var $categoryNamesCounter; # Category array counter
var $dataset = array(); # Dataset array
var $datasetParam = array(); # Dataset parameter setting array
var $datasetCounter; # Dataset array counter
var $setCounter; # Set array counter
# trendLines
var $trendLines = array(); # trendLines array
var $tLineCounter; # trendLines array counter
# chart messages
var $chartMSG; # Stores chart messages
var $chartSWF = array(); # Charts SWF array
# Color
var $arr_FCColors = array(); # Colorset to be applied to dataplots
var $userColor= array(); # Array to store user defined colors
var $userColorON; # Flag : user defined color : true or false
var $userColorCounter; # Number of colors used in the user-defined color list
# Cache Control
var $noCache; # Flag - Range : true/false : Stops caching chart SWFs
var $DataBaseType; # Flag - DataBase Type values : "mysql" => default, "Oracle".
var $encodeChars; # XML for dataXML or dataURL
# Advanced Chart settings
var $JSC = array();
var $wMode;
# Addtional variables for MSStacked charts
var $MSStDataset = array(); # Store Primary Dataset
var $MSStDatasetParams = array(); # Parameter setting for Primary Dataset
var $MSStDatasetCounter; # Number of Primary Datasets
var $MSStSubDatasetCounter; # Number of Secondary Datasets
var $MSStSetCounter; # Number of data values in Dataset
# lineset
var $lineSet = array(); # Stores Lines/Linesets in MSStacked Dual Y charts
var $lineSetParam = array(); # parametets of each line in a Lineset
var $lineCounter; # Number of lines in a Lineset
var $lineSetCounter; # Number of Linesets
var $lineIDCounter; # LineIDs
# vtrendLines array
var $vtrendLines = array(); # Store vtrendLines
var $vtLineCounter; # Number of vtrendLines
# style array
var $styles = array(); # Styles array
var $styleDefCounter; # Define counter
var $styleAppCounter; # Apply counter
var $FC_DEFAULT_CONFIG = array() ; # Default configurations
# FusionCharts Constructor
# while creating FusionCharts object, the Constructor will initialize the object with values passed to it as arguments i.e.
# chats parameters like chartType, width, height, chartID
function FusionCharts($chartType="column2d",$width="400",$height="300",$chartID="",$isTransparent=""){
#Set mode to Transparent
$this->wMode=$isTransparent;
# Initilaize the Array with definition of all Charts
$this->setChartArrays();
# Initilaize list of colors
$this->colorInit();
# Set Chart's name
$this->chartType=strtolower($chartType);
# Get Chart's Series Type
$this->getSeriesType();
# Set Chart's Width and Height
$this->width=$width;
$this->height=$height;
# Set ChartID, Default is {Chart Name + Counter}
# for this session is required
if ($chartID==""){
# Count the number of charts rendered
$chartCounter=@$_SESSION['chartcount'];
if($chartCounter<=0 || $chartCounter==NULL){
$chartCounter=1;
}
$this->chartID=$chartType . $chartCounter;
$_SESSION['chartcount']=++$chartCounter;
}else{
$this->chartID=$chartID;
}
# Set Default Parameter Delimiter to ';'
$this->del=";";
# Set Default Path to Chart SWF files
$this->SWFPath="";
$this->SWFFile=$this->SWFPath . $this->chartSWF[$this->chartType][0] . ".swf";
# Initialize Parameter for category set
$this->categoriesParam="";
$this->categoryNamesCounter=1;
# Initialize Category Array
$this->createCategory($this->categoryNamesCounter);
# Initialize Dataset Variables
$this->datasetCounter=0;
$this->setCounter= 0;
if($this->seriesType>1){
$this->setCounter++;
}
# Initialize MSStacked Dataset Variables
if($this->seriesType==4){
$this->MSStDatasetCounter=0;
$this->MSStSubDatasetCounter=0;
$this->MSStSetCounter=0;
$this->lineCounter=0;
$this->lineSetCounter=0;
$this->lineIDCounter=0;
}
# Initialize vTrendLines Array
if($this->seriesType==3){
$this->vtLineCounter=1;
$this->createvTrendLines($this->vtLineCounter);
}
# Initialize TrendLines Array
$this->tLineCounter=1;
$this->createTrendLines($this->tLineCounter);
# Initialize Array to store STYLES
$this->styleDefCounter=1;
$this->styleAppCounter=1;
$this->createStyles("definition");
$this->createSubStyles("definition","style");
$this->createSubStylesParam("definition","style",$this->styleDefCounter);
$this->chartMSG="";
#Variable to store XML
$this->strXML="";
$this->userColorON = false; # Flag for userColor (by default it is false)
$this->userColorCounter=0;
$this->noCache=false; # Cache default false
$this->DataBaseType="mysql"; # default database MySql
// JS Constructor
$this->JSC["debugmode"]=false; # debugmode default is false
$this->JSC["registerwithjs"]=false; # registerwithJS default is false
$this->JSC["bgcolor"]=""; # bgcolor default not set
$this->JSC["scalemode"]="noScale"; # scalemode default noScale
$this->JSC["lang"]="EN"; # Language default EN
$this->encodeChars=false;
// initialize
$this->FC_INITIALIZE();
$this->FC_INITSTATIC();
}
#------------------------- Public Functions ----------------------------------------------
# Special Character
function encodeXMLChars($option=true){
$this->encodeChars=$option;
}
# Set path where chart SWF files are stored
function setSWFPath($SWFPath){
$this->SWFPath=$SWFPath;
$this->SWFFile=$this->SWFPath . $this->chartSWF[$this->chartType][0] . ".swf";
}
# Set Parameter Delimiter, Defult Parameter Separator is ";"
function setParamDelimiter($strDelm){
$this->del=$strDelm;
}
# The setChartParam() function adds or changes single Chart parameter, -
# it takes Parameter Name and its Value
function setChartParam($paramName, $paramValue){
$this->chartParams[$paramName]=$this->encodeSpecialChars($paramValue);
}
# The setChartParams() function adds or changes Chart parameters
# it takes list of parameters separated by delimiter
# e.g. "caption=xyz caption;subCaption=abcd abcd abcd;xAxisName=x axis;yAxisName=y's axis;bgColor=f2fec0;animation=1"
# Default Delimiter is ";"
function setChartParams($strParams){
$listArray=explode($this->del,$strParams);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray,2);
if($this->validateParam($paramValue)==true){
$this->chartParams[$paramValue[0]]=$this->encodeSpecialChars($paramValue[1]);
}
}
}
# The setCategoriesParams() function sets parameters for Category set <categories>
function setCategoriesParams($catParams){
$this->categoriesParam .= $this->ConvertParamToXMLAttribute($catParams);
}
# The addCategory() function adds a Chart Category (and optional vLine element)
function addCategory($label="",$catParams="",$vlineParams = "" ){
$strCatXML="";
$strParam="";
$label=$this->encodeSpecialChars($label);
# Check whether vlineParam is present
if($vlineParams==""){
# Check whether catParam is absent
if($catParams!=""){
# Convert category Parameters into XML
$strParam = $this->ConvertParamToXMLAttribute($catParams);
}
# Add label and parameters to category
$strCatXML ="<category label='" . $label . "' " . $strParam . " />";
}else{
# Add vLine
$strParam = $this->ConvertParamToXMLAttribute($vlineParams);
# Add vLine parameters
$strCatXML="<vLine " . $strParam . " />";
}
# Store into categoryNames array
$this->categoryNames[$this->categoryNamesCounter]=$strCatXML;
# Increase Counter
$this->categoryNamesCounter++;
}
# The addDataset() function adds a new dataset element
function addDataset($seriesName, $datasetParams=""){
$this->datasetCounter++;
$this->createDataset($this->datasetCounter);
$this->setCounter++;
$this->createDataValues($this->datasetCounter,"_" . $this->setCounter);
$seriesName=$this->encodeSpecialChars($seriesName);
# Create seriesName and dataset parameters
$tempParam="";
$tempParam ="seriesName='" . $seriesName . "' ";
$tempParam .= $this->ConvertParamToXMLAttribute($datasetParams);
$colorParam="";
# Add user-defined Color
if ($this->userColorON == true){
$pos = strpos(strtolower($tempParam), " color");
if ($pos === false) {
$colorParam=" color='" . $this->getColor($this->datasetCounter-1) . "'";
}
}
# Set datasetParam array
$this->datasetParam[$this->datasetCounter]=$tempParam . $colorParam;
}
# The addChartData() function adds chart data elements
function addChartData($value="",$params="",$vlineParams = "" ){
$strSetXML="";
# Choose dataset depending on seriesType and get chart's XML
switch ($this->seriesType){
case 1:
case 2:
$strSetXML=$this->genSSMSChartDataXML($value,$params,$vlineParams);
break;
case 3:
$strSetXML=$this->genScatterBubbleChartDataXML($value,$params,$vlineParams);
break;
case 4:
$strSetXML=$this->genSSMSChartDataXML($value,$params,$vlineParams);
break;
}
# Add xml to dataset array and Increase setCounter
switch ($this->seriesType){
case 1:
$this->dataset[$this->setCounter]=$strSetXML;
$this->setCounter++;
break;
case 2:
case 3:
$this->dataset[$this->datasetCounter]["_" . $this->setCounter]=$strSetXML;
$this->setCounter++;
break;
case 4:
$this->MSStDataset[$this->MSStDatasetCounter][$this->MSStSubDatasetCounter][$this->MSStSetCounter]=$strSetXML;
$this->MSStSetCounter++;
break;
}
}
# CreateMSStDataset function creates MS-Stacked Chart's Primary dataset
function createMSStDataset(){
$this->MSStDatasetCounter++;
$this->MSStDataset[$this->MSStDatasetCounter]= array();
$this->MSStDatasetParams[$this->MSStDatasetCounter]=array();
}
# The addMSStSubDataset() function adds MS-Stacked Charts sub-dataset
function addMSStSubDataset($seriesName, $datasetParams){
$this->MSStSubDatasetCounter++;
$this->MSStDataset[$this->MSStDatasetCounter][$this->MSStSubDatasetCounter]= array();
$seriesName=$this->encodeSpecialChars($seriesName);
$tempParam="";
# Creating seriesName
$tempParam ="seriesName='" . $seriesName . "' ";
$tempParam .= $this->ConvertParamToXMLAttribute($datasetParams);
$this->MSStSetCounter++;
# Add Parameter to MSStDatasetParams array
$this->MSStDatasetParams[$this->MSStDatasetCounter][$this->MSStSubDatasetCounter]=$tempParam;
}
# The addMSLineset() function adds Lineset element to MS-Stacked Dual Y Chart
function addMSLineset($seriesName, $linesetParams){
$this->createLineset();
$this->lineSetCounter++;
$this->lineSet[$this->lineCounter][$this->lineSetCounter]= array();
$seriesName=$this->encodeSpecialChars($seriesName);
$tempParam="";
$tempParam ="seriesName='" . $seriesName . "' ";
$tempParam .= $this->ConvertParamToXMLAttribute($linesetParams);
$this->lineIDCounter++;
# Setting lineSetParam array with Parameter set
$this->lineSetParam [$this->lineSetCounter]=$tempParam;
}
# The addMSLinesetData() function adds a line to the lineset
function addMSLinesetData($value="",$params="",$vlineParams = "" ){
$strSetXML="";
# Getting parameter set
$strSetXML=$this->genSSMSChartDataXML($value,$params,$vlineParams);
# Setting paramter to lineSet array
$this->lineSet[$this->lineCounter][$this->lineSetCounter][$this->lineIDCounter]=$strSetXML;
# Increase lineIDCounter
$this->lineIDCounter++;
}
# The setGridParams() function sets SSGrid Chart's Parameters
function setGridParams($gridParams){
$this->setChartMessage($gridParams);
}
# The addTrendLine() function adds a trendline
function addTrendLine($tlineParams){
$listArray=explode($this->del,$tlineParams);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray,2);
if($this->validateParam($paramValue)==true){
$this->trendLines[$this->tLineCounter][$paramValue[0]]=$this->encodeSpecialChars($paramValue[1]);
}
}
$this->tLineCounter++;
}
# The addVTrendLine() function adds a Vertical trendline to supported charts
function addVTrendLine($vtlineParams){
$listArray=explode($this->del,$vtlineParams);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray,2);
if($this->validateParam($paramValue)==true){
$this->vtrendLines[$this->vtLineCounter][$paramValue[0]]=$this->encodeSpecialChars($paramValue[1]);
}
}
$this->vtLineCounter++;
}
# The addColors() function adds user-defined colors
function addColors($ColorList)
{
$listArray=explode($this->del, $ColorList);
$this->userColorON = true;
foreach ($listArray as $valueArray) {
$this->UserColor[$this->userColorCounter]=$valueArray;
$this->userColorCounter++;
}
}
# The clearUserColor() function removes all user-defined colors
function clearUserColor()
{
$this->userColorON = false;
}
# The defineStyle() function defines a Charts Style
function defineStyle($styleName,$styleType,$styleParams){
$this->styles["definition"]["style"][$this->styleDefCounter]["name"]= $styleName;
$this->styles["definition"]["style"][$this->styleDefCounter]["type"]= $styleType;
$listArray=explode($this->del,$styleParams);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray,2);
if($this->validateParam($paramValue)==true){
$this->styles["definition"]["style"][$this->styleDefCounter][$paramValue[0]]= $this->encodeSpecialChars($paramValue[1]);
}
}
$this->styleDefCounter++;
}
# The applyStyle() function applies a define style to chart elements
function applyStyle($toObject,$styles){
$this->styles["application"]["apply"][$this->styleAppCounter]["toObject"]= $toObject;
$this->styles["application"]["apply"][$this->styleAppCounter]["styles"]= $styles;
$this->styleAppCounter++;
}
# The function addCategoryFromArray() adds Category from Array
function addCategoryFromArray($categoryArray){
# Iterate through each category in the array
foreach ($categoryArray as $value) {
# Add category
$this->addCategory($value);
}
}
# The function addChartDataFromArray() creates dataset values(set) and category, from array
function addChartDataFromArray($dataArray, $dataCatArray=""){
if(is_array($dataArray)){
if ($this->seriesType==1){
# Array for Single series charts
# aa[..][..]="label" aa[..][..]="Value"
foreach($dataArray as $arrayvalue){
if(is_array($arrayvalue)){
$this->addChartData($arrayvalue[1],"label=" . $arrayvalue[0] );
}
}
}else{
# Array for Multi series charts
if(is_array($dataCatArray)){
foreach($dataCatArray as $value){
# Add category
$this->addCategory($value);
}
}
# Add data to the chart by creating Datasets
foreach($dataArray as $arrayvalue){
if(is_array($arrayvalue)){
$i=0;
$aaa[0]=""; $aaa[1]="";
foreach($arrayvalue as $value){
if($i>=2){
$this->addChartData($value);
}else{
$aaa[$i]=$value;
}
if($i==1){
$this->addDataset($aaa[0],$aaa[1]);
}
$i++;
}
}
}
}
}
}
# Database type set like ORACLE and MYSQL
function setDataBaseType($dbType){
$this->DataBaseType=strtolower($dbType);
}
# The addCategoryFromDatabase() function adds Category from database -
# by Default from MYSQL recordset. You can use setDatabaseType() function -
# to set the type of database.
function addCategoryFromDatabase($query_result, $categoryColumn){
if($this->DataBaseType=="mysql"){
# fetch recordset till end of file is reached
while($row = mysql_fetch_array($query_result)){
# add category
$this->addCategory($row[$categoryColumn],"","" );
}
}elseif($this->DataBaseType=="oracle"){
# Fetch recordset till end of file is reached
while(OCIFetchInto($query_result, $row, OCI_ASSOC)){
# addcategory() function adds the category
$this->addCategory($row[$categoryColumn],"","" );
}
}
}
# The addDataFromDatabase() function adds single series data from database -
# by default from MYSQL recordset. You can use setDatabaseType() function -
# to set the type of database to work on.
function addDataFromDatabase($query_result, $db_field_ChartData,$db_field_CategoryNames="", $strParam="",$link=""){
$paramset="";
if($this->DataBaseType=="mysql"){
# fetching recordset
while($row = mysql_fetch_array($query_result)){
if($link==""){
$paramset="";
}else{
# Get the link
$paramset="link=" . urlencode($this->getLinkFromPattern($row,$link));
}
if ($strParam=""){
$strParam=$paramset;
}else{
$strParam .= $this->del . $paramset;
}
# Convert to set element and save to $partXML
if($db_field_CategoryNames==""){
$data=@$row[$db_field_ChartData];
if($strParam!="")
$this->addChartData($this->encodeSpecialChars($data),$strParam);
else
$this->addChartData($this->encodeSpecialChars($data));
}
else{
$data=@$row[$db_field_ChartData];
$label=@$row[$db_field_CategoryNames];
$this->addChartData($this->encodeSpecialChars($data),"label=" . $this->encodeSpecialChars($label) . $this->del .$strParam,"" );
}
}
}elseif($this->DataBaseType=="oracle"){
# fetching recordset
while(OCIFetchInto($query_result, $row, OCI_ASSOC)){
if($link==""){
$paramset="";
}else{
# Getting link
$paramset="link=" . urlencode($this->getLinkFromPattern($row,$link));
}
if ($strParam=""){
$strParam=$paramset;
}else{
$strParam .= $this->del . $paramset;
}
# Convert to set element and save to $partXML
if($db_field_CategoryNames==""){
$data=@$row[$db_field_ChartData];
if($strParam!="")
$this->addChartData($this->encodeSpecialChars($data),$strParam);
else
$this->addChartData($this->encodeSpecialChars($data));
}
else{
$data=@$row[$db_field_ChartData];
$label=@$row[$db_field_CategoryNames];
$this->addChartData($this->encodeSpecialChars($data),"label=" . $this->encodeSpecialChars($label) . $this->del .$strParam,"" );
}
}
}
}
# The addDatasetsFromDatabase() function adds dataset and set elements from -
# database, by Default, from MySql recordset. You can use setDatabaseType() function -
# to set the type of database to work on.
function addDatasetsFromDatabase($query_result, $ctrlField, $valueField,$datsetParamArray="",$link=""){
# Initialize variables
$paramset="";
$tempContrl="";
if(is_array($datsetParamArray)==false){
$datsetParamArray=array();
}
# Calculate total no of array elements in datsetParamArray
$arrLimit=count($datsetParamArray);
$i=1;
$tempParam="";
if($this->DataBaseType=="mysql"){
##### For My SQL Connection
$FieldArray=explode($this->del,$valueField);
if(count($FieldArray)>1){
### Muli Series
# fetching recordset
while($row = mysql_fetch_array($query_result)){
# Add Category
$this->addCategory($row[$ctrlField]);
}
$k=0;
# Add daatset for multiple fields
foreach ($FieldArray as $FieldName) {
if($k<$arrLimit){
$tempParam = $datsetParamArray[$k];
}else{
$tempParam="";
}
# Add Dataset with adddataset() function
$this->addDataset($FieldName,$tempParam);
# rewind query result
mysql_data_seek($query_result,0);
while($row = mysql_fetch_array($query_result)){
# Generating URL link
if($link==""){
$paramset="";
}else{
# Generating URL link from getLinkFromPattern
$paramset="link=" . urlencode($this->getLinkFromPattern($row,$link));
}
# add value to dataset
$this->addChartData($row[$FieldName], $paramset, "");
}
$k++;
}
}else{
### Single Series
# fetching recordset
while($row = mysql_fetch_array($query_result)){
# Creating Control break depending on ctrlField
# if ctrlField value changes then dataset will be Generated
if ($tempContrl!=$row[$ctrlField]){
if($i<=$arrLimit){
$tempParam = $datsetParamArray[$i-1];
}else{
$tempParam="";
}
# Add Dataset with adddataset() function
$this->addDataset($row[$ctrlField],$tempParam);
$tempContrl=$row[$ctrlField];
$i++;
}
# Generating URL link
if($link==""){
$paramset="";
}else{
# Generating URL link from getLinkFromPattern
$paramset="link=" . urlencode($this->getLinkFromPattern($row,$link));
}
# add value to dataset
$this->addChartData($row[$valueField], $paramset, "");
}
}
}elseif($this->DataBaseType=="oracle"){
# For Oracle Connection
# fetching recordset
while(OCIFetchInto($query_result, $row, OCI_ASSOC)){
# Create Control break depending on ctrlField
# if ctrlField value changes then dataset will be Generated
if ($tempContrl!=$row[$ctrlField]){
if($i<=$arrLimit){
$tempParam = $datsetParamArray[$i-1];
}else{
$tempParam="";
}
# add Dataset
$this->addDataset($row[$ctrlField],$tempParam);
$tempContrl=$row[$ctrlField];
$i++;
}
# Generating URL link
if($link==""){
$paramset="";
}else{
# Generating URL link from getLinkFromPattern
$paramset="link=" . urlencode($this->getLinkFromPattern($row,$link));
}
# add value to dataset
$this->addChartData($row[$valueField], $paramset, "");
}
}
}
# Set SWF to Transparent
function setwMode($isTransparent=""){
$this->wMode=$isTransparent;
}
# The getXML() function renders final chart XML and returns it
function getXML(){
$this->strXML="";
# Call the getChartParamsXML() function to get chart parameter XML
$strChartParam="";
$strChartParam=$this->getChartParamsXML();
if($this->seriesType==1){
# Addtional setting for Single Series Line chart
if(gettype(strpos($this->chartType,"line"))!="boolean"){
if(strpos($strChartParam,"lineColor")===false){
$colorSet=$this->getColor(0);
$this->setChartParams("lineColor=" . $colorSet );
}
}
# Addtional setting for Single Series Area chart
if(gettype(strpos($this->chartType,"area"))!="boolean"){
if(strpos($strChartParam,"areaBgColor")===false){
$colorSet=$this->getColor(0);
$this->setChartParams("areaBgColor=" . $colorSet );
}
}
}
# Open Chart element
$this->strXML = "<chart " . $this->getChartParamsXML() . " >";
# call getCategoriesXML() function to generate category XML elements
$this->strXML .= $this->getCategoriesXML();
# call getDatasetXML() function to generate chart's dataset XML elements
$this->strXML .= $this->getDatasetXML();
# call getvTrendLinesXML() function to generate vTrendLines XML elements
if($this->seriesType==3){
$this->strXML .= $this->getvTrendLinesXML();
}
# Call getLinesetXML() function to generate lineSet XML elements
if($this->seriesType==4){
$this->strXML .= $this->getLinesetXML();
}
# call getTrendLinesXML() function to generate TrendLines XML elements
$this->strXML .= $this->getTrendLinesXML();
# call getStylesXML() function to generate styles elements
$this->strXML .= $this->getStylesXML();
# Close Chart element
$this->strXML .= "</chart>";
# Return XML output
return $this->strXML;
}
# The function setChartMessage() sets the message to display on the chart
function setChartMessage($msgParam){
if($this->chartMSG==""){
$this->chartMSG="?";
}else{
$this->chartMSG .= "&";
}
$strParamCol="";
$strParamCol=$this->ConvertParamToXMLAttribute($msgParam, true);
$this->chartMSG .= $strParamCol;
}
# The setOffChartCaching() function sets whether chart SWF files are not to be cached
function setOffChartCaching($swfNoCache=false){
$this->noCache=$swfNoCache;
}
# The renderChart() function generates the chart
function renderChart($renderAsHTML=false, $display=true){
$this->strXML=$this->getXML();
$this->SWFFile=$this->SWFPath . $this->chartSWF[$this->chartType][0] . ".swf";
# Stop chart caching if required
if($this->noCache==true){
if($this->chartMSG==""){
$this->chartMSG = "?nocache=" . microtime();
}else{
$this->chartMSG .= "&nocache=" . microtime();
}
}
# render chart using RenderAsHTML option
if($renderAsHTML==true){
if($display==true){
# true: render using html embedding method
print $this->renderChartHTML($this->SWFFile . $this->chartMSG ,"", $this->strXML, $this->chartID, $this->width, $this->height, $this->JSC["debugmode"], $this->JSC["registerwithjs"], $this->wMode);
}else{
# true: render using html embedding method
return $this->renderChartHTML($this->SWFFile . $this->chartMSG ,"", $this->strXML, $this->chartID, $this->width, $this->height, $this->JSC["debugmode"], $this->JSC["registerwithjs"], $this->wMode);
}
}else{
if($display==true){
# false: render using JavaScript embedding method
print $this->renderChartJS($this->SWFFile . $this->chartMSG ,"", $this->strXML, $this->chartID, $this->width, $this->height, $this->JSC["debugmode"], $this->JSC["registerwithjs"], $this->wMode);
return true;
}else{
# false: render using JavaScript embedding method
return $this->renderChartJS($this->SWFFile . $this->chartMSG ,"", $this->strXML, $this->chartID, $this->width, $this->height, $this->JSC["debugmode"], $this->JSC["registerwithjs"], $this->wMode);
}
}
}
# The renderChartFromExtXML() function renders Chart form External XML (string)
function renderChartFromExtXML($dataXML,$renderAsHTML=false){
# Print the HTML chart
if($renderAsHTML==true){
print $this->renderChartHTML($this->SWFFile . $this->chartMSG ,"", $dataXML, $this->chartID, $this->width, $this->height, $this->JSC["debugmode"], $this->JSC["registerwithjs"], $this->wMode);
}else{
print $this->renderChartJS($this->SWFFile,"",$dataXML,$this->chartID, $this->width, $this->height,$this->JSC["debugmode"], $this->JSC["registerwithjs"], $this->wMode);
}
}
# The renderChartFromExtData() function renders Chart form External data (string)
function renderChartFromExtData($data, $dataformat="xml",$renderAsHTML=false)
{
# Print the HTML chart
if($renderAsHTML==true)
{
print $this->renderChartHTML($this->SWFFile . $this->chartMSG ,"", $data, $this->chartID, $this->width, $this->height, $this->JSC["debugmode"], $this->JSC["registerwithjs"], $this->wMode);
}
else
{
$this->setDataFormat($dataformat);
print $this->renderChartJS($this->SWFFile,"",$data,$this->chartID, $this->width, $this->height,$this->JSC["debugmode"], $this->JSC["registerwithjs"], $this->wMode);
}
}
#The function SetInitParam() adds extra chart settings
function setInitParam($tname,$tvalue){
$trimName= strtolower(str_replace(" ","",$tname));
$this->JSC[$trimName]=$tvalue;
}
##------------ PRIVATE FUNCTIONS ------------------------------------------------------
# The function getDatasetXML() returns xml for the chart from the <dataset> .... </dataset>
function getDatasetXML(){
# Calling dataset function depending on seriesType
switch ($this->seriesType){
case 1 :
return $this->getSSDatasetXML();
break;
case 2 :
return $this->getMSDatasetXML();
break;
case 3 :
return $this->getMSDatasetXML();
break;
case 4 :
return $this->getMSStackedDatasetXML();
break;
}
}
# By getChartParamsXML() function, we can fetch charts array and convert into XML -
# and return like "caption='xyz' xAxisName='x side' ............
function getChartParamsXML(){
$partXML="";
# Fetching charts each array and converting into chart parameter
foreach($this->chartParams as $part_type => $part_name){
$partXML .= $part_type . "='" . $this->encodeSpecialChars($part_name) . "' ";
}
# Return Chart Parameter
return $partXML;
}
# The function getCategoriesXML() for getting Category part XML
function getCategoriesXML(){
if($this->seriesType>1){
$partXML="";
# Add categories parameter
$partXML="<categories " . $this->categoriesParam . " >";
if($this->categoryNamesCounter>1){
foreach($this->categoryNames as $part_type => $part_name){
if($part_name!=""){
# add elements
if($part_name!="Array"){
$partXML .= $part_name;
}
}
}
}
# Closing <categories>
$partXML .="</categories>";
return $partXML;
}
}
# Create single set element
# <set value='30' />
# <set value='26' />
function getSSDatasetXML(){
if($this->seriesType==1){
$partXML="";
foreach($this->dataset as $part_type => $part_name){
if($part_name!=""){
# Add elements
if($part_name!="Array"){
$partXML .= $part_name;
}
}
}
return $partXML;
}
}
# getMSDatasetXML for getting datset part XML
# <dataset seriesName='Product A' color='AFD8F8' showValues='0'>
# <set value='30' />
# <set value='26' />
# </dataset>
function getMSDatasetXML(){
if($this->seriesType>1){
$partXML="";
foreach($this->dataset as $part_type => $part_name){
$partXML .="<dataset " . $this->datasetParam[$part_type] . " >";
foreach($this->dataset[$part_type] as $part_type1 => $part_name1){
if($part_name1!=""){
# Add elements
if($part_name1!="Array"){
$partXML .= $part_name1;
}
}
}
$partXML .="</dataset>";
}
return $partXML;
}
}
# Function getMSStackedDatasetXML for getting datset part XML from ms stacked chart dataset array
# <dataset>
# <dataset seriesName='Product A' color='AFD8F8' showValues='0'>
# <set value='30' />
# <set value='26' />
# </dataset>
# </dataset>
function getMSStackedDatasetXML(){
if($this->seriesType==4){
$partXML="";
foreach($this->MSStDataset as $part_type => $part_name){
$partXML .= "<dataset>";
foreach($this->MSStDataset[$part_type] as $part_type1 => $part_name1){
$partXML .= "<dataset " . $this->MSStDatasetParams[$part_type][$part_type1] . " >";
foreach($this->MSStDataset[$part_type][$part_type1] as $part_type2 => $part_name2){
if ($part_type2!=""){
$partXML .= $part_name2;
}
}
$partXML .= "</dataset>";
}
$partXML .= "</dataset>";
}
return $partXML;
}
}
# The function getLinesetXML() for getting Lineset XML
function getLinesetXML(){
# If seriesType MSStackedColumn2DLineDY (4) then Lineset element will be Generated
if($this->seriesType==4){
$partXML="";
# Fetching lineSet array and Generating lineset xml element
foreach($this->lineSet as $part_type => $part_name){
$partXML .= "<lineset " . $this->lineSetParam[$part_type] . " >";
foreach($this->lineSet[$part_type] as $part_type1 => $part_name1){
foreach($this->lineSet[$part_type][$part_type1] as $part_type2 => $part_name2){
if ($part_type2!=""){
$partXML .= $part_name2;
}
}
}
$partXML .= "</lineset>";
}
return $partXML;
}
}
# The function getTrendLinesXML() create XML output depending on trendLines array
# <trendLines>
# <line startValue='700000' color='009933' displayvalue='Target' />
# </trendLines>
function getTrendLinesXML(){
$partXML="";
$lineXML="";
# Fetch trendLines array
foreach($this->trendLines as $l_type => $l_name){
# Line element
$lineXML .="<line ";
# Fetch trendLines array within array element
foreach($this->trendLines[$l_type] as $part_type => $part_name){
$lineXML .= $part_type . "='" . $this->encodeSpecialChars($part_name) . "' ";
}
# Close line element
$lineXML .=" />";
}
# If line element present, then adding $lineXML within trendLines element
$pos = strpos($lineXML, "=");
if ($pos!==false){
$partXML = "<trendLines>" . $lineXML . "</trendLines>";
}else{
# Return nothing
$partXML="";
}
# Return trendLines xml
return $partXML;
}
# The function getvTrendLinesXML() returns XML output depending on trendLines array
# <vTrendlines>
# <line displayValue='vTrendLines' startValue='5' endValue='6' alpha='10' color='ff0000' />
# </vTrendlines>
function getvTrendLinesXML(){
$partXML="";
$lineXML="";
# Fetch vtrendLines array
foreach($this->vtrendLines as $l_type => $l_name){
# staring line element
$lineXML .="<line ";
# Fetch vtrendLines array with in array element
foreach($this->vtrendLines[$l_type] as $part_type => $part_name){
if($part_name!=""){
$lineXML .= $part_type . "='" . $this->encodeSpecialChars($part_name) . "' ";
}
}
# Close line element
$lineXML .=" />";
}
# If line element present then adding $lineXML with in vtrendLines element
$pos = strpos($lineXML, "=");
if ($pos !== false) {
$partXML = "<vTrendlines>" . $lineXML . "</vTrendlines>";
}else{
# Return nothing
$partXML="";
}
# Return vtrendLines xml
return $partXML;
}
# The function getStylesXML() returns the styles XML from styles array
/*
<styles>
<definition>
<style name='CanvasAnim' type='animation' param='_xScale' start='0' duration='1' />
</definition>
<application>
<apply toObject='Canvas' styles='CanvasAnim' />
</application>
</styles>
*/
function getStylesXML(){
$partXML="";
$lineXML="";
# Fetch styles array
foreach($this->styles as $s_type => $s_name){
$lineXML .="<" . $s_type . ">";
# Fetch styles array within array
foreach($this->styles[$s_type] as $sub_type => $sub_name){
# Create dynamic element depending on array name
# Fetch styles array within array with array element
foreach($this->styles[$s_type][$sub_type] as $part_type => $part_name){
$lineXML .="<" . $sub_type . " ";
foreach($this->styles[$s_type][$sub_type][$part_type] as $part_type1 => $part_name1){
if($part_name1!=""){
# Add elements parameter
$lineXML .= $part_type1 . "='" . $this->encodeSpecialChars($part_name1) . "' ";
}
}
$lineXML .=" />";
}
}
# Close open element
$lineXML .="</" . $s_type . ">";
}
# Add $lineXML with in style element
# Check element have any attribute or not
$pos = strpos($lineXML, "=");
if ($pos !== false) {
$partXML = "<styles>" . $lineXML . "</styles>";
}else{
$partXML ="";
}
# Returning the part of xml
return $partXML;
}
# Add set element to dataset element for seriesType 1 and 2
function genSSMSChartDataXML($value="",$setParam="",$vlineParam = "" ){
$strSetXML="";
$strParam="";
$color=0;
if($vlineParam==""){
if($setParam!=""){
$strParam = $this->ConvertParamToXMLAttribute($setParam);
}
$colorSet="";
# User defined color
if ($this->userColorON == true){
if($this->seriesType==1 && (gettype(strpos($this->chartType,"line"))=="boolean" && gettype(strpos($this->chartType,"area"))=="boolean")){
if(strpos(strtolower($strParam)," color")===false){
$colorSet=" color='" . $this->getColor($this->setCounter) . "' ";
}
}
}
# Setting set parameter
$strSetXML ="<set value='" . $value . "' " . $strParam . $colorSet . " />";
}else{
$strParam = $this->ConvertParamToXMLAttribute($vlineParam);
# Setting vline parameter
$strSetXML="<vLine " . $strParam . " />";
}
return $strSetXML;
}
# Add set element to dataset element for seriesType 3
function genScatterBubbleChartDataXML($value="",$setParam="",$vlineParam = "" ){
$strSetXML="";
$strParam="";
if($vlineParam==""){
if($setParam!=""){
$strParam = $this->ConvertParamToXMLAttribute($setParam);
}
# Add Parameter into set elements
$strSetXML ="<set x='" . $value . "' " . $strParam . " />";
}else{
# Parameter for vLine
$strParam = $this->ConvertParamToXMLAttribute($vlineParam);
# Add vLine element
$strSetXML="<vLine " . $strParam . " />";
}
return $strSetXML;
}
## - - - - - - Array Init Functions - - --- - -- - - - - - - -- - - - - -
# The Function createCategory() create array element within Categories
function createCategory($catID){
$this->categoryNames[$catID]= array();
}
#The Function CreateDataset() creates dataset from array element
function createDataset($dataID){
$this->dataset[$dataID]= array();
}
# The function createDataValues() sets the value of dataset from array element
function createDataValues($datasetID, $dataID){
$this->dataset[$datasetID][$dataID]= array();
}
# The function CreateTrendLines() create TrendLines array
function createTrendLines($lineID){
$this->trendLines[$lineID] = array();
}
# The function SetTLine() create TrendLine parameter
function setTLine($lineID,$paramName, $paramValue){
$this->trendLines[$lineID][$paramName]=$paramValue;
}
# Create Lineset array
function createLineset(){
$this->lineCounter++;
$this->lineSet[$this->lineCounter]= array();
}
# The function createMSStSetData() returns set data within datset
function createMSStSetData(){
$this->MSStSetCounter++;
$this->MSStDataset[$this->MSStDatasetCounter][$this->MSStSubDatasetCounter][$this->MSStSetCounter]= array();
}
# The function createStyles() creates array element within styles array
function createStyles($styleID){
$this->styles[$styleID]= array();
}
# The function createSubStyles() creates individual style array element
function createSubStyles($styleID,$subStyle){
$this->styles[$styleID][$subStyle]= array();
}
# The function createvTrendLines() creates TrendLines array
function createvTrendLines($lineID){
$this->vtrendLines[$lineID] = array();
}
# The function setvTLine() create TrendLine parameter
function setvTLine($lineID,$paramName, $paramValue){
$this->vtrendLines[$lineID][$paramName]=$paramValue;
}
# The function createSubStylesParam() creates sub styles param
function createSubStylesParam($styleID,$subStyle,$subParam){
$this->styles[$styleID][$subStyle][$subParam]= array();
}
# The function setSubStylesParam() creates sub styles array to store parameters
function setSubStylesParam($styleID,$subStyle,$subParam,$id,$value){
$this->styles[$styleID][$subStyle][$subParam][$id]= $value;
}
# ----- ---------- ----- Misc utility functions ---- ------ -----------
# Converting ' and " to %26apos; and "
function encodeSpecialChars($strValue){
if ($this->encodeChars==true){
$pattern="/%(?![\da-f]{2}|[\da-f]{4})/i";
$strValue=preg_replace($pattern, "%25", $strValue);
$strValue=str_replace("&","%26",$strValue);
$strValue=str_replace("'","%26apos;",$strValue);
$strValue=str_replace("\"","%26quot;",$strValue);
$strValue=preg_replace("/\<br/i", "%26lt;BR", $strValue);
$strValue=str_replace("<","%26lt;",$strValue);
$strValue=str_replace(">","%26gt;",$strValue);
$strValue=str_replace("=","%3d",$strValue);
$strValue=str_replace("+","%2b",$strValue);
$strValue=str_replace("¢","%a2",$strValue);
$strValue=str_replace("£","%a3",$strValue);
$strValue=str_replace("€","%E2%82%AC",$strValue);
$strValue=str_replace("¥","%a5",$strValue);
$strValue=str_replace("?","%e2%82%a3",$strValue);
}else{
$strValue=str_replace("'","'",$strValue);
$strValue=str_replace("\"",""",$strValue);
$strValue=preg_replace("/\<br/i", "<BR", $strValue);
$strValue=str_replace("<","<",$strValue);
$strValue=str_replace(">",">",$strValue);
}
return $strValue;
}
# It converts pattern link to original link
# abcd.php?cid=##Field_name_1##&pname=##Field_name_2##
function getLinkFromPattern($row,$tempLink){
# Convert link into array break on '##'
$aa=explode("##",$tempLink);
# Reading array
foreach($aa as $v){
# Finding '=' into array
$pos = strpos($v, "=");
# Not found '='
if($pos === false){
if($v!=""){
$pet="##" . $v . "##";
$tempLink=str_replace($pet,$row[$v],$tempLink);
}
}
}
return $tempLink;
}
# Conversion of semi colon(;) separeted paramater to XML attribute
function ConvertParamToXMLAttribute($strParam, $isChartParam=false){
$xmlParam="";
$listArray=explode($this->del,$strParam);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray,2);
if($this->validateParam($paramValue)==true){
# Create parameter set
if( $isChartParam==false){
$xmlParam .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}else{
$xmlParam .= $paramValue[0] . "=" . $this->encodeSpecialChars($paramValue[1]) . "&";
}
}
}
if($isChartParam==true){
$xmlParam=substr($xmlParam,0,strlen($xmlParam)-1);
}
# Return
return $xmlParam;
}
# Check validity of parameter
function validateParam($paramValue){
if(count($paramValue)>=2){
if(trim($paramValue[0])==""){
return false;
}
return true;
}else{
return false;
}
}
#This function returns a color from a list of colors
function getColor($counter){
$strColor="";
if ($this->userColorON == false){
$strColor=$this->arr_FCColors[$counter % count($this->arr_FCColors)];
}else{
$strColor=$this->UserColor[$counter % count($this->UserColor)];
}
return $strColor;
}
# Getting Charts series type from charts array. 1 => single series, 2=> multi-series, 3=> scatter and bubble, 4=> MSStacked. defult 1 => single series
function getSeriesType(){
$sValue=1;
if(is_array($this->chartSWF[$this->chartType])){
$sValue=$this->chartSWF[$this->chartType][1];
}else{
$sValue=1;
}
$this->seriesType=$sValue;
}
### -----Populate color array and the Chart SWF array ------ ------- ---------------------
function colorInit(){
$this->arr_FCColors[] = "AFD8F8";
$this->arr_FCColors[] = "F6BD0F";
$this->arr_FCColors[] = "8BBA00";
$this->arr_FCColors[] = "FF8E46";
$this->arr_FCColors[] = "008E8E";
$this->arr_FCColors[] = "D64646";
$this->arr_FCColors[] = "8E468E";
$this->arr_FCColors[] = "588526";
$this->arr_FCColors[] = "B3AA00";
$this->arr_FCColors[] = "008ED6";
$this->arr_FCColors[] = "9D080D";
$this->arr_FCColors[] = "A186BE";
$this->arr_FCColors[] = "CC6600";
$this->arr_FCColors[] = "FDC689";
$this->arr_FCColors[] = "ABA000";
$this->arr_FCColors[] = "F26D7D";
$this->arr_FCColors[] = "FFF200";
$this->arr_FCColors[] = "0054A6";
$this->arr_FCColors[] = "F7941C";
$this->arr_FCColors[] = "CC3300";
$this->arr_FCColors[] = "006600";
$this->arr_FCColors[] = "663300";
$this->arr_FCColors[] = "6DCFF6";
}
# Set up chart names, SWF file names and Series Type
function setChartArrays(){
$this->chartSWF['area2d'][0]="Area2D";
$this->chartSWF['area2d'][1]=1;
$this->chartSWF['bar2d'][0]="Bar2D";
$this->chartSWF['bar2d'][1]=1;
$this->chartSWF['column2d'][0]="Column2D";
$this->chartSWF['column2d'][1]=1;
$this->chartSWF['column3d'][0]="Column3D";
$this->chartSWF['column3d'][1]=1;
$this->chartSWF['doughnut2d'][0]="Doughnut2D";
$this->chartSWF['doughnut2d'][1]=1;
$this->chartSWF['doughnut3d'][0]="Doughnut3D";
$this->chartSWF['doughnut3d'][1]=1;
$this->chartSWF['line2d'][0]="Line";
$this->chartSWF['line2d'][1]=1;
$this->chartSWF['line'][0]="Line";
$this->chartSWF['line'][1]=1;
$this->chartSWF['pie2d'][0]="Pie2D";
$this->chartSWF['pie2d'][1]=1;
$this->chartSWF['pie3d'][0]="Pie3D";
$this->chartSWF['pie3d'][1]=1;
$this->chartSWF['grid'][0]="SSGrid";
$this->chartSWF['grid'][1]=1;
// FusionCharts added since v3.2
$this->chartSWF['pareto2d'][0]="Pareto2D";
$this->chartSWF['pareto2d'][1]=1;
$this->chartSWF['pareto3d'][0]="Pareto3D";
$this->chartSWF['pareto3d'][1]=1;
// PowerCharts
$this->chartSWF['spline'][0]="Spline";
$this->chartSWF['spline'][1]=1;
$this->chartSWF['splinearea'][0]="SplineArea";
$this->chartSWF['splinearea'][1]=1;
$this->chartSWF['kagi'][0]="Kagi";
$this->chartSWF['kagi'][1]=1;
$this->chartSWF['waterfall'][0]="Waterfall2D";
$this->chartSWF['waterfall'][1]=1;
// FusionWidgets
$this->chartSWF['funnel'][0]="Funnel";
$this->chartSWF['funnel'][1]=1;
$this->chartSWF['pyramid'][0]="Pyramid";
$this->chartSWF['pyramid'][1]=1;
# Series Type #2
$this->chartSWF['msarea2d'][0]="MSArea";
$this->chartSWF['msarea2d'][1]=2;
$this->chartSWF['msarea'][0]="MSArea";
$this->chartSWF['msarea'][1]=2;
$this->chartSWF['msbar2d'][0]="MSBar2D";
$this->chartSWF['msbar2d'][1]=2;
$this->chartSWF['msbar3d'][0]="MSBar3D";
$this->chartSWF['msbar3d'][1]=2;
$this->chartSWF['mscolumn2d'][0]="MSColumn2D";
$this->chartSWF['mscolumn2d'][1]=2;
$this->chartSWF['mscolumn3d'][0]="MSColumn3D";
$this->chartSWF['mscolumn3d'][1]=2;
$this->chartSWF['mscolumn3dlinedy'][0]="MSColumn3DLineDY";
$this->chartSWF['mscolumn3dlinedy'][1]=2;
$this->chartSWF['mscolumnline3d'][0]="MSColumnLine3D";
$this->chartSWF['mscolumnline3d'][1]=2;
$this->chartSWF['mscolumn3dline'][0]="MSColumnLine3D";
$this->chartSWF['mscolumn3dline'][1]=2;
$this->chartSWF['mscombi2d'][0]="MSCombi2D";
$this->chartSWF['mscombi2d'][1]=2;
$this->chartSWF['mscombi3d'][0]="MSCombi3D";
$this->chartSWF['mscombi3d'][1]=2;
$this->chartSWF['mscombidy2d'][0]="MSCombiDY2D";
$this->chartSWF['mscombidy2d'][1]=2;
$this->chartSWF['msline'][0]="MSLine";
$this->chartSWF['msline'][1]=2;
$this->chartSWF['msline2d'][0]="MSLine";
$this->chartSWF['msline2d'][1]=2;
$this->chartSWF['scrollarea2d'][0]="ScrollArea2D";
$this->chartSWF['scrollarea2d'][1]=2;
$this->chartSWF['scrollcolumn2d'][0]="ScrollColumn2D";
$this->chartSWF['scrollcolumn2d'][1]=2;
$this->chartSWF['scrollcombi2d'][0]="ScrollCombi2D";
$this->chartSWF['scrollcombi2d'][1]=2;
$this->chartSWF['scrollcombidy2d'][0]="ScrollCombiDY2D";
$this->chartSWF['scrollcombidy2d'][1]=2;
$this->chartSWF['scrollline2d'][0]="ScrollLine2D";
$this->chartSWF['scrollline2d'][1]=2;
$this->chartSWF['scrollstackedcolumn2d'][0]="ScrollStackedColumn2D";
$this->chartSWF['scrollstackedcolumn2d'][1]=2;
$this->chartSWF['stackedarea2d'][0]="StackedArea2D";
$this->chartSWF['stackedarea2d'][1]=2;
$this->chartSWF['stackedbar2d'][0]="StackedBar2D";
$this->chartSWF['stackedbar2d'][1]=2;
$this->chartSWF['stackedbar3d'][0]="StackedBar3D";
$this->chartSWF['stackedbar3d'][1]=2;
$this->chartSWF['stackedcolumn2d'][0]="StackedColumn2D";
$this->chartSWF['stackedcolumn2d'][1]=2;
$this->chartSWF['stackedcolumn3d'][0]="StackedColumn3D";
$this->chartSWF['stackedcolumn3d'][1]=2;
$this->chartSWF['stackedcolumn3dlinedy'][0]="StackedColumn3DLineDY";
$this->chartSWF['stackedcolumn3dlinedy'][1]=2;
$this->chartSWF['msstackedcolumn2d'][0]="MSStackedColumn2D";
$this->chartSWF['msstackedcolumn2d'][1]=4;
// FusionCharts charts added since v3.2
$this->chartSWF['stackedcolumn2dline'][0]="StackedColumn2DLine";
$this->chartSWF['stackedcolumn2dline'][1]=2;
$this->chartSWF['stackedcolumn3dline'][0]="StackedColumn3DLine";
$this->chartSWF['stackedcolumn3dline'][1]=2;
$this->chartSWF['marimekko'][0]="Marimekko";
$this->chartSWF['marimekko'][1]=2;
$this->chartSWF['zoomline'][0]="ZoomLine";
$this->chartSWF['zoomline'][1]=2;
// PowerCharts
$this->chartSWF['msspline'][0]="MSSpline";
$this->chartSWF['msspline'][1]=1;
$this->chartSWF['mssplinearea'][0]="MSSplineArea";
$this->chartSWF['mssplinearea'][1]=1;
$this->chartSWF['errorbar2d'][0]="ErrorBar2D";
$this->chartSWF['errorbar2d'][1]=2;
$this->chartSWF['errorline'][0]="ErrorLine";
$this->chartSWF['errorline'][1]=2;
$this->chartSWF['inversemsarea'][0]="InverseMSArea";
$this->chartSWF['inversemsarea'][1]=2;
$this->chartSWF['inversemscolumn2d'][0]="InverseMSColumn2D";
$this->chartSWF['inversemscolumn2d'][1]=2;
$this->chartSWF['inversemsline'][0]="InverseMSLine";
$this->chartSWF['inversemsline'][1]=2;
$this->chartSWF['radar'][0]="Radar";
$this->chartSWF['radar'][1]=2;
$this->chartSWF['logmscolumn2d'][0]="LogMSColumn2D";
$this->chartSWF['logmscolumn2d'][1]=2;
$this->chartSWF['logmsline'][0]="LogMSLine";
$this->chartSWF['logmsline'][1]=2;
$this->chartSWF['candlestick'][0]="CandleStick";
$this->chartSWF['candlestick'][1]=2;
$this->chartSWF['multilevelpie'][0]="MultiLevelPie";
$this->chartSWF['multilevelpie'][1]=2;
$this->chartSWF['multiaxisline'][0]="MultiAxisLine";
$this->chartSWF['multiaxisline'][1]=2;
$this->chartSWF['msstepline'][0]="MSStepLine";
$this->chartSWF['msstepline'][1]=2;
$this->chartSWF['boxandwhisker2d'][0]="BoxAndWhisker2D";
$this->chartSWF['boxandwhisker2d'][1]=2;
$this->chartSWF['heatmap'][0]="HeatMap";
$this->chartSWF['heatmap'][1]=2;
$this->chartSWF['dragcolumn2D'][0]="DragColumn2D";
$this->chartSWF['dragcolumn2D'][1]=2;
$this->chartSWF['dragline'][0]="DragLine";
$this->chartSWF['dragline'][1]=2;
$this->chartSWF['dragarea'][0]="DragArea";
$this->chartSWF['dragarea'][1]=2;
$this->chartSWF['dragnode'][0]="DragNode";
$this->chartSWF['dragnode'][1]=2;
// FusionWidgets
$this->chartSWF['realtimearea'][0]="RealTimeArea";
$this->chartSWF['realtimearea'][1]=2;
$this->chartSWF['realtimecolumn'][0]="RealTimeColumn";
$this->chartSWF['realtimecolumn'][1]=2;
$this->chartSWF['realtimeline'][0]="RealTimeLine";
$this->chartSWF['realtimeline'][1]=2;
$this->chartSWF['realtimestackedarea'][0]="RealTimeStackedArea";
$this->chartSWF['realtimestackedarea'][1]=2;
$this->chartSWF['realtimestackedcolumn'][0]="RealTimeStackedColumn";
$this->chartSWF['realtimestackedcolumn'][1]=2;
$this->chartSWF['realtimelinedy'][0]="RealTimeLineDY";
$this->chartSWF['realtimelinedy'][1]=2;
$this->chartSWF['gantt'][0]="Gantt";
$this->chartSWF['gantt'][1]=2;
$this->chartSWF['sparkline'][0]="SparkLine";
$this->chartSWF['sparkline'][1]=2;
$this->chartSWF['sparkcolumn'][0]="SparkColumn";
$this->chartSWF['sparkcolumn'][1]=2;
$this->chartSWF['sparkwinloss'][0]="SparkWinLoss";
$this->chartSWF['sparkwinloss'][1]=2;
$this->chartSWF['angulargauge'][0]="AngularGauge";
$this->chartSWF['angulargauge'][1]=2;
$this->chartSWF['bulb'][0]="Bulb";
$this->chartSWF['bulb'][1]=2;
$this->chartSWF['cylinder'][0]="Cylinder";
$this->chartSWF['cylinder'][1]=2;
$this->chartSWF['hled'][0]="HLED";
$this->chartSWF['hled'][1]=2;
$this->chartSWF['hlinearGauge'][0]="HLinearGauge";
$this->chartSWF['hlinearGauge'][1]=2;
$this->chartSWF['thermometer'][0]="Thermometer";
$this->chartSWF['thermometer'][1]=2;
$this->chartSWF['vled'][0]="VLED";
$this->chartSWF['vled'][1]=2;
$this->chartSWF['hbullet'][0]="HBullet";
$this->chartSWF['hbullet'][1]=2;
$this->chartSWF['vbullet'][0]="VBullet";
$this->chartSWF['vbullet'][1]=2;
$this->chartSWF['drawingpad'][0]="DrawingPad";
$this->chartSWF['drawingpad'][1]=2;
# Series Type #3
$this->chartSWF['bubble'][0]="Bubble";
$this->chartSWF['bubble'][1]=3;
$this->chartSWF['scatter'][0]="Scatter";
$this->chartSWF['scatter'][1]=3;
//PowerCharts
$this->chartSWF['selectscatter'][0]="SelectScatter";
$this->chartSWF['selectscatter'][1]=3;
$this->chartSWF['errorscatter'][0]="ErrorScatter";
$this->chartSWF['errorscatter'][1]=3;
# Series Type #4
$this->chartSWF['msstackedcolumn2dlinedy'][0]="MSStackedColumn2DLineDY";
$this->chartSWF['msstackedcolumn2dlinedy'][1]=4;
}
/**
* renderChart renders FusionCharts with JavaScript + HTML code required to embed a chart.
*
* This function returns an HTML with a DIV and a SCRIPT tag. The DIV contains an ID which
* is set in this format $chartId + "DIV". Thd DIV is followed by a JavaScript snippet
* that contains FusionCharts JavaScript class' constructor function - new FusionCharts(),
*
* @param chartSWF String - SWF File Name (and Path) of the chart which you intend to plot
* @param dataUrl String - If you intend to use dataUrl method (XML or JSON as Url), pass the URL
* as this parameter. Otherwise, set it to "" (in case of dataStr method)
* @param dataStr String - If you intend to use dataStr method (embedded XML or JSON), pass the
* XML/JSON data as this parameter. Otherwise, set it to "" (in case of dataUrl method)
* @param chartId String - Id for the chart, using which it will be recognized in the HTML page.
* Each chart on the page needs to have a unique Id.
* @param chartWidth String - Intended width for the chart (in pixels WITHOUT px suffix or in percent)
* @param chartHeight String - Intended height for the chart (in pixels WITHOUT px suffix or in percent)
* @param debugMode Boolean - Whether to start the chart in debug mode
* @param registerWithJS Boolean - Whether to ask chart to register itself with JavaScript
* @param allowTransparent Boolean - Whether to allow the chart to have transparent background. Additionally this set the chart to get rendered in opaque mode
*
* @return Chart HTML + JavaScript code to be added into web page as String
*/
function renderChartJS( $chartSWF, $dataUrl, $dataStr, $chartId, $chartWidth, $chartHeight, $debugMode=false, $registerWithJS=true, $allowTransparent=false )
{
// select data format xml/json/xmlurl/jsonurl
$dataFormat = ( $this->FC_GetConfiguration ("dataFormat")=="" ? "xml" : $this->FC_GetConfiguration ("dataFormat") ) . ($dataStr=="" ? "url" : "");
// if renderAt is specified explicitely skip creation of DIV
$renderAtDiv = "<!-- The chart will be rendered inside div having id = ". @($this->FC_GetConfiguration ("renderAt")) ." -->";
if ($this->FC_GetConfiguration ("renderAt")=="")
{
$renderAtDiv = "<div id=\"{$chartId}Div\">Chart</div>";
$this->FC_SetConfiguration("renderAt", "{$chartId}Div" );
}
// set swf
$this->FC_SetConfiguration("swfUrl" , $chartSWF);
// set dataformat
$this->FC_SetConfiguration("dataFormat" , $dataFormat);
// set id
$this->FC_SetConfiguration("id", $chartId);
//set width
$this->FC_SetConfiguration("width", $chartWidth);
// set height
$this->FC_SetConfiguration("height", $chartHeight);
// if debug mode is set on set it on
if ($debugMode) $this->FC_SetConfiguration("debugMode", $this->boolToNum($debugMode) );
// selection of wmode
// If wmode is set explicitely using setWindowMode it sets a reserved setting called forcedwmode
// The setting forcedwmode takes priority over $allowTransparent parameter
// If $allowTransparent parameter is set to true take transparent as wmode and set it
$wmode = $this->FC_GetConfiguration("forcedwmode" , "constants");
if ( $wmode == "" ) $wmode = $allowTransparent ? "transparent" : "";
if ( $wmode != "" ) $this->FC_SetConfiguration("wmode", $wmode);
// remove all nwelines from dataSource
$dataSource = @(preg_replace("/[\n\r]/","",($dataStr == "" ? $dataUrl : $dataStr )));
// Set dataSource JS property. If JSON string is passed the value is set directly without enclosing in quoted
// This would provide a proper JSON to the chart
// For the rest of the cases the values are set enclosed with quotes
$datasource_json = " \"dataSource\" : " . ( $dataFormat == "json" ? $dataSource : ("\"". @(str_replace('"','\"',$dataSource)."\"")));
// parse all chart config and set it to JSON Object for new JavaScript constructor
$chart_config_json = "{ " .$this->fc_encode_json( $this->FC_GetConfiguration("params") ) . ", $datasource_json }";
//First we create a new DIV for each chart. We specify the id of DIV as "chartId" + Div.
//DIV names are case-sensitive.
// The Steps in the script block below are:
//
// 1) In the DIV the text "Chart" is shown to users before the chart has started loading
// (if there is a lag in relaying SWF from server). This text is also shown to users
// who do not have Flash Player installed. You can configure it as per your needs.
//
// 2) The chart is rendered using FusionCharts Class. Each chart's instance (JavaScript) Id
// is named as chart_"chartId".
//
// 3) Check whether we've to provide data using dataStr method or dataUrl method
// save the data for usage below
// generate js code for data provider
// build FusionCharts HTML + JS
$chart_HTML_JS = <<<HTML_JS
<!-- START Code Block for Chart {$chartId} -->
{$renderAtDiv}
<script type="text/javascript" ><!--
// Instantiate the Chart
if ( FusionCharts("{$chartId}") && FusionCharts("{$chartId}").dispose ) FusionCharts("{$chartId}").dispose();
var chart_{$chartId} = new FusionCharts( {$chart_config_json} ).render();
// --></script>
<!-- END Script Block for Chart {$chartId} -->
HTML_JS;
$this->FC_INITIALIZE();
// return HTML + JS
return $chart_HTML_JS;
}
/**
* renderChartHTML renders FusionCharts using HTML embedding method.
*
* This function does NOT embed the chart using JavaScript class. Instead, it uses
* direct HTML embedding using OBJECT/EMBED HTML tags.
*
* @param chartSWF String - SWF File Name (and Path) of the chart which you intend to plot
* @param dataUrl String - If you intend to use dataUrl method (XML as Url only, JSON not supported), pass the URL
* as this parameter. Otherwise, set it to "" (in case of dataStr method)
* @param dataStr String - If you intend to use dataStr method (embedded XML), pass the XML (JSON not supported)
* data as this parameter. Otherwise, set it to "" (in case of dataUrl method)
* @param chartId String - Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.
* @param chartWidth String - Intended width for the chart (in pixels WITHOUT px suffix or in percent)
* @param chartHeight String - Intended height for the chart (in pixels WITHOUT px suffix or in percent)
* @param debugMode Boolean - Whether to start the chart in debug mode
* @param registerWithJS Boolean - Whether to ask chart to register itself with JavaScript
* @param allowTransparent Boolean - Whether to allow the chart to have transparent background. Additionally this set the chart to get rendered in opaque mode
*
* @return Chart HTML code to be added into web page as String
*/
function renderChartHTML($chartSWF, $dataUrl, $dataStr, $chartId, $chartWidth, $chartHeight, $debugMode=false, $registerWithJS=false, $allowTransparent="")
{
// detect ssl and rename http:// with https://
if ($this->FC_DetectSSL())
{
$this->FC_SetConfiguration("pluginspage", str_replace("http://", "https://", $this->FC_GetConfiguration("pluginspage")));
$this->FC_SetConfiguration("codebase", str_replace("http://", "https://", $this->FC_GetConfiguration("codebase")));
}
// replace all " in XML with '
$dataStr = @(str_replace('"',"'",$dataStr));
// set wmode
$wmode = $this->FC_GetConfiguration("forcedwmode" , "constants");
if ( $wmode == "" ) $wmode = $allowTransparent ? "transparent" : "opaque";
// refer to global configuration storage
$this->FC_SetConfigurations(
array (
"movie" => $chartSWF,
"src" => $chartSWF,
"dataXML" => $dataStr,
"dataURL" => $dataUrl,
"width" => $chartWidth,
"height" => $chartHeight,
"chartWidth" => $chartWidth,
"chartHeight" => $chartHeight,
"DOMId" => $chartId,
"id" => $chartId,
"debugMode" => boolToNum($debugMode),
"wmode" => $wmode
)
);
// Generate the FlashVars string based on whether dataUrl has been provided
// or dataXML.
$strFlashVars = $this->FC_Transform($this->FC_GetConfiguration("fvars"), "&{key}={value}");
$this->FC_SetConfiguration ("flashvars", $strFlashVars );
$strObjectNode = "<object " . $this->FC_Transform(FC_GetConfiguration("object"), " {key}=\"{value}\"") . " >\n" ;
$strObjectParamsNode = $this->FC_Transform(FC_GetConfiguration("objparams"), "\t<param name=\"{key}\" value=\"{value}\">\n") ;
$strEmbedNode = "<embed " . $this->FC_Transform(FC_GetConfiguration("embed"), " {key}=\"{value}\"") . " />\n" ;
$HTML_chart = <<<HTMLCHART
<!-- START Code Block for Chart $chartId -->
{$strObjectNode}
{$strObjectParamsNode}
{$strEmbedNode}
</object>
<!-- END Code Block for Chart $chartId -->
HTMLCHART;
$this->FC_INITIALIZE();
return $HTML_chart;
}
/**
* Enables Print Manager for Mozilla browsers
*
* This function adds a small JavaScript snippet to the page which enables the Managed Print option for Mozilla based browsers
*
* There is an optional parameter $directWriteToPage which if set to true would write the code directly to page. Otherwise the
* code snippet is returned as string
*
* @param directWriteToPage Boolean - Whether to write the JavaScript code directly to page or return as string
*
* @return A blank string when the code is directly written to page, otherwize, the JavaScript as string.
*/
function enablePrintManager($directWriteToPage = true )
{
$strHTML = "<script type=\"text/javascript\"><!--\n if(FusionCharts && FusionCharts.printManager) FusionCharts.printManager.enabled(true);\n// -->\n</script>";
if ($directWriteToPage==true) { echo $strHTML; return "" ; } else return $strHTML;
}
/**
* sets the dataformat to be provided to charts (json/xml)
*
* @param format String - data format. Default is 'xml'. Other format is 'json'
*
*/
function setDataFormat($format="xml")
{
// stores the dataformat in global configuration store
$this->FC_SetConfiguration ("dataformat", $format);
}
/**
* sets renderer type (flash/javascript)
*
* @param renderer String - Name of the renderer. Default is 'flash'. Other possibility is 'javascript'
*
*/
function setRenderer( $renderer="flash" )
{
// stores the renderer name in global configuration store
$this->FC_SetConfiguration ("renderer", strtolower($renderer));
}
/**
* explicitely sets window mode (window(detault)/transpatent/opaque)
*
* @param mode String - Name of the mode. Default is 'window'. Other possibilities are 'transparent'/'opaque'
*
*/
function setWindowMode( $mode="window" )
{
// stores the window mode to configuration store to a separare
$this->FC_SetConfiguration ( "forcedwmode", $mode, "constants" );
}
/**
* FC_SetConfiguration sets various configurations of FusionCharts
*
* It takes configuration names as first parameter and its value a second parameter
* There are config groups which can contain common configuration names. All config names in all groups gets set with this value
* unless group is specified explicitely
*
* @param name String - name of configuration
* @param value String - value of configuration
* @param group String - Name of the configuration group (params/fvars/object/objparams/embed/constants)
* @param addNew Boolean - Whether a new configuration can be added
*
* @return true if values is set. False if value is not set. In case of a new configuration it sets and returns true.
*/
function FC_SetConfiguration ( $name="", $value="" , $group = "", $addNew = true )
{
$isSet=false;
if ( $group != "" && isset($this->FC_DEFAULT_CONFIG[strtolower($group)]) )
{
// set in global configuration store
foreach ($this->FC_DEFAULT_CONFIG[strtolower($group)] as $skey => $svalue)
{
if( strtolower($skey) == strtolower($name) )
$this->FC_DEFAULT_CONFIG[strtolower($group)][ $skey ] = $value;
$isSet = true;
}
}
else
{
foreach ( $this->FC_DEFAULT_CONFIG as $ckey => $cvalue)
{
foreach ($cvalue as $skey => $svalue)
{
if ( strtolower($skey) == strtolower($name) )
{
$this->FC_DEFAULT_CONFIG[$ckey][$skey] = $value;
$isSet = true;
}
}
}
}
if (!$isSet && $group != "" && $addNew)
{
$this->FC_DEFAULT_CONFIG[$group][$name] = $value;
$isSet = true;
}
return $isSet;
}
/**
* FC_GetConfiguration retrives the values stored for various FusionCharts Configurations
* Configuration name is to be pased as parameter. Optional group name can be passed.
*
* The Configuration groups are - (params/fvars/object/objparams/embed/constants)
*
*
* @param name String - name of configuration or configuration group (params/fvars/object/objparams/embed/constants)
* @param group String - name of configuration group to search for (params/fvars/object/objparams/embed/constants)
*
* @return value of configuration as String or if seeting not defined NULL
* If a settig group name is specified it returns an Array containg all configurations of that group
*
*/
function FC_GetConfiguration( $name, $group ="" )
{
if ( $group == "" )
{
// if the configuration is in store
foreach ( $this->FC_DEFAULT_CONFIG as $ckey => $cvalue )
{
if ( strtolower($name) == strtolower($ckey) )
{
return $cvalue;
}
else
{
foreach ($cvalue as $skey => $svalue)
{
if ( strtolower($skey) == strtolower($name) )
{
return $svalue;
}
}
}
}
}
else
{
if( isset($this->FC_DEFAULT_CONFIG[$group]) )
{
foreach ($this->FC_DEFAULT_CONFIG[$group] as $skey => $svalue)
{
if ( strtolower($skey) == strtolower($name) )
{
$this->FC_DEFAULT_CONFIG[$group][$skey] = $svalue;
}
}
}
}
return NULL;
}
/**
* Sets a collection of configurations
*
* @param objConfig Array - An Array of configurations with key as configuration name and values as configuration value
*/
function FC_SetConfigurations( $objConfig )
{
// iterate through array
foreach ($objConfig as $skey => $svalue)
{
// set config
$this->FC_SetConfiguration ( $skey, $svalue );
}
}
/**
* ---------------------------------------------------------------------------------------
* Helper functions
* ---------------------------------------------------------------------------------------
*/
/**
* boolToNum function converts boolean values to numeric (1/0)
* Converts Boolean true to 1 and false to 0
*
* @param value Varient - Can be Boolean true or false or numeric value
*
* @return 1/0. true returns 1. false returns 0.
*/
function boolToNum($bVal) {
return (($bVal==true || $bVal==1 || $bVal=="true" ) ? 1 : 0);
}
/**
* encodedataUrl function encodes the dataUrl before it's served to FusionCharts.
* If you've parameters in your dataUrl, you necessarily need to encode it.
*
* @param strdataUrl String - dataUrl to be fed to chart
* @param addNoCacheStr Boolean - Whether to add aditional string to URL to disable caching of data
*
* @return URLEncoded Url
*/
function encodedataUrl($strdataUrl, $addNoCacheStr=false) {
//Add the no-cache string if required
if ($addNoCacheStr==true) {
// We add ?FCCurrTime=xxyyzz
// If the dataUrl already contains a ?, we add &FCCurrTime=xxyyzz
// We replace : with _, as FusionCharts cannot handle : in URLs
if (strpos($strdataUrl,"?")<>0)
$strdataUrl .= "&FCCurrTime=" . Date("H_i_s");
else
$strdataUrl .= "?FCCurrTime=" . Date("H_i_s");
}
// URL Encode it
return urlencode($strdataUrl);
}
/**
* datePart function converts MySQL date based on requested mask
*
* @param mask String - what part of the date to return "m' for month,"d" for day, and "y" for year
* @param dateTimeStr String - MySQL date/time format (yyyy-mm-dd HH:ii:ss)
*
* @return converted date
*/
function datePart($mask, $dateTimeStr) {
@list($datePt, $timePt) = explode(" ", $dateTimeStr);
$arDatePt = explode("-", $datePt);
$dataStr = "";
// Ensure we have 3 parameters for the date
if (count($arDatePt) == 3) {
list($year, $month, $day) = $arDatePt;
// determine the request
switch ($mask) {
case "m": return $month;
case "d": return $day;
case "y": return $year;
}
// default to mm/dd/yyyy
return (trim($month . "/" . $day . "/" . $year));
}
return $dataStr;
}
/**
* Converts associative array to To JSON String
*
* @param mask String - what part of the date to return "m' for month,"d" for day, and "y" for year
* @param dateTimeStr String - MySQL date/time format (yyyy-mm-dd HH:ii:ss)
*
* @return converted date
*/
function fc_encode_json( $json , $enclosed = false)
{
$strjson = "";
if($enclosed) $strjson .= "{";
$strjson .= $this->FC_Transform ($json, " \"{key}\" : \"{value}\", ");
$strjson = preg_replace("/, $/","", $strjson );
if($enclosed)$strjson .= "}";
return $strjson ;
}
/**
* Transforms an associaitive array to string
*
*
* @param arr Array - Associative array
* @param tFormat String - String builder format. The format is a string with placeholder for key and value.
* The function iterated through the array
* replaces all "{key}" (placeholder for key) in the String with the key name of the array element
* replaces all "{value}" (placeholder for value) in the String with the value associated with the above key
*
* @param ignoreBlankValues Boolean - If true it igonores all elements with blank values
*
* @return converted date
*/
function FC_Transform($arr, $tFormat="", $ignoreBlankValues = true)
{
$converted = "";
foreach ($arr as $skey => $svalue)
{
if($ignoreBlankValues && $svalue== "" ) continue;
$TFApplied = preg_replace("/{key}/",$skey, $tFormat);
$TFApplied = preg_replace("/{value}/",$svalue, $TFApplied);
$converted .= $TFApplied;
}
return $converted;
}
/**
* Initializes FusionCharts generic configurations
*
* Prepares the wrapper to load default chart configurations
*
*/
function FC_INITIALIZE()
{
/**
* Global storage of chart configurations
*
* debugMode : Sets debug mode of chart on
* RegisterWithJS : sets the chart to communicate with JavaScript
* wmode : sets window mode - possible values "window"/"transparent"/opaque
* scaleMode : 'default value is 'NoScale', other values are 'ExactFit', 'showAll', 'NoBorder'
* bgColor : set the flash player's background color. This gets shown up if the chart
* background alpha is set less than 100 and wmode is not transparent
* lang : language, default is english
* detectflashversion : sets FusionCharts JavaScript class to check version of Flash Player >= 8
* AutoInstallRedirect : redirects to Flash Player installation page if version is > 8
* renderer : sets the current FusionCharts renderer. It can be "flash" or "javascript"
* dataformat : sets the data format of FusionCharts. Can be "xml" or "json"
*/
$this->FC_DEFAULT_CONFIG["params"][ "swfUrl" ] = "" ;
$this->FC_DEFAULT_CONFIG["params"][ "width" ] = "" ;
$this->FC_DEFAULT_CONFIG["params"][ "height" ] = "" ;
$this->FC_DEFAULT_CONFIG["params"][ "renderAt" ] = "" ;
$this->FC_DEFAULT_CONFIG["params"][ "renderer" ] = "" ;
$this->FC_DEFAULT_CONFIG["params"][ "dataSource" ] = "" ;
$this->FC_DEFAULT_CONFIG["params"][ "dataFormat" ] = "" ;
$this->FC_DEFAULT_CONFIG["params"][ "id" ] = "" ;
$this->FC_DEFAULT_CONFIG["params"][ "lang" ] = "" ;
$this->FC_DEFAULT_CONFIG["params"][ "debugMode" ] = "" ;
$this->FC_DEFAULT_CONFIG["params"][ "registerWithJS" ] = "" ;
$this->FC_DEFAULT_CONFIG["params"][ "detectFlashVersion" ] = "" ;
$this->FC_DEFAULT_CONFIG["params"][ "autoInstallRedirect" ] = "" ;
$this->FC_DEFAULT_CONFIG["params"][ "wMode" ] = "" ;
$this->FC_DEFAULT_CONFIG["params"][ "scaleMode" ] = "" ;
$this->FC_DEFAULT_CONFIG["params"][ "menu" ] = "" ;
$this->FC_DEFAULT_CONFIG["params"][ "bgColor" ] = "" ;
$this->FC_DEFAULT_CONFIG["params"][ "quality" ] = "" ;
$this->FC_DEFAULT_CONFIG["fvars"][ "dataURL" ] = "" ;
$this->FC_DEFAULT_CONFIG["fvars"][ "dataXML" ] = "" ;
$this->FC_DEFAULT_CONFIG["fvars"][ "chartWidth" ] = "" ;
$this->FC_DEFAULT_CONFIG["fvars"][ "chartHeight" ] = "" ;
$this->FC_DEFAULT_CONFIG["fvars"][ "DOMId" ] = "" ;
$this->FC_DEFAULT_CONFIG["fvars"][ "registerWithJS" ] = "1" ;
$this->FC_DEFAULT_CONFIG["fvars"][ "debugMode" ] = "0" ;
$this->FC_DEFAULT_CONFIG["fvars"][ "scaleMode" ] = "noScale" ;
$this->FC_DEFAULT_CONFIG["fvars"][ "lang" ] = "EN" ;
$this->FC_DEFAULT_CONFIG["object"][ "height" ] = "" ;
$this->FC_DEFAULT_CONFIG["object"][ "width" ] = "" ;
$this->FC_DEFAULT_CONFIG["object"][ "id" ] = "" ;
$this->FC_DEFAULT_CONFIG["object"][ "classid" ] = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" ;
$this->FC_DEFAULT_CONFIG["object"][ "codebase" ] = "http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" ;
$this->FC_DEFAULT_CONFIG["objparams"][ "movie" ] = "" ;
$this->FC_DEFAULT_CONFIG["objparams"][ "FlashVars" ] = "" ;
$this->FC_DEFAULT_CONFIG["objparams"][ "scaleMode" ] = "noScale" ;
$this->FC_DEFAULT_CONFIG["objparams"][ "wmode" ] = "opaque" ;
$this->FC_DEFAULT_CONFIG["objparams"][ "bgColor" ] = "" ;
$this->FC_DEFAULT_CONFIG["objparams"][ "quality" ] = "best" ;
$this->FC_DEFAULT_CONFIG["objparams"]["allowScriptAccess"] = "always" ;
$this->FC_DEFAULT_CONFIG["objparams"][ "swLiveConnect" ] = "" ;
$this->FC_DEFAULT_CONFIG["objparams"][ "base" ] = "" ;
$this->FC_DEFAULT_CONFIG["objparams"][ "align" ] = "" ;
$this->FC_DEFAULT_CONFIG["objparams"][ "salign" ] = "" ;
$this->FC_DEFAULT_CONFIG["objparams"][ "scale" ] = "" ;
$this->FC_DEFAULT_CONFIG["objparams"][ "menu" ] = "" ;
$this->FC_DEFAULT_CONFIG["embed"][ "height" ] = "" ;
$this->FC_DEFAULT_CONFIG["embed"][ "width" ] = "" ;
$this->FC_DEFAULT_CONFIG["embed"][ "id" ] = "" ;
$this->FC_DEFAULT_CONFIG["embed"][ "src" ] = "" ;
$this->FC_DEFAULT_CONFIG["embed"][ "flashvars" ] = "" ;
$this->FC_DEFAULT_CONFIG["embed"][ "name" ] = "" ;
$this->FC_DEFAULT_CONFIG["embed"][ "scaleMode" ] = "noScale" ;
$this->FC_DEFAULT_CONFIG["embed"][ "wmode" ] = "opaque" ;
$this->FC_DEFAULT_CONFIG["embed"][ "bgColor" ] = "" ;
$this->FC_DEFAULT_CONFIG["embed"][ "quality" ] = "best" ;
$this->FC_DEFAULT_CONFIG["embed"]["allowScriptAccess"] = "always" ;
$this->FC_DEFAULT_CONFIG["embed"]["type"] = "application/x-shockwave-flash";
$this->FC_DEFAULT_CONFIG["embed"]["pluginspage"]= "http://www.macromedia.com/go/getflashplayer" ;
$this->FC_DEFAULT_CONFIG["embed"][ "swLiveConnect" ] = "" ;
$this->FC_DEFAULT_CONFIG["embed"][ "base" ] = "" ;
$this->FC_DEFAULT_CONFIG["embed"][ "align" ] = "" ;
$this->FC_DEFAULT_CONFIG["embed"][ "salign" ] = "" ;
$this->FC_DEFAULT_CONFIG["embed"][ "scale" ] = "" ;
$this->FC_DEFAULT_CONFIG["embed"][ "menu" ] = "" ;
$this->FC_DEFAULT_CONFIG["constants"][ "forcedwmode" ] = "" ;
}
/**
* Initializes FusionCharts Static configurations
*
* Prepares the wrapper to load default chart configurations
*
*/
function FC_INITSTATIC()
{
$this->FC_DEFAULT_CONFIG["constants"][ "scriptBaseUri" ] = "" ;
}
/**
* Detects SSL
*
* Returns true if SSL is found
*
*/
function FC_DetectSSL(){
if(@$_SERVER["https"] == "on"){
return true;
} elseif (@$_SERVER["https"] == 1){
return true;
} elseif (@$_SERVER['SERVER_PORT'] == 443) {
return true;
} else {
return true;
}
}
}
?>