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

📄 referers.php

📁 一款可以和GOOGLE媲美的开源统计系统,运用AJAX.功能强大. 无色提示:按照需要PHP5.1以上和MySQL数据库支持。
💻 PHP
字号:
<?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: Referers.php 636 2008-10-13 17:21:19Z matt $ *  * @package Piwik_Referers */	/** * @package Piwik_Referers */class Piwik_Referers extends Piwik_Plugin{		public function getInformation()	{		$info = array(			'name' => 'Referers',			'description' => 'Reports the Referers data: Search Engines, Keywords, Websites, Newsletters tracking, Campaign Tracking, Direct Entry. ',			'author' => 'Piwik',			'homepage' => 'http://piwik.org/',			'version' => '0.1',		);				return $info;	}		function getListHooksRegistered()	{		$hooks = array(			'ArchiveProcessing_Day.compute' => 'archiveDay',			'ArchiveProcessing_Period.compute' => 'archivePeriod',			'WidgetsList.add' => 'addWidgets',			'Menu.add' => 'addMenus',		);		return $hooks;	}	public function setCategoryDelimiter($delimiter)	{		self::$actionCategoryDelimiter = $delimiter;	}		function addWidgets()	{		Piwik_AddWidget( 'Referers', 'getKeywords', Piwik_Translate('Referers_WidgetKeywords'));		Piwik_AddWidget( 'Referers', 'getPartners', Piwik_Translate('Referers_WidgetPartners'));		Piwik_AddWidget( 'Referers', 'getCampaigns', Piwik_Translate('Referers_WidgetCampaigns'));		Piwik_AddWidget( 'Referers', 'getWebsites', Piwik_Translate('Referers_WidgetExternalWebsites'));		Piwik_AddWidget( 'Referers', 'getSearchEngines', Piwik_Translate('Referers_WidgetSearchEngines'));		Piwik_AddWidget( 'Referers', 'getRefererType', Piwik_Translate('Referers_WidgetOverview'));	}		function addMenus()	{		Piwik_AddMenu('Referers_Referers', 'Referers_SubmenuEvolution', array('module' => 'Referers'));		Piwik_AddMenu('Referers_Referers', 'Referers_SubmenuSearchEngines', array('module' => 'Referers', 'action' => 'getSearchEnginesAndKeywords'));		Piwik_AddMenu('Referers_Referers', 'Referers_SubmenuWebsites', array('module' => 'Referers', 'action' => 'getWebsites'));		Piwik_AddMenu('Referers_Referers', 'Referers_SubmenuCampaigns', array('module' => 'Referers', 'action' => 'getCampaigns'));		Piwik_AddMenu('Referers_Referers', 'Referers_SubmenuPartners', array('module' => 'Referers', 'action' => 'getPartners'));			//Piwik_AddMenu('Referers_Referers', 'Referers_SubmenuEvolution', array('module' => 'Referers', 'action' => 'getSearchEnginesEvolution'));	}		function archivePeriod( $notification )	{		$archiveProcessing = $notification->getNotificationObject();				$dataTableToSum = array( 			'Referers_type',			'Referers_keywordBySearchEngine',			'Referers_searchEngineByKeyword',			'Referers_keywordByCampaign',			'Referers_urlByWebsite',			'Referers_urlByPartner',		);				$maximumRowsInDataTableLevelZero = 500;		$maximumRowsInSubDataTable = 50;		$nameToCount = $archiveProcessing->archiveDataTable($dataTableToSum, $maximumRowsInDataTableLevelZero, $maximumRowsInSubDataTable);				$mappingFromArchiveName = array(			'Referers_distinctSearchEngines' => 						array( 	'typeCountToUse' => 'level0',								'nameTableToUse' => 'Referers_keywordBySearchEngine',							),			'Referers_distinctKeywords' => 						array( 	'typeCountToUse' => 'level0',								'nameTableToUse' => 'Referers_searchEngineByKeyword',							),			'Referers_distinctCampaigns' => 						array( 	'typeCountToUse' => 'level0',								'nameTableToUse' => 'Referers_keywordByCampaign',							),			'Referers_distinctWebsites' => 						array( 	'typeCountToUse' => 'level0',								'nameTableToUse' => 'Referers_urlByWebsite',							),			'Referers_distinctWebsitesUrls' => 						array( 	'typeCountToUse' => 'recursive',								'nameTableToUse' => 'Referers_urlByWebsite',							),			'Referers_distinctPartners' => 						array( 	'typeCountToUse' => 'level0',								'nameTableToUse' => 'Referers_urlByPartner',							),			'Referers_distinctPartnersUrls' => 						array( 	'typeCountToUse' => 'recursive',								'nameTableToUse' => 'Referers_urlByPartner',							),		);		foreach($mappingFromArchiveName as $name => $infoMapping)		{			$typeCountToUse = $infoMapping['typeCountToUse'];			$nameTableToUse = $infoMapping['nameTableToUse'];						if($typeCountToUse == 'recursive')			{								$countValue = $nameToCount[$nameTableToUse]['recursive']								- $nameToCount[$nameTableToUse]['level0'];			}			else			{				$countValue = $nameToCount[$nameTableToUse]['level0'];			}						$record = new Piwik_ArchiveProcessing_Record_Numeric(													$name, 													$countValue												);		}	}	public function archiveDay( $notification )	{		$archiveProcessing = $notification->getNotificationObject();		$query = "SELECT 	referer_type, 							referer_name, 							referer_keyword,							referer_url,							count(distinct visitor_idcookie) as nb_uniq_visitors,							count(*) as nb_visits,							sum(visit_total_actions) as nb_actions,							max(visit_total_actions) as max_actions, 							sum(visit_total_time) as sum_visit_length,														sum(case visit_total_actions when 1 then 1 else 0 end) as bounce_count				 	FROM ".$archiveProcessing->logTable."				 	WHERE visit_server_date = ?				 		AND idsite = ?				 	GROUP BY referer_type, referer_name, referer_keyword				 	ORDER BY nb_visits DESC";		$query = $archiveProcessing->db->query($query, array( $archiveProcessing->strDateStart, $archiveProcessing->idsite ));		$interestBySearchEngine =			$interestByKeyword =			$keywordBySearchEngine =			$searchEngineByKeyword =			$interestByWebsite[Piwik_Common::REFERER_TYPE_WEBSITE] =			$interestByWebsite[Piwik_Common::REFERER_TYPE_PARTNER] =			$urlByWebsite[Piwik_Common::REFERER_TYPE_WEBSITE] =			$urlByWebsite[Piwik_Common::REFERER_TYPE_PARTNER] =			$interestByNewsletter =			$keywordByCampaign =			$interestByCampaign =			$interestByType = 			$distinctUrls[Piwik_Common::REFERER_TYPE_WEBSITE] =			$distinctUrls[Piwik_Common::REFERER_TYPE_PARTNER] = array();				while($rowBefore = $query->fetch() )		{			$row = array(				Piwik_Archive::INDEX_NB_UNIQ_VISITORS 	=> $rowBefore['nb_uniq_visitors'], 				Piwik_Archive::INDEX_NB_VISITS 			=> $rowBefore['nb_visits'], 				Piwik_Archive::INDEX_NB_ACTIONS 		=> $rowBefore['nb_actions'], 				Piwik_Archive::INDEX_MAX_ACTIONS 		=> $rowBefore['max_actions'], 				Piwik_Archive::INDEX_SUM_VISIT_LENGTH 	=> $rowBefore['sum_visit_length'], 				Piwik_Archive::INDEX_BOUNCE_COUNT 		=> $rowBefore['bounce_count'],				'referer_type' 							=> $rowBefore['referer_type'],				'referer_name' 							=> $rowBefore['referer_name'], 				'referer_keyword'						=> $rowBefore['referer_keyword'],				'referer_url'							=> $rowBefore['referer_url'],			);						switch($row['referer_type'])			{				case Piwik_Common::REFERER_TYPE_SEARCH_ENGINE:									if(!isset($interestBySearchEngine[$row['referer_name']])) $interestBySearchEngine[$row['referer_name']]= $archiveProcessing->getNewInterestRow();					if(!isset($interestByKeyword[$row['referer_keyword']])) $interestByKeyword[$row['referer_keyword']]= $archiveProcessing->getNewInterestRow();					if(!isset($keywordBySearchEngine[$row['referer_name']][$row['referer_keyword']])) $keywordBySearchEngine[$row['referer_name']][$row['referer_keyword']]= $archiveProcessing->getNewInterestRow();					if(!isset($searchEngineByKeyword[$row['referer_keyword']][$row['referer_name']])) $searchEngineByKeyword[$row['referer_keyword']][$row['referer_name']]= $archiveProcessing->getNewInterestRow();									$archiveProcessing->updateInterestStats( $row, $interestBySearchEngine[$row['referer_name']]);					$archiveProcessing->updateInterestStats( $row, $interestByKeyword[$row['referer_keyword']]);					$archiveProcessing->updateInterestStats( $row, $keywordBySearchEngine[$row['referer_name']][$row['referer_keyword']]);					$archiveProcessing->updateInterestStats( $row, $searchEngineByKeyword[$row['referer_keyword']][$row['referer_name']]);				break;								case Piwik_Common::REFERER_TYPE_WEBSITE:				case Piwik_Common::REFERER_TYPE_PARTNER:										if(!isset($interestByWebsite[$row['referer_type']][$row['referer_name']])) $interestByWebsite[$row['referer_type']][$row['referer_name']]= $archiveProcessing->getNewInterestRow();					$archiveProcessing->updateInterestStats( $row, $interestByWebsite[$row['referer_type']][$row['referer_name']]);										if(!isset($urlByWebsite[$row['referer_type']][$row['referer_name']][$row['referer_url']])) $urlByWebsite[$row['referer_type']][$row['referer_name']][$row['referer_url']]= $archiveProcessing->getNewInterestRow();					$archiveProcessing->updateInterestStats( $row, $urlByWebsite[$row['referer_type']][$row['referer_name']][$row['referer_url']]);									if(!isset($distinctUrls[$row['referer_type']][$row['referer_url']]))					{						$distinctUrls[$row['referer_type']][$row['referer_url']] = true;					}									break;								case Piwik_Common::REFERER_TYPE_NEWSLETTER:					if(!isset($interestByNewsletter[$row['referer_name']])) $interestByNewsletter[$row['referer_name']]= $archiveProcessing->getNewInterestRow();					$archiveProcessing->updateInterestStats( $row, $interestByNewsletter[$row['referer_name']]);									break;								case Piwik_Common::REFERER_TYPE_CAMPAIGN:					if(!empty($row['referer_keyword']))					{						if(!isset($keywordByCampaign[$row['referer_name']][$row['referer_keyword']])) $keywordByCampaign[$row['referer_name']][$row['referer_keyword']]= $archiveProcessing->getNewInterestRow();						$archiveProcessing->updateInterestStats( $row, $keywordByCampaign[$row['referer_name']][$row['referer_keyword']]);					}					if(!isset($interestByCampaign[$row['referer_name']])) $interestByCampaign[$row['referer_name']]= $archiveProcessing->getNewInterestRow();					$archiveProcessing->updateInterestStats( $row, $interestByCampaign[$row['referer_name']]);				break;			}						if(!isset($interestByType[$row['referer_type']] )) $interestByType[$row['referer_type']] = $archiveProcessing->getNewInterestRow();			$archiveProcessing->updateInterestStats($row, $interestByType[$row['referer_type']]);		}				$numberOfDistinctSearchEngines = count($keywordBySearchEngine);		$numberOfDistinctKeywords = count($searchEngineByKeyword);				$numberOfDistinctCampaigns = count($interestByCampaign);		$numberOfDistinctWebsites = count($interestByWebsite[Piwik_Common::REFERER_TYPE_WEBSITE]);		$numberOfDistinctWebsitesUrls = count($distinctUrls[Piwik_Common::REFERER_TYPE_WEBSITE]);		$numberOfDistinctPartners = count($interestByWebsite[Piwik_Common::REFERER_TYPE_PARTNER]);		$numberOfDistinctPartnersUrls = count($distinctUrls[Piwik_Common::REFERER_TYPE_PARTNER]);				$numericRecords = array(			'Referers_distinctSearchEngines'	=> $numberOfDistinctSearchEngines,			'Referers_distinctKeywords' 		=> $numberOfDistinctKeywords,			'Referers_distinctCampaigns'		=> $numberOfDistinctCampaigns,			'Referers_distinctWebsites'			=> $numberOfDistinctWebsites,			'Referers_distinctWebsitesUrls'		=> $numberOfDistinctWebsitesUrls,			'Referers_distinctPartners'			=> $numberOfDistinctPartners,			'Referers_distinctPartnersUrls'		=> $numberOfDistinctPartnersUrls,		);		foreach($numericRecords as $name => $value)		{			$record = new Piwik_ArchiveProcessing_Record_Numeric($name, $value);		}				$data = $archiveProcessing->getDataTableSerialized($interestByType);		$record = new Piwik_ArchiveProcessing_Record_BlobArray('Referers_type', $data);				$maximumRowsInDataTableLevelZero = 500;		$maximumRowsInSubDataTable = 50;				$data = $archiveProcessing->getDataTablesSerialized($keywordBySearchEngine, $interestBySearchEngine, $maximumRowsInDataTableLevelZero, $maximumRowsInSubDataTable);		$record = new Piwik_ArchiveProcessing_Record_BlobArray('Referers_keywordBySearchEngine', $data);				$data = $archiveProcessing->getDataTablesSerialized($searchEngineByKeyword, $interestByKeyword, $maximumRowsInDataTableLevelZero, $maximumRowsInSubDataTable);		$record = new Piwik_ArchiveProcessing_Record_BlobArray('Referers_searchEngineByKeyword', $data);				$data = $archiveProcessing->getDataTablesSerialized($keywordByCampaign, $interestByCampaign, $maximumRowsInDataTableLevelZero, $maximumRowsInSubDataTable);		$record = new Piwik_ArchiveProcessing_Record_BlobArray('Referers_keywordByCampaign', $data);				$data = $archiveProcessing->getDataTablesSerialized($urlByWebsite[Piwik_Common::REFERER_TYPE_WEBSITE], $interestByWebsite[Piwik_Common::REFERER_TYPE_WEBSITE], $maximumRowsInDataTableLevelZero, $maximumRowsInSubDataTable);		$record = new Piwik_ArchiveProcessing_Record_BlobArray('Referers_urlByWebsite', $data);				$data = $archiveProcessing->getDataTablesSerialized($urlByWebsite[Piwik_Common::REFERER_TYPE_PARTNER], $interestByWebsite[Piwik_Common::REFERER_TYPE_PARTNER], $maximumRowsInDataTableLevelZero, $maximumRowsInSubDataTable);		$record = new Piwik_ArchiveProcessing_Record_BlobArray('Referers_urlByPartner', $data);	}}

⌨️ 快捷键说明

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