/** * @param $username * @return bool */ public function addAction($username) { // Check Source Param $feedUrl = $this->request->getPost('source', 'string', null); if (empty($feedUrl)) { return $this->fail(['message' => 'Source parameter missing.']); } // Get User /** @var User $user */ $user = User::findFirst([['username' => $username]]); if (!$user) { return $this->fail(['message' => "User doesn't exist."]); } // Check if Source already on the DB /** @var NewsSource $source */ $source = NewsSource::findFirst([['feed' => $feedUrl]]); // If doesn't exist, create if (!$source) { list($source, $message) = (new NewsSourceFactory())->create($feedUrl); // If creation fails, fail if (!$source) { return $this->fail(['message' => $message]); } } $user->addNewsSource($source->getId()); if ($user->save()) { return $this->succeed(); } else { return $this->fail(['message' => 'Error saving to Database.']); } }