Файл: upload/catalog/controller/module/unisender.php
Строк: 123
<?php
/**
* Unisender subscriber for OpenCart (ocStore) 2.x
*
* Main class subscribe/unsubscribe Unisender maillists
*
* @author Alexander Toporkov <toporchillo@gmail.com>
* @copyright (C) 2013- Alexander Toporkov
* @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
*
* Version of this module: http://opencartforum.ru/files/file/1258-unisender-eksport-kontakov/
*/
class ControllerModuleUnisender extends Controller {
public function update() {
$newsletter = $this->customer->getNewsletter();
$data = array('email'=>$this->customer->getEmail());
$key = $this->config->get('unisender_key');
if (!$this->config->get('unisender_status') || !$key) return;
$field_names = array(0=>'email', 1=>'email_status');
$dat = array(0=>array(0=>$data['email'], 1=>($newsletter ? 'active' : 'inactive')));
if ($newsletter) {
$subscribtions = $this->config->get('unisender_subscribtion');
$field_names[2] = 'email_list_ids';
$dat[0][2] = implode(',', $subscribtions);
}
return $this->send($field_names, $dat);
}
public function subscribe_customer($customer_id) {
$this->load->model('account/customer');
$data = $this->model_account_customer->getCustomer($customer_id);
$this->subscribe($data);
}
public function subscribe_guest($order_id) {
$this->load->model('checkout/order');
$data = $this->model_checkout_order->getOrder($order_id);
if ($data['customer_id'] > 0) return;
$this->subscribe($data);
}
public function subscribe($data) {
$key = $this->config->get('unisender_key');
if (!$this->config->get('unisender_status') || !$key) return;
$subscribtions = $this->config->get('unisender_subscribtion');
$field_names = array(0=>'email');
$dat = array(0=>array(0=>$data['email']));
$double_optin = 0;
if (((isset($data['newsletter']) && $data['newsletter']) || $this->config->get('unisender_ignore')) && is_array($subscribtions) && count($subscribtions) > 0) {
$field_names[1] = 'email_request_ip';
$dat[0][1] = $this->request->server['REMOTE_ADDR'];
$field_names[2] = 'email_confirm_ip';
$dat[0][2] = $this->request->server['REMOTE_ADDR'];
$field_names[3] = 'email_add_time';
$dat[0][3] = gmdate('Y-m-d h:i:s', time()-20);
$field_names[4] = 'email_confirm_time';
$dat[0][4] = gmdate('Y-m-d h:i:s', time()-10);
$field_names[5] = 'email_list_ids';
$dat[0][5] = implode(',', $subscribtions);
$double_optin = 1;
}
if (isset($data['telephone']) && $data['telephone']) {
$field_names[6] = 'phone';
$dat[0][6] = $data['telephone'];
}
$field_names[7] = 'Name';
$dat[0][7] = trim($data['firstname'].' '.$data['lastname']);
return $this->send($field_names, $dat, $double_optin);
}
private function send($field_names, $dat, $double_optin=0) {
$key = $this->config->get('unisender_key');
$exp = array(
'api_key' => $key,
'double_optin' => $double_optin
);
foreach($field_names as $n=>$v) {
$exp['field_names['.$n.']'] = $v;
}
foreach($dat[0] as $n=>$v) {
$exp['data[0]['.$n.']'] = $v;
}
$ch = curl_init ('http://api.unisender.com/ru/api/importContacts?format=json') ;
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1) ;
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $exp);
$res = curl_exec ($ch) ;
curl_close ($ch);
return json_decode($res);
}
}
?>