Ticket #1120: #1120-#v2.patch
| File #1120-#v2.patch, 25.4 KB (added by peterb, 22 months ago) |
|---|
-
plugins/Live/API.php
### Eclipse Workspace Patch 1.0 #P trunk
33 33 } 34 34 return self::$instance; 35 35 } 36 36 37 37 const TYPE_FETCH_VISITS = 1; 38 38 const TYPE_FETCH_PAGEVIEWS = 2; 39 39 … … 51 51 public function getLastVisitsForVisitor( $visitorId, $idSite, $limit = 10 ) 52 52 { 53 53 Piwik::checkUserHasViewAccess($idSite); 54 $visitorDetails = $this->loadLastVisitorDetailsFromDatabase($idSite, $visitorId, $limit); 54 var_dump($visitorId); 55 $visitorDetails = $this->loadLastVisitorDetailsFromDatabase($idSite, $period = null, $date = null, $limit, $offset = null, $minIdVisit = null, $visitorId); 55 56 $table = $this->getCleanedVisitorsFromDetails($visitorDetails, $idSite); 56 57 return $table; 57 58 } … … 62 63 public function getLastVisits( $idSite, $limit = 10, $minIdVisit = false ) 63 64 { 64 65 Piwik::checkUserHasViewAccess($idSite); 65 $visitorDetails = $this->loadLastVisitorDetailsFromDatabase($idSite, $ visitorId = null, $limit, $minIdVisit);66 $visitorDetails = $this->loadLastVisitorDetailsFromDatabase($idSite, $period = null, $date = null, $limit, $offset = null, $minIdVisit, $visitorId = null); 66 67 $table = $this->getCleanedVisitorsFromDetails($visitorDetails, $idSite); 67 68 return $table; 68 69 } … … 70 71 /* 71 72 * @return Piwik_DataTable 72 73 */ 73 public function getLastVisitsDetails( $idSite, $ limit = 1000, $minIdVisit = false )74 public function getLastVisitsDetails( $idSite, $period = null, $date = null, $limit = 25, $filter_offset = 0, $minIdVisit = false ) 74 75 { 75 76 Piwik::checkUserHasViewAccess($idSite); 76 $visitorDetails = $this->loadLastVisitorDetailsFromDatabase($idSite, $ visitorId = null, $limit, $minIdVisit);77 $visitorDetails = $this->loadLastVisitorDetailsFromDatabase($idSite, $period, $date, $limit, $filter_offset, $minIdVisit); 77 78 $dataTable = $this->getCleanedVisitorsFromDetails($visitorDetails, $idSite); 78 79 return $dataTable; 79 80 } … … 118 119 $visitorData = $this->loadLastVisitorInLastXTimeFromDatabase($idSite, $minutes, $days = 0, self::TYPE_FETCH_PAGEVIEWS); 119 120 return $visitorData; 120 121 } 121 122 122 123 /* 123 124 * @return Piwik_DataTable 124 125 */ … … 144 145 $sql = " 145 146 SELECT DISTINCT " .Piwik_Common::prefixTable('log_action').".name AS pageUrl 146 147 FROM " .Piwik_Common::prefixTable('log_link_visit_action')." 147 INNER JOIN " .Piwik_Common::prefixTable('log_action')." 148 INNER JOIN " .Piwik_Common::prefixTable('log_action')." 148 149 ON " .Piwik_Common::prefixTable('log_link_visit_action').".idaction_url = " .Piwik_Common::prefixTable('log_action').".idaction 149 150 WHERE " .Piwik_Common::prefixTable('log_link_visit_action').".idvisit = $idvisit; 150 151 "; … … 154 155 $sql = " 155 156 SELECT DISTINCT " .Piwik_Common::prefixTable('log_action').".name AS pageUrl 156 157 FROM " .Piwik_Common::prefixTable('log_link_visit_action')." 157 INNER JOIN " .Piwik_Common::prefixTable('log_action')." 158 INNER JOIN " .Piwik_Common::prefixTable('log_action')." 158 159 ON " .Piwik_Common::prefixTable('log_link_visit_action').".idaction_name = " .Piwik_Common::prefixTable('log_action').".idaction 159 160 WHERE " .Piwik_Common::prefixTable('log_link_visit_action').".idvisit = $idvisit; 160 161 "; … … 169 170 /* 170 171 * @return array 171 172 */ 172 private function loadLastVisitorDetailsFromDatabase($idSite, $ visitorId = null, $limit = null, $minIdVisit = false)173 private function loadLastVisitorDetailsFromDatabase($idSite, $period = null, $date = null, $limit = null, $offset = null, $minIdVisit = false, $visitorId = null) 173 174 { 174 175 $where = $whereBind = array(); 175 176 176 177 $where[] = Piwik_Common::prefixTable('log_visit') . ".idsite = ? "; 177 178 $whereBind[] = $idSite; 178 179 179 180 if(!empty($visitorId)) 180 181 { 181 182 $where[] = Piwik_Common::prefixTable('log_visit') . ".visitor_idcookie = ? "; … … 188 189 $whereBind[] = $minIdVisit; 189 190 } 190 191 192 //increse limit by offset when visitor paginates 193 if(isset($offset)) { 194 $limit += $offset; 195 } 196 197 // SQL Filter with provided period 198 if (!empty($period) && !empty($date)) { 199 200 $currentSite = new Piwik_Site($idSite); 201 $currentTimezone = $currentSite->getTimezone(); 202 $processedDate = Piwik_Date::factory($date, $currentTimezone); 203 $processedPeriod = Piwik_Period::factory($period, $processedDate); 204 205 array_push( $where, Piwik_Common::prefixTable('log_visit') . ".visit_first_action_time BETWEEN ? AND ?"); 206 array_push( $whereBind, 207 $processedPeriod->getDateStart()->toString(), 208 $processedPeriod->getDateEnd()->addDay(1)->toString()); 209 } 210 191 211 $sqlWhere = ""; 192 212 if(count($where) > 0) 193 213 { 194 214 $sqlWhere = " WHERE " . join(' AND ', $where); 195 215 } 196 216 197 $sql = "SELECT " . Piwik_Common::prefixTable('log_visit') . ".* , 217 $sql = "SELECT " . Piwik_Common::prefixTable('log_visit') . ".* , 198 218 " . Piwik_Common::prefixTable ( 'goal' ) . ".match_attribute 199 219 FROM " . Piwik_Common::prefixTable('log_visit') . " 200 LEFT JOIN ".Piwik_Common::prefixTable('log_conversion')." 220 LEFT JOIN ".Piwik_Common::prefixTable('log_conversion')." 201 221 ON " . Piwik_Common::prefixTable('log_visit') . ".idvisit = " . Piwik_Common::prefixTable('log_conversion') . ".idvisit 202 LEFT JOIN ".Piwik_Common::prefixTable('goal')." 222 LEFT JOIN ".Piwik_Common::prefixTable('goal')." 203 223 ON (" . Piwik_Common::prefixTable('goal') . ".idsite = " . Piwik_Common::prefixTable('log_visit') . ".idsite 204 224 AND " . Piwik_Common::prefixTable('goal') . ".idgoal = " . Piwik_Common::prefixTable('log_conversion') . ".idgoal) 205 225 AND " . Piwik_Common::prefixTable('goal') . ".deleted = 0 206 $sqlWhere207 ORDER BY id site,idvisit DESC226 $sqlWhere 227 ORDER BY idvisit DESC 208 228 LIMIT $limit"; 209 229 210 230 return Piwik_FetchAll($sql, $whereBind); … … 235 255 236 256 if($days != 0) 237 257 { 238 $timeLimit = mktime(0, 0, 0, date("m"), date("d") - $days + 1, date("Y")); 239 $where[] = " visit_last_action_time > '".date('Y-m-d H:i:s', $timeLimit)."'"; 258 $oSite = new Piwik_Site($idSite); 259 $sTimezone = $oSite->getTimezone(); 260 261 $oDate = Piwik_Date::factory("now"); 262 $oDate = $oDate->setTimezone($sTimezone); 263 264 $where[] = " visit_last_action_time > '".$oDate->getDateStartUTC()."'"; 265 240 266 } 241 267 242 268 $sqlWhere = ""; … … 252 278 FROM " . Piwik_Common::prefixTable('log_visit') . " 253 279 $sqlWhere 254 280 ORDER BY idsite,idvisit DESC"; 255 }256 // Pages257 elseif($type == self::TYPE_FETCH_PAGEVIEWS)258 {281 } 282 // Pages 283 elseif($type == self::TYPE_FETCH_PAGEVIEWS) 284 { 259 285 $sql = "SELECT " . Piwik_Common::prefixTable('log_link_visit_action') . ".idaction_url 260 286 FROM " . Piwik_Common::prefixTable('log_link_visit_action') . " 261 INNER JOIN " . Piwik_Common::prefixTable('log_visit') . " 287 INNER JOIN " . Piwik_Common::prefixTable('log_visit') . " 262 288 ON " . Piwik_Common::prefixTable('log_visit') . ".idvisit = " . Piwik_Common::prefixTable('log_link_visit_action') . ".idvisit 263 $sqlWhere";264 }265 else266 {267 // no $type is set --> ERROR268 throw new Exception("type parameter is not properly set.");269 }289 $sqlWhere"; 290 } 291 else 292 { 293 // no $type is set --> ERROR 294 throw new Exception("type parameter is not properly set."); 295 } 270 296 271 297 // return $sql by fetching 272 298 return Piwik_FetchAll($sql, $whereBind); 273 299 } 274 275 300 301 276 302 /** 277 303 * Removes fields that are not meant to be displayed (md5 config hash) 278 304 * Or that the user should only access if he is super user (cookie, IP) 279 * 305 * 280 306 * @return void 281 307 */ 282 308 private function cleanVisitorDetails( &$visitorDetails ) … … 295 321 } 296 322 } 297 323 } 298 324 299 325 } -
plugins/Live/templates/index.tpl
61 61 $("#visitsTotal").load("index.php?module=Live&idSite={/literal}{$idSite}{literal}&action=ajaxTotalVisitors"); 62 62 } 63 63 64 // updates the visit table, to refresh the already presented vis otors pages64 // updates the visit table, to refresh the already presented visitors pages 65 65 function updateVisitBox() 66 66 { 67 67 $("#visitsLive").load("index.php?module=Live&idSite={/literal}{$idSite}{literal}&action=getLastVisitsStart"); … … 79 79 </script> 80 80 81 81 <style> 82 #visitsLive { 83 text-align:left; 84 font-size:90%; 82 #visitsLive { 83 text-align:left; 84 font-size:90%; 85 color:#444444; 86 } 87 #visitsLive .datetime, #visitsLive .country, #visitsLive .referer, #visitsLive .settings, #visitsLive .returning , #visitsLive .countActions{ 88 border-bottom: 1px solid #d3d1c5; 89 border-right:1px solid #d3d1c5; 90 padding:5px 5px 5px 12px; 85 91 } 86 #visitsLive .datetime, #visitsLive .country, #visitsLive .referer, #visitsLive .settings, #visitsLive .returning , #visitsLive .countActions{87 border-bottom:1px solid #C1DAD7;88 border-right:1px solid #C1DAD7;89 padding:5px 5px 5px 12px;90 }91 92 92 #visitsLive .datetime { 93 background:#D4E3ED url(plugins/CoreHome/templates/images/bg_header.jpg) repeat-x scroll 0 0; 94 border-top:1px solid #C1DAD7; 95 color:#6D929B; 96 margin:0; 97 text-align:left; 93 #visitsLive .datetime { 94 background:#E4E2D7; 95 border-top:1px solid #d3d1c5; 96 margin:0; 97 text-align:left; 98 98 } 99 99 100 #visitsLive .country { 101 color:#4F6B72; 102 background:#FFFFFF url(plugins/CoreHome/templates/images/bullet1.gif) no-repeat scroll 0 0; 100 #visitsLive .country { 101 background:#FFFFFF url(plugins/CoreHome/templates/images/bullet1.gif) no-repeat scroll 0 0; 103 102 } 104 103 105 #visitsLive .referer { 106 background:#F9FAFA none repeat scroll 0 0; 107 color:#797268; 104 #visitsLive .referer { 105 background:#F9FAFA none repeat scroll 0 0; 108 106 } 109 107 110 #visitsLive .pagesTitle { 111 display:block; 112 float:left; 113 padding-top: 3px; 108 #visitsLive .referer:hover { 109 background:#FFFFF7; 114 110 } 115 111 116 #visitsLive .countActions{117 background:#FFFFFF none repeat scroll 0 0;118 color:#4F6B72;112 #visitsLive .pagesTitle { 113 display:block; 114 float:left; 119 115 } 120 116 121 #visitsLive .settings { 122 background:#FFFFFF none repeat scroll 0 0; 123 color:#4F6B72; 124 } 117 #visitsLive .countActions { 118 background:#FFFFFF none repeat scroll 0 0; 119 } 125 120 126 #visitsLive .returning { 127 background:#F9FAFA none repeat scroll 0 0; 128 color:#797268; 129 } 121 #visitsLive .settings { 122 background:#FFFFFF none repeat scroll 0 0; 123 } 130 124 131 #visitsLive .visit { 132 } 125 #visitsLive .returning { 126 background:#F9FAFA none repeat scroll 0 0; 127 } 133 128 134 #visitsLive .alt { 135 } 129 .visitsLiveFooter a.rightLink{ 130 float:right; 131 padding-right:20px; 132 } 136 133 137 #visitsLive .actions {138 background:#F9FAFA none repeat scroll 0 0;139 color:#797268;140 padding:0px 5px 0px 12px;141 }142 143 134 </style> 144 135 {/literal} 145 136 … … 175 166 {$visitors} 176 167 </div> 177 168 178 <div >169 <div class="visitsLiveFooter"> 179 170 <a href="javascript:void(0);" onclick="onClickPause();"><img id="pauseImage" border="0" src="plugins/Live/templates/images/pause_disabled.gif" /></a> 180 171 <a href="javascript:void(0);" onclick="onClickPlay();"><img id="playImage" border="0" src="plugins/Live/templates/images/play.gif" /></a> 172 <a class="rightLink" href="javascript:broadcast.propagateAjax('module=Live&action=getLastVisitsDetails')">{'View detailed visitor log'|translate}</a> 181 173 </div> -
plugins/Live/templates/visitorLog.tpl
1 <div class="home" id="content" style="display: block;"><a graphid="VisitsSummarygetEvolutionGraph" name="evolutionGraph"></a> 2 <h2>Besucherverlauf</h2> 3 4 <div id="{$properties.uniqueId}"> 5 6 {if isset($arrayDataTable.result) and $arrayDataTable.result == 'error'} 7 {$arrayDataTable.message} 8 {else} 9 {if count($arrayDataTable) == 0} 10 <a name="{$properties.uniqueId}"></a> 11 <div class="pk-emptyDataTable">{'CoreHome_ThereIsNoDataForThisReport'|translate}</div> 12 {else} 13 <a name="{$properties.uniqueId}"></a> 14 15 <table class="dataTable" cellspacing="0" width="100%" style="width:100%;"> 16 <thead> 17 <tr> 18 <th style="display:none"></th> 19 <th id="label" class="sortable label" style="cursor: auto;width:12%" width="12%"> 20 <div id="thDIV">{'Live_Date'|translate}<div></th> 21 <th id="label" class="sortable label" style="cursor: auto;width:13%" width="13%"> 22 <div id="thDIV">{'General_Visitors'|translate}<div></th> 23 <th id="label" class="sortable label" style="cursor: auto;width:15%" width="15%"> 24 <div id="thDIV">{'Live_Referrer_URL'|translate}<div></th> 25 <th id="label" class="sortable label" style="cursor: auto;width:62%" width="62%"> 26 <div id="thDIV">{'General_ColumnNbActions'|translate}<div></th> 27 </tr> 28 </thead> 29 <tbody> 30 {php} $col = 0; {/php} 31 32 {foreach from=$arrayDataTable item=visitor} 33 <tr> 34 35 {php} 36 $col++; 37 if ($col % 2 ) 38 { 39 $label = "odd"; 40 } else { 41 $label = "even"; 42 } 43 {/php} 44 45 <td style="display:none;"></td> 46 <td class="label label{php} echo $label; {/php}" style="width:12%" width="12%"> 47 48 {$visitor.columns.serverDatePretty} - {$visitor.columns.serverTimePretty} 49 {if isset($visitor.columns.ip)} <br/>IP: {$visitor.columns.ip}{/if} 50 {if (isset($visitor.columns.provider)&&$visitor.columns.provider!='IP')} 51 <br /> 52 {'Provider_ColumnProvider'|translate}: 53 <a href="{$visitor.columns.providerUrl}" target="_blank" title="{$visitor.columns.providerUrl}" style="text-decoration:underline;"> 54 {$visitor.columns.provider} 55 </a> 56 {/if} 57 58 </td> 59 <td class="label label{php} echo $label; {/php}" style="width:13%" width="13%"> 60 <img src="{$visitor.columns.countryFlag}" title="{$visitor.columns.country}, Provider {$visitor.columns.provider}" /> 61 <img src="{$visitor.columns.browserIcon}" title="{$visitor.columns.browser} with plugins {$visitor.columns.plugins} enabled" /> 62 <img src="{$visitor.columns.operatingSystemIcon}" title="{$visitor.columns.operatingSystem}, {$visitor.columns.resolution} ({$visitor.columns.screen})" /> 63 {if $visitor.columns.isVisitorGoalConverted}<img src="{$visitor.columns.goalIcon}" title="{$visitor.columns.goalType}" />{/if} 64 {if $visitor.columns.isVisitorReturning} 65 <img src="plugins/Live/templates/images/returningVisitor.gif" title="Returning Visitor" /> 66 {/if} 67 <br/> 68 {if count($visitor.columns.pluginIcons) > 0} 69 <hr /> 70 {'UserSettings_Plugins'|translate}: 71 {foreach from=$visitor.columns.pluginIcons item=pluginIcon} 72 <img src="{$pluginIcon.pluginIcon}" title="{$pluginIcon.pluginName|capitalize:true}" alt="{$pluginIcon.pluginName|capitalize:true}" /> 73 {/foreach} 74 {/if} 75 </td> 76 77 <td class="column{php} echo $label; {/php}" style="width:20%" width="20%"> 78 <div class="referer"> 79 {if $visitor.columns.refererType == 'website'} 80 {'Referers_ColumnWebsite'|translate}: 81 <a href="{$visitor.columns.refererUrl}" target="_blank" title="{$visitor.columns.refererUrl}" style="text-decoration:underline;"> 82 {$visitor.columns.refererName} 83 </a> 84 {/if} 85 {if $visitor.columns.refererType == 'campaign'} 86 {'Referers_Campaigns'|translate} 87 <br /> 88 <a href="{$visitor.columns.refererUrl}" target="_blank" title="{$visitor.columns.refererUrl}" style="text-decoration:underline;"> 89 {$visitor.columns.refererName} 90 </a> 91 {/if} 92 {if $visitor.columns.refererType == 'searchEngine'} 93 {if !empty($visitor.columns.searchEngineIcon)} 94 <img src="{$visitor.columns.searchEngineIcon}" alt="{$visitor.columns.refererName}" /> 95 {/if} 96 {$visitor.columns.refererName} 97 <br /> 98 {if !empty($visitor.columns.keywords)}{'Referers_Keywords'|translate}:{/if} 99 <a href="{$visitor.columns.refererUrl}" target="_blank" style="text-decoration:underline;"> 100 {if !empty($visitor.columns.keywords)} 101 "{$visitor.columns.keywords}" 102 {/if} 103 </a> 104 {/if} 105 {if $visitor.columns.refererType == 'directEntry'}{'Referers_DirectEntry'|translate}{/if} 106 </div> 107 </td> 108 <td class="column{php} echo $label; {/php}" style="width:55%" width="55%"> 109 <strong>{$visitor.columns.actionDetails|@count} {'Actions_Actions'|translate} - {$visitor.columns.visitLengthPretty}</strong> 110 <br /><br /> 111 <ol style="list-style:decimal inside none;"> 112 {foreach from=$visitor.columns.actionDetails item=action} 113 <li> 114 <a href="{$action.pageUrl}" target="_blank" style="text-decoration:underline;" title="{$action.pageUrl}"> 115 {$action.pageUrl|truncate:80:"...":true} 116 </a> 117 </li> 118 {/foreach} 119 </ol> 120 </td> 121 </tr> 122 {/foreach} 123 </tbody> 124 </table> 125 126 {/if} 127 {if $properties.show_footer} 128 {include file="CoreHome/templates/datatable_footer.tpl"} 129 {/if} 130 {include file="CoreHome/templates/datatable_js.tpl"} 131 {/if} 132 </div> 133 134 {literal} 135 <style> 136 hr { 137 background:none repeat scroll 0 0 transparent; 138 border-color:-moz-use-text-color -moz-use-text-color #EEEEEE; 139 border-style:none none solid; 140 border-width:0 0 1px; 141 color:#CCCCCC; 142 margin:0 2em 0.5em; 143 padding:0 0 0.5em; 144 } 145 146 </style> 147 {/literal} 148 </div> 149 No newline at end of file -
plugins/Live/Controller.php
30 30 public function widget($fetch = false) 31 31 { 32 32 $view = Piwik_View::factory('index'); 33 $view->idSite = Piwik_Common::getRequestVar('idSite'); 33 $view->idSite = Piwik_Common::getRequestVar('idSite'); 34 34 $view->visitorsCountHalfHour = $this->getUsersInLastXMin(30); 35 35 $view->visitorsCountToday = $this->getUsersInLastXDays(1); 36 36 $view->pisHalfhour = $this->getPageImpressionsInLastXMin(30); … … 42 42 43 43 public function getLastVisitsDetails($fetch = false) 44 44 { 45 $view = Piwik_ViewDataTable::factory( '');45 $view = Piwik_ViewDataTable::factory(); 46 46 $view->init( $this->pluginName, 47 47 __FUNCTION__, 48 'Live.getLastVisitsDetails', 49 'getPagesFromVisitId'); 50 // All colomns in DB which could be shown 51 //'ip', 'idVisit', 'countActions', 'isVisitorReturning', 'country', 'countryFlag', 'continent', 'provider', 'providerUrl', 'idSite', 52 //'serverDate', 'visitLength', 'visitLengthPretty', 'firstActionTimestamp', 'lastActionTimestamp', 'refererType', 'refererName', 53 //'keywords', 'refererUrl', 'searchEngineUrl', 'searchEngineIcon', 'operatingSystem', 'operatingSystemShortName', 'operatingSystemIcon', 54 //'browserFamily', 'browserFamilyDescription', 'browser', 'browserIcon', 'screen', 'resolution', 'screenIcon', 'plugins', 'lastActionDateTime', 55 //'serverDatePretty', 'serverTimePretty', 'actionDetails' 48 'Live.getLastVisitsDetails'); 56 49 57 $view->setColumnsToDisplay(array( 58 'idVisit', 59 'serverDatePretty', 60 'serverTimePretty', 61 'ip', 62 'countActions', 63 'visitLengthPretty', 64 'keywords', 65 'refererUrl', 66 'operatingSystemShortName', 67 'browser', 68 'screen', 69 'resolution', 70 'plugins', 71 )); 50 // All colomns in DB which could be shown 51 //'ip', 'idVisit', 'countActions', 'isVisitorReturning', 'country', 'countryFlag', 'continent', 'provider', 'providerUrl', 'idSite', 52 //'serverDate', 'visitLength', 'visitLengthPretty', 'firstActionTimestamp', 'lastActionTimestamp', 'refererType', 'refererName', 53 //'keywords', 'refererUrl', 'searchEngineUrl', 'searchEngineIcon', 'operatingSystem', 'operatingSystemShortName', 'operatingSystemIcon', 54 //'browserFamily', 'browserFamilyDescription', 'browser', 'browserIcon', 'screen', 'resolution', 'screenIcon', 'plugins', 'lastActionDateTime', 55 //'serverDatePretty', 'serverTimePretty', 'actionDetails' 72 56 73 $view->setColumnsTranslations(array(74 'idVisit' => Piwik_Translate(''),75 'serverDatePretty' => Piwik_Translate('Live_Date'),76 'serverTimePretty' => Piwik_Translate('Live_Time'),77 'ip' => 'IP',78 'countActions' => Piwik_Translate('VisitorInterest_ColumnPagesPerVisit'),79 'visitLengthPretty' => Piwik_Translate('VisitorInterest_ColumnVisitDuration'),80 'keywords' => Piwik_Translate('Referers_ColumnKeyword'),81 'refererUrl' => Piwik_Translate('Live_Referrer_URL'),82 'operatingSystemShortName' => Piwik_Translate('UserSettings_ColumnOperatingSystem'),83 'browser' => Piwik_Translate('UserSettings_ColumnBrowser'),84 'screen' => Piwik_Translate('UserSettings_ColumnTypeOfScreen'),85 'resolution' => Piwik_Translate('UserSettings_ColumnResolution'),86 'plugins' => Piwik_Translate('UserSettings_ColumnPlugin'),87 ));88 89 57 $view->disableSort(); 90 $view->setLimit( 10);91 $view-> disableExcludeLowPopulation();58 $view->setLimit(20); 59 $view->setTemplate("Live/templates/visitorLog.tpl"); 92 60 $view->setSortedColumn('idVisit', 'ASC'); 93 61 $view->disableSearchBox(); 62 $view->disableOffsetInformation(); 94 63 // "Include low population" link won't be displayed under this table 95 64 $view->disableExcludeLowPopulation(); 96 65 // disable the tag cloud, pie charts, bar chart icons … … 101 70 return $this->renderView($view, $fetch); 102 71 } 103 72 104 function getPagesFromVisitId( $fetch = false)105 {106 $view = Piwik_ViewDataTable::factory('');107 $view->init( $this->pluginName,108 __FUNCTION__,109 'Live.getLastVisitsForVisitor',110 'getPagesFromVisitId');111 112 return $this->renderView($view, $fetch);113 }114 115 73 public function getLastVisitsStart($fetch = false) 116 74 { 117 75 $view = Piwik_View::factory('lastVisits'); 118 $view->idSite = Piwik_Common::getRequestVar('idSite'); 119 76 $view->idSite = Piwik_Common::getRequestVar('idSite'); 77 120 78 $view->visitors = $this->getLastVisits(10); 121 79 122 80 $rendered = $view->render($fetch); … … 167 125 public function ajaxTotalVisitors($fetch = false) 168 126 { 169 127 $view = Piwik_View::factory('totalVisits'); 170 $view->idSite = Piwik_Common::getRequestVar('idSite'); 128 $view->idSite = Piwik_Common::getRequestVar('idSite'); 171 129 $view->visitorsCountHalfHour = $this->getUsersInLastXMin(30); 172 130 $view->visitorsCountToday = $this->getUsersInLastXDays(1); 173 131 $view->pisHalfhour = $this->getPageImpressionsInLastXMin(30); … … 179 137 { 180 138 return $rendered; 181 139 } 182 echo $rendered; 140 echo $rendered; 183 141 } 184 142 } -
plugins/Live/Visitor.php
28 28 */ 29 29 class Piwik_Live_Visitor 30 30 { 31 const cPluginNameDelimiter = ", "; 32 31 33 function __construct($visitorRawData) 32 34 { 33 35 $this->details = $visitorRawData; … … 71 73 'resolution' => $this->getResolution(), 72 74 'screenIcon' => $this->getScreenTypeIcon(), 73 75 'plugins' => $this->getPlugins(), 76 'pluginIcons' => $this->getPluginIcons(), 74 77 'lastActionDateTime' => $this->getDateTimeLastAction(), 75 78 'isVisitorGoalConverted' => $this->isVisitorGoalConverted(), 76 79 'goalIcon' => $this->getGoalIcon(), … … 80 83 81 84 function getServerDate() 82 85 { 83 return date('Y-m-d', strtotime($this->details['visit_last_action_time'])); 86 return date('Y-m-d', strtotime($this->details['visit_last_action_time'])); 84 87 } 85 88 86 89 function getIp() … … 150 153 function getRefererType() 151 154 { 152 155 $map = array( 153 Piwik_Common::REFERER_TYPE_SEARCH_ENGINE => 'searchEngine',154 Piwik_Common::REFERER_TYPE_WEBSITE => 'website',155 Piwik_Common::REFERER_TYPE_DIRECT_ENTRY => 'directEntry',156 Piwik_Common::REFERER_TYPE_CAMPAIGN => 'campaign',156 Piwik_Common::REFERER_TYPE_SEARCH_ENGINE => 'searchEngine', 157 Piwik_Common::REFERER_TYPE_WEBSITE => 'website', 158 Piwik_Common::REFERER_TYPE_DIRECT_ENTRY => 'directEntry', 159 Piwik_Common::REFERER_TYPE_CAMPAIGN => 'campaign', 157 160 ); 158 161 if(isset($map[$this->details['referer_type']])) 159 162 { … … 185 188 function getSearchEngineUrl() 186 189 { 187 190 if($this->getRefererType() == 'searchEngine' 188 && !empty($this->details['referer_name']))191 && !empty($this->details['referer_name'])) 189 192 { 190 193 return Piwik_getSearchEngineUrlFromName($this->details['referer_name']); 191 194 } … … 215 218 'config_gears', 216 219 'config_silverlight', 217 220 ); 218 $ return= array();221 $aPluginShortNames = array(); 219 222 foreach($plugins as $plugin) 220 223 { 221 224 if($this->details[$plugin] == 1) 222 225 { 223 226 $pluginShortName = substr($plugin, 7); 224 $ return[] = $pluginShortName;227 $aPluginShortNames[] = $pluginShortName; 225 228 } 226 229 } 227 return implode( ", ", $return);230 return implode(self::cPluginNameDelimiter, $aPluginShortNames); 228 231 } 229 232 233 function getPluginIcons() 234 { 235 $sPluginNames = $this->getPlugins(); 236 if( !empty($sPluginNames) ) 237 { 238 $aPluginNames = explode(self::cPluginNameDelimiter, $sPluginNames); 239 $aPluginIcons = array(); 240 241 foreach($aPluginNames as $sPlugin) { 242 $aPluginIcons[] = array("pluginIcon" =>Piwik_getPluginsLogo($sPlugin), "pluginName" =>$sPlugin); 243 } 244 return $aPluginIcons; 245 } 246 return null; 247 } 248 230 249 function getOperatingSystem() 231 250 { 232 251 return Piwik_getOSLabel($this->details['config_os']); … … 310 329 if(isset($this->details['match_attribute'])){ 311 330 $goalicon = ""; 312 331 switch ($this->details['match_attribute']) { 313 case "url":314 $goalicon = "plugins/Live/templates/images/goal.png";315 break;316 case "file":317 $goalicon = "plugins/Live/templates/images/download.png";318 break;319 case "external_website":320 $goalicon = "plugins/Live/templates/images/outboundlink.png";321 break;332 case "url": 333 $goalicon = "plugins/Live/templates/images/goal.png"; 334 break; 335 case "file": 336 $goalicon = "plugins/Live/templates/images/download.png"; 337 break; 338 case "external_website": 339 $goalicon = "plugins/Live/templates/images/outboundlink.png"; 340 break; 322 341 } 323 342 return $goalicon; 324 343 }
