Commit | Line | Data |
---|---|---|
6a488035 | 1 | <?php |
6a488035 TO |
2 | /* |
3 | +--------------------------------------------------------------------+ | |
a30c801b | 4 | | Copyright CiviCRM LLC. All rights reserved. | |
6a488035 | 5 | | | |
a30c801b TO |
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 | | |
6a488035 | 9 | +--------------------------------------------------------------------+ |
d25dd0ee | 10 | */ |
6a488035 TO |
11 | |
12 | /** | |
13 | * | |
14 | * APIv3 functions for registering/processing mailing group events. | |
15 | * | |
16 | * @package CiviCRM_APIv3 | |
6a488035 TO |
17 | */ |
18 | ||
19 | /** | |
22242c87 | 20 | * Subscribe from mailing group. |
6a488035 | 21 | * |
cf470720 | 22 | * @param array $params |
22242c87 | 23 | * Array per getfields metadata. |
6a488035 | 24 | * |
77b97be7 | 25 | * @throws API_Exception |
a6c01b45 | 26 | * @return array |
72b3a70c | 27 | * api result array |
6a488035 TO |
28 | */ |
29 | function civicrm_api3_mailing_event_subscribe_create($params) { | |
30 | $email = $params['email']; | |
31 | $group_id = $params['group_id']; | |
f748c073 | 32 | $contact_id = $params['contact_id'] ?? NULL; |
6a488035 TO |
33 | |
34 | $group = new CRM_Contact_DAO_Group(); | |
35 | $group->is_active = 1; | |
28a04ea9 | 36 | $group->id = (int) $group_id; |
6a488035 | 37 | if (!$group->find(TRUE)) { |
9e23eadb | 38 | throw new API_Exception('Invalid Group id'); |
6a488035 TO |
39 | } |
40 | ||
a897ae65 JF |
41 | if (substr($group->visibility, 0, 6) != 'Public') { |
42 | throw new API_Exception('Group is not Public. Contact cannot be subscribed to this Group.'); | |
43 | } | |
44 | ||
6a488035 TO |
45 | $subscribe = CRM_Mailing_Event_BAO_Subscribe::subscribe($group_id, $email, $contact_id); |
46 | ||
47 | if ($subscribe !== NULL) { | |
48 | /* Ask the contact for confirmation */ | |
49 | ||
6a488035 TO |
50 | $subscribe->send_confirm_request($email); |
51 | ||
cf8f0fff | 52 | $values = []; |
9e23eadb | 53 | $values[$subscribe->id]['contact_id'] = $subscribe->contact_id; |
54 | $values[$subscribe->id]['subscribe_id'] = $subscribe->id; | |
55 | $values[$subscribe->id]['hash'] = $subscribe->hash; | |
6a488035 TO |
56 | |
57 | return civicrm_api3_create_success($values); | |
58 | } | |
59 | return civicrm_api3_create_error('Subscription failed'); | |
60 | } | |
11e09c59 TO |
61 | |
62 | /** | |
0aa0303c EM |
63 | * Adjust Metadata for Create action. |
64 | * | |
65 | * The metadata is used for setting defaults, documentation & validation. | |
1c88e578 | 66 | * |
cf470720 | 67 | * @param array $params |
b081365f | 68 | * Array of parameters determined by getfields. |
6a488035 TO |
69 | */ |
70 | function _civicrm_api3_mailing_event_subscribe_create_spec(&$params) { | |
cf8f0fff | 71 | $params['email'] = [ |
d142432b | 72 | 'api.required' => 1, |
973aefd5 | 73 | 'title' => 'Subscribe Email', |
d142432b | 74 | 'type' => CRM_Utils_Type::T_STRING, |
cf8f0fff CW |
75 | ]; |
76 | $params['group_id'] = [ | |
d142432b | 77 | 'api.required' => 1, |
973aefd5 | 78 | 'title' => 'Subscribe To Group', |
d142432b | 79 | 'type' => CRM_Utils_Type::T_INT, |
cf8f0fff | 80 | ]; |
6a488035 | 81 | } |