Update guzzle to 6.5.7
[civicrm-core.git] / ext / afform / core / afform.php
index aa7834d2ec317cb35c08baab2d3a77ef79a2eff1..898dd8c08e496f0ba16080678ab287fc18368efa 100644 (file)
@@ -51,9 +51,11 @@ function afform_civicrm_config(&$config) {
   $dispatcher = Civi::dispatcher();
   $dispatcher->addListener('civi.afform.submit', ['\Civi\Api4\Action\Afform\Submit', 'processGenericEntity'], 0);
   $dispatcher->addListener('civi.afform.submit', ['\Civi\Api4\Action\Afform\Submit', 'preprocessContact'], 10);
+  $dispatcher->addListener('civi.afform.submit', ['\Civi\Api4\Action\Afform\Submit', 'processRelationships'], 1);
   $dispatcher->addListener('hook_civicrm_angularModules', ['\Civi\Afform\AngularDependencyMapper', 'autoReq'], -1000);
   $dispatcher->addListener('hook_civicrm_alterAngular', ['\Civi\Afform\AfformMetadataInjector', 'preprocess']);
   $dispatcher->addListener('hook_civicrm_check', ['\Civi\Afform\StatusChecks', 'hook_civicrm_check']);
+  $dispatcher->addListener('civi.afform.get', ['\Civi\Api4\Action\Afform\Get', 'getCustomGroupBlocks']);
 
   // Register support for email tokens
   if (CRM_Extension_System::singleton()->getMapper()->isActiveModule('authx')) {
@@ -125,7 +127,10 @@ function afform_civicrm_upgrade($op, CRM_Queue_Queue $queue = NULL) {
  *
  * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_managed
  */
-function afform_civicrm_managed(&$entities) {
+function afform_civicrm_managed(&$entities, $modules) {
+  if ($modules && !in_array(E::LONG_NAME, $modules, TRUE)) {
+    return;
+  }
   /** @var \CRM_Afform_AfformScanner $scanner */
   if (\Civi::container()->has('afform_scanner')) {
     $scanner = \Civi::service('afform_scanner');
@@ -354,14 +359,18 @@ function afform_civicrm_buildAsset($asset, $params, &$mimeType, &$content) {
  * Implements hook_civicrm_alterMenu().
  */
 function afform_civicrm_alterMenu(&$items) {
-  if (Civi::container()->has('afform_scanner')) {
-    $scanner = Civi::service('afform_scanner');
+  try {
+    $afforms = \Civi\Api4\Afform::get(FALSE)
+      ->addWhere('server_route', 'IS NOT EMPTY')
+      ->addSelect('name', 'server_route', 'is_public')
+      ->execute()->indexBy('name');
   }
-  else {
+  catch (Exception $e) {
     // During installation...
     $scanner = new CRM_Afform_AfformScanner();
+    $afforms = $scanner->getMetas();
   }
-  foreach ($scanner->getMetas() as $name => $meta) {
+  foreach ($afforms as $name => $meta) {
     if (!empty($meta['server_route'])) {
       $items[$meta['server_route']] = [
         'page_callback' => 'CRM_Afform_Page_AfformBase',
@@ -373,6 +382,18 @@ function afform_civicrm_alterMenu(&$items) {
   }
 }
 
+/**
+ * Implements hook_civicrm_permission().
+ *
+ * Define Afform permissions.
+ */
+function afform_civicrm_permission(&$permissions) {
+  $permissions['administer afform'] = [
+    E::ts('Form Builder: edit and delete forms'),
+    E::ts('Allows non-admin users to create, update and delete forms'),
+  ];
+}
+
 /**
  * Implements hook_civicrm_permission_check().
  *