Add analytics
[bus.git] / busui / owa / modules / base / classes / goalManager.php
blob:a/busui/owa/modules/base/classes/goalManager.php -> blob:b/busui/owa/modules/base/classes/goalManager.php
--- a/busui/owa/modules/base/classes/goalManager.php
+++ b/busui/owa/modules/base/classes/goalManager.php
@@ -1,1 +1,208 @@
-
+<?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$
+//
+
+/**
+ * Goal Manager
+ * 
+ * @author      Peter Adams <peter@openwebanalytics.com>
+ * @copyright   Copyright &copy; 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.4.0
+ */
+
+
+class owa_goalManager extends owa_base {
+
+	var $goals;
+	var $activeGoals;
+	var $goal_group_labels;
+	var $activeGoalGroups;
+	var $activeGoalsByGroup;
+	var $site_id;
+	var $numGoals;
+	var $numGoalGroups;
+	var $isDirtyGoals;
+	var $isDirtyGoalGroups;
+	
+	/**
+	 * Constructor
+	 * 
+	 * Takes cache directory as param
+	 *
+	 * @param $cache_dir string
+	 */
+	function __construct( $site_id ) {
+		
+		$this->site_id = $site_id;
+		$this->numGoals = owa_coreAPI::getSetting('base', 'numGoals');
+		$this->numGoalGroups = owa_coreAPI::getSetting('base', 'numGoalGroups');
+		$this->loadGoals( $site_id );
+		$this->loadGoalGroupLabels ( $site_id );
+	}
+	
+	function setSiteId( $site_id ) {
+		
+		$this->site_id = $site_id;
+	}
+	
+	function loadGoalGroupLabels( $site_id ) {
+		
+		$this->goal_group_labels = array();
+		for ( $i = 1; $i <= $this->numGoalGroups; $i++ ) {
+			$this->goal_group_labels[$i] = "Goal Group $i";	
+		}
+		
+		$from_db = owa_coreAPI::getSiteSetting( $site_id , 'goal_groups' );
+		
+		if ($from_db) {
+		
+			foreach($from_db as $k => $goalGroup) {
+				if (array_key_exists($k, $this->goal_group_labels)) {
+					$this->goal_group_labels[$k] = $goalGroup;
+				}
+			}
+		}
+	}
+	
+	function loadGoals( $site_id ) {
+		
+		$this->goals = array();
+		
+		for ( $i = 1; $i <= $this->numGoals; $i++ ) {
+			$this->goals[$i] = array(
+					'goal_number'	=> '',
+					'goal_name'		=> '',
+					'goal_group'	=> '',
+					'goal_status'	=> '',
+					'goal_type'		=> ''
+			);	
+		}
+		
+		$from_db = owa_coreAPI::getSiteSetting( $site_id, 'goals' );
+		
+		if ($from_db) {
+				
+			foreach ($from_db as $k => $goal) {
+				
+				if (array_key_exists($k, $this->goals)) {
+					// add to goal array
+					$this->goals[$k] = $goal;
+					// set active goal lists
+					if (array_key_exists('goal_status', $goal) && $goal['goal_status'] === 'active') {
+						// set active goals
+						$this->activeGoals[] = $goal['goal_number'];
+						// set active goal groups
+						if (array_key_exists('goal_group', $goal)) {
+							$this->activeGoalGroups[$goal['goal_group']] = $goal['goal_group'];
+							// set active goals by group
+							$this->activeGoalsByGroup[$goal['goal_group']][] = $goal['goal_number'];
+						}			
+					}
+				}
+			}
+		}
+	}
+	
+	function getActiveGoals() {
+		if (!empty($this->activeGoals)) {
+			$goals = array();
+			foreach ($this->activeGoals as $goal_number) {
+				$goals[$goal_number] = $this->getGoal($goal_number);
+			}
+			return $goals;
+		}
+	}
+	
+	function getAllGoals() {
+		
+		return $this->goals;
+	}
+	
+	function getActiveGoalGroups() {
+	
+		return $this->activeGoalGroups;
+	}
+	
+	function getActiveGoalsByGroup($group_number) {
+		
+		return $this->activeGoalsByGroup[$group_number];
+	}
+	
+	function getGoal($number) {
+		
+		if ( array_key_exists( $number, $this->goals ) ) {
+			
+			return $this->goals[$number];
+		}
+	}
+	
+	function getGoalGroupLabel($number) {
+		
+		if ( array_key_exists( $number, $this->goal_group_labels ) ) {
+		
+			return $this->goal_group_labels[$number];
+		}
+	}
+	
+	function getAllGoalGroupLabels() {
+		
+		return $this->goal_group_labels;
+	}
+	
+	function saveGoal($number, $goal) {
+		
+		if ( $number <= $this->numGoals ) {
+		
+			$goal['goal_number'] = $number;
+			$this->goals[$goal['goal_number']] = $goal;
+			$this->isDirtyGoals = true;
+		}
+	}
+	
+	function saveGoalGroupLabel($number, $goal_group) {
+		
+		$this->goal_group_labels[$number] = $goal_group;
+		$this->isDirtyGoalGroups = true;
+	}
+	
+	function __destruct() {
+		
+		if ( $this->isDirtyGoals ) {
+			
+			owa_coreAPI::persistSiteSetting( $this->site_id, 'goals', $this->goals );
+		}
+		
+		if ( $this->isDirtyGoalGroups ) {
+
+			owa_coreAPI::persistSiteSetting( $this->site_id, 'goal_groups', $this->goal_group_labels );
+		}
+	}
+	
+	function getGoalFunnel($goal_number) {
+		
+		$goal = $this->getGoal($goal_number);
+		if ( array_key_exists( 'details', $goal ) && array_key_exists( 'funnel_steps', $goal['details'] ) ) {
+			return $goal['details']['funnel_steps'];
+		}
+	}
+}
+
+?>