public function save() { if (!$this->validate()) { return false; } $db = \Yii::$app->db; $transaction = $db->beginTransaction(); try { $promotion = new Promotion(); $promotion->user_id = \Yii::$app->user->getId(); $promotion->url = $this->url; $promotion->page_id = VKApi::getGroupIdByUrl($this->url); $promotion->status = Promotion::NOT_MODERATED; $promotion->save(); if ($this->hasLikeQuery()) { $likeTask = new Task(); $likeTask->service_id = Service::LIKE_VK; $likeTask->promotion_id = $promotion->id; $likeTask->task = json_encode($this->getLikeQuery()); $likeTask->save(); } if ($this->hasRepostQuery()) { $likeTask = new Task(); $likeTask->service_id = Service::REPOST_VK; $likeTask->promotion_id = $promotion->id; $likeTask->task = json_encode($this->getRepostQuery()); $likeTask->save(); } if ($this->hasCommentQuery()) { $likeTask = new Task(); $likeTask->service_id = Service::COMMENT_VK; $likeTask->promotion_id = $promotion->id; $likeTask->task = json_encode($this->getCommentQuery()); $likeTask->save(); } $transaction->commit(); } catch (Exception $e) { $transaction->rollBack(); return false; } return true; }