/** * 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); // get the chart type. $chartType = CRM_Utils_Array::value('chart_type', $submittedValues, 'bvg'); //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); $chartData = $abbrMonthNames = array(); if (is_array($chartInfoMonthly)) { for ($i = 1; $i <= 12; $i++) { $abbrMonthNames[$i] = strftime('%b', mktime(0, 0, 0, $i, 10, 1970)); } foreach ($abbrMonthNames as $monthKey => $monthName) { $val = CRM_Utils_Array::value($monthKey, $chartInfoMonthly['By Month'], 0); // don't include zero value month. if (!$val && $chartType != 'bvg') { continue; } //build the params for chart. $chartData['by_month']['values'][$monthName] = $val; } $chartData['by_month']['legend'] = 'By Month' . ' - ' . $selectedYear; // handle onclick event. $chartData['by_month']['on_click_fun_name'] = 'byMonthOnClick'; $chartData['by_month']['yname'] = ts('Contribution'); } //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; $chartData['by_year']['legend'] = 'By Year'; $chartData['by_year']['values'] = $chartInfoYearly['By Year']; // handle onclick event. $chartData['by_year']['on_click_fun_name'] = 'byYearOnClick'; $chartData['by_year']['yname'] = ts('Contribution'); } $this->assign('hasContributions', $hasContributions); // process the data. require_once 'CRM/Utils/OpenFlashChart.php'; $chartCnt = 1; $monthlyChart = $yearlyChart = false; foreach ($chartData as $chartKey => &$values) { $chartValues = CRM_Utils_Array::value('values', $values); if (!is_array($chartValues) || empty($chartValues)) { continue; } if ($chartKey == 'by_year') { $yearlyChart = true; } if ($chartKey == 'by_month') { $monthlyChart = true; } $values['divName'] = "open_flash_chart_{$chartKey}"; $funName = $chartType == 'bvg' ? 'barChart' : 'pieChart'; // build the chart objects. eval("\$values['object'] = CRM_Utils_OpenFlashChart::" . $funName . '( $values );'); //build the urls. $urlCnt = 0; foreach ($chartValues as $index => $val) { $urlParams = null; if ($chartKey == 'by_month') { $monthPosition = array_search($index, $abbrMonthNames); $startDate = CRM_Utils_Date::format(array('Y' => $selectedYear, 'M' => $monthPosition)); $endDate = date('Ymd', mktime(0, 0, 0, $monthPosition + 1, 0, $selectedYear)); $urlParams = "reset=1&force=1&status=1&start={$startDate}&end={$endDate}&test=0"; } else { if ($chartKey == 'by_year') { $startDate = CRM_Utils_Date::format(array('Y' => $index)); $endDate = date('Ymd', mktime(0, 0, 0, 13, 0, $index)); $urlParams = "reset=1&force=1&status=1&start={$startDate}&end={$endDate}&test=0"; } } if ($urlParams) { $values['on_click_urls']["url_" . $urlCnt++] = CRM_Utils_System::url('civicrm/contribute/search', $urlParams, true, false, false); } } // calculate chart size. $xSize = 400; $ySize = 300; if ($chartType == 'bvg') { $ySize = 250; $xSize = 60 * count($chartValues); //hack to show tooltip. if ($xSize < 150) { $xSize = 150; } } $values['size'] = array('xSize' => $xSize, 'ySize' => $ySize); } // finally assign this chart data to template. $this->assign('hasYearlyChart', $yearlyChart); $this->assign('hasByMonthChart', $monthlyChart); $this->assign('hasOpenFlashChart', empty($chartData) ? false : true); $this->assign('openFlashChartData', json_encode($chartData)); }
/** * Process the form after the input has been submitted and validated. */ public function postProcess() { $config = CRM_Core_Config::singleton(); $chartType = 'bvg'; if ($this->_chartType) { $chartType = $this->_chartType; } $selectedYear = date('Y'); if ($this->_year) { $selectedYear = $this->_year; } //take contribution information monthly $chartInfoMonthly = CRM_Contribute_BAO_Contribution_Utils::contributionChartMonthly($selectedYear); $chartData = $abbrMonthNames = array(); if (is_array($chartInfoMonthly)) { for ($i = 1; $i <= 12; $i++) { $abbrMonthNames[$i] = strftime('%b', mktime(0, 0, 0, $i, 10, 1970)); } foreach ($abbrMonthNames as $monthKey => $monthName) { $val = CRM_Utils_Array::value($monthKey, $chartInfoMonthly['By Month'], 0); // don't include zero value month. if (!$val && $chartType != 'bvg') { continue; } //build the params for chart. $chartData['by_month']['values'][$monthName] = $val; } $chartData['by_month']['legend'] = 'By Month' . ' - ' . $selectedYear; // handle onclick event. $chartData['by_month']['on_click_fun_name'] = 'byMonthOnClick'; $chartData['by_month']['yname'] = ts('Contribution'); } //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; $chartData['by_year']['legend'] = 'By Year'; $chartData['by_year']['values'] = $chartInfoYearly['By Year']; // handle onclick event. $chartData['by_year']['on_click_fun_name'] = 'byYearOnClick'; $chartData['by_year']['yname'] = ts('Total Amount'); } $this->assign('hasContributions', $hasContributions); // process the data. $chartCnt = 1; $monthlyChart = $yearlyChart = FALSE; foreach ($chartData as $chartKey => &$values) { $chartValues = CRM_Utils_Array::value('values', $values); if (!is_array($chartValues) || empty($chartValues)) { continue; } if ($chartKey == 'by_year') { $yearlyChart = TRUE; if (!empty($config->fiscalYearStart) && ($config->fiscalYearStart['M'] !== 1 || $config->fiscalYearStart['d'] !== 1)) { $values['xLabelAngle'] = 45; } else { $values['xLabelAngle'] = 0; } } if ($chartKey == 'by_month') { $monthlyChart = TRUE; } $values['divName'] = "open_flash_chart_{$chartKey}"; $funName = $chartType == 'bvg' ? 'barChart' : 'pieChart'; // build the chart objects. $values['object'] = CRM_Utils_OpenFlashChart::$funName($values); //build the urls. $urlCnt = 0; foreach ($chartValues as $index => $val) { $urlParams = NULL; if ($chartKey == 'by_month') { $monthPosition = array_search($index, $abbrMonthNames); $startDate = CRM_Utils_Date::format(array('Y' => $selectedYear, 'M' => $monthPosition)); $endDate = date('Ymd', mktime(0, 0, 0, $monthPosition + 1, 0, $selectedYear)); $urlParams = "reset=1&force=1&status=1&start={$startDate}&end={$endDate}&test=0"; } elseif ($chartKey == 'by_year') { if (!empty($config->fiscalYearStart) && ($config->fiscalYearStart['M'] != 1 || $config->fiscalYearStart['d'] != 1)) { $startDate = date('Ymd', mktime(0, 0, 0, $config->fiscalYearStart['M'], $config->fiscalYearStart['d'], substr($index, 0, 4))); $endDate = date('Ymd', mktime(0, 0, 0, $config->fiscalYearStart['M'], $config->fiscalYearStart['d'], substr($index, 0, 4) + 1)); } else { $startDate = CRM_Utils_Date::format(array('Y' => substr($index, 0, 4))); $endDate = date('Ymd', mktime(0, 0, 0, 13, 0, substr($index, 0, 4))); } $urlParams = "reset=1&force=1&status=1&start={$startDate}&end={$endDate}&test=0"; } if ($urlParams) { $values['on_click_urls']["url_" . $urlCnt++] = CRM_Utils_System::url('civicrm/contribute/search', $urlParams, TRUE, FALSE, FALSE); } } // calculate chart size. $xSize = 400; $ySize = 300; if ($chartType == 'bvg') { $ySize = 250; $xSize = 60 * count($chartValues); // reduce x size by 100 for by_month if ($chartKey == 'by_month') { $xSize -= 100; } //hack to show tooltip. if ($xSize < 150) { $xSize = 150; } } $values['size'] = array('xSize' => $xSize, 'ySize' => $ySize); } // finally assign this chart data to template. $this->assign('hasYearlyChart', $yearlyChart); $this->assign('hasByMonthChart', $monthlyChart); $this->assign('hasOpenFlashChart', empty($chartData) ? FALSE : TRUE); $this->assign('openFlashChartData', json_encode($chartData)); }
/** * 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); } } } }