provider.php
来自「一款可以和GOOGLE媲美的开源统计系统,运用AJAX.功能强大. 无色提示:」· PHP 代码 · 共 185 行
PHP
185 行
<?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: Provider.php 649 2008-10-28 11:42:44Z matt $ * * @package Piwik_Provider */ /** * * @package Piwik_Provider */class Piwik_Provider extends Piwik_Plugin{ public function getInformation() { $info = array( 'name' => 'Provider', 'description' => 'Reports the Provider of the visitors.', 'author' => 'Piwik', 'homepage' => 'http://piwik.org/', 'version' => '0.1', 'TrackerPlugin' => true, // this plugin must be loaded during the stats logging ); return $info; } function getListHooksRegistered() { $hooks = array( 'ArchiveProcessing_Day.compute' => 'archiveDay', 'ArchiveProcessing_Period.compute' => 'archivePeriod', 'Tracker.newVisitorInformation' => 'logProviderInfo', 'WidgetsList.add' => 'addWidget', 'Menu.add' => 'addMenu', ); return $hooks; } function install() { // add column hostname / hostname ext in the visit table $query = "ALTER IGNORE TABLE `".Piwik::prefixTable('log_visit')."` ADD `location_provider` VARCHAR( 100 ) NULL"; // if the column already exist do not throw error. Could be installed twice... try { Zend_Registry::get('db')->query($query); } catch(Exception $e){} } function uninstall() { // add column hostname / hostname ext in the visit table $query = "ALTER TABLE `".Piwik::prefixTable('log_visit')."` DROP `location_provider`"; Zend_Registry::get('db')->query($query); } function addWidget() { Piwik_AddWidget( 'Provider', 'getProvider', Piwik_Translate('Provider_WidgetProviders')); } function addMenu() { Piwik_RenameMenuEntry( 'General_Visitors', 'UserCountry_SubmenuLocations', 'General_Visitors', 'Provider_SubmenuLocationsProvider'); } function postLoad() { Piwik_AddAction('template_headerUserCountry', array('Piwik_Provider','headerUserCountry')); Piwik_AddAction('template_footerUserCountry', array('Piwik_Provider','footerUserCountry')); } function archivePeriod( $notification ) { $archiveProcessing = $notification->getNotificationObject(); $dataTableToSum = array( 'Provider_hostnameExt', ); $archiveProcessing->archiveDataTable($dataTableToSum); } /** * Archive the provider count */ function archiveDay($notification) { $archiveProcessing = $notification->getNotificationObject(); $recordName = 'Provider_hostnameExt'; $labelSQL = "location_provider"; $tableProvider = $archiveProcessing->getDataTableInterestForLabel($labelSQL); $record = new Piwik_ArchiveProcessing_Record_BlobArray($recordName, $tableProvider->getSerialized()); } /** * Logs the provider in the log_visit table */ public function logProviderInfo($notification) { $visitorInfo =& $notification->getNotificationObject(); $hostname = $this->getHost($visitorInfo['location_ip']); $hostnameExtension = $this->getHostnameExt($hostname); // add the value to save in the table log_visit $visitorInfo['location_provider'] = $hostnameExtension; } /** * Returns the hostname extension (site.co.jp in fvae.VARG.ceaga.site.co.jp) * given the full hostname looked up from the IP * * @param string $hostname * * @return string */ private function getHostnameExt($hostname) { $extToExclude = array( 'com', 'net', 'org', 'co' ); $off = strrpos($hostname, '.'); $ext = substr($hostname, $off); if(empty($off) || is_numeric($ext) || strlen($hostname) < 5) { return 'Ip'; } else { $e = explode('.', $hostname); $s = sizeof($e); // if extension not correct if(isset($e[$s-2]) && in_array($e[$s-2], $extToExclude)) { return $e[$s-3].".".$e[$s-2].".".$e[$s-1]; } else { return $e[$s-2].".".$e[$s-1]; } } } /** * Returns the hostname given the string IP in the format ip2long * php.net/ip2long * * @param string $ip * * @return string hostname */ private function getHost($ip) { return trim(strtolower(@gethostbyaddr(long2ip($ip)))); } public function headerUserCountry($notification) { $out =& $notification->getNotificationObject(); $out = '<div id="leftcolumn">'; } public function footerUserCountry($notification) { $out =& $notification->getNotificationObject(); $out = '</div> <div id="rightcolumn"> <h2>Providers</h2>'; $out .= Piwik_FrontController::getInstance()->fetchDispatch('Provider','getProvider'); $out .= '</div>'; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?