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

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

parents 16fcd3a7 8c718f1c
......@@ -193,4 +193,17 @@ class CoContent extends \common\components\ActiveRecordModel
{
return $this->hasMany(CoContentLang::className(), ['content_id' => 'id']);
}
public function afterSave($insert, $changedAttributes)
{
parent::afterSave($insert, $changedAttributes);
if ($this->category_id==4) { // <<< С этим надо что то делать, очень много привязок динамичных данных
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, Yii::$app->urlManager->createAbsoluteUrl('/triggers/default/recheckcases'));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
if (!curl_exec($curl)) {
echo curl_error($curl);
}
}
}
}
......@@ -3,13 +3,18 @@
namespace common\modules\triggers\controllers;
use common\components\BaseController;
use common\modules\content\models\CoContent;
use common\modules\messageTemplate\models\MessageTemplate;
use common\modules\triggers\components\conditions\Conditions;
use common\modules\triggers\models\TriggerLogs;
use common\modules\triggers\models\TriggerSchedule;
use common\modules\triggers\models\TriggerTrigger;
use common\modules\users\models\User;
use \DateTime;
use yii\helpers\ArrayHelper;
use yii\helpers\Json;
use common\modules\messageTemplate\components\Templates;
use common\components\UnisenderAPI;
/**
* Default controller for the `triggers` module
......@@ -20,6 +25,7 @@ class DefaultController extends BaseController
return [
'Index' => 'Главная страница модуля',
'Rechecktriggers' => 'Запуск проверки срабатывания триггеров',
'Recheckcases' => 'Запуск рассылки кейсов',
'Settimeoflogs' => 'Фиксация времени логов',
'Inittrigger' => 'Initiate trigger By id'
];
......@@ -107,4 +113,24 @@ class DefaultController extends BaseController
}
}
}
public function actionRecheckcases($category_id = 4, $template_id=1, $neededTime=10) {
/** @var User[] $users */
$users = User::find()->all();
$urls = ArrayHelper::map(CoContent::find()->all(), 'id', 'url');
foreach($users as $user) {
foreach($urls as $url) {
$watchingtime = TriggerLogs::getSummaryTimeByUrl($url, $user->id);
if ((int)$watchingtime>=(int)$neededTime) {
$templateData = [];
$email = $user->email;
/** @var \DateTime $time_now */
TriggerSchedule::sendMessage($email, $template_id, $templateData, null);
}
}
}
}
}
......@@ -3,6 +3,10 @@
namespace common\modules\triggers\models;
use Yii;
use common\modules\messageTemplate\models\MessageTemplate;
use common\modules\messageTemplate\components\Templates;
use common\components\UnisenderAPI;
use yii\helpers\Json;
/**
* This is the model class for table "trigger_schedule".
......@@ -62,4 +66,64 @@ class TriggerSchedule extends \yii\db\ActiveRecord
'campaign_id' => 'Campaign ID',
];
}
public static function sendMessage($email, $template_id, $templateData, $trigger_id=null)
{
$time_now=new \DateTime();
/** @var MessageTemplate $templateModel */
$templateModel = MessageTemplate::findOne($template_id);
/** @var Templates $template */
$template = new Templates($template_id, $templateData);
$sender = new UnisenderAPI();
// Create the send list
$newList = $sender->createList();
$newListObject=Json::decode($newList);
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('Школа аналитики "Арт Проект"', 'subscribe@task-on.com', $templateModel->subject, $template->getTemplate(), $newListId);
// Decode result
$newMessageObject=Json::decode($newMessage);
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) && is_array($newCampaignObject['result']) && array_key_exists('campaign_id', $newCampaignObject['result'])) {
$newCampaignId = $newCampaignObject['result']['campaign_id'];
$schedule = new TriggerSchedule();
$schedule->sended=1;
$schedule->template_id=$template_id;
$schedule->trigger_id=$trigger_id;
$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()) {
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;
}
}
}
......@@ -240,63 +240,7 @@ class TriggerTrigger extends \common\components\ActiveRecordModel
$sendExist = false;
if (!$sendExist) {
/** @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, $templateData);
$sender = new UnisenderAPI();
// Create the send list
$newList = $sender->createList();
$newListObject=Json::decode($newList);
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('Школа аналитики "Арт Проект"', 'subscribe@task-on.com', $templateModel->subject, $template->getTemplate(), $newListId);
// Decode result
$newMessageObject=Json::decode($newMessage);
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) && is_array($newCampaignObject['result']) && array_key_exists('campaign_id', $newCampaignObject['result'])) {
$newCampaignId = $newCampaignObject['result']['campaign_id'];
$schedule = new TriggerSchedule();
$schedule->sended=1;
// $schedule->checked=(array_key_exists('checked', $params)) ? $params['checked'] : 0;
$schedule->template_id=$this->message_template_id;
$schedule->trigger_id=$this->id;
$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()) {
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;
}
return TriggerSchedule::sendMessage($email, $this->message_template_id, $templateData, $this->id);
}
}
}
<?php
use yii\db\Migration;
class m160316_125140_set_default_value_to_trigger_column_in_schedule_table extends Migration
{
// Use safeUp/safeDown to run migration code within a transaction
public function safeUp()
{
$this->alterColumn(
'trigger_schedule',
'trigger_id',
$this->integer(11)->defaultValue(null)
);
}
public function safeDown()
{
$this->alterColumn(
'trigger_schedule',
'trigger_id',
$this->integer(11)->notNull()
);
}
}
......@@ -38,6 +38,14 @@ $more = CoContent::find()
</div>
<?php endif; ?>
<?php
$show = true;
if (!Yii::$app->user->isGuest && Bid::find()->where(['email' => Yii::$app->user->identity->email])->exists())
$show = false;
if ($show===true):
?>
<div class="col-md-6 col-xs-6 col-sm-12">
<div class="subsc_block">
<h2 class="subsc_block_title">Подписаться на обновления</h2>
......@@ -80,6 +88,7 @@ $more = CoContent::find()
<?php ActiveForm::end(); ?>
</div>
</div>
<?php endif; ?>
</div>
<!-- </div>
</section> -->
......
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