Beispiel #1
0
 public function actionGo()
 {
     $groups = Promotion::findAll(['status' => Promotion::MODERATED]);
     foreach ($groups as $group) {
         $wall = VKApi::getWallPosts($group->page_id);
         if ($wall) {
             $parsingPeriod = mktime(strftime('-1 hour', time()));
             foreach ($wall as $post) {
                 //если пост подходит по времени
                 if ($post['date'] > $parsingPeriod) {
                     //формирум урл поста https://vk.com/feed?w=wall-57424472_71791
                     $dbPost = new Post();
                     $dbPost->post_id = $post['id'];
                     $dbPost->promotion_id = $group->page_id;
                     $dbPost->save();
                     $postUrl = 'https://vk.com/feed?w=wall' . $group->page_id . '_' . $post['id'];
                     //получаем таски
                     $tasks = Task::findAll(['promotion_id' => $group->id]);
                     foreach ($tasks as $task) {
                         $taskArr = json_decode($task->task);
                         //дописываем в урл и цену лайков
                         $taskArr['task']['url'] = $postUrl;
                         $taskArr['task']['cost'] = $task->service->minimum_likes_per_task;
                         //получаем цену таска
                         $pricePerOne = $task->service->price_per_one_task;
                         $priceAll = $pricePerOne * $taskArr['task']['members_count'];
                         //списываем деньги с пользователя к которому он относится
                         $user = $group->user;
                         if ($user->money - $priceAll >= 0) {
                             $user->money -= $priceAll;
                             $user->save();
                             //если хватило то отсылаем таск
                             $this->setTask($taskArr);
                         }
                     }
                 }
             }
         }
         usleep(335000);
     }
 }
Beispiel #2
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getPosts()
 {
     return $this->hasMany(Post::className(), ['promotion_id' => 'id']);
 }