示例#1
0
 function buildChart(&$rows)
 {
     $this->_interval = 'events';
     $countEvent = null;
     if (CRM_Utils_Array::value('charts', $this->_params)) {
         foreach ($rows as $key => $value) {
             $graphRows['totalAmount'][] = $rows[$key]['totalAmount'];
             $graphRows[$this->_interval][] = substr($rows[$key]['civicrm_event_title'], 0, 12) . "..(" . $rows[$key]['civicrm_event_id'] . ") ";
             $graphRows['value'][] = $rows[$key]['totalAmount'];
         }
         if ($rows[$key]['totalAmount'] == 0) {
             $countEvent = count($rows);
         }
         if (!empty($rows) && $countEvent != 1) {
             $chartInfo = array('legend' => 'Event Summary', 'xname' => 'Total Amount', 'yname' => 'Event');
             if (!empty($graphRows)) {
                 foreach ($graphRows[$this->_interval] as $key => $val) {
                     $graph[$val] = $graphRows['value'][$key];
                 }
                 $chartInfo['values'] = $graph;
                 $params[] = $chartInfo;
                 if (CRM_Utils_Array::value('charts', $this->_params) == 'barGraph') {
                     $graphs = CRM_Utils_PChart::barGraph($params, 85);
                 } else {
                     unset($params[0]['xname'], $params[0]['yname']);
                     $graphs = CRM_Utils_PChart::pieGraph($params);
                 }
                 $this->assign('graphFilePath', $graphs['0']['file_name']);
                 $this->_graphPath = $graphs['0']['file_name'];
             }
         }
     }
 }
示例#2
0
 /**
  * process the form after the input has been submitted and validated
  *
  * @access public
  * @return None
  */
 public function postProcess()
 {
     //get the submitted form values.
     $submittedValues = $this->controller->exportValues($this->_name);
     //take contribution information monthly
     require_once 'CRM/Contribute/BAO/Contribution/Utils.php';
     $selectedYear = CRM_Utils_Array::value('select_year', $submittedValues, date('Y'));
     $chartInfoMonthly = CRM_Contribute_BAO_Contribution_Utils::contributionChartMonthly($selectedYear);
     $pChartParams = array();
     $monthlyData = false;
     $abbrMonthNames = array();
     if (is_array($chartInfoMonthly)) {
         $monthlyData = true;
         for ($i = 1; $i <= 12; $i++) {
             $abbrMonthNames[$i] = strftime('%b', mktime(0, 0, 0, $i, 10, 1970));
         }
         foreach ($abbrMonthNames as $monthKey => $monthName) {
             if (!CRM_Utils_Array::value($monthKey, $chartInfoMonthly['By Month'])) {
                 //set zero value to month which is not in db
                 $chartInfoMonthly['By Month'][$monthKey] = 0;
             }
         }
         //sort the array.
         ksort($chartInfoMonthly['By Month']);
         //build the params for pChart.
         $pChartParams['by_month']['values'] = array_combine($abbrMonthNames, $chartInfoMonthly['By Month']);
         $pChartParams['by_month']['legend'] = 'By Month' . ' - ' . $selectedYear;
     }
     $this->assign('monthlyData', $monthlyData);
     //take contribution information by yearly
     $chartInfoYearly = CRM_Contribute_BAO_Contribution_Utils::contributionChartYearly();
     //get the years.
     $this->_years = $chartInfoYearly['By Year'];
     $hasContributions = false;
     if (is_array($chartInfoYearly)) {
         $hasContributions = true;
         $pChartParams['by_year']['legend'] = 'By Year';
         $pChartParams['by_year']['values'] = $chartInfoYearly['By Year'];
     }
     $this->assign('hasContributions', $hasContributions);
     //handle pchart functionality.
     if (!empty($pChartParams)) {
         $filesValues = array();
         require_once 'CRM/Utils/PChart.php';
         if ('p3' == CRM_Utils_Array::value('chart_type', $submittedValues, 'bvg')) {
             //assign shape for map
             $this->assign('shape', 'poly');
             $this->assign('chartType', 'pie');
             $chartParams = array();
             if ($monthlyData) {
                 $chartParams = array($pChartParams['by_month'], $pChartParams['by_year']);
             } else {
                 $chartParams = array($pChartParams['by_year']);
             }
             //build the pie graph
             $filesValues = CRM_Utils_PChart::pieGraph($chartParams);
         } else {
             //assign shape for map
             $this->assign('shape', 'rect');
             $this->assign('chartType', 'bar');
             $chartParams = array();
             if ($monthlyData) {
                 $chartParams = array($pChartParams['by_month'], $pChartParams['by_year']);
             } else {
                 $chartParams = array($pChartParams['by_year']);
             }
             //build the bar graph.
             $filesValues = CRM_Utils_PChart::barGraph($chartParams);
         }
         $formatMonthly = true;
         foreach ($filesValues as $chartIndex => $values) {
             if ($monthlyData && $formatMonthly) {
                 $this->assign('monthCoords', $values['coords']);
                 $this->assign('monthFilePath', $values['file_name']);
                 //build the month urls for map.
                 $monthUrls = array();
                 foreach ($values['coords'] as $month => $value) {
                     $monthPosition = array_search($month, $abbrMonthNames);
                     $startDate = CRM_Utils_Date::format(array('Y' => $selectedYear, 'M' => $monthPosition));
                     $endDate = date('Ymd', mktime(0, 0, 0, $monthPosition + 1, 0, $selectedYear));
                     $monthUrls[$month] = CRM_Utils_System::url('civicrm/contribute/search', "reset=1&force=1&status=1&start={$startDate}&end={$endDate}&test=0");
                 }
                 $this->assign('monthUrls', $monthUrls);
                 $formatMonthly = false;
             } else {
                 $this->assign('yearCoords', $values['coords']);
                 $this->assign('yearFilePath', $values['file_name']);
                 //build year urls for map
                 $yearUrls = array();
                 foreach ($values['coords'] as $year => $value) {
                     $startDate = CRM_Utils_Date::format(array('Y' => $year));
                     if ($year) {
                         $endDate = date('Ymd', mktime(0, 0, 0, 13, 0, $year));
                     }
                     $yearUrls[$year] = CRM_Utils_System::url('civicrm/contribute/search', "reset=1&force=1&status=1&start={$startDate}&end={$endDate}&test=0");
                 }
                 $this->assign('yearUrls', $yearUrls);
             }
         }
     }
 }