@@ -160,40 +160,48 @@ function afform_civicrm_caseTypes(&$caseTypes) {
160
160
function afform_civicrm_angularModules (&$ angularModules ) {
161
161
_afform_civix_civicrm_angularModules ($ angularModules );
162
162
163
- /** @var CRM_Afform_AfformScanner $scanner */
164
- $ scanner = Civi::service ('afform_scanner ' );
165
- $ names = array_keys ($ scanner ->findFilePaths ());
166
- foreach ($ names as $ name ) {
167
- $ meta = $ scanner ->getMeta ($ name );
168
- $ angularModules [_afform_angular_module_name ($ name , 'camel ' )] = [
163
+ $ afforms = \Civi \Api4 \Afform::get ()
164
+ ->setCheckPermissions (FALSE )
165
+ ->setSelect (['name ' , 'requires ' ])
166
+ ->execute ();
167
+
168
+ foreach ($ afforms as $ afform ) {
169
+ $ angularModules [_afform_angular_module_name ($ afform ['name ' ], 'camel ' )] = [
169
170
'ext ' => E::LONG_NAME ,
170
- 'js ' => ['assetBuilder://afform.js?name= ' . urlencode ($ name )],
171
- 'requires ' => $ meta ['requires ' ],
171
+ 'js ' => ['assetBuilder://afform.js?name= ' . urlencode ($ afform [ ' name ' ] )],
172
+ 'requires ' => $ afform ['requires ' ],
172
173
'basePages ' => [],
173
174
'partialsCallback ' => '_afform_get_partials ' ,
174
- '_afform ' => $ name ,
175
+ '_afform ' => $ afform [ ' name ' ] ,
175
176
'exports ' => [
176
- _afform_angular_module_name ($ name , 'dash ' ) => 'AE ' ,
177
+ _afform_angular_module_name ($ afform [ ' name ' ] , 'dash ' ) => 'AE ' ,
177
178
],
178
179
];
179
180
}
180
181
}
181
182
182
183
/**
183
- * Construct a list of partials for a given afform/angular module.
184
+ * Callback to retrieve partials for a given afform/angular module.
185
+ *
186
+ * @see afform_civicrm_angularModules
184
187
*
185
188
* @param string $moduleName
186
189
* The module name.
187
190
* @param array $module
188
191
* The module definition.
189
192
* @return array
190
193
* Array(string $filename => string $html).
194
+ * @throws API_Exception
191
195
*/
192
196
function _afform_get_partials ($ moduleName , $ module ) {
193
- /** @var CRM_Afform_AfformScanner $scanner */
194
- $ scanner = Civi::service ('afform_scanner ' );
197
+ $ afform = civicrm_api4 ('Afform ' , 'get ' , [
198
+ 'where ' => [['name ' , '= ' , $ module ['_afform ' ]]],
199
+ 'select ' => ['layout ' ],
200
+ 'layoutFormat ' => 'html ' ,
201
+ 'checkPermissions ' => FALSE ,
202
+ ], 0 );
195
203
return [
196
- "~/ $ moduleName/ $ moduleName.aff.html " => $ scanner -> getLayout ( $ module [ ' _afform ' ]) ,
204
+ "~/ $ moduleName/ $ moduleName.aff.html " => $ afform [ ' layout ' ] ,
197
205
];
198
206
}
199
207
@@ -418,17 +426,11 @@ function afform_civicrm_buildAsset($asset, $params, &$mimeType, &$content) {
418
426
throw new RuntimeException ("Missing required parameter: afform.js?name=NAME " );
419
427
}
420
428
421
- $ name = $ params ['name ' ];
422
- /** @var \CRM_Afform_AfformScanner $scanner */
423
- $ scanner = Civi::service ('afform_scanner ' );
424
- $ meta = $ scanner ->getMeta ($ name );
425
- $ moduleName = _afform_angular_module_name ($ name , 'camel ' );
426
-
429
+ $ moduleName = _afform_angular_module_name ($ params ['name ' ], 'camel ' );
427
430
$ smarty = CRM_Core_Smarty::singleton ();
428
431
$ smarty ->assign ('afform ' , [
429
432
'camel ' => $ moduleName ,
430
- 'meta ' => $ meta ,
431
- 'metaJson ' => json_encode ($ meta ),
433
+ 'meta ' => ['name ' => $ params ['name ' ]],
432
434
'templateUrl ' => "~/ $ moduleName/ $ moduleName.aff.html " ,
433
435
]);
434
436
$ mimeType = 'text/javascript ' ;
@@ -480,10 +482,15 @@ function afform_civicrm_permission_check($permission, &$granted, $contactId) {
480
482
if (preg_match ('/^@afform:(.*)/ ' , $ permission , $ m )) {
481
483
$ name = $ m [1 ];
482
484
483
- /** @var CRM_Afform_AfformScanner $scanner */
484
- $ scanner = \Civi::container ()->get ('afform_scanner ' );
485
- $ meta = $ scanner ->getMeta ($ name );
486
- $ granted = CRM_Core_Permission::check ($ meta ['permission ' ], $ contactId );
485
+ $ afform = \Civi \Api4 \Afform::get ()
486
+ ->setCheckPermissions (FALSE )
487
+ ->addWhere ('name ' , '= ' , $ name )
488
+ ->setSelect (['permission ' ])
489
+ ->execute ()
490
+ ->first ();
491
+ if ($ afform ) {
492
+ $ granted = CRM_Core_Permission::check ($ afform ['permission ' ], $ contactId );
493
+ }
487
494
}
488
495
}
489
496
0 commit comments