configured()) { return new WP_Error('zadex_integration_not_configured', 'ConvertKit API key missing.'); } $r = Http::request('GET', self::BASE . '/forms?api_key=' . rawurlencode(Credentials::get('convertkit_api_key'))); return $r instanceof WP_Error ? $r : self::options($r['json']['forms'] ?? [], 'id', 'name'); } public function subscribe(array $contact) { $tags = array_values(array_map('intval', array_filter($contact['tags'], 'ctype_digit'))); $form = preg_replace('/\D/', '', $contact['list']) ?? ''; if ($form === '' && !$tags) { return new WP_Error('zadex_integration_no_list', 'ConvertKit: choose a form or enter a tag id.'); } $body = ['api_key' => Credentials::get('convertkit_api_key'), 'email' => $contact['email']]; if ($contact['first_name'] !== '') { $body['first_name'] = $contact['first_name']; } $fields = $contact['fields']; if ($contact['last_name'] !== '' && !isset($fields['last_name'])) { $fields['last_name'] = $contact['last_name']; } if ($fields) { $body['fields'] = $fields; } if ($form !== '') { $url = self::BASE . '/forms/' . $form . '/subscribe'; } else { $url = self::BASE . '/tags/' . array_shift($tags) . '/subscribe'; } if ($tags) { $body['tags'] = $tags; } $r = Http::json('POST', $url, $body); return $r instanceof WP_Error ? $r : true; } }