Add analytics
[bus.git] / busui / owa / owa_reportController.php
blob:a/busui/owa/owa_reportController.php -> blob:b/busui/owa/owa_reportController.php
  <?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_BASE_CLASSES_DIR.'owa_adminController.php');
   
  /**
  * Abstract Report Controller Class
  *
  * @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.0.0
  */
   
   
  class owa_reportController extends owa_adminController {
   
  /**
  * Constructor
  *
  * @param array $params
  * @return
  */
  function __construct($params) {
   
  $this->setControllerType('report');
  $this->_setCapability('view_reports');
  return parent::__construct($params);
   
  }
   
  /**
  * pre action
  *
  */
  function pre() {
   
  // site lists
  $sites = owa_coreAPI::getSitesList();
  $this->set('sites', $sites);
  // set default siteId if none exists on request
  $site_id = $this->getParam('siteId');
  if ( ! $site_id ) {
  $site_id = $this->getParam('site_id');
  }
  if ( ! $site_id ) {
  $site_id = $sites[0]['site_id'];
  }
  $this->setParam('siteId', $site_id);
   
  // pass full set of params to view
  $this->data['params'] = $this->params;
   
  // set default period if necessary
  if (empty($this->params['period'])) {
  $this->params['period'] = 'last_seven_days';
  $this->set('is_default_period', true);
  }
   
  $this->setPeriod($this->getParam('period'));
   
  $this->setView('base.report');
  $this->setViewMethod('delegate');
   
  $this->dom_id = str_replace('.', '-', $this->getParam('do'));
  $this->data['dom_id'] = $this->dom_id;
  $this->data['do'] = $this->getParam('do');
   
  // setup tabs
  $siteId = $this->get('siteId');
  $gm = owa_coreAPI::supportClassFactory('base', 'goalManager', $siteId);
   
  $tabs = array();
  $site_usage = array(
  'tab_label' => 'Site Usage',
  'metrics' => 'visits,pagesPerVisit,visitDuration,bounceRate,uniqueVisitors',
  'sort' => 'visits-'
  );
   
  $tabs['site_usage'] = $site_usage;
   
  // ecommerce tab
  if ( owa_coreAPI::getSiteSetting( $this->getParam('siteId'), 'enableEcommerceReporting') ) {
   
  $ecommerce = array(
  'tab_label' => 'e-commerce',
  'metrics' => 'visits,transactions,transactionRevenue,revenuePerVisit,revenuePerTransaction,ecommerceConversionRate',
  'sort' => 'transactionRevenue-'
  );
   
  $tabs['ecommerce'] = $ecommerce;
  }
  $goal_groups = $gm->getActiveGoalGroups();
   
  if ( $goal_groups ) {
  foreach ($goal_groups as $group) {
  $goal_metrics = 'visits';
  $active_goals = $gm->getActiveGoalsByGroup($group);
   
  if ( $active_goals ) {
   
  foreach ($active_goals as $goal) {
  $goal_metrics .= sprintf(',goal%sCompletions', $goal);
  }
  }
   
  $goal_metrics .= ',goalValueAll';
  $goal_group = array(
  'tab_label' => $gm->getGoalGroupLabel($group),
  'metrics' => $goal_metrics,
  'sort' => 'goalValueAll-'
  );
  $name = 'goal_group_'.$group;
  $tabs[$name] = $goal_group;
  }
  }
   
  $this->set('tabs', $tabs);
  $this->set('tabs_json', json_encode($tabs));
   
   
  //$this->body->set('sub_nav', owa_coreAPI::getNavigation($this->get('nav_tab'), 'sub_nav'));
  $nav = owa_coreAPI::getGroupNavigation('Reports');
   
  if ( ! owa_coreAPI::getSiteSetting( $this->getParam( 'siteId' ), 'enableEcommerceReporting' ) ) {
  unset($nav['Ecommerce']);
  }
   
  $this->set('top_level_report_nav', $nav);
   
  }
   
  function post() {
   
  return;
  }
   
  function setTitle($title, $suffix = '') {
   
  $this->set('title', $title);
  $this->set('titleSuffix', $suffix);
  }
  }
   
  ?>