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();
]);
$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', [
$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',