bebeboutik/modules/graphxmlswfcharts/graphxmlswfcharts.php

260 lines
8.9 KiB
PHP
Raw Normal View History

2016-01-04 12:49:26 +01:00
<?php
/*
* 2007-2011 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2011 PrestaShop SA
* @version Release: $Revision: 8005 $
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
/**
* Statistics
* @category stats
*
* @author PrestaShop
* @copyright PrestaShop
* @license http://www.opensource.org/licenses/afl-3.0.php Open-source licence 3.0
* @version 1.4
*/
if (!defined('_PS_VERSION_'))
exit;
class GraphXmlSwfCharts extends ModuleGraphEngine
{
private $_xml;
private $_values = NULL;
private $_legend = NULL;
private $_legend_more = '';
private $_titles = '';
function __construct($type = null)
{
if ($type != null)
{
$this->_xml = '<chart>';
parent::__construct($type);
}
else
{
$this->name = 'graphxmlswfcharts';
$this->tab = 'administration';
$this->version = 1.0;
$this->author = 'PrestaShop';
$this->need_instance = 0;
Module::__construct();
$this->displayName = $this->l('XML/SWF Charts');
$this->description = $this->l('XML/SWF Charts is a simple, yet powerful tool using Adobe Flash to create attractive web charts and graphs from dynamic data.');
}
}
function install()
{
return (parent::install() AND $this->registerHook('GraphEngine'));
}
public static function hookGraphEngine($params, $drawer)
{
return '<script language="javascript">AC_FL_RunContent = 0;</script>
<script language="javascript"> DetectFlashVer = 0; </script>
<script src="../modules/graphxmlswfcharts/xml_swf_charts/AC_RunActiveContent.js" language="javascript"></script>
<script language="JavaScript" type="text/javascript">
<!--
var requiredMajorVersion = 9;
var requiredMinorVersion = 0;
var requiredRevision = 45;
-->
</script>
<script language="JavaScript" type="text/javascript">
<!--
if (AC_FL_RunContent == 0 || DetectFlashVer == 0) {
alert("This page requires AC_RunActiveContent.js.");
} else {
var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
if (hasRightVersion) {
AC_FL_RunContent(
\'codebase\', \'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0\',
\'width\', \''.$params['width'].'\',
\'height\', \''.$params['height'].'\',
\'bgcolor\', \'#EFEFEF\',
\'movie\', \'charts\',
\'src\', \'../modules/graphxmlswfcharts/xml_swf_charts/charts\',
\'FlashVars\', \'library_path=../modules/graphxmlswfcharts/xml_swf_charts/charts_library&xml_source='.urlencode($drawer).'\',
\'wmode\', \'opaque\',
\'scale\', \'noScale\',
\'id\', \'charts\',
\'name\', \'charts\',
\'menu\', \'true\',
\'allowFullScreen\', \'true\',
\'allowScriptAccess\',\'sameDomain\',
\'quality\', \'high\',
\'pluginspage\', \'http://www.macromedia.com/go/getflashplayer\',
\'align\', \'middle\',
\'play\', \'true\',
\'devicefont\', \'false\',
\'salign\', \'TL\'
);
} else {
var alternateContent = \'This content requires the Adobe Flash Player. \'
+ \'<u><a href=http://www.macromedia.com/go/getflash/>Get Flash</a></u>.\';
document.write(alternateContent);
}
}
// -->
</script>
<noscript>
<P>This content requires JavaScript.</P>
</noscript>';
}
private function drawColumn()
{
$this->_xml .= '<axis_category font="arial" bold="true" size="10" color="000000" />
<axis_ticks value_ticks="true" position="inside" />
<axis_value font="arial" bold="true" size="11" color="000000" show_min="true" />
<chart_border color="000000" top_thickness="0" bottom_thickness="1" left_thickness="1" right_thickness="0" />
<chart_transition type="scale" delay="0.5" duration="0.5" order="series" />
<chart_label color="000000" size="12" position="cursor" background_color="E2EBEE" alpha="80" />
<chart_guide horizontal="true" vertical="true" thickness="1" alpha="25" type="dashed" text_h_alpha="0" text_v_alpha="0" />';
}
private function drawLine()
{
$this->drawColumn();
$this->_xml .= '<series_color><color>A3B6DA</color><color>C3413C</color><color>5A6C83</color><color>CA9A51</color><color>5B7751</color><color>55AA26</color><color>FF2398</color><color>427FC3</color></series_color>
<chart_pref line_thickness="2" point_shape="none" fill_shape="false" />';
}
private function drawPie($counter)
{
$this->_xml .= '<chart_rect positive_color="ffffff" positive_alpha="20" negative_color="ff0000" negative_alpha="10" />
<chart_label color="ffffff" alpha="90" font="arial" bold="true" size="10" position="inside" prefix="" suffix="" decimals="0" separator="" as_percentage="true" />
<series_color>
<color>427FC3</color>
<color>C3413C</color>
<color>5A6C83</color>
<color>CA9A51</color>
<color>5B7751</color>
<color>55AA26</color>
<color>FF2398</color>
</series_color>
<series_explode>';
for ($i = 0; $i < $counter; $i++)
$this->_xml .= '<number>9</number>';
$this->_xml .= '</series_explode>';
$this->_legend_more = ' bullet="circle"';
}
public function createValues($values)
{
$this->_values = $values;
$this->_xml .= '<chart_type>'.$this->_type.'</chart_type><chart_grid_h alpha="20" color="000000" thickness="1" type="dashed" />';
switch ($this->_type)
{
case 'pie':
$this->drawPie(sizeof($values));
break;
case 'line':
$this->drawLine();
break;
case 'column':
default:
$this->drawColumn();
$this->_xml .= '<series_color><color>A3B6DA</color><color>C3413C</color><color>5A6C83</color><color>CA9A51</color><color>5B7751</color><color>55AA26</color><color>FF2398</color><color>427FC3</color></series_color>';
break;
}
}
public function setSize($width, $height)
{
if (isset($width) && !empty($width))
$this->_width = $width;
else
$this->_width = 550;
if (isset($height) && !empty($height))
$this->_height = $height;
else
$this->_height = 270;
}
public function setLegend($legend)
{
$this->_legend = $legend;
$this->_xml .= '<legend'.$this->_legend_more.' layout="horizontal" font="arial" bold="true" size="13" color="000000" alpha="85" shadow="low" transition="dissolve" delay="0.5" duration="0.25" fill_color="D4D4D4" fill_alpha="0" line_color="D4D4D4" line_alpha="0" line_thickness="0" />';
}
public function setTitles($titles)
{
$this->_titles = $titles;
$this->_xml .= '<draw>';
if (isset($titles['main']))
{
if ($this->_type == 'pie')
$this->_xml .= '<text color="000033" alpha="50" font="arial" rotation="0" bold="true" x="0" y="0" width="'.$this->_width.'" height="'.$this->_height.'" h_align="center" v_align="top">'.$titles['main'].'</text>';
}
if ($this->_type != 'pie' AND isset($titles['x']) AND isset($titles['y']))
{
$this->_xml .= '<text color="000033" alpha="50" font="arial" rotation="0" bold="true" size="15" x="0" y="'.($this->_height - 30).'" width="'.$this->_width.'" height="30" h_align="right" v_align="middle">'.$titles['x'].'</text>';
$this->_xml .= '<text color="000033" alpha="50" font="arial" rotation="-90" bold="true" size="15" x="0" y="'.$this->_height.'" width="'.$this->_height.'" height="30" h_align="center" v_align="middle">'.$titles['y'].'</text>';
}
$this->_xml .= '</draw>';
}
public function draw()
{
header('content-type: text/xml');
$this->_xml .= '<chart_data><row><null/>';
foreach ($this->_legend as $value)
$this->_xml .= '<string>'.$value.'</string>';
$this->_xml .= '</row>';
if (!isset($this->_values[0]) || !is_array($this->_values[0]))
{
$this->_xml .= '<row><string>'.$this->_titles['main'].'</string>';
foreach ($this->_values as $value)
$this->_xml .= '<number>'. (($value > 0) ? $value : -$value) .'</number>'; //si jamais la valeur est n<>gative... logiquement ne devrait jamais arriver
$this->_xml .= '</row>';
}
else
{
$i = 1;
foreach ($this->_values as $value)
{
$this->_xml .= '<row>';
if (isset($this->_titles['main'][$i]))
$this->_xml .= '<string>'.$this->_titles['main'][$i].'</string>';
foreach ($value as $val)
$this->_xml .= '<number>'.$val.'</number>';
$this->_xml .= '</row>';
$i++;
}
}
$this->_xml .= '</chart_data>';
$this->_xml .= '</chart>';
echo $this->_xml;
}
}