114 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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 NRFramework\Integrations;
 | |
| 
 | |
| // No direct access
 | |
| defined('_JEXEC') or die;
 | |
| 
 | |
| class SendInBlue extends Integration
 | |
| {
 | |
| 	/**
 | |
| 	 * Create a new instance
 | |
| 	 * @param array $options The service's required options
 | |
| 	 * @throws \Exception
 | |
| 	 */
 | |
| 	public function __construct($options)
 | |
| 	{
 | |
| 		parent::__construct();
 | |
| 		$this->setKey($options['api']);
 | |
| 		$this->setEndpoint('https://api.sendinblue.com/v2.0');
 | |
| 		$this->options->set('headers.api-key', $this->key);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 *  Subscribes a user to a SendinBlue Account
 | |
| 	 *
 | |
| 	 *  API Reference:
 | |
| 	 *  https://apidocs.sendinblue.com/user/#1
 | |
| 	 *
 | |
| 	 *  @param   string  $email   The user's email
 | |
| 	 *  @param   array   $params  All the form fields
 | |
| 	 *  @param   string  $listid  The List ID
 | |
| 	 *
 | |
| 	 *  @return  boolean
 | |
| 	 */
 | |
| 	public function subscribe($email, $params, $listid = false)
 | |
| 	{
 | |
| 		$data = array(
 | |
| 			'email'      => $email,
 | |
| 			'attributes' => $params,
 | |
| 		);
 | |
| 
 | |
| 		if ($listid) 
 | |
| 		{
 | |
| 			$data['listid'] = array($listid);
 | |
| 		}
 | |
| 
 | |
| 		$this->post('user/createdituser', $data);
 | |
| 
 | |
| 		return true;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 *  Returns all Campaign  lists
 | |
| 	 *
 | |
| 	 *  https://apidocs.sendinblue.com/list/#1
 | |
| 	 *
 | |
| 	 *  @return  array
 | |
| 	 */
 | |
| 	public function getLists()
 | |
| 	{
 | |
| 		$data = array(
 | |
| 			'page' => 1,
 | |
| 			'page_limit' => 50
 | |
| 		);
 | |
| 
 | |
| 		$lists = array();
 | |
| 
 | |
| 		$data = $this->get('/list', $data);
 | |
| 
 | |
| 		if (!isset($data['data']['lists']) || !is_array($data['data']['lists']) || $data['data']['total_list_records'] == 0)
 | |
| 		{
 | |
| 			return $lists;
 | |
| 		}
 | |
| 
 | |
| 		foreach ($data['data']['lists'] as $key => $list)
 | |
| 		{
 | |
| 			$lists[] = array(
 | |
| 				'id'   => $list['id'],
 | |
| 				'name' => $list['name']
 | |
| 			);
 | |
| 		}
 | |
| 
 | |
| 		return $lists;
 | |
| 		
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 *  Get the last error returned by either the network transport, or by the API.
 | |
| 	 *
 | |
| 	 *  API Reference:
 | |
| 	 *  https://apidocs.sendinblue.com/response/
 | |
| 	 *
 | |
| 	 *  @return  string
 | |
| 	 */
 | |
| 	public function getLastError()
 | |
| 	{
 | |
| 		$body    = $this->last_response->body;
 | |
| 		$message = '';
 | |
| 
 | |
| 		if (isset($body['code']) && ($body['code'] == 'failure'))
 | |
| 		{
 | |
| 			$message = $body['message'];
 | |
| 		}
 | |
| 
 | |
| 		return $message;
 | |
| 	}
 | |
| } |