[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class PhabricatorFeedBuilder { 4 5 private $stories; 6 private $framed; 7 private $hovercards = false; 8 9 public function __construct(array $stories) { 10 assert_instances_of($stories, 'PhabricatorFeedStory'); 11 $this->stories = $stories; 12 } 13 14 public function setFramed($framed) { 15 $this->framed = $framed; 16 return $this; 17 } 18 19 public function setUser(PhabricatorUser $user) { 20 $this->user = $user; 21 return $this; 22 } 23 24 public function setShowHovercards($hover) { 25 $this->hovercards = $hover; 26 return $this; 27 } 28 29 public function buildView() { 30 if (!$this->user) { 31 throw new Exception('Call setUser() before buildView()!'); 32 } 33 34 $user = $this->user; 35 $stories = $this->stories; 36 37 $null_view = new AphrontNullView(); 38 39 require_celerity_resource('phabricator-feed-css'); 40 41 $last_date = null; 42 foreach ($stories as $story) { 43 $story->setFramed($this->framed); 44 $story->setHovercard($this->hovercards); 45 46 $date = ucfirst(phabricator_relative_date($story->getEpoch(), $user)); 47 48 if ($date !== $last_date) { 49 if ($last_date !== null) { 50 $null_view->appendChild( 51 phutil_tag_div('phabricator-feed-story-date-separator')); 52 } 53 $last_date = $date; 54 $header = new PHUIActionHeaderView(); 55 $header->setHeaderTitle($date); 56 57 $null_view->appendChild($header); 58 } 59 60 try { 61 $view = $story->renderView(); 62 $view->setUser($user); 63 $view = $view->render(); 64 } catch (Exception $ex) { 65 // If rendering failed for any reason, don't fail the entire feed, 66 // just this one story. 67 $view = id(new PHUIFeedStoryView()) 68 ->setUser($user) 69 ->setChronologicalKey($story->getChronologicalKey()) 70 ->setEpoch($story->getEpoch()) 71 ->setTitle( 72 pht('Feed Story Failed to Render (%s)', get_class($story))) 73 ->appendChild(pht('%s: %s', get_class($ex), $ex->getMessage())); 74 } 75 76 $null_view->appendChild($view); 77 } 78 79 return id(new AphrontNullView()) 80 ->appendChild($null_view->render()); 81 } 82 83 }
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 |