3 require_once 'CRM/Core/Form.php';
4 require_once 'wci-helper-functions.php';
5 require_once 'CRM/Wci/BAO/ProgressBar.php';
6 require_once 'CRM/Wci/DAO/ProgressBarFormula.php';
9 * Form controller class
11 * @see http://wiki.civicrm.org/confluence/display/CRMDOC43/QuickForm+Reference
13 class CRM_Wci_Form_ProgressBar
extends CRM_Core_Form
{
15 function preProcess() {
16 $this->_id
= CRM_Utils_Request
::retrieve('id', 'Positive', $this, FALSE, NULL, 'REQUEST');
17 CRM_Core_Resources
::singleton()->addScriptFile('org.civicrm.wci', 'F3/sites/all/modules/civicrm/extensions/civicrm-wci/addmore.js');
22 if (isset($this->_id
)) {
23 /** Updating existing progress bar*/
24 $query = "SELECT * FROM civicrm_wci_progress_bar where id=" . $this->_id
;
27 $dao = CRM_Core_DAO
::executeQuery($query, $params, TRUE, 'CRM_Wci_DAO_ProgressBar');
29 while ($dao->fetch()) {
30 $con_page[$dao->id
] = array();
31 CRM_Core_DAO
::storeValues($dao, $con_page[$dao->id
]);
32 $this->setDefaults(array(
33 'progressbar_name' => $con_page[$dao->id
]['name']));
34 $this->setDefaults(array(
35 'starting_amount' => $con_page[$dao->id
]['starting_amount']));
36 $this->setDefaults(array(
37 'goal_amount' => $con_page[$dao->id
]['goal_amount']));
40 $query = "SELECT * FROM civicrm_wci_progress_bar_formula WHERE progress_bar_id =" . $this->_id
;
43 $dao = CRM_Core_DAO
::executeQuery($query, $params, TRUE, 'CRM_Wci_DAO_ProgressBarFormula');
45 while ($dao->fetch()) {
46 $for_page[$dao->id
] = array();
47 CRM_Core_DAO
::storeValues($dao, $for_page[$dao->id
]);
50 'select', // field type
51 'contribution_page_'.$count, // field name
52 'Contribution page', // field label
53 getContributionPageOptions(), // list of options
58 'percentage_'.$count, // field name
59 'Percentage', // field label
63 $this->addElement('hidden', 'contrib_elem_'.$count , $for_page[$dao->id
]['id']);
65 $this->setDefaults(array(
66 'contribution_page_'.$count => $for_page[$dao->id
]['contribution_page_id']));
67 $this->setDefaults(array(
68 'percentage_'.$count => $for_page[$dao->id
]['percentage']));
72 $count--; // because last iteration increments it to the next
75 /** New progress bar*/
77 'select', // field type
78 'contribution_page_1', // field name
79 'Contribution page', // field label
80 getContributionPageOptions(), // list of options
85 'percentage_1', // field name
86 'Percentage', // field label
91 $this->addElement('hidden', 'contrib_count', $count);
94 function buildQuickForm() {
98 'progressbar_name', // field name
99 'Name', // field label
103 'text', // field type
104 'starting_amount', // field name
105 'Starting amount', // field label
109 'text', // field type
110 'goal_amount', // field name
111 'Goal amount', // field label
115 'select', // field type
116 'contribution_page_1', // field name
117 'Contribution page', // field label
118 getContributionPageOptions(), // list of options
122 'text', // field type
123 'percentage_1', // field name
124 'Percentage', // field label
130 $this->addElement('link', 'addmore_link',' ', 'addmore', 'Add more');
132 $this->addButtons(array(
135 'name' => ts('Save'),
140 // export form elements
141 $this->assign('elementNames', $this->getRenderableElementNames());
143 parent
::buildQuickForm();
146 function postProcess() {
147 $errorScope = CRM_Core_TemporaryErrorScope
::useException();
148 if (isset($this->_id
)) {
150 $sql = "UPDATE civicrm_wci_progress_bar SET name = '". $_REQUEST['progressbar_name'] .
151 "', starting_amount = '" . $_REQUEST['starting_amount'] .
152 "', goal_amount = '" . $_REQUEST['goal_amount'] .
153 "' where id =".$this->_id
;
155 $transaction = new CRM_Core_Transaction();
156 CRM_Core_DAO
::executeQuery($sql);
158 for($i = 1; $i <= (int)$_REQUEST['contrib_count']; $i++
):
159 $page = 'contribution_page_' . (string)$i;
160 $perc = 'percentage_' . (string)$i;
161 if (isset($_REQUEST['contrib_elem_'.$i])) {
162 $sql = "UPDATE civicrm_wci_progress_bar_formula SET contribution_page_id = '". $_REQUEST[$page] . "',
163 percentage = '". $_REQUEST[$perc] . "'
164 WHERE id = " . (int)$_REQUEST['contrib_elem_'.$i];
167 $sql = "INSERT INTO civicrm_wci_progress_bar_formula (contribution_page_id, progress_bar_id, percentage)
168 VALUES ('" . $_REQUEST[$page] . "','" . $this->_id
. "','" . $_REQUEST[$perc] . "')";
171 CRM_Core_DAO
::executeQuery($sql);
173 $transaction->commit();
175 catch (Exception
$e) {
177 print_r($e->getMessage());
178 $transaction->rollback();
183 $sql = "INSERT INTO civicrm_wci_progress_bar (name, starting_amount, goal_amount)
184 VALUES ('" . $_REQUEST['progressbar_name'] . "','" . $_REQUEST['starting_amount'] . "','" . $_REQUEST['goal_amount'] . "')";
186 $transaction = new CRM_Core_Transaction();
187 CRM_Core_DAO
::executeQuery($sql);
188 $progressbar_id = CRM_Core_DAO
::singleValueQuery('SELECT LAST_INSERT_ID()');
189 for($i = 1; $i <= (int)$_REQUEST['contrib_count']; $i++
):
190 $page = 'contribution_page_' . (string)$i;
191 $perc = 'percentage_' . (string)$i;
193 $sql = "INSERT INTO civicrm_wci_progress_bar_formula (contribution_page_id, progress_bar_id, percentage)
194 VALUES ('" . $_REQUEST[$page] . "','" . $progressbar_id . "','" . $_REQUEST[$perc] . "')";
196 CRM_Core_DAO
::executeQuery($sql);
198 $transaction->commit();
200 catch (Exception
$e) {
202 print_r($e->getMessage());
203 $transaction->rollback();
205 $elem = $this->getElement('contrib_count');
206 $elem->setValue('1');
208 parent
::postProcess();
212 * Get the fields/elements defined in this form.
214 * @return array (string)
216 function getRenderableElementNames() {
217 // The _elements list includes some items which should not be
218 // auto-rendered in the loop -- such as "qfKey" and "buttons". These
219 // items don't have labels. We'll identify renderable by filtering on
221 $elementNames = array();
222 foreach ($this->_elements
as $element) {
223 $label = $element->getLabel();
224 if (!empty($label)) {
225 $elementNames[] = $element->getName();
228 return $elementNames;