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
b3cc5075
Commit
b3cc5075
authored
Mar 24, 2016
by
Shakarim Sapa
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- Обновлен метод отвечающий за рассылку кейсов по расписанию
parent
3cb7ba44
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
75 additions
and
0 deletions
+75
-0
common/modules/triggers/controllers/DefaultController.php
common/modules/triggers/controllers/DefaultController.php
+75
-0
No files found.
common/modules/triggers/controllers/DefaultController.php
View file @
b3cc5075
...
...
@@ -156,4 +156,79 @@ class DefaultController extends BaseController
}
}
}
/**
* Метод производит рассылку по расписанию
*
* @param int $neededTime
*/
public
function
actionSendcases
(
$neededTime
=
10
)
{
$date
=
new
\DateTime
();
/** @var User[] $users */
$users
=
User
::
find
()
->
all
();
// URL основной страницы
$baseUrl
=
'http://task-on.com/'
;
// Получили все данные в расписании
/** @var CasesSchedule[] $schedule */
$schedule
=
CasesSchedule
::
find
()
->
where
([
'sended'
=>
0
])
->
all
();
// Перебираем в цикле пользователей
foreach
(
$users
as
$user
)
{
// Определили отправленность сообщения
$sendedToUser
=
false
;
// Получили дату для дальнейшего сравнения
$deliveryDate
=
new
\DateTime
(
$user
->
delivery_date
);
// Если пользователь подписан и дата соответствует требованиям
if
(
Bid
::
find
()
->
where
([
'email'
=>
$user
->
email
])
->
exists
()
&&
$deliveryDate
<=
$date
)
{
// Перебираем все записи
foreach
(
$schedule
as
$record
)
{
// Если ни одно письмо еще не отправлено
if
(
$sendedToUser
===
false
)
{
// Получили кейс
/** @var CoContent $case */
$case
=
$record
->
getCase
();
// Если кейс есть
if
(
!
is_null
(
$case
))
{
// Заносим урл в переменную
$url
=
$case
->
url
;
// Получаем время просмотра каждой страницы
$watchingtime
=
TriggerLogs
::
getSummaryTimeByUrl
(
$url
,
$user
->
id
);
// Если суммарное время просмотра меньше минимальной нормы (то есть кейс еще не просмотрен)
if
((
int
)
$watchingtime
<
(
int
)
$neededTime
)
{
// Производим отправку письма
// Получаем почту
$email
=
$user
->
email
;
// Генерируем хеш
$hash
=
AuthHashes
::
setNewHash
(
$email
);
// Сформировали дату
$templateData
=
[
'case_link'
=>
$baseUrl
.
$url
.
'?hash='
.
$hash
.
'&email='
.
$email
];
// Производим отправку
/** @var \DateTime $time_now */
TriggerSchedule
::
sendMessage
(
$email
,
$case
->
template_id
,
$templateData
,
null
);
// Произвели отправку, следовательно переопределили значение переменной
$sendedToUser
=
true
;
// Редактируем запись в расписании
/** @var CasesSchedule $model */
$model
=
CasesSchedule
::
findOne
(
$record
->
id
);
$model
->
sended_date
=
$date
->
format
(
'Y-m-d H:i:s'
);
$model
->
sended
=
1
;
}
}
}
}
// Создали дату следующей отправки
$updatedDate
=
new
\DateTime
();
// Произвели модификацию даты
$updatedDate
->
modify
(
'+7 days'
);
/** @var User $user */
// Нашли пользователя
$user
=
User
::
findOne
(
$this
->
id
);
// Переопределили поле
$user
->
delivery_date
=
$updatedDate
->
format
(
'Y-m-d'
);
// Сохранили изменения
$user
->
save
(
false
);
}
}
}
}
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