silverstripe-framework/core/model/PageView.php
Ingo Schommer 5b886f9ae1 mlanthaler: Bugfix: Fixed "FATAL ERROR: get_browser() [function.get-browser]: browscap ini directive not set" and some E_NOTICE errors.
@Quin: Maybe you should implement some fail-back function for get_browser that evaluates the HTTP user agent header (browscap.ini is often not available!). a
(merged from branches/gsoc)


git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@42099 467b73ca-7a2a-4603-9d3b-597d59a354a9
2007-09-16 15:40:27 +00:00

98 lines
1.8 KiB
PHP

<?php
/**
* @package sapphire
* @subpackage core
*/
/**
* Data object that represents any page view in the system.
*/
class PageView extends DataObject {
static $db = array(
"IP" => "Varchar(255)",
"Browser" => "Varchar(255)",
"BrowserVersion" => "Decimal",
"FromExternal" => "Boolean",
"Referrer" => "Varchar(255)",
"SearchEngine" => "Boolean",
"Keywords" => "Varchar(255)",
"OS" => "Varchar(255)"
);
static $has_one = array(
"Page" => "SiteTree",
"User" => "Member"
);
static $has_many = array();
static $many_many = array();
static $belongs_many_many = array();
static $defaults = array();
protected $hitdata = null;
function init() {
if($hitdata = @get_browser(null, true))
$this->hitdata = get_browser(null, true);
}
function record() {
$this->init();
$this->setBrowser();
$this->setOS();
$this->setUserID();
$this->setPageID();
$this->setIP();
$this->write(true);
}
function sanitize($str) {
//TODO
return $str;
}
function setBrowser() {
if(isset($this->hitdata['browser']))
$this->setField('Browser', $this->hitdata['browser']);
if(isset($this->hitdata['version']))
$this->setField('BrowserVersion', $this->hitdata['version']);
}
function setOS() {
if(isset($this->hitdata['platform']))
$this->setField('OS', $this->hitdata['platform']);
}
function setUserID() {
$isLogged = Session::get('loggedInAs');
if($isLogged) {
$id = $isLogged;
} else {
$id = -1;
}
$this->setField('UserID', $id);
}
function setPageID() {
$currentPage = Director::currentPage();
$this->setField('PageID', $currentPage->ID);
}
function setIP() {
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
$this->setField('IP', $ip);
}
}
?>