jacobbennett / sendyphp
A PHP Library for interfacing with the Sendy newsletter system (http://sendy.co)
Installs: 152 279
Dependents: 1
Suggesters: 0
Security: 0
Stars: 133
Watchers: 19
Forks: 38
Open Issues: 5
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: 3.7.*
- squizlabs/php_codesniffer: 1.*
README
A PHP class built to interface with the Sendy API (http://sendy.co)
Installation
Using Composer
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
Non-Composer Installation
- Grab the
src/SendyPHP.php
file and place it into your file structure. - Require SendyPHP in the location you would like to utilize it.
require('SendyPHP.php');
Usage
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");
Methods
After creating a new instance of SendyPHP call any of the methods below
Return Values
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.
subscribe(array $values)
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.
unsubscribe($email)
Unsubscribes the provided e-mail address (if it exists) from the current list.
$results = $sendy->unsubscribe('test@testing.com');
substatus($email)
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.
subcount()
Returns the number of subscribers to the current list.
$results = $sendy->subcount();
createCampaign(array $values)
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. ));
setListId($list_id) and getListId()
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();
Unit tests
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 ];