<?php //шлём заголовки header('Access-Control-Allow-Origin: *'); header('Content-type: application/json; charset=utf-8'); // инициализация MODX API define('MODX_API_MODE', true); require_once dirname(dirname(__FILE__)) . '/core/config/config.inc.php'; require_once MODX_BASE_PATH . 'index.php'; // Включаем обработку ошибок $modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'FILE'); $modx->setLogLevel(modX::LOG_LEVEL_ERROR); $modx->getService('error','error.modError'); $modx->error->message = null; //проверем указан ли e-mail if(!$_POST['sub_email']){ $out = array('success' => false, 'message' => 'Не указан e-mail!'); die(json_encode($out)); } //принимаем e-mail и фильтруем его if(!$email = filter_var($_POST['sub_email'], FILTER_SANITIZE_EMAIL)){ $out = array('success' => false, 'message' => 'Неверный e-mail!'); die(json_encode($out)); } if($profile = $modx->getObject('modUserProfile', array('email' => $email))){ $out = array('success' => false, 'message' => 'Вы уже подписаны!'); die(json_encode($out)); } if($email){ $pass = md5($email . time()); $user = $modx->newObject('modUser', array('username' => $email)); $user->set('password', $pass); $profile = $modx->newObject('modUserProfile'); $user->addOne($profile); // Назначаем дополнительные поля $profile->set('fullname', 'Подписчик ' . $email); $profile->set('email', $email); if(!$user->save()){ $out = array('success' => false, 'message' => 'Не удалось оформить подписку! Ошибка сервера!'); die(json_encode($out)); } //добавляем в группу с ID = 2 $user->joinGroup(2, null, null); } $modx->getService('mail', 'mail.modPHPMailer'); $modx->mail->set(modMail::MAIL_BODY, 'У вас новый подписчик: ' . $email); $modx->mail->set(modMail::MAIL_FROM, $modx->getOption('mail_smtp_user')); $modx->mail->set(modMail::MAIL_SENDER, $modx->getOption('mail_smtp_user')); $modx->mail->set(modMail::MAIL_SUBJECT, 'Подписка ' . MODX_HTTP_HOST); $modx->mail->address('to', $modx->getChunk('email')); $modx->mail->setHTML(true); if (!$modx->mail->send()) { $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo); } $modx->mail->reset(); $out = array('success' => true, 'message' => 'Вы успешно подписаны на нашу рассылку! Мы НЕ рассылаем спам!'); die(json_encode($out));