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

📄 indexedbysite.php

📁 Piwik#Opensourcewebanalytics一款可以和GOOGLE媲美的开源统计系统,运用AJAX.功能强大.无色提示:按照需要PHP5.1以上和MySQL数据库支持。
💻 PHP
字号:
<?phprequire_once "Archive/Array.php";class Piwik_Archive_Array_IndexedBySite extends Piwik_Archive_Array {	/**	 * @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($sites, $strPeriod, $strDate)	{		foreach($sites as $idSite)		{			$archive = Piwik_Archive::build($idSite, $strPeriod, $strDate );			$archive->setSite(new Piwik_Site($idSite));			$archive->prepareArchive();			$this->archives[$idSite] = $archive;		}		ksort( $this->archives );	}		protected function getIndexName()	{		return 'idSite';	}		protected function getDataTableLabelValue( $archive )	{		return $archive->getIdSite();	}		/**	 * Given a list of fields defining numeric values, it will return a Piwik_DataTable_Array	 * ordered by idsite	 *	 * @param array|string $fields array( fieldName1, fieldName2, ...)  Names of the mysql table fields to load	 * @return Piwik_DataTable_Array	 */	public function getDataTableFromNumeric( $fields )	{		$tableArray = $this->getNewDataTableArray();		if ($this->getFirstArchive() instanceof Piwik_Archive_Single)		{			$values = $this->getValues($fields);			foreach($this->archives as $idSite => $archive)			{				$table = new Piwik_DataTable_Simple();				if (array_key_exists($idSite, $values))				{					$table->addRowsFromArray($values[$idSite]);				}				$tableArray->addTable($table, $idSite);			}		}		elseif ($this->getFirstArchive() instanceof Piwik_Archive_Array)		{			foreach($this->archives as $idSite => $archive)			{				$tableArray->addTable($archive->getDataTableFromNumeric($fields), $idSite);			}		}				return $tableArray;	}	private function getValues($fields)	{		foreach($this->loadValuesFromDB($fields) as $value) 		{			$arrayValues[$value['idsite']][$value['name']] = $value['value']; 		}		return $arrayValues;	}		private function loadValuesFromDB($fields)	{ 		$sql = "SELECT value, name, idarchive, idsite								FROM {$this->getNumericTableName()}								WHERE idarchive IN ( {$this->getArchiveIds()} )									AND name IN ( {$this->getSqlStringFieldsArray($fields)} )";		return Zend_Registry::get('db')->fetchAll($sql);	}	private function getFirstArchive()	{		reset($this->archives);		return current($this->archives);	}	private function getArchiveIds()	{		foreach($this->archives as $archive) 		{ 			if( $this->getNumericTableName() != $archive->archiveProcessing->getTableArchiveNumericName())			{				throw new Exception("Piwik_Archive_Array_IndexedBySite::getDataTableFromNumeric() algorithm won't work if data is stored in different tables");			}			$archiveIds[] = $archive->getIdArchive(); 		}		return implode(', ', $archiveIds);	}		private function getNumericTableName()	{		return $this->getFirstArchive()->archiveProcessing->getTableArchiveNumericName();	}}

⌨️ 快捷键说明

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