quickfix for crash if civigrant not enabled and have admin rights
[civicrm-core.git] / CRM / Mailing / Page / AJAX.php
1 <?php
2 /*
3 +--------------------------------------------------------------------+
4 | Copyright CiviCRM LLC. All rights reserved. |
5 | |
6 | This work is published under the GNU AGPLv3 license with some |
7 | permitted exceptions and without any warranty. For full license |
8 | and copyright information, see https://civicrm.org/licensing |
9 +--------------------------------------------------------------------+
10 */
11
12 /**
13 *
14 * @package CRM
15 * @copyright CiviCRM LLC https://civicrm.org/licensing
16 */
17
18 /**
19 * This class contains all the function that are called using AJAX
20 */
21 class CRM_Mailing_Page_AJAX {
22
23 /**
24 * Kick off the "Add Mail Account" process for some given type of account.
25 *
26 * Ex: 'civicrm/ajax/setupMailAccount?type=standard'
27 * Ex: 'civicrm/ajax/setupMailAccount?type=oauth_1'
28 *
29 * @see CRM_Core_BAO_MailSettings::getSetupActions()
30 * @throws \CRM_Core_Exception
31 */
32 public static function setup() {
33 $type = CRM_Utils_Request::retrieve('type', 'String');
34 $setupActions = CRM_Core_BAO_MailSettings::getSetupActions();
35 $setupAction = $setupActions[$type] ?? NULL;
36 if ($setupAction === NULL) {
37 throw new \CRM_Core_Exception("Cannot setup mail account. Invalid type requested.");
38 }
39
40 $result = call_user_func($setupAction['callback'], $setupAction);
41 if (isset($result['url'])) {
42 CRM_Utils_System::redirect($result['url']);
43 }
44 else {
45 throw new \CRM_Core_Exception("Cannot setup mail account. Setup does not have a URL.");
46 }
47 }
48
49 /**
50 * Fetch the template text/html messages
51 */
52 public static function template() {
53 $templateId = CRM_Utils_Type::escape($_POST['tid'], 'Integer');
54
55 $messageTemplate = new CRM_Core_DAO_MessageTemplate();
56 $messageTemplate->id = $templateId;
57 $messageTemplate->selectAdd();
58 $messageTemplate->selectAdd('msg_text, msg_html, msg_subject, pdf_format_id');
59 $messageTemplate->find(TRUE);
60 $messages = [
61 'subject' => $messageTemplate->msg_subject,
62 'msg_text' => $messageTemplate->msg_text,
63 'msg_html' => $messageTemplate->msg_html,
64 'pdf_format_id' => $messageTemplate->pdf_format_id,
65 ];
66
67 $documentInfo = CRM_Core_BAO_File::getEntityFile('civicrm_msg_template', $templateId);
68 foreach ((array) $documentInfo as $info) {
69 list($messages['document_body']) = CRM_Utils_PDF_Document::docReader($info['fullPath'], $info['mime_type']);
70 }
71
72 CRM_Utils_JSON::output($messages);
73 }
74
75 /**
76 * Retrieve contact mailings.
77 */
78 public static function getContactMailings() {
79 $params = CRM_Core_Page_AJAX::defaultSortAndPagerParams();
80 $params += CRM_Core_Page_AJAX::validateParams(['contact_id' => 'Integer']);
81
82 // get the contact mailings
83 $mailings = CRM_Mailing_BAO_Mailing::getContactMailingSelector($params);
84
85 CRM_Utils_JSON::output($mailings);
86 }
87
88 }