endpoint = $endpoint; $this->api_key = $api_key; } public function getCustomer($id){ return $this->callAPI('GET', "/customer/id/$id"); } public function getCustomerByEmail($email){ return $this->callAPI('GET', "/customer/email/$email"); } public function createCustomer($email, $password, $firstname, $lastname, $optin, $birthdate = null, $phone = null, $address = null, $address2 = null, $city = null, $postcode = null, $country = null){ $user = [ 'email' => $email, 'password' => $password, 'firstname' => $firstname, 'lastname' => $lastname, 'opt_in' => $optin, 'birth_date' => $birthdate, 'phone' => $phone, 'address' => $address, 'address2' => $address2, 'city' => $city, 'postcode' => $postcode, 'country' => $country ]; return $this->callAPI('POST', '/customer/create', $user); } public function updateCustomer($crmId, $firstname = null, $lastname = null, $optin = null, $birthdate = null, $phone = null, $address = null, $address2 = null, $city = null, $postcode = null, $country = null){ $user = []; if ($firstname !== null) $user['firstname'] = $firstname; if ($lastname !== null) $user['lastname'] = $lastname; if ($optin !== null) $user['opt_in'] = $optin; if ($birthdate !== null) $user['birth_date'] = $birthdate; if ($phone !== null) $user['phone'] = $phone; if ($address !== null) $user['address'] = $address; if ($address2 !== null) $user['address2'] = $address2; if ($city !== null) $user['city'] = $city; if ($postcode !== null) $user['postcode'] = $postcode; if ($country !== null) $user['country'] = $country; return $this->callAPI('PUT', "/customer/$crmId", $user); } public function deleteCustomer($id){ return $this->callAPI('DELETE', "/customer/$id"); } public function changePwdCustomer($id, $password){ return $this->callAPI('POST', "/customer/$id/change-password", ['password' => $password]); } public function activateCustomer($id){ return $this->callAPI('POST', "/customer/$id/activate"); } public function toggleOptInCustomer($id){ return $this->callAPI('POST', "/customer/$id/toggle-optin"); } public function loginCustomer($email, $password){ return $this->callAPI('POST', "/customer/login", ['email' => $email, 'password' => $password]); } public function createSingleOptin($email){ return $this->callAPI('POST', '/single-optin', ['email' => $email]); } public function ArcadiaOutgoingMail($crm_id, $fields, $type){ return $this->callAPI('POST', '/arcadia/outgoing-mail', ['crm_id' => $crm_id, 'fields' => json_encode($fields), 'type' => $type]); } private function callAPI($method, $url, $data = false){ if (strpos($this->endpoint, "dev")){ if ($data !== false){ $data = array_merge($data, ['api_token' => $this->api_key]); }else{ $data = ['api_token' => $this->api_key]; } } $url = $this->endpoint . '/api/v1' . $url; $curl = curl_init(); switch ($method){ case "POST": curl_setopt($curl, CURLOPT_POST, 1); if ($data) curl_setopt($curl, CURLOPT_POSTFIELDS, $data); break; case "PUT": curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT"); if ($data) curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data)); break; case "DELETE": curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE"); if ($data) curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data)); break; default: if ($data) $url = sprintf("%s?%s", $url, http_build_query($data)); } curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_COOKIESESSION, TRUE); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); if (!strpos($this->endpoint, "dev")) { curl_setopt($curl, CURLOPT_HTTPHEADER, array( 'Accept: application/json', 'Authorization: Bearer ' . $this->api_key )); } $result = curl_exec($curl); if (!curl_errno($curl)) { $http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE); if (!in_array($http_code, [200, 201])) return (object) ['status' => 'KO', 'code' => 500, 'message' => 'Connection to API failed - Code HTTP : '. $http_code]; } else { return (object) ['status' => 'KO', 'code' => 500, 'message' => 'Connection to API failed : '. curl_error($curl)]; } curl_close($curl); return json_decode($result); } }