Commit ba37bf6b authored by Олег Гиммельшпах's avatar Олег Гиммельшпах

Merge branch 'master' of git.task-on.com:ktask/task-on.com

parents d795cec6 98e8f0b8
......@@ -34,7 +34,7 @@ class TriggerSchedule extends \yii\db\ActiveRecord
public function rules()
{
return [
[['sended', 'checked', 'message_id', 'list_id', 'campaign_id'], 'integer'],
[['sended', 'checked', /*'message_id',*/ 'list_id', 'campaign_id'], 'integer'],
[['message', 'email'], 'required'],
[['message'], 'string'],
[['time', 'date_create'], 'safe'],
......
......@@ -209,53 +209,71 @@ class TriggerTrigger extends \common\components\ActiveRecordModel
/**
* Тут выполняем то, что произойдет когда триггер сработает
* @param null $message
*
* @param array $params
* @return string
*/
public function initAction($message=null){
public function initAction($params=array()){
$email = (!Yii::$app->user->isGuest) ? Yii::$app->user->identity->email : null;
if ($email===null && array_key_exists('email', $params))
$email = $params['email'];
else
return 'Email not found';
/** @var \DateTime $time_now */
$time_now=new \DateTime();
/** @var MessageTemplate $templateModel */
$templateModel = MessageTemplate::findOne($this->message_template_id);
/** @var Templates $template */
$template = new Templates($this->message_template_id);
$email = $this->email;
$sender = new UnisenderAPI();
// Create the send list
$newList = $sender->createList();
$newListObject=Json::decode($newList);
if (array_key_exists('result', $newListObject) && array_key_exists('id', $newListObject['result'])) {
if (array_key_exists('result', $newListObject) && is_array($newListObject['result']) && array_key_exists('id', $newListObject['result'])) {
$newListId=$newListObject['result']['id'];
// Subscribe user to new List
$sender->subscribe(['list_ids' => $newListId, 'fields[email]' => $email, 'double_optin' => 1]);
// Create new message
$newMessage=$sender->createEmailMessage($this->name, $email, $templateModel->subject, $template->getTemplate(), $newListId);
$newMessage=$sender->createEmailMessage('Школа аналитики "Арт Проект"', 'subscribe@task-on.com', $templateModel->subject, $template->getTemplate(), $newListId);
// Decode result
$newMessageObject=Json::decode($newMessage);
if (array_key_exists('result', $newMessageObject) && array_key_exists('message_id', $newMessageObject['result'])) {
if (array_key_exists('result', $newMessageObject) && is_array($newMessageObject['result']) && array_key_exists('message_id', $newMessageObject['result'])) {
// Get the message ID
$newMessageId=$newMessageObject['result']['message_id'];
// Create new campaign
$newCampaign = $sender->createCampaign($newMessageId);
// Parse the result
$newCampaignObject = Json::decode($newCampaign);
if (array_key_exists('result', $newCampaignObject) && array_key_exists('campaign_id', $newCampaignObject['result'])) {
if (array_key_exists('result', $newCampaignObject) && is_array($newCampaignObject['result']) && array_key_exists('campaign_id', $newCampaignObject['result'])) {
$newCampaignId = $newCampaignObject['result']['campaign_id'];
$schedule = new TriggerSchedule();
$schedule->sended=1;
$schedule->checked=0;
$schedule->message_id=$newMessageId;
// $schedule->message_id=$newMessageId;
$schedule->message=$template->getTemplate();
$schedule->email=$email;
$schedule->time=$time_now->format('Y-m-d H:i:s');
$schedule->date_create=$time_now->format('Y-m-d H:i:s');
$schedule->list_id=$newListId;
$schedule->campaign_id=$newCampaignId;
if (!$schedule->save()) {
echo 'Письмо не было отправлено';
if ($schedule->save()) {
return true;
} else {
return (current(current($schedule->getErrors())));
}
} else {
$error = (array_key_exists('error', $newCampaignObject)) ? $newCampaignObject['error'].' (createCampaign)' : 'Неизвестная ошибка (CreateCampaign)';
return $error;
}
} else {
$error = (array_key_exists('error', $newMessageObject)) ? $newMessageObject['error'].' (createMessage)' : 'Неизвестная ошибка (CreateMessage)';
return $error;
}
} else {
$error = (array_key_exists('error', $newListObject)) ? $newListObject['error'].' (createList)' : 'Неизвестная ошибка (CreateList)';
return $error;
}
}
}
......@@ -5,32 +5,33 @@ use \yii\helpers\Json;
$email = 'bystrov@kupitsite.ru';
$sender = new UnisenderAPI();
$sender->validateSender('subscribe@task-on.com');
// Create the send list
$newList = $sender->createList();
$newListObject=Json::decode($newList);
if (array_key_exists('result', $newListObject) && array_key_exists('id', $newListObject['result'])) {
$newListId=$newListObject['result']['id'];
// Subscribe user to new List
$subscribe = $sender->subscribe(['list_ids' => $newListId, 'fields[email]' => $email, 'double_optin' => 1]);
// Create new message
$newMessage=$sender->createEmailMessage('bystrov', $email, 'Testing Subject', 'Testing Body <br><a href="http://www.google.com/">Testing link</a><br><a href="{{_UnsubscribeUrl}}">Отписаться</a>', $newListId);
// Decode result
$newMessageObject=Json::decode($newMessage);
if (array_key_exists('result', $newMessageObject) && array_key_exists('message_id', $newMessageObject['result'])) {
// Get the message ID
$newMessageId=$newMessageObject['result']['message_id'];
// Create new campaign
$newCampaign = $sender->createCampaign($newMessageId);
// Parse the result
$newCampaignObject = Json::decode($newCampaign);
if (array_key_exists('result', $newCampaignObject) && array_key_exists('campaign_id', $newCampaignObject['result'])) {
$newCampaignId = $newCampaignObject['result']['campaign_id'];
}
}
}
echo 'Рассылка: '.((isset($newCampaignId)) ? $newCampaignId : 'Not found');
echo '<br>';
echo 'Список: '.((isset($newListId)) ? $newListId : 'Not found');
echo '<br>';
echo 'Сообщение: '.((isset($newMessageId)) ? $newMessageId : 'Not found');
\ No newline at end of file
//$newList = $sender->createList();
//$newListObject=Json::decode($newList);
//if (array_key_exists('result', $newListObject) && array_key_exists('id', $newListObject['result'])) {
// $newListId=$newListObject['result']['id'];
// // Subscribe user to new List
// $subscribe = $sender->subscribe(['list_ids' => $newListId, 'fields[email]' => $email, 'double_optin' => 1]);
// // Create new message
// $newMessage=$sender->createEmailMessage('bystrov', $email, 'Testing Subject', 'Testing Body <br><a href="http://www.google.com/">Testing link</a><br><a href="{{_UnsubscribeUrl}}">Отписаться</a>', $newListId);
// // Decode result
// $newMessageObject=Json::decode($newMessage);
// if (array_key_exists('result', $newMessageObject) && array_key_exists('message_id', $newMessageObject['result'])) {
// // Get the message ID
// $newMessageId=$newMessageObject['result']['message_id'];
// // Create new campaign
// $newCampaign = $sender->createCampaign($newMessageId);
// // Parse the result
// $newCampaignObject = Json::decode($newCampaign);
// if (array_key_exists('result', $newCampaignObject) && array_key_exists('campaign_id', $newCampaignObject['result'])) {
// $newCampaignId = $newCampaignObject['result']['campaign_id'];
// }
// }
//}
//
//echo 'Рассылка: '.((isset($newCampaignId)) ? $newCampaignId : 'Not found');
//echo '<br>';
//echo 'Список: '.((isset($newListId)) ? $newListId : 'Not found');
//echo '<br>';
//echo 'Сообщение: '.((isset($newMessageId)) ? $newMessageId : 'Not found');
\ No newline at end of file
......@@ -5,6 +5,8 @@ use Yii;
use common\modules\users\models\User;
use \common\modules\rbac\models\AuthAssignment;
use common\modules\messageTemplate\models\MessageTemplate;
use yii\base\Exception;
use yii\web\BadRequestHttpException;
class UserController extends \common\components\BaseController {
const ERROR_PASSWORD_RECOVER_AUTH = 'Вы не можете восстановить пароль будучи авторизованным!';
......@@ -141,12 +143,9 @@ class UserController extends \common\components\BaseController {
$params = [];
$params['link_activate'] = Yii::$app->params['frontUrl'].'/activate/'.$model->activate_code;
$params['link'] = Yii::$app->params['frontUrl'];
$templateModel = MessageTemplate::findOne(['name' => 'Регистрация на сайте']);
$model->afterRegistration($templateModel->id, $params);
echo json_encode(array('success'=>true));
}
else {
} else {
echo json_encode(array('errors'=>$model->getErrors()));
}
}
......
......@@ -514,6 +514,17 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
return parent::beforeSave($insert);
}
public function validate($attributeNames = null, $clearErrors = true) {
if (!parent::validate($attributeNames = null, $clearErrors = true))
return false;
if ($this->scenario===self::SCENARIO_REGISTRATION) {
if (!$this->afterRegistration(['email' => $this->email]))
return false;
}
return true;
}
public function beforeDelete()
{
if (parent::beforeDelete())
......@@ -549,61 +560,25 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
}
/**
* @param $template_id
* Проверяем есть ли среди активных триггеров тот, у которого указан параметр проверки регистрации.
* Если указан, выполняем действия триггера
*/
public function afterRegistration(){
public function afterRegistration($params=array()){
/** @var TriggerTrigger[] $actualTriggers */
$actualTriggers = TriggerTrigger::getActualTriggers();
foreach($actualTriggers as $trigger) {
$exists = TriggerCondition::find()->where(['trigger_id'=>$trigger->id, 'condition_id'=>CheckUserToRegistration::CONDITION_ID])->exists();
if ($exists===true) {
/** @var \DateTime $time_now */
$time_now=new \DateTime();
/** @var MessageTemplate $templateModel */
$templateModel = MessageTemplate::findOne($trigger->message_template_id);
/** @var Templates $template */
$template = new Templates($trigger->message_template_id);
$email = $this->email;
$sender = new UnisenderAPI();
// Create the send list
$newList = $sender->createList();
$newListObject=Json::decode($newList);
if (array_key_exists('result', $newListObject) && array_key_exists('id', $newListObject['result'])) {
$newListId=$newListObject['result']['id'];
// Subscribe user to new List
$sender->subscribe(['list_ids' => $newListId, 'fields[email]' => $email, 'double_optin' => 1]);
// Create new message
$newMessage=$sender->createEmailMessage($this->name, $email, $templateModel->subject, $template->getTemplate(), $newListId);
// Decode result
$newMessageObject=Json::decode($newMessage);
if (array_key_exists('result', $newMessageObject) && array_key_exists('message_id', $newMessageObject['result'])) {
// Get the message ID
$newMessageId=$newMessageObject['result']['message_id'];
// Create new campaign
$newCampaign = $sender->createCampaign($newMessageId);
// Parse the result
$newCampaignObject = Json::decode($newCampaign);
if (array_key_exists('result', $newCampaignObject) && array_key_exists('campaign_id', $newCampaignObject['result'])) {
$newCampaignId = $newCampaignObject['result']['campaign_id'];
$schedule = new TriggerSchedule();
$schedule->sended=1;
$schedule->checked=0;
$schedule->message_id=$newMessageId;
$schedule->message=$template->getTemplate();
$schedule->email=$email;
$schedule->time=$time_now->format('Y-m-d H:i:s');
$schedule->date_create=$time_now->format('Y-m-d H:i:s');
$schedule->list_id=$newListId;
$schedule->campaign_id=$newCampaignId;
if (!$schedule->save()) {
echo 'Письмо не было отправлено';
}
}
}
$init = $trigger->initAction($params);
if ($init===true) {
return true;
} else {
$this->addError('email', $init);
return false;
}
}
}
return true;
}
/**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment