{$trendstrl}
HTML;
$ds = "var chartdata = { \n";
foreach($table as $class) {
$record = DataObject::get($class, "", $class.".Created DESC");
$total = $record->TotalItems();
$props = $record->toArray();
$props = $props[0]->toMap();
$startyear = new SSDatetime($props['Created']);
$startyear = $startyear->Format('Y');
$startmonth = new SSDatetime($props['Created']);
$startmonth = $startmonth->Format('m');
if($filter == "day") {
$days = new SSDatetime($props['Created']);
$days = $days->Format('t');
$sum = 0;
$ds .= "{$class}: [";
for($i = 1; $i <= $days; $i++) {
foreach($record as $v) {
$props = $v->toMap();
$currdate = new SSDatetime($props['Created']);
$curryear = $currdate->Format('Y');
$currmonth = $currdate->Format('m');
$currday = $currdate->Format('j');
if($curryear == $startyear && $currmonth == $startmonth && $currday == $i) {
$sum++;
}
}
$ds .= "[".($i-1).", {$sum}], ";
}
$ds .= "[]],\n";
} else if($filter == "month") {
$sum = 0;
$ds .= "{$class}Set: [";
for($i = 0; $i <= 11; $i++) {
$imonth = date('F', mktime(0,0,0,$i+1,1,1));
foreach($record as $v) {
$props = $v->toMap();
$currdate = new SSDatetime($props['Created']);
$curryear = $currdate->Format('Y');
$currmonth = $currdate->Format('m');
$currday = $currdate->Format('j');
if($curryear == $startyear && $currmonth == $i) {
$sum++;
}
}
$ds .= "[{$i}, {$sum}], ";
}
$ds .= "[]],\n";
}
}
$xt = "xTicks: [";
if($filter == "month") {
for($i = 0; $i <= 11; $i++) {
$imonth = date('F', mktime(0,0,0,$i+1,1,1));
$xt .= "{v:{$i}, label:'{$imonth}'}, ";
}
} else if($filter == "day") {
for($i = 1; $i <= $days; $i++) {
$xt .= "{v:".($i-1).", label:'{$i}'}, ";
}
}
$opts = <<
{$registereduserstrl}
{$exporttrl}
{$idtrl} | {$emailtrl} | {$joinedtrl} |
HTML;
$bod = "";
foreach($records as $x) {
$r = $x->toMap();
$id = $r['ID'];
$email = $r['Email'];
$date = date("F j, Y G:i:s", strtotime($r['Created']));
$bod .= "$id | $email | $date |
";
}
$bot = <<
HTML;
//$js = "\n\n\n";
return $top . $bod . $bot;
}
static function collect() {
$hit = new PageView();
$hit->record();
return;
}
static function get_recent_views($limit = 15) {
$records = DataObject::get('PageView', null, 'Created DESC', null, $limit);
$recentpvtrl = _t('Statistics.RECENTPAGEVIEWS', 'Recent Page Views');
$idtrl = _t('Statistics.ID', 'ID');
$timetrl = _t('Statistics.TIME', 'Time');
$browsertrl = _t('Statistics.BROWSER', 'Browser');
$ostrl = _t('Statistics.OSABREV', 'OS');
$usertrl = _t('Statistics.USER', 'User');
$pagetrl = _t('Statistics.PAGE', 'Page');
$top = <<
{$recentpvtrl}
{$idtrl} | {$timetrl} | {$browsertrl} | {$ostrl} | {$usertrl} | {$pagetrl} |
HTML;
$bod = "";
foreach($records as $x) {
$r = $x->toMap();
$id = $r['ID'];
$time = $r['Created'];
$browser = $r['Browser'] . " " . $r['BrowserVersion'];
$os = $r['OS'];
$user = $r['UserID'];
$page = $r['PageID'];
$bod .= "$id | $time | $browser | $os | $user | $page |
";
}
$bot = <<
HTML;
return $top . $bod . $bot;
}
static function get_views($time = 'all') {
switch($time) {
case 'all':
$records = DataObject::get('PageView');
break;
case 'year':
$pt = time() - 31556926;
$pt = date("Y-m-d H:i:s", $pt);
$ct = time() + 10;
$ct = date("Y-m-d H:i:s", $ct);
$records = DataObject::get('PageView', "Created >= '$pt' AND Created <= '$ct'");
break;
case 'month':
$pt = time() - 2629744;
$pt = date("Y-m-d H:i:s", $pt);
$ct = time() + 10;
$ct = date("Y-m-d H:i:s", $ct);
$records = DataObject::get('PageView', "Created >= '$pt' AND Created <= '$ct'");
break;
case 'week':
$pt = time() - 604800;
$pt = date("Y-m-d H:i:s", $pt);
$ct = time() + 10;
$ct = date("Y-m-d H:i:s", $ct);
$records = DataObject::get('PageView', "Created >= '$pt' AND Created <= '$ct'");
break;
case 'day':
$pt = time() - 86400;
$pt = date("Y-m-d H:i:s", $pt);
$ct = time() + 10;
$ct = date("Y-m-d H:i:s", $ct);
$records = DataObject::get('PageView', "Created >= '$pt' AND Created <= '$ct'");
break;
case 'hour':
$pt = time() - 3600;
$pt = date("Y-m-d H:i:s", $pt);
$ct = time() + 10;
$ct = date("Y-m-d H:i:s", $ct);
$records = DataObject::get('PageView', "Created >= '$pt' AND Created <= '$ct'");
break;
case 'minute':
$pt = time() - 60;
$pt = date("Y-m-d H:i:s", $pt);
$ct = time() + 10;
$ct = date("Y-m-d H:i:s", $ct);
$records = DataObject::get('PageView', "Created >= '$pt' AND Created <= '$ct'");
break;
default:
$records = DataObject::get('PageView');
}
$baseURL = Director::baseURL();
$pageviewstrl = _t('Statistics.PAGEVIEWS', 'Page Views');
$idtrl = _t('Statistics.ID', 'ID');
$timetrl = _t('Statistics.TIME', 'Time');
$browsertrl = _t('Statistics.BROWSER', 'Browser');
$ostrl = _t('Statistics.OSABREV', 'OS');
$usertrl = _t('Statistics.USER', 'User');
$pagetrl = _t('Statistics.PAGE', 'Page');
$exporttrl = _t('Statistics.CSVEXPORT', 'Export as CSV');
$top = <<
{$pageviewstrl}
{$exporttrl}
{$idtrl} | {$timetrl} | {$browsertrl} | {$ostrl} | {$usertrl} | {$pagetrl} |
HTML;
$bod = "";
foreach($records as $x) {
$r = $x->toMap();
$id = $r['ID'];
$time = $r['Created'];
$browser = $r['Browser'] . " " . $r['BrowserVersion'];
$os = $r['OS'];
$user = $r['UserID'];
$page = $r['PageID'];
$bod .= "$id | $time | $browser | $os | $user | $page |
";
}
$bot = <<
HTML;
return $top . $bod . $bot;
}
static function browser_chart($type = "Pie", $color = "blue") {
$browserstrl = _t('Statistics.BROWSERS', 'Browsers');
$top = <<
{$browserstrl}
HTML;
$ds = "var bchartdata = { \n'Set': [";
$records = DataObject::get('PageView');
$browsers = array();
foreach($records as $r) {
$ra = $r->toMap();
$cb = $ra['Browser'] . " " . $ra['BrowserVersion'];
if(isset($browsers[$cb]) && $browsers[$cb] >= 1) {
$browsers[$cb]++;
} else {
$browsers[$cb] = 1;
}
}
$xt = "xTicks: [";
$i = 0;
foreach($browsers as $bn => $bc) {
$ds .= "[{$i}, {$bc}], ";
$xt .= "{v:" . $i . ", label:'" . $bn . "'}, ";
$i++;
}
$ds .= "]\n";
$opts = <<
{$ostrl}
HTML;
$ds = "var ochartdata = { \n'Set': [";
$records = DataObject::get('PageView');
$oss = array();
foreach($records as $r) {
$ra = $r->toMap();
$cb = $ra['OS'];
if(isset($oss[$cb]) && $oss[$cb] >= 1) {
$oss[$cb]++;
} else {
$oss[$cb] = 1;
}
}
$xt = "xTicks: [";
$i = 0;
foreach($oss as $bn => $bc) {
$ds .= "[{$i}, {$bc}], ";
$xt .= "{v:" . $i . ", label:'" . $bn . "'}, ";
$i++;
}
$ds .= "]\n";
$opts = <<
{$useracttrl}
HTML;
$ds = "var uacchartdata = { \n'Set': [";
$records = DataObject::get('PageView');
$users = array();
foreach($records as $r) {
$ra = $r->toMap();
$cb = $ra['UserID'];
if($cb == -1) {
continue;
}
if(isset($users[$cb]) && $users[$cb] >= 1) {
$users[$cb]++;
} else {
$users[$cb] = 1;
}
}
$xt = "xTicks: [";
$i = 0;
foreach($users as $bn => $bc) {
$ds .= "[{$i}, {$bc}], ";
$xt .= "{v:" . $i . ", label:'" . $bn . "'}, ";
$i++;
}
$ds .= "]\n";
$opts = <<= '$pt' AND Created <= '$ct'");
break;
case 'month':
$pt = time() - 2629744;
$pt = date("Y-m-d H:i:s", $pt);
$ct = time() + 10;
$ct = date("Y-m-d H:i:s", $ct);
$records = DataObject::get('PageView', "Created >= '$pt' AND Created <= '$ct'");
break;
case 'week':
$pt = time() - 604800;
$pt = date("Y-m-d H:i:s", $pt);
$ct = time() + 10;
$ct = date("Y-m-d H:i:s", $ct);
$records = DataObject::get('PageView', "Created >= '$pt' AND Created <= '$ct'");
break;
case 'day':
$pt = time() - 86400;
$pt = date("Y-m-d H:i:s", $pt);
$ct = time() + 10;
$ct = date("Y-m-d H:i:s", $ct);
$records = DataObject::get('PageView', "Created >= '$pt' AND Created <= '$ct'");
break;
case 'hour':
$pt = time() - 3600;
$pt = date("Y-m-d H:i:s", $pt);
$ct = time() + 10;
$ct = date("Y-m-d H:i:s", $ct);
$records = DataObject::get('PageView', "Created >= '$pt' AND Created <= '$ct'");
break;
case 'minute':
$pt = time() - 60;
$pt = date("Y-m-d H:i:s", $pt);
$ct = time() + 10;
$ct = date("Y-m-d H:i:s", $ct);
$records = DataObject::get('PageView', "Created >= '$pt' AND Created <= '$ct'");
break;
default:
$records = DataObject::get('PageView');
}
foreach($records as $x) {
$r = $x->toMap();
$data .= implode(', ', $r) . "\n";
}
return $data;
}
static function get_user_csv() {
$data = "ID, ClassName, Created, LastEdited, FirstName, Surname, Email, Password, NumVisit, LastVisited, Bounced, AutoLoginHash, AutoLoginExpired, BlacklistedEmail, RememberLoginToken, IdentityURL, PasswordEncryption, Salt\n";
$records = DataObject::get('Member');
foreach($records as $x) {
$r = $x->toMap();
$data .= implode(', ', $r) . "\n";
}
return $data;
}
}
?>