require_once dirname(__FILE__) . '/setup.php'; // see if the request is made via ajax. $isAjaxRequest = !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'; // and if it is and we have post values, then we can proceed in sending the subscriber. if ($isAjaxRequest && !empty($_POST)) { $listUid = 'LIST-UNIQUE-ID'; // you'll take this from your customers area, in list overview from the address bar. $endpoint = new MailWizzApi_Endpoint_ListSubscribers(); $response = $endpoint->create($listUid, array('EMAIL' => isset($_POST['EMAIL']) ? $_POST['EMAIL'] : null, 'FNAME' => isset($_POST['FNAME']) ? $_POST['FNAME'] : null, 'LNAME' => isset($_POST['LNAME']) ? $_POST['LNAME'] : null)); $response = $response->body; // if the returned status is success, we are done. if ($response->itemAt('status') == 'success') { exit(MailWizzApi_Json::encode(array('status' => 'success', 'message' => 'Thank you for joining our email list. Please confirm your email address now!'))); } // otherwise, the status is error exit(MailWizzApi_Json::encode(array('status' => 'error', 'message' => $response->itemAt('error')))); } ?> <!DOCTYPE HTML> <html> <head> <meta http-equiv="content-type" content="text/html" /> <link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Open+Sans" /> <link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Noto+Sans:700italic" /> <link rel="stylesheet" type="text/css" href="http://www.mailwizz.com/backend/assets/css/bootstrap.css" /> <link rel="stylesheet" type="text/css" href="http://www.mailwizz.com/backend/assets/css/bootstrap-glyphicons.css" /> <link rel="stylesheet" type="text/css" href="http://www.mailwizz.com/backend/assets/css/style.css" /> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script type="text/javascript" src="http://www.mailwizz.com/backend/assets/js/bootstrap.js" id="script-bootstrap"></script> <link rel="shortcut icon" href="http://www.mailwizz.com/favicon.ico" type="image/x-icon" /> <title>Ajax subscribe</title>
/** * Send the request to the remote url. * * @return MailWizzApi_Http_Response */ public function send() { foreach ($this->getEventHandlers(self::EVENT_BEFORE_SEND_REQUEST) as $callback) { call_user_func_array($callback, array($this)); } $client = $this->client; $registry = $this->registry; $isCacheable = $registry->contains('cache') && $client->isGetMethod && $client->enableCache; $requestUrl = rtrim($client->url, '/'); // no trailing slash $scheme = parse_url($requestUrl, PHP_URL_SCHEME); $getParams = (array) $client->paramsGet->toArray(); if (!empty($getParams)) { ksort($getParams, SORT_STRING); $queryString = http_build_query($getParams, '', '&'); if (!empty($queryString)) { $requestUrl .= '?' . $queryString; } } $this->sign($requestUrl); if ($isCacheable) { $client->getResponseHeaders = true; $bodyFromCache = null; $etagCache = null; $params = $getParams; foreach (array('X-MW-PUBLIC-KEY', 'X-MW-TIMESTAMP', 'X-MW-REMOTE-ADDR') as $header) { $params[$header] = $client->headers->itemAt($header); } $cacheKey = $requestUrl; $cache = $this->cache->get($cacheKey); if (isset($cache['headers']) && is_array($cache['headers'])) { foreach ($cache['headers'] as $header) { if (preg_match('/etag:(\\s+)?(.*)/ix', $header, $matches)) { $etagCache = trim($matches[2]); $client->headers->add('If-None-Match', $etagCache); $bodyFromCache = $cache['body']; break; } } } } if ($client->isPutMethod || $client->isDeleteMethod) { $client->headers->add('X-HTTP-Method-Override', strtoupper($client->method)); } $ch = curl_init($requestUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $client->timeout); curl_setopt($ch, CURLOPT_TIMEOUT, $client->timeout); curl_setopt($ch, CURLOPT_USERAGENT, 'MailWizzApi Client version ' . MailWizzApi_Http_Client::CLIENT_VERSION); curl_setopt($ch, CURLOPT_AUTOREFERER, true); if ($client->getResponseHeaders) { curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt($ch, CURLOPT_HEADER, true); } if (!ini_get('safe_mode')) { curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_MAXREDIRS, 5); } if ($client->headers->count > 0) { $headers = array(); foreach ($client->headers as $name => $value) { $headers[] = $name . ': ' . $value; } curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); } if ($scheme === 'https') { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); } if ($client->isPostMethod || $client->isPutMethod || $client->isDeleteMethod) { $params = new MailWizzApi_Params($client->paramsPost); $params->mergeWith($client->paramsPut); $params->mergeWith($client->paramsDelete); if (!$client->isPostMethod) { curl_setopt($ch, CURLOPT_CUSTOMREQUEST, strtoupper($client->method)); } curl_setopt($ch, CURLOPT_POST, $params->count); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params->toArray(), '', '&')); } $body = curl_exec($ch); $curlCode = curl_errno($ch); $curlMessage = curl_error($ch); $curlInfo = curl_getinfo($ch); $params = $this->params = new MailWizzApi_Params($curlInfo); if ($curlCode === 0 && $client->getResponseHeaders) { $headersSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE); $headers = explode("\n", substr($body, 0, $headersSize)); foreach ($headers as $index => $header) { $header = trim($header); if (empty($header)) { unset($headers[$index]); } } $body = substr($body, $headersSize); $params->add('headers', new MailWizzApi_Params($headers)); } $decodedBody = array(); if ($curlCode === 0 && !empty($body)) { $decodedBody = MailWizzApi_Json::decode($body, true); if (!is_array($decodedBody)) { $decodedBody = array(); } } // note here if ((int) $params->itemAt('http_code') === 304 && $isCacheable && !empty($bodyFromCache)) { $decodedBody = $bodyFromCache; } $params->add('curl_code', $curlCode); $params->add('curl_message', $curlMessage); $params->add('body', new MailWizzApi_Params($decodedBody)); $response = new MailWizzApi_Http_Response($this); $body = $response->body; if (!$response->isSuccess && $body->itemAt('status') !== 'success' && !$body->contains('error')) { $response->body->add('status', 'error'); $response->body->add('error', $response->message); } curl_close($ch); if ($isCacheable && $response->isSuccess && $body->itemAt('status') == 'success') { $etagNew = null; foreach ($response->headers as $header) { if (preg_match('/etag:(\\s+)?(.*)/ix', $header, $matches)) { $etagNew = trim($matches[2]); break; } } if ($etagNew && $etagNew != $etagCache) { $this->cache->set($cacheKey, array('headers' => $response->headers->toArray(), 'body' => $response->body->toArray())); } } foreach ($this->getEventHandlers(self::EVENT_AFTER_SEND_REQUEST) as $callback) { $response = call_user_func_array($callback, array($this, $response)); } return $response; }
function mwznb_subscribe_callback() { if (!isset($_POST['mwznb_form_nonce']) || !wp_verify_nonce($_POST['mwznb_form_nonce'], basename(__FILE__))) { exit(MailWizzApi_Json::encode(array('result' => 'error', 'message' => __('Invalid nonce!', 'mwznb')))); } $uid = isset($_POST['uid']) ? sanitize_text_field($_POST['uid']) : null; if ($uid) { unset($_POST['uid']); } unset($_POST['action'], $_POST['mwznb_form_nonce']); if (empty($uid) || !($uidData = get_option('mwznb_widget_instance_' . $uid))) { exit(MailWizzApi_Json::encode(array('result' => 'error', 'message' => __('Please try again later!', 'mwznb')))); } $keys = array('api_url', 'public_key', 'private_key', 'list_uid'); foreach ($keys as $key) { if (!isset($uidData[$key])) { exit(MailWizzApi_Json::encode(array('result' => 'error', 'message' => __('Please try again later!', 'mwznb')))); } } $oldSdkConfig = MailWizzApi_Base::getConfig(); MailWizzApi_Base::setConfig(mwznb_build_sdk_config($uidData['api_url'], $uidData['public_key'], $uidData['private_key'])); $endpoint = new MailWizzApi_Endpoint_ListSubscribers(); $response = $endpoint->create($uidData['list_uid'], $_POST); $response = $response->body->toArray(); mwznb_restore_sdk_config($oldSdkConfig); unset($oldSdkConfig); if (isset($response['status']) && $response['status'] == 'error' && isset($response['error'])) { $errorMessage = $response['error']; if (is_array($errorMessage)) { $errorMessage = implode("\n", array_values($errorMessage)); } exit(MailWizzApi_Json::encode(array('result' => 'error', 'message' => $errorMessage))); } if (isset($response['status']) && $response['status'] == 'success') { exit(MailWizzApi_Json::encode(array('result' => 'success', 'message' => __('Please check your email to confirm the subscription!', 'mwznb')))); } exit(MailWizzApi_Json::encode(array('result' => 'success', 'message' => __('Unknown error!', 'mwznb')))); }