/**
  * Fetches and writes analytics data to cache and database
  */
 public function saveAnalyticsData()
 {
     try {
         if (!$this->isTodaysFileExists()) {
             $dayTimeStamp = 24 * 60 * 60;
             $prevDateTimeStamp = time();
             $dataArray = array();
             $fromDate = date('Y-m-d', $prevDateTimeStamp - 30 * $dayTimeStamp);
             $toDate = date('Y-m-d', $prevDateTimeStamp - $dayTimeStamp);
             $analyticsData = Fox::getModel('admin/analytics')->getAnalyticsData($fromDate, $toDate);
             $model = Fox::getModel('admin/analytics');
             $ga_profile_id = $this->getProfileId();
             for ($i = 30; $i >= 1; $i--) {
                 $date = date('Y-m-d', $prevDateTimeStamp - $i * $dayTimeStamp);
                 $value = Fox_Core_Model_Date::__toLocaleDate(strtotime($date), "d-M-Y");
                 $total_results = 0;
                 $page_views = 0;
                 $visits = 0;
                 if (false && array_key_exists($date, $analyticsData)) {
                     $total_results = $analyticsData[$date]['page_views'];
                     $page_views = $analyticsData[$date]['total_results'];
                     $visits = $analyticsData[$date]['total_visits'];
                 } else {
                     $results = $this->requestReportData($ga_profile_id, $date, $date);
                     if (count($results) > 0) {
                         $page_views = $results['page_views'];
                         $visits = $results['visits'];
                     }
                     $model->setDateValue($date);
                     $model->setTotalResults($total_results);
                     $model->setPageViews($page_views);
                     $model->setTotalVisits($visits);
                     $model->save();
                     $model->unsetData();
                 }
                 $dataArray[$i]['value'] = $value;
                 $dataArray[$i]['page_views'] = $page_views;
                 $dataArray[$i]['total_visits'] = $visits;
             }
             $this->writeData($dataArray);
         }
     } catch (Exception $e) {
         Fox::getHelper('core/message')->setError($e->getMessage());
     }
 }
 /**
  * Render contents
  * 
  * @return string
  * @throws Exception if arguments passed is less than two 
  */
 public function render()
 {
     if (func_num_args() < 2) {
         throw new Exception('Too few parameters! Two required.');
     }
     $args = func_get_args();
     $item = $args[0];
     $column = $args[1];
     $value = $item->{$column['fieldMethod']}();
     if ($column['type'] == self::TYPE_OPTIONS) {
         $colMarkup = $column['options'][$value];
     } else {
         if ($column['type'] == self::TYPE_DATE) {
             $colMarkup = $value != NULL && $value != '0000-00-00' && $value != '0000-00-00 00:00:00' ? Fox_Core_Model_Date::__toLocaleDate(strtotime($value), isset($column['format']) ? $column['format'] : 'Y-m-d', isset($column['locale']) ? $column['locale'] : NULL) : (isset($column['default']) ? $column['default'] : '');
         } else {
             $colMarkup = $value;
         }
     }
     return $colMarkup;
 }