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 ="";
}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="";
}
# 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 = "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 .= "";
# 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="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
$partXML .="";
return $partXML;
}
}
# creating single set element
#
#
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
#
#
#
#
function getMSDatasetXML(){
if($this->seriesType>1){
$partXML="";
foreach($this->dataset as $part_type => $part_name){
$partXML .="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 .="";
}
return $partXML;
}
}
# getTrendLinesXML create XML output depending on trendLines array
#
#
#
function getTrendLinesXML(){
$partXML="";
$lineXML="";
# fetching trendLines array
foreach($this->trendLines as $l_type => $l_name){
# staring line element
$lineXML .="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 = "" . $lineXML . "";
}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 ="";
}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="";
}
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 "
function encodeSpecialChars($strValue){
$strValue=str_replace("'","%26apos;",$strValue);
$strValue=str_replace("\"",""",$strValue);
$strValue=str_replace("<","<",$strValue);
$strValue=str_replace(">",">",$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 ="";
# 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 ="";
# 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 ="";
# 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 ="";
# 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 ="";
# 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 =" ";
# 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 ="";
# 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 .="GT_categoriesParam[$part_type] . " >";
foreach($this->GT_categories[$part_type] as $part_type1 => $part_name1){
if($part_name1!=""){
# adding elements
$partXML .= $part_name1;
}
}
# Closing
$partXML .="";
}
return $partXML;
}
# Function getProcessesXML for getting Processes part XML
function getProcessesXML(){
$partXML="";
# adding processes parameter
$partXML="GT_processes_Param . " >";
foreach($this->GT_processes as $part_type => $part_name){
if($part_name!=""){
# adding elements
$partXML .= $part_name;
}
}
# Closing
$partXML .="";
return $partXML;
}
# Function getProcessesXML for getting Processes part XML
function getTasksXML(){
$partXML="";
# adding processes parameter
$partXML="GT_Tasks_Param . " >";
foreach($this->GT_Tasks as $part_type => $part_name){
if($part_name!=""){
# adding elements
$partXML .= $part_name;
}
}
# Closing
$partXML .="";
return $partXML;
}
# Function getConnectorsXML for getting Connectors part XML
function getConnectorsXML(){
$c=0;
$partXML="";
# adding connectors parameter
$partXML="GT_Connectors_Param . " >";
foreach($this->GT_Connectors as $part_type => $part_name){
if($part_name!=""){
# adding elements
$partXML .= $part_name;
$c++;
}
}
# Closing
$partXML .="";
if ($c>0){
return $partXML;
}else{
return "";
}
}
# Function getMilestonesXML for getting Milestones part XML
function getMilestonesXML(){
$c=0;
$partXML="";
# adding Milestones parameter
$partXML="GT_Milestones_Param . " >";
foreach($this->GT_Milestones as $part_type => $part_name){
if($part_name!=""){
# adding elements
$partXML .= $part_name;
$c++;
}
}
# Closing
$partXML .="";
if ($c>0) {
return $partXML;
}else{
return "";
}
}
# Function getLegendXML for getting Legend part XML
function getLegendXML(){
$c=0;
$partXML="";
# adding Legend parameter
$partXML="";
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 .="GT_dataColumnParam[$part_type] . " >";
foreach($this->GT_datatable[$part_type] as $part_type1 => $part_name1){
if($part_name1!=""){
# adding elements
$partXML .= $part_name1;
}
}
# Closing
$partXML .="";
}
$allPart="GT_datatableParam . " >" . $partXML . "";
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 ="";
}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="";
}
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 .= "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 .= "";
}
return $partXML;
}
}
# Function getMSStackedDatasetXML for getting datset part XML from ms stacked chart dataset array
#
#
#
#
#
#
function getMSStackedDatasetXML(){
if($this->seriesType==4){
$partXML="";
foreach($this->MSSDataset as $part_type => $part_name){
$partXML .= "";
foreach($this->MSSDataset[$part_type] as $part_type1 => $part_name1){
$partXML .= "MSSDatasetParams[$part_type][$part_type1] . " >";
foreach($this->MSSDataset[$part_type][$part_type1] as $part_type2 => $part_name2){
if ($part_type2!=""){
$partXML .= $part_name2;
}
}
$partXML .= "";
}
$partXML .= "";
}
return $partXML;
}
}
# getvTrendLinesXML create XML output depending on trendLines array
#
#
#
function getvTrendLinesXML(){
$partXML="";
$lineXML="";
# fetching vtrendLines array
foreach($this->vtrendLines as $l_type => $l_name){
# staring line element
$lineXML .="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 = "" . $lineXML . "";
}else{
# return nothing
$partXML="";
}
# return vtrendLines xml
return $partXML;
}
# getStylesXML create the styles XML from styles array
/*
*/
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 = "" . $lineXML . "";
}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) ======================================
}
?>