| Server IP : 54.36.91.62 / Your IP : 216.73.217.112 Web Server : Apache System : Linux webm013.cluster127.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : coopiak ( 151928) PHP Version : 8.3.23 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/coopiak/amisdesseniors-fr/nice/plugins/system/nrframework/NRFramework/Integrations/ |
Upload File : |
<?php
/**
* @author Tassos Marinos <info@tassos.gr>
* @link https://www.tassos.gr
* @copyright Copyright © 2024 Tassos All Rights Reserved
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
*/
namespace Tassos\Framework\Integrations;
// No direct access
defined('_JEXEC') or die;
use Joomla\String\StringHelper;
class Kit extends Integration
{
/**
* Create a new instance
*
* @param string $api_key Your Kit API Key
*/
public function __construct($api_key)
{
parent::__construct();
$this->setKey($api_key);
$this->setEndpoint('https://api.kit.com/v4');
$this->options->set('headers.X-Kit-Api-Key', $this->key);
}
/**
* Subscribe a user to a ConvertKit Form
*
* API Reference:
* https://developers.kit.com/v4#create-a-subscriber
*
* @param string $email The subscriber's email
* @param string $first_name The subscriber's first name
* @param array $tags The tags that will be associated with the subscriber
* @param array $custom_fields The custom fields that will be associated with the subscriber
*
* @return boolean
*/
public function subscribe($email, $first_name = '', $tags = [], $custom_fields = [])
{
$data = [
'email_address' => $email,
'fields' => $custom_fields
];
if ($first_name)
{
$data['first_name'] = $first_name;
}
$subscriber = $this->post('subscribers', $data);
$subscriber_id = isset($subscriber['subscriber']['id']) ? $subscriber['subscriber']['id'] : null;
// Add tags to subscriber
$this->addTagsToSubscriber($subscriber_id, $tags);
return true;
}
/**
* Adds tags to a subscriber.
*
* @param string $subscriber_id Subscriber ID
* @param string $tags An array of tag IDs
*
* @return void
*/
public function addTagsToSubscriber($subscriber_id, $tags = [])
{
if (!$subscriber_id || !$tags)
{
return;
}
$accountTags = $this->get('tags');
if (empty($accountTags) || !$this->request_successful)
{
return;
}
// Find the valid tags
$validTags = [];
foreach ($accountTags['tags'] as $tag)
{
foreach ($tags as $tagname)
{
if (StringHelper::strcasecmp($tag['name'], $tagname) == 0)
{
$validTags[] = $tag['id'];
break;
}
}
}
if (empty($validTags))
{
return;
}
// Add each tag to subscriber (Bulk API needs OAuth2)
foreach ($validTags as $tagId)
{
$this->post("tags/{$tagId}/subscribers/{$subscriber_id}");
}
}
/**
* Get the last error returned by either the network transport, or by the API.
*
* @return string
*/
public function getLastError()
{
$body = $this->last_response->body;
$message = '';
if (isset($body['errors']) && !empty($body['errors']))
{
$message = implode(', ', $body['errors']);
}
if (isset($body['message']) && !empty($body['message']))
{
$message .= ' - ' . $body['message'];
}
return $message;
}
}