- Добавлено действие срабатывающее ПОСЛЕ подписки пользователя

parent 8649d05a
...@@ -6,6 +6,7 @@ use common\modules\messageTemplate\controllers\TemplateAdminController; ...@@ -6,6 +6,7 @@ use common\modules\messageTemplate\controllers\TemplateAdminController;
use common\modules\messageTemplate\models\MessageTemplate; use common\modules\messageTemplate\models\MessageTemplate;
use common\modules\triggers\components\conditions\Conditions; use common\modules\triggers\components\conditions\Conditions;
use common\modules\triggers\components\conditions\conditions\CheckUserToRegistration; use common\modules\triggers\components\conditions\conditions\CheckUserToRegistration;
use common\modules\triggers\components\conditions\conditions\CheckUserToSubscribe;
use common\modules\triggers\models\AuthHashes; use common\modules\triggers\models\AuthHashes;
use common\modules\triggers\models\TriggerCondition; use common\modules\triggers\models\TriggerCondition;
use common\modules\triggers\models\TriggerLogs; use common\modules\triggers\models\TriggerLogs;
...@@ -630,55 +631,34 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter ...@@ -630,55 +631,34 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
return true; return true;
} }
/** /**
* @param $template_id * @param array $params
*/ * @return bool
public function afterSubscribe($template_id, $params=array()){ */
/** @var \DateTime $time_now */ public function afterSubscribe($params=array()){
$time_now=new \DateTime(); /** @var TriggerTrigger[] $actualTriggers */
/** @var MessageTemplate $templateModel */ $actualTriggers = TriggerTrigger::getActualTriggers();
$templateModel = MessageTemplate::findOne($template_id); foreach($actualTriggers as $trigger) {
/** @var Templates $template */ $exists = TriggerCondition::find()->where(['trigger_id'=>$trigger->id, 'condition_id'=>CheckUserToSubscribe::CONDITION_ID])->exists();
$template = new Templates($template_id, $params); $count = TriggerCondition::find()->where(['trigger_id'=>$trigger->id])->count();
$email = $this->email; // Добавляем в расписание срабатывание триггера регистрации только при условии что у триггера условие регистрации есть и оно там одно
$sender = new UnisenderAPI(); if ($exists===true && $count==1) {
// Create the send list $init = $trigger->initAction($params);
$newList = $sender->createList(); if ($init===true) {
$newListObject=Json::decode($newList); $curl = curl_init();
if (array_key_exists('result', $newListObject) && array_key_exists('id', $newListObject['result'])) { curl_setopt($curl, CURLOPT_URL, Yii::$app->urlManager->createAbsoluteUrl('/triggers/default/rechecktriggers'));
$newListId=$newListObject['result']['id']; curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// Subscribe user to new List if (!curl_exec($curl)) {
$sender->subscribe(['list_ids' => $newListId, 'fields[email]' => $email, 'double_optin' => 1]); $this->addError('email', curl_error($curl));
// Create new message return false;
$newMessage=$sender->createEmailMessage($this->name, $email, $templateModel->subject, $template->getTemplate(), $newListId); }
// Decode result return true;
$newMessageObject=Json::decode($newMessage); } else {
if (array_key_exists('result', $newMessageObject) && array_key_exists('message_id', $newMessageObject['result'])) { $this->addError('email', $init);
// Get the message ID return false;
$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 'Письмо не было отправлено';
}
}
}
}
} }
/** /**
......
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