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']; | |
32 | $contact_id = CRM_Utils_Array::value('contact_id', $params); | |
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 | ||
41 | $subscribe = CRM_Mailing_Event_BAO_Subscribe::subscribe($group_id, $email, $contact_id); | |
42 | ||
43 | if ($subscribe !== NULL) { | |
44 | /* Ask the contact for confirmation */ | |
45 | ||
6a488035 TO |
46 | $subscribe->send_confirm_request($email); |
47 | ||
cf8f0fff | 48 | $values = []; |
9e23eadb | 49 | $values[$subscribe->id]['contact_id'] = $subscribe->contact_id; |
50 | $values[$subscribe->id]['subscribe_id'] = $subscribe->id; | |
51 | $values[$subscribe->id]['hash'] = $subscribe->hash; | |
6a488035 TO |
52 | |
53 | return civicrm_api3_create_success($values); | |
54 | } | |
55 | return civicrm_api3_create_error('Subscription failed'); | |
56 | } | |
11e09c59 TO |
57 | |
58 | /** | |
0aa0303c EM |
59 | * Adjust Metadata for Create action. |
60 | * | |
61 | * The metadata is used for setting defaults, documentation & validation. | |
1c88e578 | 62 | * |
cf470720 | 63 | * @param array $params |
b081365f | 64 | * Array of parameters determined by getfields. |
6a488035 TO |
65 | */ |
66 | function _civicrm_api3_mailing_event_subscribe_create_spec(&$params) { | |
cf8f0fff | 67 | $params['email'] = [ |
d142432b EM |
68 | 'api.required' => 1, |
69 | 'title' => 'Unsubscribe Email', | |
70 | 'type' => CRM_Utils_Type::T_STRING, | |
cf8f0fff CW |
71 | ]; |
72 | $params['group_id'] = [ | |
d142432b EM |
73 | 'api.required' => 1, |
74 | 'title' => 'Unsubscribe From Group', | |
75 | 'type' => CRM_Utils_Type::T_INT, | |
cf8f0fff | 76 | ]; |
6a488035 | 77 | } |