pandorafms/pandora_console/include/graphs/FusionCharts/FusionCharts_Gen.php

1880 lines
60 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/*
FUSIONCHARTS FREE API PHP CLASS
Author : Infosoft Global Pvt. Ltd.
version : FREE
Company : Infosoft Global Pvt. Ltd.
FusionCharts Class easily handles All FusionCharts XML Structures like
graph, categories, dataset, set, Trend Lines, [vline, styles (for Future)] etc.
Its easy to use, it binds data into FusionCharts XML Structures
*/
include_once('FusionCharts.php');
class FusionCharts{
var $chartType; # Chart Friendly Name
var $chartID; # ID of the Chart for JS interactivity(optional)
var $SWFFile; # Name of the required FusionCharts SWF file
var $SWFPath; # relative path of FusionCharts SWF files
var $width; # FusionCharts width
var $height; # FusionCharts height
# attribute Delimiter
var $del;
# Chart XML string
var $strXML;
# Chart Series Types : 1 => single series, 2=> multi-series, 5=>Gantt (
# For Future Use : 3=> scatter and bubble, 4=> MSStacked
var $seriesType;
# Charts Atribute array
var $chartParams = array(); #List of Chart Parameters
var $chartParamsCounter; #Number 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 array
var $trendLines = array(); # trendLines array
var $tLineCounter; # trendLines array counter
#chart messages
var $chartMSG;
var $chartSWF = array(); # Charts SWF array
var $arr_FCColors = array(); # Color Set to be applied to dataplots
#############============ For Gantt Chart ============================
# Gantt categories
var $GT_categories = array();
var $GT_categories_Counter;
var $GT_categoriesParam = array();
var $GT_subcategories_Counter;
# Gantt processes
var $GT_processes = array();
var $GT_processes_Counter;
var $GT_processes_Param;
# Gantt Tasks
var $GT_Tasks = array();
var $GT_Tasks_Counter;
var $GT_Tasks_Param;
# Gantt Connectors
var $GT_Connectors = array();
var $GT_Connectors_Counter;
var $GT_Connectors_Param;
# Gantt Milestones
var $GT_Milestones = array();
var $GT_Milestones_Counter;
var $GT_Milestones_Param;
# Gantt datatable
var $GT_datatable = array();
var $GT_datatable_Counter;
var $GT_datatableParam;
var $GT_dataColumnParam = array();
var $GT_subdatatable_Counter;
#------- For Futute Use (start)----------------
# Gantt legend
var $GT_legend = array();
var $GT_legend_Counter;
var $GT_legend_Param;
#------- For Futute Use (end)----------------
# JS Constrator
var $debugMode;
var $registerWithJS;
var $bgColor;
var $scaleMode;
var $lang;
#############============ For Future Use (start)============================
# dataset for MSStackedColumn2D
var $MSSDataset = array(); # dataset array for MSStackedColumn2D
var $MSSDatasetParams = array(); # MSSDataset parameter setting
var $MSSDatasetCounter; # MSSDataset array counter
var $MSSSubDatasetCounter; # ms sub dataset array counter
var $MSSSetCounter; # msset array counter
# lineset
var $lineSet = array(); # lineSet array
var $lineSetParam = array(); # lineSet Parameter setting array
var $lineCounter; # line array counter
var $lineSetCounter; # lineset array counter
var $lineIDCounter; # lineID counter;
# vtrendLines array
var $vtrendLines = array(); # vtrendLines array
var $vtLineCounter; # vtrendLines array counter
# style array
var $styles = array(); # styles array
var $styleDefCounter; # define counter
var $styleAppCounter; # apply counter
#############============ For Future Use (end)============================
# FusionCharts Constructor, its take 4 Parameters.
# when we create object of FusionCharts, then Constructor will auto run and initialize
# chats array parameter like chartType, width, height, chartsID
function FusionCharts($chartType,$width,$height,$chartID=""){
# Setting All Charts Array
$this->setChartArrays();
#initialise colorList
$this->colorInit();
# Setting Chart name
$this->chartType=strtolower($chartType);
# Getting Charts Series Type
$this->getSeriesType();
# Setting Charts Width and Height
$this->width=$width;
$this->height=$height;
# Setting ChartID, Defult is Charts Name
if ($chartID==""){
$chartCounter=@$_SESSION['chartcount'];
if($chartCounter<=0 || $chartCounter==NULL){
$chartCounter=1;
}
$this->chartID=$chartType . $chartCounter;
$_SESSION['chartcount']=++$chartCounter;
}else{
$this->chartID=$chartID;
}
# Setting Defult Parameter Delimiter to ';'
$this->del=";";
# Setting Default SWF Path
$this->SWFPath="";
$this->SWFFile=$this->SWFPath . "FCF_" . $this->chartSWF[$this->chartType][0] . ".swf";
# Initialize categoriesParam
$this->categoriesParam="";
$this->categoryNamesCounter=1;
# Creating Category Array
$this->createCategory($this->categoryNamesCounter);
# Initialize Dataset Variables
$this->datasetCounter=0;
$this->setCounter= 0;
if($this->seriesType>1){
$this->setCounter++;
}
# Initialize MSSDataset Variables
if($this->seriesType==4){
$this->MSSDatasetCounter=0;
$this->MSSSubDatasetCounter=0;
$this->MSSSetCounter=0;
$this->lineCounter=0;
$this->lineSetCounter=0;
$this->lineIDCounter=0;
}
# vTrendLines Array inisialize
if($this->seriesType==3){
$this->vtLineCounter=1;
$this->createvTrendLines($this->vtLineCounter);
}
# TrendLines Array inisialize
$this->tLineCounter=1;
$this->createTrendLines($this->tLineCounter);
# Styles Array inisialize
$this->styleDefCounter=1;
$this->styleAppCounter=1;
$this->createStyles("definition");
$this->createSubStyles("definition","style");
$this->createSubStylesParam("definition","style",$this->styleDefCounter);
$this->GT_categories_Counter=0;
$this->GT_subcategories_Counter=0;
$this->GT_processes_Counter=0;
$this->GT_processes_Param="";
$this->GT_Tasks_Counter=0;
$this->GT_Tasks_Param="";
# Gantt Connectors
$this->GT_Connectors_Counter=0;
$this->GT_Connectors_Param="";
# Gantt datatable
$this->GT_datatable_Counter=0;
$this->GT_datatableParam="";
$this->GT_subdatatable_Counter=0;
# Gantt legend
$this->GT_legend_Counter=0;
$this->GT_legend_Param="";
# JS Constractor
$this->debugMode=false;
$this->registerWithJS=false;
$this->bgColor="";
$this->scaleMode="";
$this->lang="";
$this->chartMSG="";
# XML store Variables
$this->strXML="";
}
##------------ PUBLIC FUNCTIONS ----------------------------------------------------------------
# Setting Parameter Delimiter, Defult Parameter Separator is ";"
function setParamDelimiter($strDel){
$this->del=$strDel;
}
# Setting path of SWF file. file name like FCF_Column3D.swf. where FCF_ is common for all SWF file
function setSWFPath($SWFPath){
$this->SWFPath=$SWFPath;
$this->SWFFile=$this->SWFPath . "FCF_" . $this->chartSWF[$this->chartType][0] . ".swf";
}
# We can add or change single Chart parameter by setChartParam function
# its take Parameter Name and its Value
function setChartParam($paramName, $paramValue){
$this->chartParams[$paramName]=$this->encodeSpecialChars($paramValue);
}
# We can add or change Chart parameter sets by setChartParams function
# its take parameterset [ caption=xyz caption;subCaption=abcd abcd abcd;xAxisName=x axis;yAxisName=y's axis;bgColor=f2fec0;animation=1 ]
# Defult Parameter Separator is ";"
function setChartParams($strParam){
$listArray=explode($this->del,$strParam);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
$this->chartParams[$paramValue[0]]=$this->encodeSpecialChars($paramValue[1]);
}
}
}
# Setting Categories Parameter into categoriesParam variables
function setCategoriesParams($strParam){
$listArray=explode($this->del,$strParam);
# Fetching all value and converting into xml attribute
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
$this->categoriesParam .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}
}
}
# Function addCategoryFromDatabase adding Category from dataset
function addCategoryFromDatabase($query_result, $categoryColumn){
# fetching recordset till eof
while($row = mysql_fetch_array($query_result)){
# adding category
$this->addCategory($row[$categoryColumn],"","" );
}
}
# Function addCategoryFromArray adding Category from Array
function addCategoryFromArray($categoryArray){
# convert array to category set
foreach ($categoryArray as $value) {
# adding category
$this->addCategory($value);
}
}
# Function for create set and catagory, dataset , set from array
function addChartDataFromArray($dataArray, $dataCatArray=""){
if(is_array($dataArray)){
if ($this->seriesType==1){
# Single series Array
# aa[..][..]="name" aa[..][..]="value"
foreach($dataArray as $arrayvalue){
if(is_array($arrayvalue)){
$this->addChartData($arrayvalue[1],"name=" . $arrayvalue[0] );
}
}
}else{
# Multi series Array
if(is_array($dataCatArray)){
foreach($dataCatArray as $value){
$this->addCategory($value);
}
}
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++;
}
}
}
}
}
}
# Function addCategory adding Category and vLine element
function addCategory($label="",$catParam="",$vlineParam = "" ){
$strCatXML="";
$strParam="";
# cheking vlineParam equal blank
if($vlineParam==""){
# cheking catParam not blank
if($catParam!=""){
$listArray=explode($this->del,$catParam);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
# creating parameter set
$strParam .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}
}
}
# adding label and parameter set to category
$strCatXML ="<category name='" . $label . "' " . $strParam . " />";
}else{
$listArray=explode($this->del,$vlineParam);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
# creating parameter set
$strParam .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}
}
# adding parameter set to vLine
$strCatXML="<vLine " . $strParam . " />";
}
# storing into categoryNames array
$this->categoryNames[$this->categoryNamesCounter]=$strCatXML;
# Increase Counter
$this->categoryNamesCounter++;
}
# adding dataset array element
function addDataset($seriesName, $strParam=""){
$this->datasetCounter++;
$this->createDataset($this->datasetCounter);
$this->setCounter++;
$this->createDataValues($this->datasetCounter,"_" . $this->setCounter);
# creating seriesName and dataset parameter set
$tempParam="";
$tempParam ="seriesName='" . $seriesName . "' ";
$listArray=explode($this->del,$strParam);
$color=0;
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
if(strtolower(trim($paramValue[0]))=="color"){
$color=1;
}
$tempParam .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}
}
# setting datasetParam array
$colorParam="";
if($color==0){
$colorParam=" color='" . $this->getColor($this->datasetCounter-1) . "'";
}
$this->datasetParam[$this->datasetCounter]=$tempParam . $colorParam;
}
# Function addChartData adding set data element
function addChartData($value="",$setParam="",$vlineParam = "" ){
$strSetXML="";
# Choosing dataset depend on seriesType and getting XML set
if($this->seriesType>=1 and $this->seriesType<=2){
if($this->seriesType>=1){
if(gettype(strpos($this->chartType,"line"))!="boolean"){
$colorSet=$this->getColor(0);
$this->setChartParams("lineColor=" . $colorSet );
}
if(gettype(strpos($this->chartType,"area"))!="boolean"){
$colorSet=$this->getColor(0);
$this->setChartParams("areaBgColor=" . $colorSet );
}
}
$strSetXML=$this->setSSMSDataArray($value,$setParam,$vlineParam);
}elseif ($this->seriesType==3){
$strSetXML=$this->setScatterBubbleDataArray($value,$setParam,$vlineParam);
}elseif (($this->seriesType==4)){
$strSetXML=$this->setSSMSDataArray($value,$setParam,$vlineParam);
}
# Adding xml set to dataset array and Increase set counter
if ($this->seriesType==1){
$this->dataset[$this->setCounter]=$strSetXML;
$this->setCounter++;
}elseif($this->seriesType>1 and $this->seriesType<4){
$this->dataset[$this->datasetCounter]["_" . $this->setCounter]=$strSetXML;
$this->setCounter++;
}elseif($this->seriesType==4){
$this->MSSDataset[$this->MSSDatasetCounter][$this->MSSSubDatasetCounter][$this->MSSSetCounter]=$strSetXML;
$this->MSSSetCounter++;
}
}
# Function addDatasetsFromDatabase adding dataset and set element by mysql recordset
function addDatasetsFromDatabase($query_result, $ctrlField, $valueField,$datsetParamArray="",$LinkPlaceHolder=""){
# 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="";
# fetching recordset till eof
while($row = mysql_fetch_array($query_result)){
# Creating Control break depending on ctrlField
# if ctrlField value change then dataset will be Generate
if ($tempContrl!=$row[$ctrlField]){
if($i<=$arrLimit){
$tempParam = $datsetParamArray[$i-1];
}else{
$tempParam="";
}
# Adding Dataset
$this->addDataset($row[$ctrlField],$tempParam);
$tempContrl=$row[$ctrlField];
$i++;
}
# Generating URL link
if($LinkPlaceHolder==""){
$paramset="";
}else{
# Generating URL link from getLinkFromPattern
$paramset="link=" . urlencode($this->getLinkFromPattern($row,$LinkPlaceHolder));
}
# Adding set into dataset
$this->addChartData($row[$valueField], $paramset, "");
}
}
# addDataFromDatabase funcion take 5 parameter like query_result, label field, value field
# and initialize dataset variables and link
function addDataFromDatabase($query_result, $db_field_ChartData,$db_field_CategoryNames="", $strParam="",$LinkPlaceHolder=""){
$paramset="";
# fetching recordset till eof
while($row = mysql_fetch_array($query_result)){
if($LinkPlaceHolder==""){
$paramset="";
}else{
# Getting link
$paramset="link=" . urlencode($this->getLinkFromPattern($row,$LinkPlaceHolder));
}
if ($strParam=""){
$strParam=$paramset;
}else{
$strParam .= ";" . $paramset;
}
# covert 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),"name=" . $this->encodeSpecialChars($label) . ";" .$strParam,"" );
}
}
}
# setTLine create TrendLine parameter
function addTrendLine($strParam){
$listArray=explode($this->del,$strParam);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
$this->trendLines[$this->tLineCounter][$paramValue[0]]=$this->encodeSpecialChars($paramValue[1]);
}
}
$this->tLineCounter++;
}
#this function sets chart messages
function setChartMessage($strParam){
$this->chartMSG="?";
$listArray=explode($this->del,$strParam);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
$this->chartMSG.=$paramValue[0] . "=" . $this->encodeSpecialChars($paramValue[1]) . "&";
}
}
$this->chartMSG=substr($this->chartMSG,0,strlen($this->chartMSG)-1);
}
#### - This function is mostly for Future USE -----------------------------
# set JS constructor of FusionCharts.js
function setAddChartParams($debugMode, $registerWithJS=0, $c="", $scaleMode="", $lang=""){
$this->debugMode=$debugMode;
$this->registerWithJS=$registerWithJS;
$this->bgColor=$c;
$this->scaleMode=$scaleMode;
$this->lang=$lang;
}
# getXML render all class arrays to XML output
function getXML(){
$this->strXML="";
# calling getChartParamsXML function for chart parameter
$this->strXML = "<graph " . $this->getChartParamsXML() . " >";
if ($this->seriesType >= 0 and $this->seriesType <= 4) {
# calling getCategoriesXML function for Category element
$this->strXML .= $this->getCategoriesXML();
# calling getDatasetXML function for set element
$this->strXML .= $this->getDatasetXML();
# calling getvTrendLinesXML function for vTrendLines element
if($this->seriesType==3){
$this->strXML .= $this->getvTrendLinesXML();
}
# Calling getLinesetXML
if($this->seriesType==4){
$this->strXML .= $this->getLinesetXML();
}
# calling getTrendLinesXML function for TrendLines element
$this->strXML .= $this->getTrendLinesXML();
# calling getStylesXML function for Styles element
$this->strXML .= $this->getStylesXML();
}else if($this->seriesType == 5) {
$this->strXML .= $this->getGanttCategoriesXML();
$this->strXML .= $this->getProcessesXML();
$this->strXML .= $this->getGanttDatatableXML();
$this->strXML .= $this->getTasksXML();
$this->strXML .= $this->getConnectorsXML();
$this->strXML .= $this->getMilestonesXML();
# calling getTrendLinesXML function for TrendLines element
$this->strXML .= $this->getTrendLinesXML();
# calling getStylesXML function for Styles element
$this->strXML .= $this->getStylesXML();
$this->strXML .= $this->getLegendXML();
}
# Closing Chart element
$this->strXML .= "</graph>";
# Return XML output
return $this->strXML;
}
# Function getXML render all class arrays to XML output
function renderChart(){
$this->strXML=$this->getXML();
$this->SWFFile=$this->SWFPath . "FCF_" . $this->chartSWF[$this->chartType][0] . ".swf";
# print the charts
print renderChart($this->SWFFile . $this->chartMSG,"",$this->strXML,$this->chartID, $this->width, $this->height,$this->debugMode,$this->registerWithJS,$this->bgColor,$this->scaleMode,$this->lang);
}
# Renders Chart form External XML data source
function renderChartFromExtXML($dataXML){
print renderChart($this->SWFFile,"",$dataXML,$this->chartID, $this->width, $this->height,$this->debugMode,$this->registerWithJS,$this->bgColor,$this->scaleMode,$this->lang);
}
##------------ PRIVATE FUNCTIONS ----------------------------------------------------------------
# getDatasetXML create set chart xml
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, we can fetch charts array and convert into XML
# and return like "caption='xyz' xAxisName='x side' ............
function getChartParamsXML(){
$partXML="";
# feching charts each array and converting into chat parameter
foreach($this->chartParams as $part_type => $part_name){
if($part_name!=""){
$partXML .= $part_type . "='" . $this->encodeSpecialChars($part_name) . "' ";
}
}
# Return Chart Parameter
return $partXML;
}
# Function getCategoriesXML for getting Category part XML
function getCategoriesXML(){
if($this->seriesType>1){
$partXML="";
# adding categories parameter
$partXML="<categories " . $this->categoriesParam . " >";
if($this->categoryNamesCounter>1){
foreach($this->categoryNames as $part_type => $part_name){
if($part_name!=""){
# adding elements
if($part_name!="Array"){
$partXML .= $part_name;
}
}
}
}
# Closing <categories>
$partXML .="</categories>";
return $partXML;
}
}
# creating 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!=""){
# adding 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!=""){
# Adding elements
if($part_name1!="Array"){
$partXML .= $part_name1;
}
}
}
$partXML .="</dataset>";
}
return $partXML;
}
}
# getTrendLinesXML create XML output depending on trendLines array
# <trendLines>
# <line startValue='700000' color='009933' displayvalue='Target' />
# </trendLines>
function getTrendLinesXML(){
$partXML="";
$lineXML="";
# fetching trendLines array
foreach($this->trendLines as $l_type => $l_name){
# staring line element
$lineXML .="<line ";
# fetching trendLines array with in array element
foreach($this->trendLines[$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 trendLines element
$pos = strpos($lineXML, "=");
if ($pos!==false){
$partXML = "<trendLines>" . $lineXML . "</trendLines>";
}else{
# return nothing
$partXML="";
}
# return trendLines xml
return $partXML;
}
# adding set element to dataset element for seriesType 1 and 2
function setSSMSDataArray($value="",$setParam="",$vlineParam = "" ){
$strSetXML="";
$strParam="";
$color=0;
if($vlineParam==""){
if($setParam!=""){
$listArray=explode($this->del,$setParam);
# parameter creating
foreach ($listArray as $valueArray) {
if(trim($valueArray)!=""){
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
$strParam .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
if(strtolower(trim($paramValue[0]))=="color"){
$color=1;
}
}
}
}
}
$colorSet="";
if($this->seriesType==1 && (gettype(strpos($this->chartType,"pie"))=="boolean" && gettype(strpos($this->chartType,"line"))=="boolean" && gettype(strpos($this->chartType,"area"))=="boolean")){
if($color==0){
$colorSet=" color='" . $this->getColor($this->setCounter) . "' ";
}
}
# setting set parameter
$strSetXML ="<set value='" . $value . "' " . $strParam . $colorSet . " />";
}else{
$listArray=explode($this->del,$vlineParam);
foreach ($listArray as $valueArray) {
if(trim($valueArray)!=""){
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
$strParam .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}
}
}
# setting vline parameter
$strSetXML="<vLine " . $strParam . " />";
}
return $strSetXML;
}
## - - - - - - Array Init Functions - - --- - -- - - - - - - -- - - - - -
# Function createCategory create array element with in Categories
function createCategory($catID){
$this->categoryNames[$catID]= array();
}
# createDataset dataset array element
function createDataset($dataID){
$this->dataset[$dataID]= array();
}
# creating set dataset array element
function createDataValues($datasetID, $dataID){
$this->dataset[$datasetID][$dataID]= array();
}
# createTrendLines create TrendLines array
function createTrendLines($lineID){
$this->trendLines[$lineID] = array();
}
# setTLine create TrendLine parameter
function setTLine($lineID,$paramName, $paramValue){
$this->trendLines[$lineID][$paramName]=$paramValue;
}
# ----- ---------- ----- Misc utility functions ---- ------ -----------
# converting ' and " to %26apos; and &quot;
function encodeSpecialChars($strValue){
$strValue=str_replace("'","%26apos;",$strValue);
$strValue=str_replace("\"","&quot;",$strValue);
$strValue=str_replace("<","&lt;",$strValue);
$strValue=str_replace(">","&gt;",$strValue);
return $strValue;
}
# Its convert 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;
}
function validateParam($paramValue){
if(count($paramValue)>=2){
if(trim($paramValue[0])==""){
return false;
}
if(trim($paramValue[1])==""){
return false;
}
return true;
}else{
return false;
}
}
# 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;
}
#this function returns a color from a list of colors
function getColor($counter){
return $this->arr_FCColors[$counter % count($this->arr_FCColors)];
}
### ----- Pupulate Color and Chart SWF array ------ ------- ---------------------
function colorInit(){
$this->arr_FCColors[] = "AFD8F8";
$this->arr_FCColors[] = "F6BD0F";
$this->arr_FCColors[] = "8BBA00";
$this->arr_FCColors[] = "A66EDD";
$this->arr_FCColors[] = "F984A1" ;
$this->arr_FCColors[] = "CCCC00" ;//Chrome Yellow+Green
$this->arr_FCColors[] = "999999" ;//Grey
$this->arr_FCColors[] = "0099CC" ;//Blue Shade
$this->arr_FCColors[] = "FF0000" ;//Bright Red
$this->arr_FCColors[] = "006F00" ;//Dark Green
$this->arr_FCColors[] = "0099FF"; //Blue (Light)
$this->arr_FCColors[] = "FF66CC" ;//Dark Pink
$this->arr_FCColors[] = "669966" ;//Dirty green
$this->arr_FCColors[] = "7C7CB4" ;//Violet shade of blue
$this->arr_FCColors[] = "FF9933" ;//Orange
$this->arr_FCColors[] = "9900FF" ;//Violet
$this->arr_FCColors[] = "99FFCC" ;//Blue+Green Light
$this->arr_FCColors[] = "CCCCFF" ;//Light violet
$this->arr_FCColors[] = "669900" ;//Shade of green
$this->arr_FCColors[] = "1941A5" ;//Dark Blue
}
# Setting FusionCharts SWF file array list and series
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['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['funnel'][0]="Funnel";
$this->chartSWF['funnel'][1]=1;
$this->chartSWF['msarea'][0]="MSArea";
$this->chartSWF['msarea'][1]=2;
$this->chartSWF['msarea2d'][0]="MSArea2D";
$this->chartSWF['msarea2d'][1]=2;
$this->chartSWF['msbar2d'][0]="MSBar2D";
$this->chartSWF['msbar2d'][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['mscombi2d'][0]="MSCombi2D";
$this->chartSWF['mscombi2d'][1]=2;
$this->chartSWF['mscombidy2d'][0]="MSCombiDY2D";
$this->chartSWF['mscombidy2d'][1]=2;
$this->chartSWF['msline'][0]="MSLine";
$this->chartSWF['msline'][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['mscolumn2dlinedy'][0]="MSColumn2DLineDY";
$this->chartSWF['mscolumn2dlinedy'][1]=2;
$this->chartSWF['bubble'][0]="Bubble";
$this->chartSWF['bubble'][1]=3;
$this->chartSWF['scatter'][0]="Scatter";
$this->chartSWF['scatter'][1]=3;
$this->chartSWF['msstackedcolumn2dlinedy'][0]="MSStackedColumn2DLineDY";
$this->chartSWF['msstackedcolumn2dlinedy'][1]=4;
$this->chartSWF['msstackedcolumn2d'][0]="MSStackedColumn2D";
$this->chartSWF['msstackedcolumn2d'][1]=2;
$this->chartSWF['gantt'][0]="Gantt";
$this->chartSWF['gantt'][1]=5;
}
####################### GANTT CHART (start) ######################################
# ----------- Public Functions -----------------------------------------------
# Function addCategory adding Category and vLine element
function addGanttCategorySet($catParam=""){
$this->GT_categories_Counter++;
$this->GT_categories[$this->GT_categories_Counter]= array();
$strParam="";
# cheking catParam not blank
if($catParam!=""){
$listArray=explode($this->del,$catParam);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
# creating parameter set
$strParam .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}
}
}
$this->GT_categoriesParam[$this->GT_categories_Counter]=$strParam;
}
# Function addGanttCategory adding Category
function addGanttCategory($label="",$catParam=""){
$strCatXML="";
$strParam="";
# cheking catParam not blank
if($catParam!=""){
$listArray=explode($this->del,$catParam);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
# creating parameter set
$strParam .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}
}
}
# adding label and parameter set to category
$strCatXML ="<category name='" . $label . "' " . $strParam . " />";
# storing into GT_categories array
$this->GT_categories[$this->GT_categories_Counter][$this->GT_subcategories_Counter]=$strCatXML;
# Increase Counter
$this->GT_subcategories_Counter++;
}
# Setting Process Parameter into categoriesParam variables
function setGanttProcessesParams($strParam){
$listArray=explode($this->del,$strParam);
# Fetching all value and converting into xml attribute
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
$this->GT_processes_Param .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}
}
}
# Function addGanttProcess adding Process
function addGanttProcess($label="",$catParam=""){
$strCatXML="";
$strParam="";
# cheking catParam not blank
if($catParam!=""){
$listArray=explode($this->del,$catParam);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
# creating parameter set
$strParam .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}
}
}
# adding label and parameter set to category
$strCatXML ="<process name='" . $label . "' " . $strParam . " />";
# storing into categoryNames array
$this->GT_processes[$this->GT_processes_Counter]=$strCatXML;
# Increase Counter
$this->GT_processes_Counter++;
}
# Setting Tasks Parameter into TaskParam variables
function setGanttTasksParams($strParam){
$listArray=explode($this->del,$strParam);
# Fetching all value and converting into xml attribute
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
$this->GT_Tasks_Param .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}
}
}
# Function addGanttTasks adding Tasks
function addGanttTask($label="",$catParam=""){
$strCatXML="";
$strParam="";
# cheking catParam not blank
if($catParam!=""){
$listArray=explode($this->del,$catParam);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
# creating parameter set
if(trim(strtolower($paramValue[0]))=="link"){
$strParam .= $paramValue[0] . "='" . urldecode($paramValue[1]) . "' ";
}else{
$strParam .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}
}
}
}
# adding label and parameter set to category
$strCatXML ="<task name='" . $label . "' " . $strParam . " />";
# storing into GT_Tasks array
$this->GT_Tasks[$this->GT_Tasks_Counter]=$strCatXML;
# Increase Counter
$this->GT_Tasks_Counter++;
}
# Setting Tasks Parameter into ConnectorsParam variables
function setGanttConnectorsParams($strParam){
$listArray=explode($this->del,$strParam);
# Fetching all value and converting into xml attribute
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
$this->GT_Connectors_Param .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}
}
}
# Function addGanttConnector adding Connector
function addGanttConnector($From,$To,$catParam=""){
$strCatXML="";
$strParam="";
# cheking catParam not blank
if($catParam!=""){
$listArray=explode($this->del,$catParam);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
# creating parameter set
$strParam .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}
}
}
# adding label and parameter set to category
$strCatXML ="<connector fromTaskId='" . $From . "' toTaskId='" . $To . "' " . $strParam . " />";
# storing into GT_Connectors array
$this->GT_Connectors[$this->GT_Connectors_Counter]=$strCatXML;
# Increase Counter
$this->GT_Connectors_Counter++;
}
# Setting Milestones Parameter into MilestonesParam variables
function setGanttMilestonesParams($strParam){
$listArray=explode($this->del,$strParam);
# Fetching all value and converting into xml attribute
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
$this->GT_Milestones_Param .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}
}
}
# Function addGanttMilestones adding Milestones
function addGanttMilestone($taskID,$catParam=""){
$strCatXML="";
$strParam="";
# cheking catParam not blank
if($catParam!=""){
$listArray=explode($this->del,$catParam);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
# creating parameter set
$strParam .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}
}
}
# adding label and parameter set to Milestones
$strCatXML ="<milestone taskId='" . $taskID . "' " . $strParam . " />";
# storing into GT_Milestones array
$this->GT_Milestones[$this->GT_Milestones_Counter]=$strCatXML;
# Increase Counter
$this->GT_Milestones_Counter++;
}
# Setting Legend Parameter into LegendParam variables
function setGanttLegendParams($strParam){
$listArray=explode($this->del,$strParam);
# Fetching all value and converting into xml attribute
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
$this->GT_legend_Param .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}
}
}
# Function addGanttLegendItem adding LegendItem
function addGanttLegendItem($label,$catParam=""){
$strCatXML="";
$strParam="";
# cheking catParam not blank
if($catParam!=""){
$listArray=explode($this->del,$catParam);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
# creating parameter set
$strParam .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}
}
}
# adding label and parameter set to LegendItem
$strCatXML ="<item label='" . $label . "' " . $strParam . " />";
# storing into GT_legend array
$this->GT_legend[$this->GT_legend_Counter]=$strCatXML;
# Increase Counter
$this->GT_legend_Counter++;
}
# Setting Datatable Parameter into DatatableParam variables
function setGanttDatatableParams($strParam){
$listArray=explode($this->del,$strParam);
# Fetching all value and converting into xml attribute
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
$this->GT_datatableParam .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}
}
}
# Function addGanttDatacolumn adding Datacolumn
function addGanttDatacolumn($catParam=""){
$this->GT_datatable_Counter++;
$this->GT_datatable[$this->GT_datatable_Counter]= array();
$strParam="";
# cheking catParam not blank
if($catParam!=""){
$listArray=explode($this->del,$catParam);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
# creating parameter set
$strParam .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}
}
}
$this->GT_dataColumnParam[$this->GT_datatable_Counter]=$strParam;
}
# Function addGanttColumnText adding ColumnText
function addGanttColumnText($label="",$catParam=""){
$strCatXML="";
$strParam="";
# cheking catParam not blank
if($catParam!=""){
$listArray=explode($this->del,$catParam);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
# creating parameter set
$strParam .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}
}
}
# adding label and parameter set to category
$strCatXML ="<text label='" . $label . "' " . $strParam . " />";
# storing into GT_datatable array
$this->GT_datatable[$this->GT_datatable_Counter][$this->GT_subdatatable_Counter]=$strCatXML;
# Increase Counter
$this->GT_subdatatable_Counter++;
}
### ------------- Gantt Private Functoins ----------------------------------------------------------------------
#-- Gantt array init ------------------------------------------------
# Function createCategory create array element with in Categories
function createGanttCategory($catID){
$this->GT_categories[$catID]= array();
}
# Function createGanttDatatable create array element with in Datatable
function createGanttDatatable($catID){
$this->GT_datatable[$catID]= array();
}
#-- GANTT XML genetators -------------------------------------------
# Function getCategoriesXML for getting Category part XML
function getGanttCategoriesXML(){
$partXML="";
foreach($this->GT_categories as $part_type => $part_name){
# adding categories parameter
$partXML .="<categories " . $this->GT_categoriesParam[$part_type] . " >";
foreach($this->GT_categories[$part_type] as $part_type1 => $part_name1){
if($part_name1!=""){
# adding elements
$partXML .= $part_name1;
}
}
# Closing <categories>
$partXML .="</categories>";
}
return $partXML;
}
# Function getProcessesXML for getting Processes part XML
function getProcessesXML(){
$partXML="";
# adding processes parameter
$partXML="<processes " . $this->GT_processes_Param . " >";
foreach($this->GT_processes as $part_type => $part_name){
if($part_name!=""){
# adding elements
$partXML .= $part_name;
}
}
# Closing <categories>
$partXML .="</processes>";
return $partXML;
}
# Function getProcessesXML for getting Processes part XML
function getTasksXML(){
$partXML="";
# adding processes parameter
$partXML="<tasks " . $this->GT_Tasks_Param . " >";
foreach($this->GT_Tasks as $part_type => $part_name){
if($part_name!=""){
# adding elements
$partXML .= $part_name;
}
}
# Closing <tasks>
$partXML .="</tasks>";
return $partXML;
}
# Function getConnectorsXML for getting Connectors part XML
function getConnectorsXML(){
$c=0;
$partXML="";
# adding connectors parameter
$partXML="<connectors " . $this->GT_Connectors_Param . " >";
foreach($this->GT_Connectors as $part_type => $part_name){
if($part_name!=""){
# adding elements
$partXML .= $part_name;
$c++;
}
}
# Closing <connectors>
$partXML .="</connectors>";
if ($c>0){
return $partXML;
}else{
return "";
}
}
# Function getMilestonesXML for getting Milestones part XML
function getMilestonesXML(){
$c=0;
$partXML="";
# adding Milestones parameter
$partXML="<milestones " . $this->GT_Milestones_Param . " >";
foreach($this->GT_Milestones as $part_type => $part_name){
if($part_name!=""){
# adding elements
$partXML .= $part_name;
$c++;
}
}
# Closing <milestones>
$partXML .="</milestones>";
if ($c>0) {
return $partXML;
}else{
return "";
}
}
# Function getLegendXML for getting Legend part XML
function getLegendXML(){
$c=0;
$partXML="";
# adding Legend parameter
$partXML="<legend " . $this->GT_legend_Param . " >";
foreach($this->GT_legend as $part_type => $part_name){
if($part_name!=""){
# adding elements
$partXML .= $part_name;
$c++;
}
}
# Closing <milestones>
$partXML .="</legend>";
if ($c>0) {
return $partXML;
}else{
return "";
}
}
# Function getGanttDatatableXML for getting Category part XML
function getGanttDatatableXML(){
$partXML="";
foreach($this->GT_datatable as $part_type => $part_name){
# adding dataColumn parameter
$partXML .="<dataColumn " . $this->GT_dataColumnParam[$part_type] . " >";
foreach($this->GT_datatable[$part_type] as $part_type1 => $part_name1){
if($part_name1!=""){
# adding elements
$partXML .= $part_name1;
}
}
# Closing <dataColumn>
$partXML .="</dataColumn>";
}
$allPart="<dataTable " . $this->GT_datatableParam . " >" . $partXML . "</dataTable>";
return $allPart;
}
####################### GANTT CHART (end) ######################################
#====================== For Future Use (start) =====================================
##---------PUBLIC functions ----------------------------------------------------
# adding Lineset array and parameter to it
function addLineset($seriesName, $strParam){
$this->createLineset();
$this->lineSetCounter++;
$this->lineSet[$this->lineCounter][$this->lineSetCounter]= array();
$tempParam="";
$tempParam ="seriesName='" . $seriesName . "' ";
$listArray=explode($this->del,$strParam);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
# adding parameter
$tempParam .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}
}
$this->lineIDCounter++;
# setting lineSetParam array with Parameter set
$this->lineSetParam [$this->lineSetCounter]=$tempParam;
}
# adding Line's Set data
function addLinesetData($value="",$setParam="",$vlineParam = "" ){
$strSetXML="";
# getting parameter set
$strSetXML=$this->setSSMSDataArray($value,$setParam,$vlineParam);
# setting paramter to lineSet array
$this->lineSet[$this->lineCounter][$this->lineSetCounter][$this->lineIDCounter]=$strSetXML;
# Increase lineIDCounter
$this->lineIDCounter++;
}
# adding ms dataset and parameter
function addMSSSubDataset($seriesName, $strParam){
$this->MSSSubDatasetCounter++;
$this->MSSDataset[$this->MSSDatasetCounter][$this->MSSSubDatasetCounter]= array();
$tempParam="";
# creating seriesName
$tempParam ="seriesName='" . $seriesName . "' ";
$listArray=explode($this->del,$strParam);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
# creatting MSSDataset parameter set
$tempParam .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}
}
$this->MSSSetCounter++;
# adding Parameter to MSSDatasetParams array
$this->MSSDatasetParams[$this->MSSDatasetCounter][$this->MSSSubDatasetCounter]=$tempParam;
// $this->createMSSSetData();
}
# adding set element to dataset element for seriesType 3
function setScatterBubbleDataArray($value="",$setParam="",$vlineParam = "" ){
$strSetXML="";
$strParam="";
if($vlineParam==""){
if($setParam!=""){
# parameter for set
$listArray=explode($this->del,$setParam);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
# creating parameter sets
$strParam .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}
}
# adding Parameter into set elements
$strSetXML ="<set x='" . $value . "' " . $strParam . " />";
}else{
# Parameter for vLine
$listArray=explode($this->del,$vlineParam);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
$strParam .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' ";
}
}
# adding vLine element
$strSetXML="<vLine " . $strParam . " />";
}
return $strSetXML;
}
# setvTLine create TrendLine parameter
function setVTrendLines($strParam){
$listArray=explode($this->del,$strParam);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
$this->vtrendLines[$this->vtLineCounter][$paramValue[0]]=$this->encodeSpecialChars($paramValue[1]);
}
}
$this->vtLineCounter++;
}
# setSubStylesParam create sub styles array to store parameters
function addStyleDef($styleName,$styleType,$strParam){
$this->styles["definition"]["style"][$this->styleDefCounter]["name"]= $styleName;
$this->styles["definition"]["style"][$this->styleDefCounter]["type"]= $styleType;
$listArray=explode($this->del,$strParam);
foreach ($listArray as $valueArray) {
$paramValue=explode("=",$valueArray);
if($this->validateParam($paramValue)==true){
$this->styles["definition"]["style"][$this->styleDefCounter][$paramValue[0]]= $this->encodeSpecialChars($paramValue[1]);
}
}
$this->styleDefCounter++;
}
# apply styles
function addStyleApp($toObject,$styles){
$this->styles["application"]["apply"][$this->styleAppCounter]["toObject"]= $toObject;
$this->styles["application"]["apply"][$this->styleAppCounter]["styles"]= $styles;
$this->styleAppCounter++;
}
##---------PRIVATE functions ----------------------------------------------------
## - -- - - XML generators - - - - ---- - -- - - - -
# Function getLinesetXML for getting Lineset XML
function getLinesetXML(){
# if seriesType MSStackedColumn2DLineDY (4) then linset element will be Generate
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;
}
}
# 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->MSSDataset as $part_type => $part_name){
$partXML .= "<dataset>";
foreach($this->MSSDataset[$part_type] as $part_type1 => $part_name1){
$partXML .= "<dataset " . $this->MSSDatasetParams[$part_type][$part_type1] . " >";
foreach($this->MSSDataset[$part_type][$part_type1] as $part_type2 => $part_name2){
if ($part_type2!=""){
$partXML .= $part_name2;
}
}
$partXML .= "</dataset>";
}
$partXML .= "</dataset>";
}
return $partXML;
}
}
# getvTrendLinesXML create XML output depending on trendLines array
# <vTrendlines>
# <line displayValue='vTrendLines' startValue='5' endValue='6' alpha='10' color='ff0000' />
# </vTrendlines>
function getvTrendLinesXML(){
$partXML="";
$lineXML="";
# fetching vtrendLines array
foreach($this->vtrendLines as $l_type => $l_name){
# staring line element
$lineXML .="<line ";
# fetching 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;
}
# getStylesXML create 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="";
# fetching styles array
foreach($this->styles as $s_type => $s_name){
$lineXML .="<" . $s_type . ">";
# fetching styles array with in array
foreach($this->styles[$s_type] as $sub_type => $sub_name){
# creating dynamic element depend on array name
# fetching styles array with in 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!=""){
# adding elements parameter
$lineXML .= $part_type1 . "='" . $this->encodeSpecialChars($part_name1) . "' ";
}
}
$lineXML .=" />";
}
}
# closing open eleement
$lineXML .="</" . $s_type . ">";
}
# adding $lineXML with in style element
# cheking 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;
}
## ---------- Array Init functions ----------------------------------------------
# create Lineset array
function createLineset(){
$this->lineCounter++;
$this->lineSet[$this->lineCounter]= array();
}
# creating MS-Stacked ataset array element and parameter array
function createMSSDataset(){
$this->MSSDatasetCounter++;
$this->MSSDataset[$this->MSSDatasetCounter]= array();
$this->MSSDatasetParams[$this->MSSDatasetCounter]=array();
}
# Creating set data with in datset
function createMSSSetData(){
$this->MSSSetCounter++;
$this->MSSDataset[$this->MSSDatasetCounter][$this->MSSSubDatasetCounter][$this->MSSSetCounter]= array();
}
# createStyles create array element with in styles array
function createStyles($styleID){
$this->styles[$styleID]= array();
}
# createSubStyles create array element with in styles array element with in sub styles array
# element for storing sub element parameter
function createSubStyles($styleID,$subStyle){
$this->styles[$styleID][$subStyle]= array();
}
# createvTrendLines create TrendLines array
function createvTrendLines($lineID){
$this->vtrendLines[$lineID] = array();
}
# setvTLine create TrendLine parameter
function setvTLine($lineID,$paramName, $paramValue){
$this->vtrendLines[$lineID][$paramName]=$paramValue;
}
# create sub styles param
function createSubStylesParam($styleID,$subStyle,$subParam){
$this->styles[$styleID][$subStyle][$subParam]= array();
}
# setSubStylesParam create sub styles array to store parameters
function setSubStylesParam($styleID,$subStyle,$subParam,$id,$value){
$this->styles[$styleID][$subStyle][$subParam][$id]= $value;
}
#====================== For Future Use (end) ======================================
}
?>