[NFC] Fix UpdateSubscriptionTest on php8 by creating a Payment Processor
[civicrm-core.git] / CRM / Mailing / Info.php
index cfba5ccde0d9ed2f16061276facf097b932b515b..d26c57dc993069fb7884d26eb510072f4c0c698d 100644 (file)
@@ -26,52 +26,20 @@ class CRM_Mailing_Info extends CRM_Core_Component_Info {
   protected $keyword = 'mailing';
 
   /**
-   * @inheritDoc
-   * @return array
-   */
-  public function getInfo() {
-    return [
-      'name' => 'CiviMail',
-      'translatedName' => ts('CiviMail'),
-      'title' => ts('CiviCRM Mailing Engine'),
-      'search' => 1,
-      'showActivitiesInCore' => 1,
-    ];
-  }
-
-  /**
-   * Get AngularJS modules and their dependencies.
-   *
    * @return array
-   *   list of modules; same format as CRM_Utils_Hook::angularModules(&$angularModules)
-   * @see CRM_Utils_Hook::angularModules
    */
-  public function getAngularModules() {
-    // load angular files only if valid permissions are granted to the user
-    if (!CRM_Core_Permission::check('access CiviMail')
-      && !CRM_Core_Permission::check('create mailings')
-      && !CRM_Core_Permission::check('schedule mailings')
-      && !CRM_Core_Permission::check('approve mailings')
-    ) {
-      return [];
-    }
-    global $civicrm_root;
-
+  public static function createAngularSettings():array {
     $reportIds = [];
     $reportTypes = ['detail', 'opened', 'bounce', 'clicks'];
     foreach ($reportTypes as $report) {
-      $result = civicrm_api3('ReportInstance', 'get', [
+      $rptResult = civicrm_api3('ReportInstance', 'get', [
         'sequential' => 1,
         'report_id' => 'mailing/' . $report,
       ]);
-      if (!empty($result['values'])) {
-        $reportIds[$report] = $result['values'][0]['id'];
+      if (!empty($rptResult['values'])) {
+        $reportIds[$report] = $rptResult['values'][0]['id'];
       }
     }
-    $result = [];
-    $result['crmMailing'] = include "$civicrm_root/ang/crmMailing.ang.php";
-    $result['crmMailingAB'] = include "$civicrm_root/ang/crmMailingAB.ang.php";
-    $result['crmD3'] = include "$civicrm_root/ang/crmD3.ang.php";
 
     $config = CRM_Core_Config::singleton();
     $session = CRM_Core_Session::singleton();
@@ -89,7 +57,13 @@ class CRM_Mailing_Info extends CRM_Core_Component_Info {
     ]);
     $headerfooterList = civicrm_api3('MailingComponent', 'get', $params + [
       'is_active' => 1,
-      'return' => ['name', 'component_type', 'is_default', 'body_html', 'body_text'],
+      'return' => [
+        'name',
+        'component_type',
+        'is_default',
+        'body_html',
+        'body_text',
+      ],
     ]);
 
     $emailAdd = civicrm_api3('Email', 'get', [
@@ -115,46 +89,74 @@ class CRM_Mailing_Info extends CRM_Core_Component_Info {
     $enabledLanguages = CRM_Core_I18n::languages(TRUE);
     $isMultiLingual = (count($enabledLanguages) > 1);
     // FlexMailer is a refactoring of CiviMail which provides new hooks/APIs/docs. If the sysadmin has opted to enable it, then use that instead of CiviMail.
-    $requiredTokens = defined('CIVICRM_FLEXMAILER_HACK_REQUIRED_TOKENS') ? Civi\Core\Resolver::singleton()->call(CIVICRM_FLEXMAILER_HACK_REQUIRED_TOKENS, []) : CRM_Utils_Token::getRequiredTokens();
-    CRM_Core_Resources::singleton()
-      ->addSetting([
-        'crmMailing' => [
-          'templateTypes' => CRM_Mailing_BAO_Mailing::getTemplateTypes(),
-          'civiMails' => [],
-          'campaignEnabled' => in_array('CiviCampaign', $config->enableComponents),
-          'groupNames' => [],
-          // @todo this is not used in core. Remove once Mosaico no longer depends on it.
-          'testGroupNames' => $groupNames['values'],
-          'headerfooterList' => $headerfooterList['values'],
-          'mesTemplate' => $mesTemplate['values'],
-          'emailAdd' => $emailAdd['values'],
-          'mailTokens' => $mailTokens['values'],
-          'contactid' => $contactID,
-          'requiredTokens' => $requiredTokens,
-          'enableReplyTo' => (int) Civi::settings()->get('replyTo'),
-          'disableMandatoryTokensCheck' => (int) Civi::settings()->get('disable_mandatory_tokens_check'),
-          'fromAddress' => $fromAddress['values'],
-          'defaultTestEmail' => civicrm_api3('Contact', 'getvalue', [
-            'id' => 'user_contact_id',
-            'return' => 'email',
-          ]),
-          'visibility' => CRM_Utils_Array::makeNonAssociative(CRM_Core_SelectValues::groupVisibility()),
-          'workflowEnabled' => CRM_Mailing_Info::workflowEnabled(),
-          'reportIds' => $reportIds,
-          'enabledLanguages' => $enabledLanguages,
-          'isMultiLingual' => $isMultiLingual,
-        ],
-      ])
-      ->addPermissions([
-        'view all contacts',
-        'edit all contacts',
-        'access CiviMail',
-        'create mailings',
-        'schedule mailings',
-        'approve mailings',
-        'delete in CiviMail',
-        'edit message templates',
-      ]);
+    $requiredTokens = defined('CIVICRM_FLEXMAILER_HACK_REQUIRED_TOKENS') ? Civi\Core\Resolver::singleton()
+      ->call(CIVICRM_FLEXMAILER_HACK_REQUIRED_TOKENS,
+        []) : CRM_Utils_Token::getRequiredTokens();
+    $crmMailingSettings = [
+      'templateTypes' => CRM_Mailing_BAO_Mailing::getTemplateTypes(),
+      'civiMails' => [],
+      'campaignEnabled' => in_array('CiviCampaign', $config->enableComponents),
+      'groupNames' => [],
+      // @todo this is not used in core. Remove once Mosaico no longer depends on it.
+      'testGroupNames' => $groupNames['values'],
+      'headerfooterList' => $headerfooterList['values'],
+      'mesTemplate' => $mesTemplate['values'],
+      'emailAdd' => $emailAdd['values'],
+      'mailTokens' => $mailTokens['values'],
+      'contactid' => $contactID,
+      'requiredTokens' => $requiredTokens,
+      'enableReplyTo' => (int) Civi::settings()->get('replyTo'),
+      'disableMandatoryTokensCheck' => (int) Civi::settings()
+        ->get('disable_mandatory_tokens_check'),
+      'fromAddress' => $fromAddress['values'],
+      'defaultTestEmail' => civicrm_api3('Contact', 'getvalue', [
+        'id' => 'user_contact_id',
+        'return' => 'email',
+      ]),
+      'visibility' => CRM_Utils_Array::makeNonAssociative(CRM_Core_SelectValues::groupVisibility()),
+      'workflowEnabled' => CRM_Mailing_Info::workflowEnabled(),
+      'reportIds' => $reportIds,
+      'enabledLanguages' => $enabledLanguages,
+      'isMultiLingual' => $isMultiLingual,
+    ];
+    return $crmMailingSettings;
+  }
+
+  /**
+   * @inheritDoc
+   * @return array
+   */
+  public function getInfo() {
+    return [
+      'name' => 'CiviMail',
+      'translatedName' => ts('CiviMail'),
+      'title' => ts('CiviCRM Mailing Engine'),
+      'search' => 1,
+      'showActivitiesInCore' => 1,
+    ];
+  }
+
+  /**
+   * Get AngularJS modules and their dependencies.
+   *
+   * @return array
+   *   list of modules; same format as CRM_Utils_Hook::angularModules(&$angularModules)
+   * @see CRM_Utils_Hook::angularModules
+   */
+  public function getAngularModules() {
+    // load angular files only if valid permissions are granted to the user
+    if (!CRM_Core_Permission::check('access CiviMail')
+      && !CRM_Core_Permission::check('create mailings')
+      && !CRM_Core_Permission::check('schedule mailings')
+      && !CRM_Core_Permission::check('approve mailings')
+    ) {
+      return [];
+    }
+    global $civicrm_root;
+
+    $result = [];
+    $result['crmMailing'] = include "$civicrm_root/ang/crmMailing.ang.php";
+    $result['crmMailingAB'] = include "$civicrm_root/ang/crmMailingAB.ang.php";
 
     return $result;
   }