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']; } } } }
/** * 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); } } } }