/** * Recent activity includes users, searches done, events, and page views */ function getRecentActivity() { global $analytics; $interval = isset($_REQUEST['interval']) ? $_REQUEST['interval'] : 10; $curTime = time(); $activityByMinute = array(); $analyticsSession = $analytics->getSessionFilters(); if ($analyticsSession == null) { $analyticsSession = new Analytics_Session(); } $analyticsSession->selectAdd('count(id) as numActiveUsers'); $analyticsSession->whereAdd('lastRequestTime > ' . ($curTime - $interval)); //$analyticsSession->whereAdd("lastRequestTime <= $curTime"); if ($analyticsSession->find(true)) { $activityByMinute['activeUsers'] = $analyticsSession->numActiveUsers; } else { $activityByMinute['activeUsers'] = 0; } $pageView = new Analytics_PageView(); $pageView->selectAdd('count(id) as numPageViews'); $pageView->whereAdd("pageEndTime > " . ($curTime - $interval)); //$pageView->whereAdd("pageEndTime <= $curTime"); if ($pageView->find(true)) { $activityByMinute['pageViews'] = $pageView->numPageViews; } else { $activityByMinute['pageViews'] = 0; } $searches = new Analytics_Search(); $searches->selectAdd('count(id) as numSearches'); $searches->whereAdd("searchTime > " . ($curTime - $interval)); //$searches->whereAdd("searchTime <= $curTime"); if ($searches->find(true)) { $activityByMinute['searches'] = $searches->numSearches; } else { $activityByMinute['searches'] = 0; } $events = new Analytics_Event(); $events->selectAdd('count(id) as numEvents'); $events->whereAdd("eventTime > " . ($curTime - $interval)); //$events->whereAdd("eventTime <= $curTime"); if ($events->find(true)) { $activityByMinute['events'] = $events->numEvents; } else { $activityByMinute['events'] = 0; } return $activityByMinute; }
function getSessionFilter($label, $field) { $analyticsSession = new Analytics_Session(); $analyticsSession->selectAdd(); $analyticsSession->selectAdd("distinct({$field})"); $analyticsSession->find(); $filter = array(); $filter['label'] = $label; $filter['field'] = $field; while ($analyticsSession->fetch()) { if ($analyticsSession->{$field} == null) { $filter['values']['null'] = 'unset'; } else { $filter['values'][$analyticsSession->{$field}] = $analyticsSession->{$field}; } } natcasesort($filter['values']); return $filter; }
function getHoldsFailedPerSession($forGraph) { //load searches by type $events = new Analytics_Event(); //Get total sessions from the databse $totalSessions = new Analytics_Session(); $numTotalSessions = $totalSessions->count('id'); $eventDateFilter = $events->getDateFilterSQL(); $sessionFilter = $this->getSessionFilterSQL(); $events->query("SELECT numHolds, count(sessionId) as numSessions from (SELECT count(analytics_event.id) as numHolds, sessionId FROM analytics_event INNER JOIN analytics_session on sessionId = analytics_session.id WHERE action ='Failed Hold' " . $eventDateFilter . " " . $sessionFilter . " GROUP BY sessionId) as holdData GROUP BY numHolds ORDER BY numHolds"); $eventsInfoRaw = array(); $totalEvents = 0; while ($events->fetch()) { $eventsInfoRaw[$events->numHolds . ' Holds'] = (int) $events->numSessions; $totalEvents += $events->numSessions; } $numZeroSessions = $numTotalSessions - $totalEvents; if ($forGraph) { $eventInfo[] = array('0 Holds', (double) sprintf('%01.2f', $numZeroSessions / $numTotalSessions * 100)); } else { $eventInfo[] = array('0 Holds', $numZeroSessions, (double) sprintf('%01.2f', $numZeroSessions / $numTotalSessions * 100)); } $numReported = $numZeroSessions; foreach ($eventsInfoRaw as $name => $count) { if ($forGraph && (double) ($count / $numTotalSessions) < 0.02) { break; } $numReported += $count; if ($forGraph) { $eventInfo[] = array($name, (double) sprintf('%01.2f', $count / $numTotalSessions * 100)); } else { $eventInfo[] = array($name, $count, (double) sprintf('%01.2f', $count / $numTotalSessions * 100)); } if ($forGraph && count($eventInfo) >= 10) { break; } } if ($forGraph && $numTotalSessions - $numReported > 0) { $eventInfo[] = array('Other', (double) sprintf('%01.2f', ($numTotalSessions - $numReported) / $numTotalSessions * 100)); } return $eventInfo; }