summaryrefslogtreecommitdiffstats
path: root/admin/survey/classes/surveyEmails/squalo/class.SqualoApi.php
diff options
context:
space:
mode:
Diffstat (limited to 'admin/survey/classes/surveyEmails/squalo/class.SqualoApi.php')
-rw-r--r--admin/survey/classes/surveyEmails/squalo/class.SqualoApi.php298
1 files changed, 298 insertions, 0 deletions
diff --git a/admin/survey/classes/surveyEmails/squalo/class.SqualoApi.php b/admin/survey/classes/surveyEmails/squalo/class.SqualoApi.php
new file mode 100644
index 0000000..4b01a7f
--- /dev/null
+++ b/admin/survey/classes/surveyEmails/squalo/class.SqualoApi.php
@@ -0,0 +1,298 @@
+<?php
+
+/**
+ *
+ * Class ki vsebuje funkcije Squalo APIJA (dodajanje prejemnikov, posiljanje...)
+ *
+ */
+
+class SqualoApi {
+
+ // Squalo api url
+ var $api_url = 'https://api.squalomail.com/v1/';
+
+
+ public function __construct(){
+
+ }
+
+
+ private function executeCall($action, $method, $data){
+ global $squalo_user;
+ global $squalo_key;
+
+ // Add credentials
+ $data['apiUser'] = $squalo_user;
+ $data['apiKey'] = $squalo_key;
+
+ // GET call - set url params
+ if($method == 'GET'){
+ $response = $this->executeGET($action, $data);
+ }
+ // POST call
+ else{
+ $response = $this->executePOST($action, $data);
+ }
+
+ // Decode json response
+ $response_array = json_decode($response, true);
+
+ // Zalogiramo kaj se je dogajalo
+ $SL = new SurveyLog();
+
+ // Error
+ if($response_array['errorCode'] != '0'){
+ $result['error'] = $response_array["errorMessage"]. ' (code '.$response_array["errorCode"].')';
+ $result['success'] = false;
+
+ $SL->addMessage(SurveyLog::MAILER, "NAPAKA pri SQUALO API klicu ('.$action.')! ".$result['error']);
+ }
+ else{
+ $result = $response_array;
+ $result['success'] = true;
+
+ $SL->addMessage(SurveyLog::MAILER, "USPEŠEN SQUALO API klic ('.$action.').");
+ }
+
+ $SL->write();
+
+ return $result;
+ }
+
+ // Izvedemo post klic
+ private function executePOST($action, $data){
+
+ // Nastavimo url
+ $url = $this->api_url.$action;
+
+
+ // Init curl
+ $ch = curl_init($url);
+
+ // JSON string za POST
+ curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
+
+ curl_setopt($ch, CURLOPT_URL, $url);
+ curl_setopt($ch, CURLOPT_POST, true);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+
+ // for debug only!
+ curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
+ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+
+ $headers = array(
+ "Content-Type: application/json",
+ );
+ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
+
+
+ // Izvedemo klic
+ $response = curl_exec($ch);
+ curl_close($ch);
+
+
+ return $response;
+ }
+
+ // Izvedemo get klic
+ private function executeGET($action, $data){
+
+ // GET params
+ $params = '?';
+ foreach($data as $name => $value){
+ $params .= $name.'='.$value.'&';
+ }
+ $params = substr($params, 0, -1);
+
+ // Nastavimo celoten url s parametri
+ $url = $this->api_url.$action.$params;
+
+
+ // Init curl
+ $ch = curl_init($url);
+
+ curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+
+
+ // Izvedemo klic
+ $response = curl_exec($ch);
+
+ return $response;
+ }
+
+
+ /*
+ Ustvarimo seznam uporabnikov za pošiljanje
+ create-list
+
+ "name":"String content",
+ "description":"String content",
+ "listTag":"String content",
+ "color":"String content",
+ "ordering":2147483647,
+ "published":true
+
+ {subtag:name}
+ {subtag:code}
+ {subtag:url}
+
+ {date:4}
+
+ {unsubscribe}{/unsubscribe}
+ */
+ public function createList($list_name){
+
+ $action = 'create-list';
+ $method = 'POST';
+
+ $data = array(
+ 'name' => $list_name,
+ 'ordering' => $list_number,
+ 'published' => true
+ );
+
+ $response = $this->executeCall($action, $method, $data);
+
+ $list_id = ($response['success']) ? $response['list']['id'] : '0';
+
+ return $list_id;
+ }
+
+ /*
+ Ustvarimo email,ki se bo poslal
+
+ "altBody":"String content",
+ "body":"String content",
+ "fromEmail":"String content",
+ "fromName":"String content",
+ "language":"String content",
+ "listIds":[2147483647],
+ "published":2147483647,
+ "replyToEmail":"String content",
+ "replyToName":"String content",
+ "subject":"String content",
+ "visible":true
+ */
+ public function createNewsletter($list_id, $subject, $body, $body_alt, $from_email, $from_name, $reply_to_email, $language){
+
+ $action = 'create-newsletter';
+ $method = 'POST';
+
+ $data = array(
+ 'listIds' => array($list_id),
+ 'subject' => $subject,
+ 'body' => $body,
+ 'altBody' => $body_alt,
+ 'fromEmail' => $from_email,
+ 'fromName' => $from_name,
+ 'replyToEmail' => $reply_to_email,
+ 'language' => $language,
+ 'visible' => true
+ );
+
+ $response = $this->executeCall($action, $method, $data);
+
+ $newsletter_id = ($response['success']) ? $response['newsletter']['id'] : '0';
+
+ return $newsletter_id;
+ }
+
+ /*
+ Dodamo prejemnika
+
+ "accept": true,
+ "confirmed": true,
+ "customAttributes": [{
+ "name": "firstname",
+ "value": "John"
+ },
+ {
+ "name": "lastname",
+ "value": "Smith"
+ }
+ ],
+ "email": "String content",
+ "enabled": true,
+ "html": true,
+ "listIds": [2147483647],
+ "name": "String content",
+ "surname": "String content",
+ "gender": "null | male | female | other",
+ "gdprCanSend": true,
+ "gdprCanTrack": true
+ */
+ public function addRecipient($email, $list_id, $custom_attributes=array()){
+
+ $action = 'create-recipient';
+ $method = 'POST';
+
+ // Pretvorimo atribute po meri v pravo obliko
+ $custom_attributes_squalo = array();
+ $i = 0;
+ foreach($custom_attributes as $key => $value){
+
+ $custom_attributes_squalo[$i] = array(
+ "name" => $key,
+ "value" => $value
+ );
+
+ $i++;
+ }
+
+ $data = array(
+ 'email' => $email,
+ 'listIds' => array($list_id),
+ 'accept' => true,
+ 'confirmed' => true,
+ 'enabled' => true,
+ 'gdprCanSend' => true,
+ 'gdprCanTrack' => true,
+ 'customAttributes' => $custom_attributes_squalo
+ );
+
+ $response = $this->executeCall($action, $method, $data);
+
+ $recipient_id = ($response['success']) ? $response['recipient']['id'] : '0';
+
+ return $recipient_id;
+ }
+
+ /*
+ Pošljemo emaile
+
+ "newsletterId":2147483647,
+ "sendDate":2147483647
+ */
+ public function sendEmails($newsletter_id){
+
+ $action = 'send-newsletter';
+ $method = 'GET';
+
+ $data = array(
+ 'newsletterId' => $newsletter_id,
+ 'sendDate' => time()+30
+ );
+
+ $response = $this->executeCall($action, $method, $data);
+
+ return $response;
+ }
+
+
+ // Pobrisemo prejemnika
+ public function deleteRecipient($recipient_id){
+
+ $action = 'delete-recipient';
+ $method = 'GET';
+
+ $data = array(
+ 'recipientId' => $recipient_id
+ );
+
+ $response = $this->executeCall($action, $method, $data);
+
+ return $response;
+ }
+
+} \ No newline at end of file