3 +--------------------------------------------------------------------+
4 | Copyright CiviCRM LLC. All rights reserved. |
6 | This work is published under the GNU AGPLv3 license with some |
7 | permitted exceptions and without any warranty. For full license |
8 | and copyright information, see https://civicrm.org/licensing |
9 +--------------------------------------------------------------------+
15 * @copyright CiviCRM LLC https://civicrm.org/licensing
19 * Page for displaying list of Premiums.
21 class CRM_Contribute_Page_Premium
extends CRM_Core_Page_Basic
{
24 * The action links that we need to display for the browse screen.
28 public static $_links = NULL;
36 public function getBAOName() {
37 return 'CRM_Contribute_BAO_Premium';
44 * (reference) of action links
46 public function &links() {
47 if (!(self
::$_links)) {
48 // helper variable for nicer formatting
49 $deleteExtra = ts('Are you sure you want to remove this product form this page?');
52 CRM_Core_Action
::UPDATE
=> [
54 'url' => 'civicrm/admin/contribute/addProductToPage',
55 'qs' => 'action=update&id=%%id%%&pid=%%pid%%&reset=1',
56 'title' => ts('Edit Premium'),
58 CRM_Core_Action
::PREVIEW
=> [
59 'name' => ts('Preview'),
60 'url' => 'civicrm/admin/contribute/addProductToPage',
61 'qs' => 'action=preview&id=%%id%%&pid=%%pid%%',
62 'title' => ts('Preview Premium'),
64 CRM_Core_Action
::DELETE
=> [
65 'name' => ts('Remove'),
66 'url' => 'civicrm/admin/contribute/addProductToPage',
67 'qs' => 'action=delete&id=%%id%%&pid=%%pid%%',
68 'extra' => 'onclick = "if (confirm(\'' . $deleteExtra . '\') ) this.href+=\'&confirmed=1\'; else return false;"',
69 'title' => ts('Disable Premium'),
79 * This method is called after the page is created. It checks for the
80 * type of action and executes that action.
81 * Finally it calls the parent's run method.
83 public function run() {
84 // get the requested action
85 $action = CRM_Utils_Request
::retrieve('action', 'String',
86 // default to 'browse'
87 $this, FALSE, 'browse'
90 // assign vars to templates
91 $this->assign('action', $action);
92 $id = CRM_Utils_Request
::retrieve('id', 'Positive',
95 $this->assign('id', $id);
97 $this->edit($action, $id, FALSE, FALSE);
99 // this is special case where we need to call browse to list premium
100 if ($action == CRM_Core_Action
::UPDATE
) {
105 return parent
::run();
111 public function browse() {
112 // get all custom groups sorted by weight
114 $pageID = CRM_Utils_Request
::retrieve('id', 'Positive',
117 $premiumDao = new CRM_Contribute_DAO_Premium();
118 $premiumDao->entity_table
= 'civicrm_contribution_page';
119 $premiumDao->entity_id
= $pageID;
120 $premiumDao->find(TRUE);
121 $premiumID = $premiumDao->id
;
122 $this->assign('products', FALSE);
123 $this->assign('id', $pageID);
128 $premiumsProductDao = new CRM_Contribute_DAO_PremiumsProduct();
129 $premiumsProductDao->premiums_id
= $premiumID;
130 $premiumsProductDao->orderBy('weight');
131 $premiumsProductDao->find();
133 while ($premiumsProductDao->fetch()) {
134 $productDAO = new CRM_Contribute_DAO_Product();
135 $productDAO->id
= $premiumsProductDao->product_id
;
136 $productDAO->is_active
= 1;
138 if ($productDAO->find(TRUE)) {
139 $premiums[$productDAO->id
] = [];
140 $premiums[$productDAO->id
]['weight'] = $premiumsProductDao->weight
;
141 CRM_Core_DAO
::storeValues($productDAO, $premiums[$productDAO->id
]);
143 $action = array_sum(array_keys($this->links()));
145 $premiums[$premiumsProductDao->product_id
]['action'] = CRM_Core_Action
::formLink(self
::links(), $action,
146 ['id' => $pageID, 'pid' => $premiumsProductDao->id
],
149 'premium.contributionpage.row',
151 $premiumsProductDao->id
154 if (!empty($premiumsProductDao->financial_type_id
)) {
155 $premiums[$productDAO->id
]['financial_type'] = CRM_Core_PseudoConstant
::getLabel('CRM_Contribute_BAO_Product', 'financial_type_id', $premiumsProductDao->financial_type_id
);
160 if (count(CRM_Contribute_PseudoConstant
::products($pageID)) == 0) {
161 $this->assign('products', FALSE);
164 $this->assign('products', TRUE);
167 // Add order changing widget to selector
168 $returnURL = CRM_Utils_System
::url('civicrm/admin/contribute/premium', "reset=1&action=update&id={$pageID}");
169 $filter = "premiums_id = {$premiumID}";
170 CRM_Utils_Weight
::addOrder($premiums, 'CRM_Contribute_DAO_PremiumsProduct',
171 'id', $returnURL, $filter
173 $this->assign('rows', $premiums);
177 * Get name of edit form.
180 * Classname of edit form.
182 public function editForm() {
183 return 'CRM_Contribute_Form_ContributionPage_Premium';
187 * Get edit form name.
192 public function editName() {
193 return 'Configure Premiums';
204 public function userContext($mode = NULL) {
205 return CRM_Utils_System
::currentPath();