protected function execute(ConduitAPIRequest $request)
 {
     $query = new PhamePostQuery();
     $query->setViewer($request->getUser());
     $ids = $request->getValue('ids', array());
     if ($ids) {
         $query->withIDs($ids);
     }
     $phids = $request->getValue('phids', array());
     if ($phids) {
         $query->withPHIDs($phids);
     }
     $blog_phids = $request->getValue('blogPHIDs', array());
     if ($blog_phids) {
         $query->withBlogPHIDs($blog_phids);
     }
     $blogger_phids = $request->getValue('bloggerPHIDs', array());
     if ($blogger_phids) {
         $query->withBloggerPHIDs($blogger_phids);
     }
     $phame_titles = $request->getValue('phameTitles', array());
     if ($phame_titles) {
         $query->withPhameTitles($phame_titles);
     }
     $published = $request->getValue('published', null);
     if ($published === true) {
         $query->withVisibility(PhameConstants::VISIBILITY_PUBLISHED);
     } else {
         if ($published === false) {
             $query->withVisibility(PhameConstants::VISIBILITY_DRAFT);
         }
     }
     $published_after = $request->getValue('publishedAfter', null);
     if ($published_after !== null) {
         $query->withPublishedAfter($published_after);
     }
     $after = $request->getValue('after', null);
     if ($after !== null) {
         $query->setAfterID($after);
     }
     $before = $request->getValue('before', null);
     if ($before !== null) {
         $query->setBeforeID($before);
     }
     $limit = $request->getValue('limit', null);
     if ($limit !== null) {
         $query->setLimit($limit);
     }
     $posts = $query->execute();
     $results = array();
     foreach ($posts as $post) {
         $results[] = $post->toDictionary();
     }
     return $results;
 }