diff options
Diffstat (limited to 'plugins/Live/Controller.php')
-rw-r--r-- | plugins/Live/Controller.php | 181 |
1 files changed, 154 insertions, 27 deletions
diff --git a/plugins/Live/Controller.php b/plugins/Live/Controller.php index 5c60d5a6e3..c35be89d06 100644 --- a/plugins/Live/Controller.php +++ b/plugins/Live/Controller.php @@ -1,57 +1,184 @@ <?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$ - * + * * @category Piwik_Plugins * @package Piwik_Live */ /** - * * @package Piwik_Live */ class Piwik_Live_Controller extends Piwik_Controller { - function widget() + function __construct() + { + parent::__construct(); + $this->idSite = Piwik_Common::getRequestVar('idSite'); + $this->minIdVisit = Piwik_Common::getRequestVar('minIdVisit', 0, 'int'); + } + + function index() { - $view = Piwik_View::factory('index'); - $this->setGeneralVariablesView($view); - $view->visitors = $this->getLastVisits($fetch = true); + $this->widget(true); + } + + public function widget($fetch = false) + { + $view = Piwik_View::factory('index'); + $view->idSite = Piwik_Common::getRequestVar('idSite'); + $view->visitorsCountHalfHour = $this->getUsersInLastXMin(30); + $view->visitorsCountToday = $this->getUsersInLastXDays(1); + $view->pisHalfhour = $this->getPageImpressionsInLastXMin(30); + $view->pisToday = $this->getPageImpressionsInLastXDays(1); + $view->visitors = $this->getLastVisitsStart($fetch = true); + echo $view->render(); } - - function getLastVisits($fetch = false) + + public function getLastVisitsDetails($fetch = false) + { + $view = Piwik_ViewDataTable::factory(''); + $view->init( $this->pluginName, + __FUNCTION__, + 'Live.getLastVisitsDetails', + 'getPagesFromVisitId'); +// All colomns in DB which could be shown +//'ip', 'idVisit', 'countActions', 'isVisitorReturning', 'country', 'countryFlag', 'continent', 'provider', 'providerUrl', 'idSite', +//'serverDate', 'visitLength', 'visitLengthPretty', 'firstActionTimestamp', 'lastActionTimestamp', 'refererType', 'refererName', +//'keywords', 'refererUrl', 'searchEngineUrl', 'searchEngineIcon', 'operatingSystem', 'operatingSystemShortName', 'operatingSystemIcon', +//'browserFamily', 'browserFamilyDescription', 'browser', 'browserIcon', 'screen', 'resolution', 'screenIcon', 'plugins', 'lastActionDateTime', +//'serverDatePretty', 'serverTimePretty', 'actionDetails' + + $view->setColumnsToDisplay(array( + 'idVisit', + 'serverDatePretty', + 'serverTimePretty', + 'ip', + 'countActions', + 'visitLengthPretty', + 'keywords', + 'refererUrl', + 'operatingSystemShortName', + 'browser', + 'screen', + 'resolution', + 'plugins', + )); + + $view->setColumnsTranslations(array( + 'idVisit' => Piwik_Translate(''), + 'serverDatePretty' => Piwik_Translate('Live_Date'), + 'serverTimePretty' => Piwik_Translate('Live_Time'), + 'ip' => 'IP', + 'countActions' => Piwik_Translate('VisitorInterest_ColumnPagesPerVisit'), + 'visitLengthPretty' => Piwik_Translate('VisitorInterest_ColumnVisitDuration'), + 'keywords' => Piwik_Translate('Referers_ColumnKeyword'), + 'refererUrl' => Piwik_Translate('Live_Referrer_URL'), + 'operatingSystemShortName' => Piwik_Translate('UserSettings_ColumnOperatingSystem'), + 'browser' => Piwik_Translate('UserSettings_ColumnBrowser'), + 'screen' => Piwik_Translate('UserSettings_ColumnTypeOfScreen'), + 'resolution' => Piwik_Translate('UserSettings_ColumnResolution'), + 'plugins' => Piwik_Translate('UserSettings_ColumnPlugin'), + )); + + $view->disableSort(); + $view->setLimit(10); + $view->disableExcludeLowPopulation(); + $view->setSortedColumn('idVisit', 'ASC'); + $view->disableSearchBox(); + // "Include low population" link won't be displayed under this table + $view->disableExcludeLowPopulation(); + // disable the tag cloud, pie charts, bar chart icons + $view->disableShowAllViewsIcons(); + // disable the button "show more datas" + $view->disableShowAllColumns(); + + return $this->renderView($view, $fetch); + } + + function getPagesFromVisitId( $fetch = false) + { + $view = Piwik_ViewDataTable::factory(''); + $view->init( $this->pluginName, + __FUNCTION__, + 'Live.getLastVisitsForVisitor', + 'getPagesFromVisitId'); + + return $this->renderView($view, $fetch); + } + + public function getLastVisitsStart($fetch = false) { - $idSite = Piwik_Common::getRequestVar('idSite', null, 'int'); - $minIdVisit = Piwik_Common::getRequestVar('minIdVisit', 0, 'int'); - $limit = 10; - $api = new Piwik_API_Request("method=Live.getLastVisits&idSite=$idSite&limit=$limit&minIdVisit=$minIdVisit&format=php&serialize=0&disable_generic_filters=1"); - $view = Piwik_View::factory('lastVisits'); - $visitors = $api->process(); - if($minIdVisit == 0) - { - $visitors = array_slice($visitors, 3); - } - $view->visitors = $visitors; - $rendered = $view->render($fetch); + $view->idSite = Piwik_Common::getRequestVar('idSite'); + $view->visitors = $this->getLastVisits(10); + + $rendered = $view->render($fetch); + if($fetch) { return $rendered; } echo $rendered; } - - function index() + + public function getLastVisits($limit = 10) { - $view = Piwik_View::factory('structure'); - $this->setGeneralVariablesView($view); - $view->visitors = $this->getLastVisits($fetch = true); - echo $view->render(); + $api = new Piwik_API_Request("method=Live.getLastVisits&idSite=$this->idSite&limit=$limit&format=php&serialize=0&disable_generic_filters=1"); + $visitors = $api->process(); + + return $visitors; + } + + public function getUsersInLastXMin($minutes = 30) { + $api = new Piwik_API_Request("method=Live.getUsersInLastXMin&idSite=".$this->idSite."&minutes=".$minutes."&format=php&serialize=0&disable_generic_filters=1"); + $visitors_halfhour = $api->process(); + + return count($visitors_halfhour); + } + + public function getUsersInLastXDays($days = 1) { + $api = new Piwik_API_Request("method=Live.getUsersInLastXDays&idSite=$this->idSite&days=$days&format=php&serialize=0&disable_generic_filters=1"); + $visitors_today = $api->process(); + + return count($visitors_today); + } + + public function getPageImpressionsInLastXMin($minutes = 30) { + $api = new Piwik_API_Request("method=Live.getPageImpressionsInLastXMin&idSite=$this->idSite&minutes=$minutes&format=php&serialize=0&disable_generic_filters=1"); + $pis_halfhour = $api->process(); + + return count($pis_halfhour); + } + + public function getPageImpressionsInLastXDays($days = 1) { + $api = new Piwik_API_Request("method=Live.getPageImpressionsInLastXDays&idSite=$this->idSite&days=$days&format=php&serialize=0&disable_generic_filters=1"); + $pis_today = $api->process(); + + return count($pis_today); + } + + public function ajaxTotalVisitors($fetch = false) + { + $view = Piwik_View::factory('totalVisits'); + $view->idSite = Piwik_Common::getRequestVar('idSite'); + $view->visitorsCountHalfHour = $this->getUsersInLastXMin(30); + $view->visitorsCountToday = $this->getUsersInLastXDays(1); + $view->pisHalfhour = $this->getPageImpressionsInLastXMin(30); + $view->pisToday = $this->getPageImpressionsInLastXDays(1); + + $rendered = $view->render($fetch); + + if($fetch) + { + return $rendered; + } + echo $rendered; } } |