Commit 4dd7e974 authored by Shakarim Sapa's avatar Shakarim Sapa

- Добавлен метод генерирующий расписание по блогам

parent 0d2ab69d
...@@ -2,8 +2,11 @@ ...@@ -2,8 +2,11 @@
namespace common\modules\blog\models; namespace common\modules\blog\models;
use common\components\ActiveRecordModel;
use common\modules\triggers\models\TriggerLogs;
use Yii; use Yii;
use common\modules\blog\models\Post; use common\modules\blog\models\Post;
use common\modules\users\models\User;
/** /**
* This is the model class for table "blog_schedule". * This is the model class for table "blog_schedule".
...@@ -15,7 +18,7 @@ use common\modules\blog\models\Post; ...@@ -15,7 +18,7 @@ use common\modules\blog\models\Post;
* *
* @property Post $post * @property Post $post
*/ */
class BlogSchedule extends \yii\db\ActiveRecord class BlogSchedule extends ActiveRecordModel
{ {
/** /**
* @inheritdoc * @inheritdoc
...@@ -25,6 +28,10 @@ class BlogSchedule extends \yii\db\ActiveRecord ...@@ -25,6 +28,10 @@ class BlogSchedule extends \yii\db\ActiveRecord
return 'blog_schedule'; return 'blog_schedule';
} }
public function name(){
return 'Расписание рассылок';
}
/** /**
* @inheritdoc * @inheritdoc
*/ */
...@@ -59,4 +66,41 @@ class BlogSchedule extends \yii\db\ActiveRecord ...@@ -59,4 +66,41 @@ class BlogSchedule extends \yii\db\ActiveRecord
{ {
return $this->hasOne(Post::className(), ['id' => 'post_id']); return $this->hasOne(Post::className(), ['id' => 'post_id']);
} }
/**
* @param $email
* @param User|null $user
*/
public static function generate($email, $user=null){
$date = new \DateTime();
// Получили все посты
$all_posts = Post::find()->orderBy('date DESC')->all();
// Создали результирующий массив
$result_posts = [];
// В цикле перебираем все посты в базе
foreach($all_posts as $post) {
// Сформировали ссылку на пост
$post_link = '/blog/'.$post->url;
// Если этот пользователь есть в базе, то производим сверку по времени просмотров
if ($user!==null) {
// Получили время просмотра текущего (на итерации) поста
$watch_time = TriggerLogs::getSummaryTimeByUrl($post_link, $user->id);
// Если время просмотра меньше 30 секунд
if ($watch_time<30)
// Заносим в результирующий массив
$result_posts[] = $post->id;
} else {
// В случае если это пользователь без аккаунта, заносим в результирующий массив без сверки
$result_posts[] = $post->id;
}
}
// Далее мы уже имеем в распоряжении сформированный массив
foreach($result_posts as $post_id) {
$model = new BlogSchedule();
$model->email = $email;
$model->post_id = $post_id;
$model->date = $date->modify('+7 days');
$model->save();
}
}
} }
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