e7339d59 |
1 | <?php |
2 | |
3 | require_once 'financialacls.civix.php'; |
4 | // phpcs:disable |
5 | use CRM_Financialacls_ExtensionUtil as E; |
6 | // phpcs:enable |
7 | |
8 | /** |
9 | * Implements hook_civicrm_config(). |
10 | * |
11 | * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_config/ |
12 | */ |
13 | function financialacls_civicrm_config(&$config) { |
14 | _financialacls_civix_civicrm_config($config); |
15 | } |
16 | |
17 | /** |
18 | * Implements hook_civicrm_xmlMenu(). |
19 | * |
20 | * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_xmlMenu |
21 | */ |
22 | function financialacls_civicrm_xmlMenu(&$files) { |
23 | _financialacls_civix_civicrm_xmlMenu($files); |
24 | } |
25 | |
26 | /** |
27 | * Implements hook_civicrm_install(). |
28 | * |
29 | * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_install |
30 | */ |
31 | function financialacls_civicrm_install() { |
32 | _financialacls_civix_civicrm_install(); |
33 | } |
34 | |
35 | /** |
36 | * Implements hook_civicrm_postInstall(). |
37 | * |
38 | * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_postInstall |
39 | */ |
40 | function financialacls_civicrm_postInstall() { |
41 | _financialacls_civix_civicrm_postInstall(); |
42 | } |
43 | |
44 | /** |
45 | * Implements hook_civicrm_uninstall(). |
46 | * |
47 | * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_uninstall |
48 | */ |
49 | function financialacls_civicrm_uninstall() { |
50 | _financialacls_civix_civicrm_uninstall(); |
51 | } |
52 | |
53 | /** |
54 | * Implements hook_civicrm_enable(). |
55 | * |
56 | * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_enable |
57 | */ |
58 | function financialacls_civicrm_enable() { |
59 | _financialacls_civix_civicrm_enable(); |
60 | } |
61 | |
62 | /** |
63 | * Implements hook_civicrm_disable(). |
64 | * |
65 | * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_disable |
66 | */ |
67 | function financialacls_civicrm_disable() { |
68 | _financialacls_civix_civicrm_disable(); |
69 | } |
70 | |
71 | /** |
72 | * Implements hook_civicrm_upgrade(). |
73 | * |
74 | * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_upgrade |
75 | */ |
76 | function financialacls_civicrm_upgrade($op, CRM_Queue_Queue $queue = NULL) { |
77 | return _financialacls_civix_civicrm_upgrade($op, $queue); |
78 | } |
79 | |
80 | /** |
81 | * Implements hook_civicrm_managed(). |
82 | * |
83 | * Generate a list of entities to create/deactivate/delete when this module |
84 | * is installed, disabled, uninstalled. |
85 | * |
86 | * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_managed |
87 | */ |
88 | function financialacls_civicrm_managed(&$entities) { |
89 | _financialacls_civix_civicrm_managed($entities); |
90 | } |
91 | |
92 | /** |
93 | * Implements hook_civicrm_caseTypes(). |
94 | * |
95 | * Generate a list of case-types. |
96 | * |
97 | * Note: This hook only runs in CiviCRM 4.4+. |
98 | * |
99 | * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_caseTypes |
100 | */ |
101 | function financialacls_civicrm_caseTypes(&$caseTypes) { |
102 | _financialacls_civix_civicrm_caseTypes($caseTypes); |
103 | } |
104 | |
105 | /** |
106 | * Implements hook_civicrm_angularModules(). |
107 | * |
108 | * Generate a list of Angular modules. |
109 | * |
110 | * Note: This hook only runs in CiviCRM 4.5+. It may |
111 | * use features only available in v4.6+. |
112 | * |
113 | * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_angularModules |
114 | */ |
115 | function financialacls_civicrm_angularModules(&$angularModules) { |
116 | _financialacls_civix_civicrm_angularModules($angularModules); |
117 | } |
118 | |
119 | /** |
120 | * Implements hook_civicrm_alterSettingsFolders(). |
121 | * |
122 | * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_alterSettingsFolders |
123 | */ |
124 | function financialacls_civicrm_alterSettingsFolders(&$metaDataFolders = NULL) { |
125 | _financialacls_civix_civicrm_alterSettingsFolders($metaDataFolders); |
126 | } |
127 | |
128 | /** |
129 | * Implements hook_civicrm_entityTypes(). |
130 | * |
131 | * Declare entity types provided by this module. |
132 | * |
133 | * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_entityTypes |
134 | */ |
135 | function financialacls_civicrm_entityTypes(&$entityTypes) { |
136 | _financialacls_civix_civicrm_entityTypes($entityTypes); |
137 | } |
138 | |
139 | /** |
140 | * Implements hook_civicrm_thems(). |
141 | */ |
142 | function financialacls_civicrm_themes(&$themes) { |
143 | _financialacls_civix_civicrm_themes($themes); |
144 | } |
145 | |
b82fb202 |
146 | /** |
147 | * Intervene to prevent deletion, where permissions block it. |
148 | * |
aeee327d |
149 | * @param string $op |
b82fb202 |
150 | * @param string $objectName |
151 | * @param int|null $id |
152 | * @param array $params |
153 | * |
154 | * @throws \API_Exception |
155 | * @throws \CRM_Core_Exception |
156 | */ |
157 | function financialacls_civicrm_pre($op, $objectName, $id, &$params) { |
aeee327d |
158 | if ($objectName === 'LineItem' && !empty($params['check_permissions'])) { |
b82fb202 |
159 | if (CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus()) { |
aeee327d |
160 | $operationMap = ['delete' => CRM_Core_Action::DELETE, 'edit' => CRM_Core_Action::UPDATE, 'create' => CRM_Core_Action::ADD]; |
161 | CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($types, $operationMap[$op]); |
b82fb202 |
162 | if (empty($params['financial_type_id'])) { |
163 | $params['financial_type_id'] = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_LineItem', $params['id'], 'financial_type_id'); |
164 | } |
165 | if (!in_array($params['financial_type_id'], array_keys($types))) { |
aeee327d |
166 | throw new API_Exception('You do not have permission to ' . $op . ' this line item'); |
b82fb202 |
167 | } |
168 | } |
169 | } |
170 | } |
171 | |
28188a1e |
172 | /** |
173 | * Implements hook_civicrm_selectWhereClause(). |
174 | * |
175 | * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_selectWhereClause |
176 | */ |
177 | function financialacls_civicrm_selectWhereClause($entity, &$clauses) { |
178 | if ($entity === 'LineItem') { |
179 | if (CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus()) { |
180 | $types = []; |
181 | CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($types); |
182 | if ($types) { |
183 | $clauses['financial_type_id'] = 'IN (' . implode(',', array_keys($types)) . ')'; |
184 | } |
185 | else { |
186 | $clauses['financial_type_id'] = '= 0'; |
187 | } |
188 | } |
189 | } |
190 | |
191 | } |
192 | |
e7339d59 |
193 | // --- Functions below this ship commented out. Uncomment as required. --- |
194 | |
195 | /** |
196 | * Implements hook_civicrm_preProcess(). |
197 | * |
198 | * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_preProcess |
199 | */ |
200 | //function financialacls_civicrm_preProcess($formName, &$form) { |
201 | // |
202 | //} |
203 | |
204 | /** |
205 | * Implements hook_civicrm_navigationMenu(). |
206 | * |
207 | * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_navigationMenu |
208 | */ |
209 | //function financialacls_civicrm_navigationMenu(&$menu) { |
210 | // _financialacls_civix_insert_navigation_menu($menu, 'Mailings', array( |
211 | // 'label' => E::ts('New subliminal message'), |
212 | // 'name' => 'mailing_subliminal_message', |
213 | // 'url' => 'civicrm/mailing/subliminal', |
214 | // 'permission' => 'access CiviMail', |
215 | // 'operator' => 'OR', |
216 | // 'separator' => 0, |
217 | // )); |
218 | // _financialacls_civix_navigationMenu($menu); |
219 | //} |