From 522c72dd4af573de045680167a4354c4a9da6844 Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Mon, 12 Oct 2020 19:52:09 -0700 Subject: [PATCH] CRM_Mailing_Info - Extract method 'createAngularSettings()' --- CRM/Mailing/Info.php | 148 ++++++++++++++++++++++++------------------- 1 file changed, 82 insertions(+), 66 deletions(-) diff --git a/CRM/Mailing/Info.php b/CRM/Mailing/Info.php index cfba5ccde0..e082599864 100644 --- a/CRM/Mailing/Info.php +++ b/CRM/Mailing/Info.php @@ -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,36 +89,78 @@ 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(); + $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 ['crmMailing' => $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"; + $result['crmD3'] = include "$civicrm_root/ang/crmD3.ang.php"; + 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, - ], - ]) + ->addSetting(self::createAngularSettings()) ->addPermissions([ 'view all contacts', 'edit all contacts', -- 2.25.1