Add analytics
[bus.git] / busui / owa / modules / base / optionsGoalEdit.php
blob:a/busui/owa/modules/base/optionsGoalEdit.php -> blob:b/busui/owa/modules/base/optionsGoalEdit.php
--- a/busui/owa/modules/base/optionsGoalEdit.php
+++ b/busui/owa/modules/base/optionsGoalEdit.php
@@ -1,1 +1,146 @@
-
+<?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$

+//

+

+require_once(OWA_DIR.'owa_view.php');

+require_once(OWA_DIR.'owa_adminController.php');

+

+/**

+ * Goals Edit Controller

+ * 

+ * @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_optionsGoalEditController extends owa_adminController {

+	

+	function __construct($params) {

+	

+		parent::__construct($params);

+		$this->type = 'options';

+		$this->setRequiredCapability('edit_settings');

+		$this->setNonceRequired();

+		$goal = $this->getParam('goal');

+		// check that goal number is present

+		$v1 = owa_coreAPI::validationFactory('required');

+		$v1->setValues($goal['goal_number']);

+		$this->setValidation('goal_number', $v1);

+		

+		// check that goal status is present

+		$v1 = owa_coreAPI::validationFactory('required');

+		$v1->setValues($goal['goal_status']);

+		$this->setValidation('goal_status', $v1);

+		

+		// check that goal status is present

+		$v1 = owa_coreAPI::validationFactory('required');

+		$v1->setValues($goal['goal_group']);

+		$this->setValidation('goal_group', $v1);

+		

+		// check that goal type is present

+		$v1 = owa_coreAPI::validationFactory('required');

+		$v1->setValues($goal['goal_type']);

+		$this->setValidation('goal_type', $v1);

+		

+		if ($goal['goal_type'] === 'url_destination') {

+			// check that match_type is present

+			$v1 = owa_coreAPI::validationFactory('required');

+			$v1->setValues($goal['details']['match_type']);

+			$this->setValidation('match_type', $v1);

+			

+			// check that goal_url is present

+			$v1 = owa_coreAPI::validationFactory('required');

+			$v1->setValues($goal['details']['goal_url']);

+			$this->setValidation('goal_url', $v1);		

+		}

+		

+		$steps = $goal['details']['funnel_steps'];

+		

+		if ($steps) {

+			

+			foreach ($steps as $num => $step) {

+				

+				if (!empty($step['name']) || !empty($step['url'])) { 

+					// check that step name is present

+					$v1 = owa_coreAPI::validationFactory('required');

+					$v1->setValues($step['name']);

+					$this->setValidation('step_name_'.$num, $v1);	

+					

+					// check that step url is present

+					$v1 = owa_coreAPI::validationFactory('required');

+					$v1->setValues($step['url']);

+					$this->setValidation('step_url_'.$num, $v1);	

+					

+					// check that step is_required is present

+					$v1 = owa_coreAPI::validationFactory('required');

+					$v1->setValues($step['is_required']);

+					//$this->setValidation('step_is_required_'.$num, $v1);

+				}

+				

+				$check = owa_lib::array_values_assoc($step);

+				if (!empty($check)) {

+					$step['step_number'] = $num;

+					$this->params['goal']['details']['funnel_steps'][$num] = $step;

+				} else {

+					// remove the array as it only contains empty values.

+					// this can happen when the use adds a step but does not fill in any

+					// values.

+					unset( $this->params['goal']['details']['funnel_steps'][$num] ); 

+				}				

+			}

+		}

+	}

+	

+	function action() {

+		

+		// setup goal manager

+		$siteId = $this->get('siteId');

+		$gm = owa_coreAPI::supportClassFactory('base', 'goalManager', $siteId);

+		$goal = $this->getParam('goal');

+		//$all_goals = owa_coreAPI::getSiteSetting($site_id, 'goals');

+		//$goal_groups = owa_coreAPI::getSiteSetting($site_id, 'goal_groups');

+		$gm->saveGoal($goal['goal_number'], $goal); 

+		

+		if ( $this->get( 'new_goal_group_name' ) ) {

+			$gm->saveGoalGroupLabel($goal['goal_group'], $this->get( 'new_goal_group_name' ) );

+			//$goal_groups[$goal['goal_group']] = $this->get( 'new_goal_group_name' );

+		}

+		

+		owa_coreAPI::debug('New goals: '.print_r($gm->goals,true));

+		$this->setStatusCode(2504);

+		$this->set('siteId', $siteId);

+		$this->setRedirectAction('base.optionsGoals');

+	}

+	

+	function errorAction() {

+		$goal = $this->getParam('goal');

+		$this->setView('base.options');

+		$this->setSubview('base.optionsGoalEntry');

+		$this->set('error_code', 3311);

+		$this->set('goal', $goal);

+		$this->set('goal_number', $goal['goal_number']);

+		$siteId = $this->get('siteId');

+		$gm = owa_coreAPI::supportClassFactory('base', 'goalManager', $siteId);

+		$this->set('goal_groups', $gm->getAllGoalGroupLabels() );

+	}

+}

+

+?>