--- a/busui/owa/modules/base/classes/goalManager.php +++ b/busui/owa/modules/base/classes/goalManager.php @@ -1,1 +1,208 @@ - + + * @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.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']; + } + } +} + +?>