1: <?php
2: namespace Ctct\Services;
3:
4: use Ctct\Util\RestClient;
5: use Ctct\Util\Config;
6: use Ctct\Components\Tracking\BounceActivity;
7: use Ctct\Components\Tracking\TrackingActivity;
8: use Ctct\Components\Tracking\ClickActivity;
9: use Ctct\Components\Tracking\ForwardActivity;
10: use Ctct\Components\Tracking\OpenActivity;
11: use Ctct\Components\Tracking\OptOutActivity;
12: use Ctct\Components\Tracking\SendActivity;
13: use Ctct\Components\Tracking\TrackingSummary;
14: use Ctct\Components\ResultSet;
15:
16: 17: 18: 19: 20: 21:
22: class CampaignTrackingService extends BaseService
23: {
24:
25: 26: 27: 28: 29: 30: 31:
32: public function getBounces($accessToken, $campaign_id, Array $params = null)
33: {
34: $baseUrl = Config::get('endpoints.base_url') .
35: sprintf(Config::get('endpoints.campaign_tracking_bounces'), $campaign_id);
36:
37: $url = $this->buildUrl($baseUrl, $params);
38:
39: $response = parent::getRestClient()->get($url, parent::getHeaders($accessToken));
40: $body = json_decode($response->body, true);
41: $bounces = array();
42: foreach ($body['results'] as $bounceActivity) {
43: $contacts[] = BounceActivity::create($bounceActivity);
44: }
45: return new ResultSet($contacts, $body['meta']);
46: }
47:
48: 49: 50: 51: 52: 53: 54:
55: public function getClicks($accessToken, $campaign_id, Array $params = null)
56: {
57: $baseUrl = Config::get('endpoints.base_url') .
58: sprintf(Config::get('endpoints.campaign_tracking_clicks'), $campaign_id);
59:
60: $url = $this->buildUrl($baseUrl, $params);
61:
62: $response = parent::getRestClient()->get($url, parent::getHeaders($accessToken));
63: $body = json_decode($response->body, true);
64:
65: $clicks = array();
66: foreach ($body['results'] as $click_activity) {
67: $clicks[] = ClickActivity::create($click_activity);
68: }
69:
70: return new ResultSet($clicks, $body['meta']);
71: }
72:
73: 74: 75: 76: 77: 78: 79:
80: public function getForwards($accessToken, $campaign_id, Array $params = null)
81: {
82: $baseUrl = Config::get('endpoints.base_url') .
83: sprintf(Config::get('endpoints.campaign_tracking_forwards'), $campaign_id);
84:
85: $url = $this->buildUrl($baseUrl, $params);
86:
87: $response = parent::getRestClient()->get($url, parent::getHeaders($accessToken));
88: $body = json_decode($response->body, true);
89: $forwards = array();
90: foreach ($body['results'] as $forward_activity) {
91: $forwards[] = ForwardActivity::create($forward_activity);
92: }
93:
94: return new ResultSet($forwards, $body['meta']);
95: }
96:
97: 98: 99: 100: 101: 102: 103:
104: public function getOpens($accessToken, $campaign_id, Array $params = null)
105: {
106: $baseUrl = Config::get('endpoints.base_url') .
107: sprintf(Config::get('endpoints.campaign_tracking_opens'), $campaign_id);
108:
109: $url = $this->buildUrl($baseUrl, $params);
110:
111: $response = parent::getRestClient()->get($url, parent::getHeaders($accessToken));
112: $body = json_decode($response->body, true);
113: $opens = array();
114: foreach ($body['results'] as $open_activity) {
115: $opens[] = OpenActivity::create($open_activity);
116: }
117:
118: return new ResultSet($opens, $body['meta']);
119: }
120:
121: 122: 123: 124: 125: 126: 127:
128: public function getSends($accessToken, $campaign_id, Array $params = null)
129: {
130: $baseUrl = Config::get('endpoints.base_url') .
131: sprintf(Config::get('endpoints.campaign_tracking_sends'), $campaign_id);
132:
133: $url = $this->buildUrl($baseUrl, $params);
134:
135: $response = parent::getRestClient()->get($url, parent::getHeaders($accessToken));
136: $body = json_decode($response->body, true);
137: $sends = array();
138: foreach ($body['results'] as $send_activity) {
139: $sends[] = SendActivity::create($send_activity);
140: }
141:
142: return new ResultSet($sends, $body['meta']);
143: }
144:
145: 146: 147: 148: 149: 150: 151:
152: public function getUnsubscribes($accessToken, $campaign_id, Array $params = null)
153: {
154: $baseUrl = Config::get('endpoints.base_url') .
155: sprintf(Config::get('endpoints.campaign_tracking_unsubscribes'), $campaign_id);
156:
157: $url = $this->buildUrl($baseUrl, $params);
158:
159: $response = parent::getRestClient()->get($url, parent::getHeaders($accessToken));
160: $body = json_decode($response->body, true);
161: $opt_outs = array();
162: foreach ($body['results'] as $opt_out_activity) {
163: $opt_outs[] = OptOutActivity::create($opt_out_activity);
164: }
165:
166: return new ResultSet($opt_outs, $body['meta']);
167: }
168:
169: 170: 171: 172: 173: 174:
175: public function getSummary($accessToken, $campaign_id)
176: {
177: $url = Config::get('endpoints.base_url') .
178: sprintf(Config::get('endpoints.campaign_tracking_summary'), $campaign_id);
179: $response = parent::getRestClient()->get($url, parent::getHeaders($accessToken));
180: return TrackingSummary::create(json_decode($response->body, true));
181: }
182: }
183: