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

📄 indexedbydate.php

📁 Piwik#Opensourcewebanalytics一款可以和GOOGLE媲美的开源统计系统,运用AJAX.功能强大.无色提示:按照需要PHP5.1以上和MySQL数据库支持。
💻 PHP
字号:
<?phprequire_once "Archive/Array.php";class Piwik_Archive_Array_IndexedByDate extends Piwik_Archive_Array {	/**	 * Builds an array of Piwik_Archive of a given date range	 *	 * @param Piwik_Site $oSite 	 * @param string $strPeriod eg. 'day' 'week' etc.	 * @param string $strDate A date range, eg. 'last10', 'previous5' or 'YYYY-MM-DD,YYYY-MM-DD'	 */	function __construct(Piwik_Site $oSite, $strPeriod, $strDate)	{		$rangePeriod = new Piwik_Period_Range($strPeriod, $strDate);		foreach($rangePeriod->getSubperiods() as $subPeriod)		{			$startDate = $subPeriod->getDateStart();			$archive = Piwik_Archive::build($oSite->getId(), $strPeriod, $startDate );			$archive->prepareArchive();			$timestamp = $archive->getTimestampStartDate();			$this->archives[$timestamp] = $archive;		}		ksort( $this->archives );	}		protected function getIndexName()	{		return 'date';	}		protected function loadMetadata(Piwik_DataTable_Array $table, $archive)	{		$table->metadata[$archive->getPrettyDate()] = array( 				'timestamp' => $archive->getTimestampStartDate(),				'site' => $archive->getSite(),			);	}		protected function getDataTableLabelValue( $archive )	{		return $archive->getPrettyDate();	}		/**	 * Given a list of fields defining numeric values, it will return a Piwik_DataTable_Array	 * which is an array of Piwik_DataTable_Simple, ordered by chronological order	 *	 * @param array|string $fields array( fieldName1, fieldName2, ...)  Names of the mysql table fields to load	 * @return Piwik_DataTable_Array	 */	public function getDataTableFromNumeric( $fields )	{		$inNames = $this->getSqlStringFieldsArray($fields);				// we select in different shots		// one per distinct table (case we select last 300 days, maybe we will  select from 10 different tables)		$queries = array();		foreach($this->archives as $archive) 		{			if(!$archive->isThereSomeVisits)			{				continue;			}						$table = $archive->archiveProcessing->getTableArchiveNumericName();			// for every query store IDs			$queries[$table][] = $archive->getIdArchive();		}		// we select the requested value		$db = Zend_Registry::get('db');				// date => array( 'field1' =>X, 'field2'=>Y)		// date2 => array( 'field1' =>X2, 'field2'=>Y2)						$arrayValues = array();		foreach($queries as $table => $aIds)		{			$inIds = implode(', ', $aIds);			$sql = "SELECT value, name, idarchive, UNIX_TIMESTAMP(date1) as timestamp									FROM $table									WHERE idarchive IN ( $inIds )										AND name IN ( $inNames )";			$values = $db->fetchAll($sql);						foreach($values as $value)			{				$arrayValues[$value['timestamp']][$value['name']] = $value['value'];			}					}				$contentArray = array();		// we add empty tables so that every requested date has an entry, even if there is nothing		// example: <result date="2007-01-01" />		foreach($this->archives as $timestamp => $archive)		{			$strDate = $this->archives[$timestamp]->getPrettyDate();			$contentArray[$timestamp]['table'] = new Piwik_DataTable_Simple();			$contentArray[$timestamp]['prettyDate'] = $strDate;		}		foreach($arrayValues as $timestamp => $aNameValues)		{			$contentArray[$timestamp]['table']->addRowsFromArray($aNameValues);		}		ksort( $contentArray );						$tableArray = $this->getNewDataTableArray();		foreach($contentArray as $timestamp => $aData)		{			$tableArray->addTable($aData['table'], $aData['prettyDate']);			$this->loadMetadata($tableArray, $this->archives[$timestamp]);		}		return $tableArray;	}}

⌨️ 快捷键说明

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