Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
taskonsite-архив-перенесен
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Packages
Packages
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Dmitry Korolev
taskonsite-архив-перенесен
Commits
ed8d3f60
Commit
ed8d3f60
authored
Mar 16, 2016
by
Олег Гиммельшпах
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of git.task-on.com:ktask/task-on.com
parents
16fcd3a7
8c718f1c
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
138 additions
and
57 deletions
+138
-57
common/modules/content/models/CoContent.php
common/modules/content/models/CoContent.php
+13
-0
common/modules/triggers/controllers/DefaultController.php
common/modules/triggers/controllers/DefaultController.php
+26
-0
common/modules/triggers/models/TriggerSchedule.php
common/modules/triggers/models/TriggerSchedule.php
+64
-0
common/modules/triggers/models/TriggerTrigger.php
common/modules/triggers/models/TriggerTrigger.php
+1
-57
console/migrations/m160316_125140_set_default_value_to_trigger_column_in_schedule_table.php
...set_default_value_to_trigger_column_in_schedule_table.php
+25
-0
frontend/views/layouts/block/case-more.php
frontend/views/layouts/block/case-more.php
+9
-0
No files found.
common/modules/content/models/CoContent.php
View file @
ed8d3f60
...
@@ -193,4 +193,17 @@ class CoContent extends \common\components\ActiveRecordModel
...
@@ -193,4 +193,17 @@ class CoContent extends \common\components\ActiveRecordModel
{
{
return
$this
->
hasMany
(
CoContentLang
::
className
(),
[
'content_id'
=>
'id'
]);
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
);
}
}
}
}
}
common/modules/triggers/controllers/DefaultController.php
View file @
ed8d3f60
...
@@ -3,13 +3,18 @@
...
@@ -3,13 +3,18 @@
namespace
common\modules\triggers\controllers
;
namespace
common\modules\triggers\controllers
;
use
common\components\BaseController
;
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\components\conditions\Conditions
;
use
common\modules\triggers\models\TriggerLogs
;
use
common\modules\triggers\models\TriggerLogs
;
use
common\modules\triggers\models\TriggerSchedule
;
use
common\modules\triggers\models\TriggerSchedule
;
use
common\modules\triggers\models\TriggerTrigger
;
use
common\modules\triggers\models\TriggerTrigger
;
use
common\modules\users\models\User
;
use
common\modules\users\models\User
;
use
\DateTime
;
use
\DateTime
;
use
yii\helpers\ArrayHelper
;
use
yii\helpers\Json
;
use
yii\helpers\Json
;
use
common\modules\messageTemplate\components\Templates
;
use
common\components\UnisenderAPI
;
/**
/**
* Default controller for the `triggers` module
* Default controller for the `triggers` module
...
@@ -20,6 +25,7 @@ class DefaultController extends BaseController
...
@@ -20,6 +25,7 @@ class DefaultController extends BaseController
return
[
return
[
'Index'
=>
'Главная страница модуля'
,
'Index'
=>
'Главная страница модуля'
,
'Rechecktriggers'
=>
'Запуск проверки срабатывания триггеров'
,
'Rechecktriggers'
=>
'Запуск проверки срабатывания триггеров'
,
'Recheckcases'
=>
'Запуск рассылки кейсов'
,
'Settimeoflogs'
=>
'Фиксация времени логов'
,
'Settimeoflogs'
=>
'Фиксация времени логов'
,
'Inittrigger'
=>
'Initiate trigger By id'
'Inittrigger'
=>
'Initiate trigger By id'
];
];
...
@@ -107,4 +113,24 @@ class DefaultController extends BaseController
...
@@ -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
);
}
}
}
}
}
}
common/modules/triggers/models/TriggerSchedule.php
View file @
ed8d3f60
...
@@ -3,6 +3,10 @@
...
@@ -3,6 +3,10 @@
namespace
common\modules\triggers\models
;
namespace
common\modules\triggers\models
;
use
Yii
;
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".
* This is the model class for table "trigger_schedule".
...
@@ -62,4 +66,64 @@ class TriggerSchedule extends \yii\db\ActiveRecord
...
@@ -62,4 +66,64 @@ class TriggerSchedule extends \yii\db\ActiveRecord
'campaign_id'
=>
'Campaign ID'
,
'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
;
}
}
}
}
common/modules/triggers/models/TriggerTrigger.php
View file @
ed8d3f60
...
@@ -240,63 +240,7 @@ class TriggerTrigger extends \common\components\ActiveRecordModel
...
@@ -240,63 +240,7 @@ class TriggerTrigger extends \common\components\ActiveRecordModel
$sendExist
=
false
;
$sendExist
=
false
;
if
(
!
$sendExist
)
{
if
(
!
$sendExist
)
{
/** @var \DateTime $time_now */
return
TriggerSchedule
::
sendMessage
(
$email
,
$this
->
message_template_id
,
$templateData
,
$this
->
id
);
$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
;
}
}
}
}
}
}
}
console/migrations/m160316_125140_set_default_value_to_trigger_column_in_schedule_table.php
0 → 100644
View file @
ed8d3f60
<?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
()
);
}
}
frontend/views/layouts/block/case-more.php
View file @
ed8d3f60
...
@@ -38,6 +38,14 @@ $more = CoContent::find()
...
@@ -38,6 +38,14 @@ $more = CoContent::find()
</div>
</div>
<?php
endif
;
?>
<?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=
"col-md-6 col-xs-6 col-sm-12"
>
<div
class=
"subsc_block"
>
<div
class=
"subsc_block"
>
<h2
class=
"subsc_block_title"
>
Подписаться на обновления
</h2>
<h2
class=
"subsc_block_title"
>
Подписаться на обновления
</h2>
...
@@ -80,6 +88,7 @@ $more = CoContent::find()
...
@@ -80,6 +88,7 @@ $more = CoContent::find()
<?php
ActiveForm
::
end
();
?>
<?php
ActiveForm
::
end
();
?>
</div>
</div>
</div>
</div>
<?php
endif
;
?>
</div>
</div>
<!-- </div>
<!-- </div>
</section> -->
</section> -->
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment