* @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']; } } } ?>