Skip to content
This repository has been archived by the owner on Nov 30, 2017. It is now read-only.

Commit

Permalink
Merge pull request #21 from AKarismatik/master
Browse files Browse the repository at this point in the history
add segment and send campaign to segment
  • Loading branch information
miguel250 committed Jan 3, 2014
2 parents 16ec81e + 7d1ca06 commit 27d1f09
Show file tree
Hide file tree
Showing 3 changed files with 130 additions and 2 deletions.
65 changes: 65 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ MZMailChimpBundle is licensed under the MIT License - see the `Resources/meta/LI
5. `campaignCreate`
6. `campaignSendTest`
7. `campaignSendNow`
8. `listStaticSegmentAdd`
9. `listStaticSegmentMembersAdd`
10. `listStaticSegments`

**MailChimp Export API Method Supported**

Expand Down Expand Up @@ -256,3 +259,65 @@ mz_mail_chimp:

$ecommerce->getOrder($pageStart, $batchLimit, $dateSince) //return array
```

**MailChimp API [create static segment](http://apidocs.mailchimp.com/api/2.0/lists/static-segment-add.php) in a controller**

``` php
<?php

$mailChimp = $this->get('MailChimp');
$list = $mailChimp->getList();
$list->listStaticSegmentAdd('first_segment'); // return int segment id

```

**MailChimp API [segment member add](http://apidocs.mailchimp.com/api/2.0/lists/static-segment-members-add.php) in a controller**

``` php
<?php

$mailChimp = $this->get('MailChimp');
$list = $mailChimp->getList();
$segmentId = $list->listStaticSegmentAdd('first_segment');
$batch = array('[email protected]',[email protected]');
$list->listStaticSegmentMembersAdd($segmentId, $batch);

```

**MailChimp API [list static segment](http://apidocs.mailchimp.com/api/2.0/lists/static-segments.php) in a controller**

``` php
<?php

$mailChimp = $this->get('MailChimp');
$list = $mailChimp->getList();
$segments = $list->listStaticSegments();

```

**MailChimp API [send campaign to segment] in a controller**

``` php
<?php

$mailChimp = $this->get('MailChimp');
$campaign = $mailChimp->getCampaign();
$list = $mailChimp->getList();
$segmentId = $list->listStaticSegmentAdd('first_segment');
$batch = array('[email protected]',[email protected]');
$list->listStaticSegmentMembersAdd($segmentId, $batch);
$conditions[] = array(
'field' => 'static_segment',
'op' => 'eq',
'value' => $segmentId
);

$segment_options = array(
'match' => 'all',
'conditions' => $conditions
);
$campaign->setSegmenOptions($segment_options);
$campaignId = $campaign->create();
$campaign->SendNow($campaignId);

```
19 changes: 17 additions & 2 deletions Services/Methods/MCCampaign.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ class MCCampaign extends HttpClient
private $fbComments = true;
private $timeWarp = false;
private $ecomm360 = false;
private $segmentOptions = array();

/**
* The list identificator
Expand Down Expand Up @@ -285,6 +286,16 @@ public function setEcomm360($ecomm360)
{
$this->ecomm360 = $ecomm360;
}

/**
* Set mailchimp segmentOptions
*
* @param array segmentOptions
*/
public function setSegmenOptions(Array $segment_options)
{
$this->segmentOptions = $segment_options;
}

/**
* Create options
Expand Down Expand Up @@ -331,9 +342,13 @@ private function Content()
*/
public function Create()
{
if(empty($this->segmentOptions)){
$payload = array('type' => $this->type, 'options' => $this->Options(),
'content' => $this->Content());
}else {
$payload = array('type' => $this->type, 'options' => $this->Options(),
'content' => $this->Content());

'content' => $this->Content(), 'segment_opts' => $this->segmentOptions);
}
$apiCall = 'campaignCreate';
$data = $this->makeRequest($apiCall, $payload);
$data = json_decode($data);
Expand Down
48 changes: 48 additions & 0 deletions Services/Methods/MCList.php
Original file line number Diff line number Diff line change
Expand Up @@ -236,4 +236,52 @@ public function listInterestGroupingAdd($name, $type, $groups = array())
$data = $this->makeRequest($apiCall, $payload);
return json_decode($data);
}

/**
* create static segment
* @param segment name
* @return segment id
*/
public function listStaticSegmentAdd($name)
{
$payload = array(
'id' => $this->listId,
'name' => $name,
);
$apiCall = 'listStaticSegmentAdd';
$data = $this->makeRequest($apiCall, $payload);
return json_decode($data);
}

/**
* add emails to segment
* @param int $seg_id
* @param array $batch
* @return mixed
*/
public function listStaticSegmentMembersAdd($seg_id, $batch = array())
{
$payload = array(
'id' => $this->listId,
'seg_id' => $seg_id,
'batch' => $batch,
);
$apiCall = 'listStaticSegmentMembersAdd';
$data = $this->makeRequest($apiCall, $payload);
return json_decode($data);
}

/**
* get all segments
* @return array
*/
public function listStaticSegments()
{
$payload = array(
'id' => $this->listId,
);
$apiCall = 'listStaticSegments';
$data = $this->makeRequest($apiCall, $payload);
return json_decode($data);
}
}

0 comments on commit 27d1f09

Please sign in to comment.