public function processWebHook($data) { $data = $this->service->processWebHook($data); if (empty($data['action'])) { return false; } if ($data['action'] == 'subscribe') { fn_em_update_subscriber($data, 0, false); } elseif ($data['action'] == 'unsubscribe') { $subscriber_id = db_get_field("SELECT subscriber_id FROM ?:em_subscribers WHERE email = ?s", $data['email']); if (!empty($subscriber_id)) { fn_em_delete_subscribers(array($subscriber_id), false); } } elseif ($data['action'] == 'update') { $subscriber_id = db_get_field("SELECT subscriber_id FROM ?:em_subscribers WHERE email = ?s", $data['old_email']); if (!empty($subscriber_id)) { fn_em_update_subscriber($data, $subscriber_id, false); } } elseif ($data['action'] == 'email_update') { $subscriber_id = db_get_field("SELECT subscriber_id FROM ?:em_subscribers WHERE email = ?s", $data['old_email']); if (!empty($subscriber_id)) { fn_em_update_subscriber(array('email' => $data['new_email']), $subscriber_id, false); } } }
public function delete($id) { $data = array(); $status = Response::STATUS_BAD_REQUEST; $subscriber_data = fn_em_get_subscriber_data($id); if (!empty($subscriber_data)) { if (fn_em_delete_subscribers($subscriber_data['subscriber_id'])) { $status = Response::STATUS_NO_CONTENT; } } else { $status = Response::STATUS_NOT_FOUND; } return array('status' => $status, 'data' => $data); }
function fn_em_update_subscriber($subscriber_data, $subscriber_id = 0, $sync = true, $lang_code = CART_LANGUAGE) { $invalid_emails = array(); if (empty($subscriber_id)) { if (!empty($subscriber_data['email'])) { $company_condition = fn_em_get_company_condition(); if (db_get_field("SELECT email FROM ?:em_subscribers WHERE email = ?s ?p", $subscriber_data['email'], $company_condition) == '') { if (fn_validate_email($subscriber_data['email']) == false) { $invalid_emails[] = $subscriber_data['email']; } else { if (empty($subscriber_data['name'])) { $subscriber_data['name'] = ''; } if (empty($subscriber_data['timestamp'])) { $subscriber_data['timestamp'] = time(); } if (empty($subscriber_data['ip_address'])) { $ip = fn_get_ip(); $subscriber_data['ip_address'] = fn_ip_to_db($ip['host']); } if (empty($subscriber_data['unsubscribe_key'])) { $subscriber_data['unsubscribe_key'] = md5(uniqid()); } $subscriber_data['company_id'] = Registry::get('runtime.company_id'); $subscriber_data['lang_code'] = $lang_code; $subscriber_id = db_query("INSERT INTO ?:em_subscribers ?e", $subscriber_data); } } else { fn_set_notification('W', __('warning'), __('email_marketing.warning_email_exists', array('[email]' => $subscriber_data['email']))); } } } else { db_query("UPDATE ?:em_subscribers SET ?u WHERE subscriber_id = ?i", $subscriber_data, $subscriber_id); } if (!empty($invalid_emails)) { fn_set_notification('E', __('error'), __('error_invalid_emails', array('[emails]' => implode(', ', $invalid_emails)))); } elseif ($sync) { $subscriber_data = fn_em_get_subscriber_data('', $subscriber_id); $subscribed = EmailSync::instance()->subscribe(array('email' => $subscriber_data['email'], 'timestamp' => $subscriber_data['timestamp'], 'lang_code' => $subscriber_data['lang_code'], 'ip_address' => fn_ip_from_db($subscriber_data['ip_address']), 'name' => $subscriber_data['name'])); if ($subscribed == false) { fn_em_delete_subscribers(array($subscriber_id), false); $subscriber_id = false; } } return $subscriber_id; }
if ($mode == 'export_range') { if (!empty($_REQUEST['subscriber_ids'])) { if (empty(Tygh::$app['session']['export_ranges'])) { Tygh::$app['session']['export_ranges'] = array(); } if (empty(Tygh::$app['session']['export_ranges']['subscribers'])) { Tygh::$app['session']['export_ranges']['subscribers'] = array('pattern_id' => 'em_subscribers'); } Tygh::$app['session']['export_ranges']['subscribers']['data'] = array('subscriber_id' => $_REQUEST['subscriber_ids']); unset($_REQUEST['redirect_url']); return array(CONTROLLER_STATUS_REDIRECT, 'exim.export?section=subscribers&pattern_id=em_subscribers'); } } if ($mode == 'delete') { if (!empty($_REQUEST['subscriber_id'])) { fn_em_delete_subscribers((array) $_REQUEST['subscriber_id']); } $suffix = '.manage'; } if ($mode == 'sync') { EmailSync::instance()->sync(); $suffix = '.manage'; } if ($mode == 'import') { EmailSync::instance()->import(); $suffix = '.manage'; } return array(CONTROLLER_STATUS_OK, 'em_subscribers' . $suffix); } if ($mode == 'manage') { list($subscribers, $search) = fn_em_get_subscribers($_REQUEST, Registry::get('settings.Appearance.admin_elements_per_page'));