예제 #1
0
 /**
  * @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.']);
     }
 }