⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chartevolution.php

📁 Piwik#Opensourcewebanalytics一款可以和GOOGLE媲美的开源统计系统,运用AJAX.功能强大.无色提示:按照需要PHP5.1以上和MySQL数据库支持。
💻 PHP
字号:
<?phprequire_once "ViewDataTable/GenerateGraphData.php";/** * Piwik_ViewDataTable_GenerateGraphData for the Evolution graph (eg. Last 30 days visits) using Piwik_Visualization_ChartEvolution *  * @package Piwik_ViewDataTable * */class Piwik_ViewDataTable_GenerateGraphData_ChartEvolution extends Piwik_ViewDataTable_GenerateGraphData{	protected function getViewDataTableId()	{		return 'generateDataChartEvolution';	}		function __construct()	{		require_once "Visualization/ChartEvolution.php";		$this->view = new Piwik_Visualization_ChartEvolution;	}		var $lineLabels = array();	var $data = array();		private function generateLine( $dataArray, $columns, $schema = "##label## ##column##" )	{		$data = array();				foreach($dataArray as $keyName => $table)		{			$table->applyQueuedFilters();			// initialize data (default values for all lines is 0)			$dataRow = array();			$rows = $table->getRows();			foreach($rows as $row)			{				$rowLabel = $schema;				if( strpos($rowLabel, "##label##") !== false )				{					$rowLabel = str_replace("##label##", $row->getColumn('label'), $rowLabel);				}									foreach($columns as $col)				{					$label = $rowLabel;										if( strpos($label, "##column##") !== false )					{						$label = str_replace("##column##", $col, $label);					}										if( !isset($this->lineLabels[$label]) )					{						$this->lineLabels[$label] = count($this->lineLabels);					}										$lineNb = $this->lineLabels[$label];															$value = $row->getColumn($col);					$dataRow['value'.$lineNb] = $value;				}			}			$data[] = $dataRow;		}		return $data;	}		private function generateLabels( $dataArray )	{		$data = array();				foreach($dataArray as $keyName => $table)		{			$table->applyQueuedFilters();						$data[] = array('label' => $keyName);		}				return $data;	}		private function addArray( &$data, $newData )	{			for($i = 0; $i < count($newData); $i++)		{			foreach($newData[$i] as $key => $value)			{				$data[$i][$key] = $value;			}		}	}		private function fillValues( &$data )	{		$nbLines = count($this->lineLabels);				for($i = 0; $i < count($data); $i++)		{			for($j = 0; $j < $nbLines; $j++)			{				if( !isset($data[$i]['value'.$j]) )				{					$data[$i]['value'.$j] = 0;				}			}		}	}		/*	 * generates data for evolution graph from a numeric DataTable (DataTable that has only 'label' and 'value' columns)	 */	protected function generateDataFromNumericDataTable($dataArray, $siteLabel = "")	{		$columnsToDisplay = Piwik_Common::getRequestVar('columns', array(), 'array');						// for numeric we want to have only one column name		if( count($columnsToDisplay) != 1 )		{			$columnsToDisplay = array( 'nb_uniq_visitors' );		}				$label = $siteLabel . array_shift($columnsToDisplay);				$this->addArray($this->data, $this->generateLabels($dataArray));		$this->addArray($this->data, $this->generateLine($dataArray,array('value'),$label));		$this->fillValues($this->data);	}		/*	 * generates data for evolution graph from a DataTable that has named columns (i.e. 'nb_hits', 'nb_uniq_visitors')    	 */	protected function generateDataFromRegularDataTable($dataArray, $siteLabel = "")	{			// get list of columns 	to display i.e. array('nb_hits','nb_uniq_visitors')								$columnsToDisplay = Piwik_Common::getRequestVar('columns', array(), 'array');						// default column		if( count($columnsToDisplay) == 0 )		{			$columnsToDisplay = array( 'nb_uniq_visitors' );		}						$this->addArray($this->data, $this->generateLabels($dataArray));		$this->addArray($this->data, $this->generateLine($dataArray, $columnsToDisplay, $siteLabel."##label## ##column##"));		$this->fillValues($this->data);	}		protected function handleSiteGenerateDataFromDataTable($dataArray, $siteLabel = "")	{					// detect if we got numeric Datatable or regular DataTable			foreach($dataArray as $table) 		{			$row = $table->getFirstRow();							if( $row != null )			{				$columns = $row->getColumns();				// if we got 2 columns - 'label' and 'value' this is numeric DataTable				if( count($columns) == 2 && isset($columns['label']) && isset($columns['value']) )				{					$this->generateDataFromNumericDataTable($dataArray, $siteLabel);				}				else				{					$this->generateDataFromRegularDataTable($dataArray, $siteLabel);				}				break;			}		}	}				public function generateDataFromDataTable()	{		$data = array();						if( $this->dataTable->getRowsCount() )		{			$row = null;						// find first table with rows			foreach($this->dataTable->getArray() as $idsite => $table)			{				// detect if we got data from more than one site				if( $table instanceof Piwik_DataTable_Array)				{					// multiple sites					$site = new Piwik_Site($idsite);										$this->handleSiteGenerateDataFromDataTable($table->getArray(), $site->getName()." ");				}				else if( $table instanceof Piwik_DataTable_Simple && $this->dataTable->getKeyName() == 'idSite')				{					// multiple sites (when numeric DataTable)					$site = new Piwik_Site($idsite);															$this->handleSiteGenerateDataFromDataTable($table->getFirstRow()->getColumn('value')->getArray(), $site->getName()." ");				}				else				{					// single site					$this->handleSiteGenerateDataFromDataTable($this->dataTable->getArray());					break;				}							}					}				array_unshift($this->data, array_keys($this->lineLabels));						return $this->data;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -