[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class PhamePostListController extends PhameController { 4 5 private $bloggername; 6 private $filter; 7 8 public function willProcessRequest(array $data) { 9 $this->filter = idx($data, 'filter', 'blogger'); 10 $this->bloggername = idx($data, 'bloggername'); 11 } 12 13 public function processRequest() { 14 $request = $this->getRequest(); 15 $user = $request->getUser(); 16 17 $query = id(new PhamePostQuery()) 18 ->setViewer($user); 19 20 $nav = $this->renderSideNavFilterView(); 21 22 switch ($this->filter) { 23 case 'draft': 24 $query->withBloggerPHIDs(array($user->getPHID())); 25 $query->withVisibility(PhamePost::VISIBILITY_DRAFT); 26 $nodata = pht('You have no unpublished drafts.'); 27 $title = pht('Unpublished Drafts'); 28 $nav->selectFilter('post/draft'); 29 break; 30 case 'blogger': 31 if ($this->bloggername) { 32 $blogger = id(new PhabricatorUser())->loadOneWhere( 33 'username = %s', 34 $this->bloggername); 35 if (!$blogger) { 36 return new Aphront404Response(); 37 } 38 } else { 39 $blogger = $user; 40 } 41 42 $query->withBloggerPHIDs(array($blogger->getPHID())); 43 if ($blogger->getPHID() == $user->getPHID()) { 44 $nav->selectFilter('post'); 45 $nodata = pht('You have not written any posts.'); 46 } else { 47 $nodata = pht('%s has not written any posts.', $blogger); 48 } 49 $title = pht('Posts By %s', $blogger); 50 break; 51 case 'all': 52 $nodata = pht('There are no visible posts.'); 53 $title = pht('Posts'); 54 $nav->selectFilter('post/all'); 55 break; 56 default: 57 throw new Exception("Unknown filter '{$this->filter}'!"); 58 } 59 60 $pager = id(new AphrontCursorPagerView()) 61 ->readFromRequest($request); 62 63 $posts = $query->executeWithCursorPager($pager); 64 65 $handle_phids = array_merge( 66 mpull($posts, 'getBloggerPHID'), 67 mpull($posts, 'getBlogPHID')); 68 $this->loadHandles($handle_phids); 69 70 require_celerity_resource('phame-css'); 71 $post_list = $this->renderPostList($posts, $user, $nodata); 72 $post_list = id(new PHUIBoxView()) 73 ->addPadding(PHUI::PADDING_LARGE) 74 ->addClass('phame-post-list') 75 ->appendChild($post_list); 76 77 $crumbs = $this->buildApplicationCrumbs(); 78 $crumbs->addTextCrumb($title, $this->getApplicationURI()); 79 80 $nav->appendChild( 81 array( 82 $crumbs, 83 $post_list, 84 )); 85 86 return $this->buildApplicationPage( 87 $nav, 88 array( 89 'title' => $title, 90 )); 91 } 92 93 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |