A PHP class built to interface with the Sendy API (http://sendy.co)
Begin by installing this package through Composer. Edit your project's composer.json
file to require jacobbennett/sendyphp
.
"require": {
"jacobbennett/sendyphp": "1.3.*"
}
Next, update Composer from the Terminal:
composer update
src/SendyPHP.php
file and place it into your file structure. require('SendyPHP.php');
Create an instance of the class while passing in an array including your API key, installation URL, and the List ID you wish to work with.
$config = array(
'api_key' => 'yourapiKEYHERE', //your API key is available in Settings
'installation_url' => 'http://updates.mydomain.com', //Your Sendy installation
'list_id' => 'your_list_id_goes_here'
);
$sendy = new \SendyPHP\SendyPHP($config);
//you can change the list_id you are referring to at any point
$sendy->setListId("a_different_list_id");
After creating a new instance of SendyPHP call any of the methods below
The return value of any of these functions will include both a status, and a message to go with that status.
The status is a boolean value of true
or false
and the message will vary based on the type of action being performed.
//example of a succesful return value
array(
'status'=>true,
'message'=>'Already Subscribed'
)
//example of a UNsuccesful return value
array(
'status'=>false,
'message'=>'Some fields are missing.'
)
I have commented and organized the code so as to be readable, if you have further questions on the status or messages being returned, please refer to the library comments.
This method takes an array of $values
and will attempt to add the $values
into the list specified in $list_id
$results = $sendy->subscribe(array(
'name'=>'Jim',
'email' => 'Jim@gmail.com', //this is the only field required by sendy
'customfield1' => 'customValue'
));
Note: Be sure to add any custom fields to the list in Sendy before utilizing them inside this library.
Another Note: If a user is already subscribed to the list, the library will return a status of true
. Feel free to edit the code to meet your needs.
Unsubscribes the provided e-mail address (if it exists) from the current list.
$results = $sendy->unsubscribe('test@testing.com');
Returns the status of the user with the provided e-mail address (if it exists) in the current list.
$results = $sendy->substatus('test@testing.com');
Note: refer to the code or see http://sendy.co/api for the types of return messages you can expect.
Returns the number of subscribers to the current list.
$results = $sendy->subcount();
This method takes an array of $values
and will creates a campaign (with an option to send it too).
$results = $sendy->createCampaign(array(
'from_name' => 'Some Name',
'from_email' => 'some@domain.com',
'reply_to' => 'some@domain.com',
'subject' => 'Some Subject',
'plain_text' => 'Amazing campaign', // (optional).
'html_text' => '<h1>Amazing campaign</h1>',
'list_ids' => 'your_list_id', // Required only if you set send_campaign to 1.
'brand_id' => 0, // Required only if you are creating a 'Draft' campaign.
'query_string' => 'some', // eg. Google Analytics tags.
'send_campaign' => 0 // Set to 1 if you want to send the campaign as well and not just create a draft. Default is 0.
));
Change or get the list you are currently working with.
//set or switch the list id
$sendy->setListId('another_list_id');
//get the current list id
echo $sendy->getListId();
All unit tests are located under src/test directory. To run the tests type in the below from the project root.
php vendor/bin/phpunit src/test/SendyPHPTest.php
Ensure that the API keys are setup for testing :
$config = [
'api_key' => 'xxx', //your API key is available in Settings
'installation_url' => 'http://my.sendy.installation.com', //Your Sendy installation
'list_id' => 'xxx'// List ID
];