generategraphdata.php

来自「一款可以和GOOGLE媲美的开源统计系统,运用AJAX.功能强大. 无色提示:」· PHP 代码 · 共 141 行

PHP
141
字号
<?php/** * Piwik - Open source web analytics *  * @link http://piwik.org * @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later * @version $Id: GenerateGraphData.php 579 2008-07-27 00:32:59Z matt $ *  * @package Piwik_ViewDataTable *//** * Reads data from the API and prepares data to give to the renderer Piwik_Visualization_Chart. * This class is used to generate the data for the FLASH charts. It is given as a parameter of the SWF file. * You can set the number of elements to appear in the graph using: setGraphLimit(); * Example: * <pre> * 	function getWebsites( $fetch = false) * 	{ * 		$view = Piwik_ViewDataTable::factory(); * 		$view->init( $this->pluginName, 'getWebsites', 'Referers.getWebsites', 'getUrlsFromWebsiteId' ); * 		$view->setColumnsToDisplay( array('label','nb_visits') ); *		$view->setLimit(10); * 		$view->setGraphLimit(12); * 		return $this->renderView($view, $fetch); * 	} * </pre> *   * @package Piwik_ViewDataTable * */abstract class Piwik_ViewDataTable_GenerateGraphData extends Piwik_ViewDataTable{	/**	 * @see Piwik_ViewDataTable::init()	 */	function init($currentControllerName,						$currentControllerAction, 						$moduleNameAndMethod )	{		parent::init($currentControllerName, 						$currentControllerAction, 						$moduleNameAndMethod );	}		/**	 * Number of elements to display in the graph.	 *	 * @var int	 */	protected $graphLimit = 6;		/**	 * Sets the number max of elements to display (number of pie slice, vertical bars, etc.)	 * If the data has more elements than $limit then the last part of the data will be the sum of all the remaining data.	 *	 * @param int $limit	 */	function setGraphLimit( $limit )	{		$this->graphLimit = $limit;	}	/**	 * Returns numbers of elemnts to display in the graph	 *	 * @return int	 */	function getGraphLimit()	{		return $this->graphLimit;	}		public function main()	{		if($this->mainAlreadyExecuted)		{			return;		}		$this->mainAlreadyExecuted = true;			$this->setLimit(-1);				// we load the data with the filters applied		$this->loadDataTableFromAPI();		$offsetStartSummary = $this->getGraphLimit() - 1;		$this->dataTable->queueFilter('Piwik_DataTable_Filter_AddSummaryRow', array($offsetStartSummary, Piwik_Translate('General_Others')));		$this->dataAvailable = $this->dataTable->getRowsCount() != 0;				if(!$this->dataAvailable)		{			$this->view->customizeGraph();			$this->view->title(Piwik_Translate('General_NoDataForGraph'), '{font-size: 25px;}');		}		else		{			$data = $this->generateDataFromDataTable();			$this->view->setData($data);			$this->view->customizeGraph();		}	}		/**	 * Returns a format friendly array from the dataTable 	 *	 * @return array	 */	protected function generateDataFromDataTable()	{		$this->dataTable->applyQueuedFilters();				// We apply a filter to the DataTable, decoding the label column (useful for keywords for example)		$filter = new Piwik_DataTable_Filter_ColumnCallbackReplace(									$this->dataTable, 									'label', 									'urldecode'								);		$data = array();		foreach($this->dataTable->getRows() as $row)		{			$label = $row->getColumn('label');			$value = $row->getColumn('nb_uniq_visitors');						// case no unique visitors			if($value === false)			{				$value = $row->getColumn('nb_visits');			}						$data[] = array(				'label' => $label,				'value' => $value,				'url' 	=> $row->getMetadata('url'),			);		}		return $data;	}}

⌨️ 快捷键说明

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