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 ...@@ -34,7 +34,7 @@ class TriggerSchedule extends \yii\db\ActiveRecord
public function rules() public function rules()
{ {
return [ return [
[['sended', 'checked', 'message_id', 'list_id', 'campaign_id'], 'integer'], [['sended', 'checked', /*'message_id',*/ 'list_id', 'campaign_id'], 'integer'],
[['message', 'email'], 'required'], [['message', 'email'], 'required'],
[['message'], 'string'], [['message'], 'string'],
[['time', 'date_create'], 'safe'], [['time', 'date_create'], 'safe'],
......
...@@ -209,53 +209,71 @@ class TriggerTrigger extends \common\components\ActiveRecordModel ...@@ -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 */ /** @var \DateTime $time_now */
$time_now=new \DateTime(); $time_now=new \DateTime();
/** @var MessageTemplate $templateModel */ /** @var MessageTemplate $templateModel */
$templateModel = MessageTemplate::findOne($this->message_template_id); $templateModel = MessageTemplate::findOne($this->message_template_id);
/** @var Templates $template */ /** @var Templates $template */
$template = new Templates($this->message_template_id); $template = new Templates($this->message_template_id);
$email = $this->email;
$sender = new UnisenderAPI(); $sender = new UnisenderAPI();
// Create the send list // Create the send list
$newList = $sender->createList(); $newList = $sender->createList();
$newListObject=Json::decode($newList); $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']; $newListId=$newListObject['result']['id'];
// Subscribe user to new List // Subscribe user to new List
$sender->subscribe(['list_ids' => $newListId, 'fields[email]' => $email, 'double_optin' => 1]); $sender->subscribe(['list_ids' => $newListId, 'fields[email]' => $email, 'double_optin' => 1]);
// Create new message // 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 // Decode result
$newMessageObject=Json::decode($newMessage); $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 // Get the message ID
$newMessageId=$newMessageObject['result']['message_id']; $newMessageId=$newMessageObject['result']['message_id'];
// Create new campaign // Create new campaign
$newCampaign = $sender->createCampaign($newMessageId); $newCampaign = $sender->createCampaign($newMessageId);
// Parse the result // Parse the result
$newCampaignObject = Json::decode($newCampaign); $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']; $newCampaignId = $newCampaignObject['result']['campaign_id'];
$schedule = new TriggerSchedule(); $schedule = new TriggerSchedule();
$schedule->sended=1; $schedule->sended=1;
$schedule->checked=0; $schedule->checked=0;
$schedule->message_id=$newMessageId; // $schedule->message_id=$newMessageId;
$schedule->message=$template->getTemplate(); $schedule->message=$template->getTemplate();
$schedule->email=$email; $schedule->email=$email;
$schedule->time=$time_now->format('Y-m-d H:i:s'); $schedule->time=$time_now->format('Y-m-d H:i:s');
$schedule->date_create=$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->list_id=$newListId;
$schedule->campaign_id=$newCampaignId; $schedule->campaign_id=$newCampaignId;
if (!$schedule->save()) { if ($schedule->save()) {
echo 'Письмо не было отправлено'; 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; ...@@ -5,32 +5,33 @@ use \yii\helpers\Json;
$email = 'bystrov@kupitsite.ru'; $email = 'bystrov@kupitsite.ru';
$sender = new UnisenderAPI(); $sender = new UnisenderAPI();
$sender->validateSender('subscribe@task-on.com');
// Create the send list // Create the send list
$newList = $sender->createList(); //$newList = $sender->createList();
$newListObject=Json::decode($newList); //$newListObject=Json::decode($newList);
if (array_key_exists('result', $newListObject) && array_key_exists('id', $newListObject['result'])) { //if (array_key_exists('result', $newListObject) && array_key_exists('id', $newListObject['result'])) {
$newListId=$newListObject['result']['id']; // $newListId=$newListObject['result']['id'];
// Subscribe user to new List // // Subscribe user to new List
$subscribe = $sender->subscribe(['list_ids' => $newListId, 'fields[email]' => $email, 'double_optin' => 1]); // $subscribe = $sender->subscribe(['list_ids' => $newListId, 'fields[email]' => $email, 'double_optin' => 1]);
// Create new message // // 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); // $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 // // Decode result
$newMessageObject=Json::decode($newMessage); // $newMessageObject=Json::decode($newMessage);
if (array_key_exists('result', $newMessageObject) && array_key_exists('message_id', $newMessageObject['result'])) { // if (array_key_exists('result', $newMessageObject) && array_key_exists('message_id', $newMessageObject['result'])) {
// Get the message ID // // Get the message ID
$newMessageId=$newMessageObject['result']['message_id']; // $newMessageId=$newMessageObject['result']['message_id'];
// Create new campaign // // Create new campaign
$newCampaign = $sender->createCampaign($newMessageId); // $newCampaign = $sender->createCampaign($newMessageId);
// Parse the result // // Parse the result
$newCampaignObject = Json::decode($newCampaign); // $newCampaignObject = Json::decode($newCampaign);
if (array_key_exists('result', $newCampaignObject) && array_key_exists('campaign_id', $newCampaignObject['result'])) { // if (array_key_exists('result', $newCampaignObject) && array_key_exists('campaign_id', $newCampaignObject['result'])) {
$newCampaignId = $newCampaignObject['result']['campaign_id']; // $newCampaignId = $newCampaignObject['result']['campaign_id'];
} // }
} // }
} //}
//
echo 'Рассылка: '.((isset($newCampaignId)) ? $newCampaignId : 'Not found'); //echo 'Рассылка: '.((isset($newCampaignId)) ? $newCampaignId : 'Not found');
echo '<br>'; //echo '<br>';
echo 'Список: '.((isset($newListId)) ? $newListId : 'Not found'); //echo 'Список: '.((isset($newListId)) ? $newListId : 'Not found');
echo '<br>'; //echo '<br>';
echo 'Сообщение: '.((isset($newMessageId)) ? $newMessageId : 'Not found'); //echo 'Сообщение: '.((isset($newMessageId)) ? $newMessageId : 'Not found');
\ No newline at end of file \ No newline at end of file
...@@ -5,6 +5,8 @@ use Yii; ...@@ -5,6 +5,8 @@ use Yii;
use common\modules\users\models\User; use common\modules\users\models\User;
use \common\modules\rbac\models\AuthAssignment; use \common\modules\rbac\models\AuthAssignment;
use common\modules\messageTemplate\models\MessageTemplate; use common\modules\messageTemplate\models\MessageTemplate;
use yii\base\Exception;
use yii\web\BadRequestHttpException;
class UserController extends \common\components\BaseController { class UserController extends \common\components\BaseController {
const ERROR_PASSWORD_RECOVER_AUTH = 'Вы не можете восстановить пароль будучи авторизованным!'; const ERROR_PASSWORD_RECOVER_AUTH = 'Вы не можете восстановить пароль будучи авторизованным!';
...@@ -125,14 +127,14 @@ class UserController extends \common\components\BaseController { ...@@ -125,14 +127,14 @@ class UserController extends \common\components\BaseController {
$model->activate_code = md5($model->password . 'xdf5sf'); $model->activate_code = md5($model->password . 'xdf5sf');
$model->source = User::SOURCE_DEFAULT; $model->source = User::SOURCE_DEFAULT;
$model->save(false); $model->save(false);
$assignment = new AuthAssignment(); $assignment = new AuthAssignment();
$assignment->item_name = 'user'; $assignment->item_name = 'user';
$assignment->user_id = $model->id; $assignment->user_id = $model->id;
$assignment->save(); $assignment->save();
/*$linkActivate = Yii::$app->params['frontUrl'].'/activate/'.$model->activate_code; /*$linkActivate = Yii::$app->params['frontUrl'].'/activate/'.$model->activate_code;
$subject = 'Регистрация на сайте '.Yii::$app->params['frontUrl']; $subject = 'Регистрация на сайте '.Yii::$app->params['frontUrl'];
Yii::$app->mailer->compose('activate', ['link' => Yii::$app->params['frontUrl'], 'linkActivate' => $linkActivate]) Yii::$app->mailer->compose('activate', ['link' => Yii::$app->params['frontUrl'], 'linkActivate' => $linkActivate])
->setFrom(Yii::$app->params['adminEmail']) ->setFrom(Yii::$app->params['adminEmail'])
->setTo($model->email) ->setTo($model->email)
...@@ -141,12 +143,9 @@ class UserController extends \common\components\BaseController { ...@@ -141,12 +143,9 @@ class UserController extends \common\components\BaseController {
$params = []; $params = [];
$params['link_activate'] = Yii::$app->params['frontUrl'].'/activate/'.$model->activate_code; $params['link_activate'] = Yii::$app->params['frontUrl'].'/activate/'.$model->activate_code;
$params['link'] = Yii::$app->params['frontUrl']; $params['link'] = Yii::$app->params['frontUrl'];
$templateModel = MessageTemplate::findOne(['name' => 'Регистрация на сайте']);
$model->afterRegistration($templateModel->id, $params);
echo json_encode(array('success'=>true)); echo json_encode(array('success'=>true));
} } else {
else {
echo json_encode(array('errors'=>$model->getErrors())); echo json_encode(array('errors'=>$model->getErrors()));
} }
} }
......
...@@ -514,6 +514,17 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter ...@@ -514,6 +514,17 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
return parent::beforeSave($insert); 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() public function beforeDelete()
{ {
if (parent::beforeDelete()) if (parent::beforeDelete())
...@@ -548,62 +559,26 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter ...@@ -548,62 +559,26 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
return (bool)static::find()->where('email = :email', [':email'=>$email])->count(); return (bool)static::find()->where('email = :email', [':email'=>$email])->count();
} }
/** /**
* @param $template_id * Проверяем есть ли среди активных триггеров тот, у которого указан параметр проверки регистрации.
*/ * Если указан, выполняем действия триггера
public function afterRegistration(){ */
public function afterRegistration($params=array()){
/** @var TriggerTrigger[] $actualTriggers */ /** @var TriggerTrigger[] $actualTriggers */
$actualTriggers = TriggerTrigger::getActualTriggers(); $actualTriggers = TriggerTrigger::getActualTriggers();
foreach($actualTriggers as $trigger) { foreach($actualTriggers as $trigger) {
$exists = TriggerCondition::find()->where(['trigger_id'=>$trigger->id, 'condition_id'=>CheckUserToRegistration::CONDITION_ID])->exists(); $exists = TriggerCondition::find()->where(['trigger_id'=>$trigger->id, 'condition_id'=>CheckUserToRegistration::CONDITION_ID])->exists();
if ($exists===true) { if ($exists===true) {
/** @var \DateTime $time_now */ $init = $trigger->initAction($params);
$time_now=new \DateTime(); if ($init===true) {
/** @var MessageTemplate $templateModel */ return true;
$templateModel = MessageTemplate::findOne($trigger->message_template_id); } else {
/** @var Templates $template */ $this->addError('email', $init);
$template = new Templates($trigger->message_template_id); return false;
$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 'Письмо не было отправлено';
}
}
}
} }
} }
} }
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