Exemplo n.º 1
0
 public function ApiPostsSearchAction()
 {
     if (!$this->IsLoggedIn()) {
         return $this->ResponseNotLoggedIn();
     }
     $Search = $this->Request->GetGET('search');
     if (!is_array($Search) || !isset($Search['keywords'])) {
         return $this->ResponseWrongData();
     }
     $PostCount = $this->Request->GetGET('post-count');
     if ($PostCount == null) {
         $PostCount = 9999999999.0;
     }
     $Query = new \Pvik\Database\Generic\Query('Posts');
     $ConditionString = 'LEFT JOIN PostShares as PostShares ON PostShares.PostId = Posts.PostId';
     $ConditionString .= ' WHERE PostShares.UserId = "%s"';
     $Query->AddParameter($this->GetUserId());
     foreach ($Search['keywords'] as $Keyword) {
         $Query->AddParameter('%' . $Keyword . '%');
         $ConditionString .= ' AND Posts.SearchHelper LIKE "%s"';
     }
     $Query->SetConditions($ConditionString);
     $Query->SetOrderBy('ORDER BY Posts.Updated DESC LIMIT 0,%s');
     $Query->AddParameter($PostCount);
     $Posts = $Query->Select();
     // optimization for tags
     $Posts->LoadList('PostsTags->Tag');
     // optimization for postshare
     $Posts->LoadList('PostShares');
     // optimization for comments
     $Posts->LoadList('Comments');
     $Data = array();
     $Data['posts'] = array();
     foreach ($Posts as $Post) {
         $Data['posts'][] = $Post->ToArray();
     }
     $this->ResponseSuccess($Data);
 }