Exemple #1
0
 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);
         }
     }
 }
Exemple #2
0
 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);
 }
Exemple #3
0
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'));