Ticket #1120: Piwik-3.patch

File Piwik-3.patch, 10.3 KB (added by jr-ewing, 2 years ago)
  • plugins/Live/API.php

     
    221221        /* 
    222222         * @return Piwik_DataTable 
    223223         */ 
    224         public function getUsersInLastXMin( $idSite = false, $limit = 10, $minIdVisit = false, $minutes = 30 ) 
     224        public function getUsersInLastXMin( $idSite = false, $minutes = 30 ) 
    225225        { 
    226226                if(is_null($idSite)) 
    227227                { 
     
    231231                { 
    232232                        Piwik::checkUserHasViewAccess($idSite); 
    233233                } 
    234 //              $visitorDetails = $this->loadLastVisitorDetailsInLastXMinFromDatabase(null, $idSite, $limit, $minIdVisit, $minutes); 
    235                 $visitorDetails = $this->loadLastVisitorInLastXTimeFromDatabase(null, $idSite, $limit, $minIdVisit, $minutes, 0, 1); 
    236  
    237                 $table = $this->getCleanedVisitorsFromDetails($visitorDetails); 
     234                $visitorData = $this->loadLastVisitorInLastXTimeFromDatabase($idSite, $minutes, 0, 1); 
    238235 
    239                 return $table; 
     236                return $visitorData; 
    240237        } 
    241238 
    242239        /* 
    243240         * @return Piwik_DataTable 
    244241         */ 
    245         public function getUsersInLastXDays( $idSite = false, $limit = 10, $minIdVisit = false, $days = 10 ) 
     242        public function getUsersInLastXDays( $idSite = false, $days = 10 ) 
    246243        { 
    247244 
    248245                if(is_null($idSite)) 
     
    253250                { 
    254251                        Piwik::checkUserHasViewAccess($idSite); 
    255252                } 
    256 //              $visitorDetails = $this->loadLastVisitorDetailsInLastXDaysFromDatabase(null, $idSite, $limit, $minIdVisit, $days); 
    257                 $visitorDetails = $this->loadLastVisitorInLastXTimeFromDatabase(null, $idSite, $limit, $minIdVisit, 0, $days, 1); 
    258  
    259                 $table = $this->getCleanedVisitorsFromDetails($visitorDetails); 
     253                $visitorData = $this->loadLastVisitorInLastXTimeFromDatabase($idSite, 0, $days, 1); 
    260254 
    261                 return $table; 
     255                return $visitorData; 
    262256        } 
    263257 
    264258        /* 
    265259         * @return array 
    266260         */ 
    267         public function getPageImpressionsInLastXDays($idSite = false, $limit = 10, $minIdVisit = false, $days = 10){ 
    268                 // for checking given vars 
    269                 #echo $idSite.'|'.$limit.'|'.$minIdVisit.'|'.$days.'<br />'; 
     261        public function getPageImpressionsInLastXDays($idSite = false, $days = 10) 
     262        { 
    270263 
    271264                if(is_null($idSite)) 
    272265                { 
     
    276269                { 
    277270                        Piwik::checkUserHasViewAccess($idSite); 
    278271                } 
    279 //              $pageDetails = $this->loadLastVisitedPagesInLastXDaysFromDatabase(null, $idSite, $limit, $minIdVisit, $days); 
    280                 $pageDetails = $this->loadLastVisitorInLastXTimeFromDatabase(null, $idSite, $limit, $minIdVisit, 0, $days, 2); 
    281  
    282                 $i = -1; 
    283                 foreach ($pageDetails as $detail) { 
    284                         $i++; 
    285                         if(strlen($pageDetails[$i]['name']) > 30) { 
    286                                 $pageDetails[$i]['name']  = substr($pageDetails[$i]['name'] , 0, 30 - 3).'...'; 
    287                         } 
    288                 } 
     272                $visitorData = $this->loadLastVisitorInLastXTimeFromDatabase($idSite, 0, $days, 2); 
    289273 
    290                 return $pageDetails; 
     274                return $visitorData; 
    291275        } 
    292276 
    293277        /* 
    294278         * @return array 
    295279         */ 
    296         public function getPageImpressionsInLastXMin($idSite = false, $limit = 10, $minIdVisit = false, $minutes = 30){ 
     280        public function getPageImpressionsInLastXMin($idSite = false, $minutes = 30) 
     281        { 
    297282 
    298283                if(is_null($idSite)) 
    299284                { 
     
    303288                { 
    304289                        Piwik::checkUserHasViewAccess($idSite); 
    305290                } 
    306 //              $pageDetails = $this->loadLastVisitedPagesInLastXMinFromDatabase(null, $idSite, $limit, $minIdVisit, $minutes); 
    307                 $pageDetails = $this->loadLastVisitorInLastXTimeFromDatabase(null, $idSite, $limit, $minIdVisit, $minutes, 0, 2); 
     291                $visitorData = $this->loadLastVisitorInLastXTimeFromDatabase($idSite, $minutes, 0, 2); 
    308292 
    309                 $i = -1; 
    310                 foreach ($pageDetails as $detail) { 
    311                         $i++; 
    312                         if(strlen($pageDetails[$i]['name']) > 30) { 
    313                                 $pageDetails[$i]['name']  = substr($pageDetails[$i]['name'] , 0, 30 - 3).'...'; 
    314                         } 
    315                 } 
    316                 return $pageDetails; 
     293                return $visitorData; 
    317294        } 
    318295 
    319296 
    320297        /** 
    321298         * Load last Visitors PAGES or DETAILS in MINUTES or DAYS from database 
    322299         * 
    323          * @param boolen $visitorId 
    324          * @param boolen $idSite 
    325          * @param int $limit int 
    326          * @param int $minIdVisit 
     300         * @param int $idSite 
    327301         * @param int $minutes 
    328302         * @param int $days 
    329          * @param int $type 1 = DETAILS; 2 = PAGES 
     303         * @param int $type 1 = VISITS; 2 = PAGEVIEWS 
    330304         * 
    331305         * @return mixed 
    332306         */ 
    333         private function loadLastVisitorInLastXTimeFromDatabase($visitorId = null, $idSite = null, $limit = 1000, $minIdVisit = false, $minutes = 0, $days = 0, $type = 0 ) 
     307        private function loadLastVisitorInLastXTimeFromDatabase($idSite = null, $minutes = 0, $days = 0, $type = 0 ) 
    334308        { 
    335309                $where = $whereBind = array(); 
    336310 
     
    340314                        $whereBind[] = $idSite; 
    341315                } 
    342316 
    343                 if(!is_null($visitorId)) 
    344                 { 
    345                         $where[] = " `visitor_idcookie` = ? "; 
    346                         $whereBind[] = $visitorId; 
    347                 } 
    348  
    349                 if(!is_null($minIdVisit)) 
    350                 { 
    351                         $where[] = " " . Piwik::prefixTable('log_visit') . ".`idvisit` > ? "; 
    352                         $whereBind[] = $minIdVisit; 
    353                 } 
    354  
    355317                if($minutes != 0) 
    356318                { 
    357319                        $timeLimit = mktime(date("H"), date("i") - $minutes, 0, date("m"),   date("d"),   date("Y")); 
     
    373335                // Details 
    374336                if($type == 1) 
    375337                { 
    376                         $sql = "SELECT  " . Piwik::prefixTable('log_visit') . ".* 
     338                        $sql = "SELECT  " . Piwik::prefixTable('log_visit') . ".idvisit 
    377339                                FROM " . Piwik::prefixTable('log_visit') . " 
    378340                                $sqlWhere 
    379                                 ORDER BY idvisit DESC 
    380                                 LIMIT " . (int)$limit; 
     341                                ORDER BY idvisit DESC"; 
    381342                 } 
    382343                 // Pages 
    383344                 elseif($type == 2) 
    384345                 { 
    385                         // different SELECT between $minutes & $days 
    386                         if($minutes != 0) 
    387                         { 
    388                                 $sql_select = "SELECT " . Piwik::prefixTable('log_link_visit_action') . ".`idaction_url`, " . Piwik::prefixTable('log_action') . ".`idaction`, " . Piwik::prefixTable('log_action') . ".`name` , " . Piwik::prefixTable('log_visit') . ".*"; 
    389                         } 
    390                         elseif($days != 0) 
    391                         { 
    392                             $sql_select = "SELECT " . Piwik::prefixTable('log_link_visit_action') . ".`idaction_url`, " . Piwik::prefixTable('log_action') . ".`idaction`, " . Piwik::prefixTable('log_action') . ".`name` , " . Piwik::prefixTable('log_link_visit_action') . ".*"; 
    393                         } 
    394                         else 
    395                         { 
    396                                 // neither $minutes nor $days --> ERROR 
    397                                 return false; 
    398                         } 
    399  
     346                        $sql_select = "SELECT " . Piwik::prefixTable('log_link_visit_action') . ".`idaction_url`"; 
    400347                        $sql = $sql_select." 
    401348                                FROM " . Piwik::prefixTable('log_link_visit_action') . " 
    402                                 INNER JOIN " . Piwik::prefixTable('log_action') . " ON " . Piwik::prefixTable('log_link_visit_action') . ".`idaction_url`= " . Piwik::prefixTable('log_action') . ".`idaction` 
    403349                                INNER JOIN " . Piwik::prefixTable('log_visit') . " ON " . Piwik::prefixTable('log_visit') . ".`idvisit` = " . Piwik::prefixTable('log_link_visit_action') . ".`idvisit` 
    404350                                $sqlWhere"; 
    405351                 } 
  • plugins/Live/Controller.php

     
    3232        public function widget($fetch = false) 
    3333        { 
    3434                $view = Piwik_View::factory('index'); 
    35                 $this->setGeneralVariablesView($view); 
     35//              $this->setGeneralVariablesView($view); 
     36                $view->idSite = Piwik_Common::getRequestVar('idSite');           
    3637                $view->visitorsCountHalfHour = $this->getUsersInLastXMin(30); 
    3738                $view->visitorsCountToday = $this->getUsersInLastXDays(1); 
    3839                $view->pisHalfhour = $this->getPageImpressionsInLastXMin(30); 
     
    124125        public function getLastVisitsStart($fetch = false) 
    125126        { 
    126127                $view = Piwik_View::factory('lastVisits'); 
    127                 $this->setGeneralVariablesView($view); 
     128//              $this->setGeneralVariablesView($view); 
     129                $view->idSite = Piwik_Common::getRequestVar('idSite');           
     130                 
    128131                $view->visitors = $this->getLastVisits(10); 
    129132 
    130133                $rendered = $view->render($fetch); 
     
    138141 
    139142        public function getLastVisits($limit = 10) 
    140143        { 
    141                 $api = new Piwik_API_Request("method=Live.getLastVisits&idSite=$this->idSite&limit=$limit&minIdVisit=$this->minIdVisit&format=php&serialize=0&disable_generic_filters=1"); 
     144                $api = new Piwik_API_Request("method=Live.getLastVisits&idSite=$this->idSite&limit=$limit&format=php&serialize=0&disable_generic_filters=1"); 
    142145                $visitors = $api->process(); 
    143146 
    144147                return $visitors; 
    145148        } 
    146149 
    147150        public function getUsersInLastXMin($minutes = 30) { 
    148                 $api = new Piwik_API_Request("method=Live.getUsersInLastXMin&idSite=".$this->idSite."&limit=10000&minIdVisit=".$this->minIdVisit."&minutes=".$minutes."&format=php&serialize=0&disable_generic_filters=1"); 
     151                $api = new Piwik_API_Request("method=Live.getUsersInLastXMin&idSite=".$this->idSite."&minutes=".$minutes."&format=php&serialize=0&disable_generic_filters=1"); 
    149152                $visitors_halfhour = $api->process(); 
    150153 
    151154                return count($visitors_halfhour); 
    152155        } 
    153156 
    154157        public function getUsersInLastXDays($days = 1) { 
    155                 $api = new Piwik_API_Request("method=Live.getUsersInLastXDays&idSite=$this->idSite&limit=50000&minIdVisit=$this->minIdVisit&days=$days&format=php&serialize=0&disable_generic_filters=1"); 
     158                $api = new Piwik_API_Request("method=Live.getUsersInLastXDays&idSite=$this->idSite&days=$days&format=php&serialize=0&disable_generic_filters=1"); 
    156159                $visitors_today = $api->process(); 
    157160 
    158161                return count($visitors_today); 
    159162        } 
    160163 
    161164        public function getPageImpressionsInLastXMin($minutes = 30) { 
    162                 $api = new Piwik_API_Request("method=Live.getPageImpressionsInLastXMin&idSite=$this->idSite&limit=10000&minIdVisit=$this->minIdVisit&minutes=$minutes&format=php&serialize=0&disable_generic_filters=1"); 
     165                $api = new Piwik_API_Request("method=Live.getPageImpressionsInLastXMin&idSite=$this->idSite&minutes=$minutes&format=php&serialize=0&disable_generic_filters=1"); 
    163166                $pis_halfhour = $api->process(); 
    164167 
    165168                return count($pis_halfhour); 
    166169        } 
    167170 
    168171        public function getPageImpressionsInLastXDays($days = 1) { 
    169                 $api = new Piwik_API_Request("method=Live.getPageImpressionsInLastXDays&idSite=$this->idSite&limit=50000&minIdVisit=$this->minIdVisit&days=$days&format=php&serialize=0&disable_generic_filters=1"); 
     172                $api = new Piwik_API_Request("method=Live.getPageImpressionsInLastXDays&idSite=$this->idSite&days=$days&format=php&serialize=0&disable_generic_filters=1"); 
    170173                $pis_today = $api->process(); 
    171174 
    172175                return count($pis_today); 
     
    175178        public function ajaxTotalVisitors($fetch = false) 
    176179        { 
    177180                $view = Piwik_View::factory('totalVisits'); 
    178                 $this->setGeneralVariablesView($view); 
     181//              $this->setGeneralVariablesView($view); 
     182                $view->idSite = Piwik_Common::getRequestVar('idSite');           
    179183                $view->visitorsCountHalfHour = $this->getUsersInLastXMin(30); 
    180184                $view->visitorsCountToday = $this->getUsersInLastXDays(1); 
    181185                $view->pisHalfhour = $this->getPageImpressionsInLastXMin(30); 
    182186                $view->pisToday = $this->getPageImpressionsInLastXDays(1); 
    183187 
    184                 echo $view->render(); 
     188                $rendered = $view->render($fetch); 
     189 
     190                if($fetch) 
     191                { 
     192                        return $rendered; 
     193                } 
     194                echo $rendered;  
    185195        } 
    186196}