* @copyright Copyright © 2006 Peter Adams * @license http://www.gnu.org/copyleft/gpl.html GPL v2.0 * @category owa * @package owa * @version $Revision$ * @since owa 1.0.0 */ class owa_event { /** * Event Properties * * @var array */ var $properties = array(); /** * State * * @var string */ //var $state; var $eventType; /** * Time since last request. * * Used to tell if a new session should be created. * * @var integer $time_since_lastreq */ var $time_since_lastreq; /** * Event guid * * @var string */ var $guid; /** * Constructor * @access public */ function __construct() { // Set GUID for event $this->guid = $this->set_guid(); //needed? $this->set('guid', $this->guid); $this->set('timestamp', time() ); } function set($name, $value) { $this->properties[$name] = $value; return; } function get($name) { if(array_key_exists($name, $this->properties)) { //print_r($this->properties[$name]); return $this->properties[$name]; } else { return false; } } /** * Sets time related event properties * * @param integer $timestamp */ function setTime($timestamp = null) { if ( $timestamp ) { $this->set('timestamp', $timestamp); } else { $timestamp = $this->get('timestamp'); } // convert to local time and reset timestamp //$timestamp = owa_lib::utcToLocalTimestamp($timestamp); //$this->set('timestamp', $timestamp); $this->set('year', date("Y", $timestamp)); $this->set('month', date("n", $timestamp)); $this->set('day', date("d", $timestamp)); $this->set('yyyymmdd', date("Ymd", $timestamp)); $this->set('dayofweek', date("D", $timestamp)); $this->set('dayofyear', date("z", $timestamp)); $this->set('weekofyear', date("W", $timestamp)); $this->set('hour', date("G", $timestamp)); $this->set('minute', date("i", $timestamp)); $this->set('second', date("s", $timestamp)); //epoc time list($msec, $sec) = explode(" ", microtime()); $this->set('sec', $sec); $this->set('msec', $msec); } function setCookieDomain($domain) { $this->properties['cookie_domain'] = $domain; } /** * Determines the time since the last request from this borwser * * @access private * @return integer */ function timeSinceLastRequest() { return ($this->get('timestamp') - $this->get('last_req')); } /** * Applies calling application specific properties to request * * @access private * @param array $properties */ function setProperties($properties = null) { if(!empty($properties)) { if (empty($this->properties)) { $this->properties = $properties; } else { $this->properties = array_merge($this->properties, $properties); } } } function replaceProperties($properties) { $this->properties = $properties; } /** * Create guid from process id * * @return integer * @access private */ function set_guid() { return crc32(getmypid().time().rand()); } /** * Create guid from string * * @param string $string * @return integer * @access private */ function set_string_guid($string) { return crc32(strtolower($string)); } /** * Attempts to make a unique ID out of http request variables. * This should only be used when storing state in a cookie is impossible. * * @return integer */ function setEnvGUID() { return crc32( $this->get('ua') . $this->get('ip_address') ); } function setSiteSessionState($site_id, $name, $value, $store_type = 'cookie') { $store_name = owa_coreAPI::getSetting('base', 'site_session_param').'_'.$site_id; return owa_coreAPI::setState($store_name, $name, $value, $store_type, true); } function deleteSiteSessionState($site_id, $store_type = 'cookie') { $store_name = owa_coreAPI::getSetting('base', 'site_session_param').'_'.$site_id; return owa_coreAPI::clearState($store_name); } function getProperties() { return $this->properties; } function getEventType() { if (!empty($this->eventType)) { return $this->eventType; } elseif ($this->get('event_type')) { return $this->get('event_type'); } else { return 'unknown_event_type'; } } function setEventType($value) { $this->eventType = $value; } function cleanProperties() { return $this->setProperties(owa_lib::inputFilter($this->getProperties())); } function setPageTitle($value) { $this->set('page_title', $value); } function setSiteId($value) { $this->set('site_id', $value); } function setPageType($value) { $this->set('page_type', $value); } function getGuid() { return $this->guid; } function getSiteSpecificGuid($site_id) { return crc32(getmypid().time().rand().$site_id); } } ?>