--- a/busui/owa/modules/base/classes/event.php +++ b/busui/owa/modules/base/classes/event.php @@ -1,1 +1,272 @@ - +<?php + +// +// Open Web Analytics - An Open Source Web Analytics Framework +// +// Copyright 2006 Peter Adams. All rights reserved. +// +// Licensed under GPL v2.0 http://www.gnu.org/copyleft/gpl.html +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// $Id$ +// + +/** + * Abstract OWA Event Class + * + * @author Peter Adams <peter@openwebanalytics.com> + * @copyright Copyright © 2006 Peter Adams <peter@openwebanalytics.com> + * @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); + } + + +} + +?>