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
2e0d32c1
Commit
2e0d32c1
authored
Mar 01, 2016
by
Виталий Мурашко
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://git.task-on.com/ktask/task-on.com
parents
8b303492
fb79d29d
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
114 additions
and
77 deletions
+114
-77
common/components/UnisenderAPI.php
common/components/UnisenderAPI.php
+1
-1
common/modules/triggers/components/conditions/conditions/CheckPresenceTime.php
...rs/components/conditions/conditions/CheckPresenceTime.php
+12
-25
common/modules/triggers/components/conditions/conditions/CheckUserToRegistration.php
...ponents/conditions/conditions/CheckUserToRegistration.php
+1
-1
common/modules/triggers/controllers/DefaultController.php
common/modules/triggers/controllers/DefaultController.php
+7
-3
common/modules/triggers/models/TriggerSchedule.php
common/modules/triggers/models/TriggerSchedule.php
+3
-2
common/modules/triggers/models/TriggerTrigger.php
common/modules/triggers/models/TriggerTrigger.php
+50
-45
common/modules/users/models/User.php
common/modules/users/models/User.php
+8
-0
console/migrations/m160229_103010_add_trigger_id_column_to_trigger_schedule_table.php
...03010_add_trigger_id_column_to_trigger_schedule_table.php
+32
-0
No files found.
common/components/UnisenderAPI.php
View file @
2e0d32c1
...
...
@@ -182,7 +182,7 @@ class UnisenderAPI {
public
function
linkIsVisited
(
$email
,
$link
)
{
if
(
array_key_exists
(
'result'
,
$this
->
visitedLinks
)
&&
array_key_exists
(
'data'
,
$this
->
visitedLinks
[
'result'
]))
{
foreach
(
$this
->
visitedLinks
[
'result'
][
'data'
]
as
$transition
)
{
if
(
$transition
[
0
]
==
$email
&&
strpos
(
$link
,
$transition
[
1
])
!==
false
)
if
(
strtolower
(
$transition
[
0
])
==
strtolower
(
$email
)
&&
strpos
(
$link
,
$transition
[
1
])
!==
false
)
return
true
;
}
}
...
...
common/modules/triggers/components/conditions/conditions/CheckPresenceTime.php
View file @
2e0d32c1
...
...
@@ -9,6 +9,8 @@
namespace
common\modules\triggers\components\conditions\conditions
;
use
common\modules\messageTemplate\components\Templates
;
use
common\modules\messageTemplate\models\MessageTemplate
;
use
common\modules\triggers\components\conditions\vendor\ConditionBase
;
use
common\modules\triggers\components\conditions\vendor\ConditionInterface
;
use
common\modules\triggers\models\TriggerCondition
;
...
...
@@ -20,7 +22,7 @@ use yii\web\BadRequestHttpException;
class
CheckPresenceTime
extends
ConditionBase
implements
ConditionInterface
{
const
CONDITION_ID
=
5
;
public
$name
=
'Время присутствия на странице'
;
public
$name
=
'Время присутствия на странице
(Игнорируется оператором "И")
'
;
public
$params
=
[];
...
...
@@ -49,39 +51,24 @@ class CheckPresenceTime extends ConditionBase implements ConditionInterface {
/** @var TriggerParam $paramTime */
$paramTime
=
TriggerParam
::
find
()
->
where
([
'condition_id'
=>
$condition
->
getPrimaryKey
(),
'key'
=>
'time'
])
->
one
();
// Если сработали условия что триггер есть, у него указаны время и URL и при этом он является триггером ДАННОГО типа
if
(
$condition
->
condition_id
==
self
::
CONDITION_ID
&&
$paramUrl
!==
null
&&
$paramUrl
->
value
==
\Yii
::
$app
->
request
->
getUrl
()
&&
$paramTime
!==
null
)
{
$now
=
new
\DateTime
();
$time
=
new
\DateTime
();
$time
->
modify
(
'+ '
.
(((
int
)
$trigger
->
timeout
<
(
int
)
$cron_time
)
?
$cron_time
:
(
int
)
$trigger
->
timeout
+
(
int
)
$cron_time
)
.
' second'
);
// Заносим запись в базу
$model
=
new
TriggerSchedule
();
$model
->
sended
=
0
;
$model
->
checked
=
0
;
$model
->
message
=
'Test the presence time'
;
$model
->
email
=
\common\modules\users\models\User
::
findOne
(
\Yii
::
$app
->
user
->
id
)
->
email
;
$model
->
time
=
$time
->
format
(
'Y-m-d H:i:s'
);
$model
->
date_create
=
$now
->
format
(
'Y-m-d H:i:s'
);
if
(
$model
->
save
())
{
if
(
$condition
->
condition_id
==
self
::
CONDITION_ID
&&
$paramUrl
!==
null
&&
$paramUrl
->
value
==
\Yii
::
$app
->
request
->
getUrl
()
&&
$paramTime
!==
null
&&
!
\Yii
::
$app
->
user
->
isGuest
)
{
$view
=
\Yii
::
$app
->
controller
->
view
;
// Создаем скрипт
$script
=
'$(document).ready(function() {
var timer='
.
((
int
)
$paramTime
->
value
*
1000
)
.
';
setTimeout(function() {
$.ajax({
url: "/triggers/default/
dropschedule
",
url: "/triggers/default/
inittrigger
",
method: "GET",
async: false,
data: {
id: '
.
$
model
->
getPrimaryKey
()
.
'
id: '
.
$
trigger
->
getPrimaryKey
()
.
'
},
});
}, timer);
});'
;
// Регистрируем его
$view
->
registerJs
(
$script
,
$view
::
POS_READY
);
}
else
{
throw
new
BadRequestHttpException
(
current
(
current
(
$model
->
getErrors
())),
500
);
}
}
}
}
...
...
@@ -92,6 +79,6 @@ class CheckPresenceTime extends ConditionBase implements ConditionInterface {
* @return bool
*/
public
function
check
(
$time
){
return
tru
e
;
return
fals
e
;
}
}
\ No newline at end of file
common/modules/triggers/components/conditions/conditions/CheckUserToRegistration.php
View file @
2e0d32c1
...
...
@@ -11,7 +11,7 @@ class CheckUserToRegistration extends ConditionBase implements ConditionInterfac
public
$recall
=
false
;
public
$name
=
'Пользователь зарегистрировался'
;
public
$name
=
'Пользователь зарегистрировался
(Игнорируется оператором "И")
'
;
/**
* @param null|string $conditionName
...
...
common/modules/triggers/controllers/DefaultController.php
View file @
2e0d32c1
...
...
@@ -18,12 +18,16 @@ class DefaultController extends BaseController
return
[
'Index'
=>
'Главная страница модуля'
,
'Rechecktriggers'
=>
'Запуск проверки срабатывания триггеров'
,
'
Dropschedule'
=>
'Drop schedule
By id'
'
Inittrigger'
=>
'Initiate trigger
By id'
];
}
public
function
actionDropschedule
(
$id
){
TriggerSchedule
::
findOne
(
$id
)
->
delete
();
public
function
actionInittrigger
(
$id
){
if
(
\Yii
::
$app
->
request
->
isAjax
)
{
/** @var TriggerTrigger $trigger */
$trigger
=
TriggerTrigger
::
findOne
(
$id
);
$trigger
->
initAction
();
}
}
/**
...
...
common/modules/triggers/models/TriggerSchedule.php
View file @
2e0d32c1
...
...
@@ -18,6 +18,7 @@ use Yii;
* @property integer $list_id
* @property integer $campaign_id
* @property integer $template_id
* @property integer $trigger_id
*/
class
TriggerSchedule
extends
\yii\db\ActiveRecord
{
...
...
@@ -35,8 +36,8 @@ class TriggerSchedule extends \yii\db\ActiveRecord
public
function
rules
()
{
return
[
[[
'sended'
,
'checked'
,
'message_id'
,
'list_id'
,
'campaign_id'
,
'template_id'
],
'integer'
],
[[
'message'
,
'email'
,
'template_id'
],
'required'
],
[[
'sended'
,
'checked'
,
'message_id'
,
'list_id'
,
'campaign_id'
,
't
rigger_id'
,
't
emplate_id'
],
'integer'
],
[[
'message'
,
'email'
,
'template_id'
,
'trigger_id'
],
'required'
],
[[
'message'
],
'string'
],
[[
'time'
,
'date_create'
],
'safe'
],
[[
'email'
],
'string'
,
'max'
=>
255
],
...
...
common/modules/triggers/models/TriggerTrigger.php
View file @
2e0d32c1
...
...
@@ -234,6 +234,9 @@ class TriggerTrigger extends \common\components\ActiveRecordModel
$templateData
[
'user_fio'
]
=
(
isset
(
$user_fio
))
?
$user_fio
:
''
;
$sendExist
=
TriggerSchedule
::
find
()
->
where
([
'trigger_id'
=>
$this
->
id
,
'email'
=>
$email
])
->
exists
();
if
(
!
$sendExist
)
{
/** @var \DateTime $time_now */
$time_now
=
new
\DateTime
();
/** @var MessageTemplate $templateModel */
...
...
@@ -266,6 +269,7 @@ class TriggerTrigger extends \common\components\ActiveRecordModel
$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
;
...
...
@@ -291,4 +295,5 @@ class TriggerTrigger extends \common\components\ActiveRecordModel
return
$error
;
}
}
}
}
common/modules/users/models/User.php
View file @
2e0d32c1
...
...
@@ -22,6 +22,7 @@ use \common\modules\messageTemplate\components\Templates;
use
\common\modules\rbac\models\AuthItem
;
use
\common\modules\rbac\models\AuthAssignment
;
use
\common\modules\eauth\models\UserEAuth
;
use
yii\web\UrlManager
;
class
User
extends
\common\components\ActiveRecordModel
implements
IdentityInterface
{
...
...
@@ -580,6 +581,13 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
if
(
$exists
===
true
)
{
$init
=
$trigger
->
initAction
(
$params
);
if
(
$init
===
true
)
{
$curl
=
curl_init
();
curl_setopt
(
$curl
,
CURLOPT_URL
,
Yii
::
$app
->
urlManager
->
createAbsoluteUrl
(
'/triggers/default/rechecktriggers'
));
curl_setopt
(
$curl
,
CURLOPT_RETURNTRANSFER
,
true
);
if
(
!
curl_exec
(
$curl
))
{
$this
->
addError
(
'email'
,
curl_error
(
$curl
));
return
false
;
}
return
true
;
}
else
{
$this
->
addError
(
'email'
,
$init
);
...
...
console/migrations/m160229_103010_add_trigger_id_column_to_trigger_schedule_table.php
0 → 100644
View file @
2e0d32c1
<?php
use
yii\db\Migration
;
class
m160229_103010_add_trigger_id_column_to_trigger_schedule_table
extends
Migration
{
public
function
up
()
{
$this
->
addColumn
(
'trigger_schedule'
,
'trigger_id'
,
$this
->
integer
(
11
)
->
notNull
()
);
$this
->
addForeignKey
(
'fk_schedule_trigger'
,
'trigger_schedule'
,
'trigger_id'
,
'trigger_trigger'
,
'id'
);
}
public
function
down
()
{
$this
->
dropForeignKey
(
'fk_schedule_trigger'
,
'trigger_schedule'
);
$this
->
dropColumn
(
'trigger_schedule'
,
'trigger_id'
);
}
}
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