Page MenuHomestyx hydra

No OneTemporary

diff --git a/src/applications/feed/builder/PhabricatorFeedBuilder.php b/src/applications/feed/builder/PhabricatorFeedBuilder.php
index a92cc52e95..5819d3025a 100644
--- a/src/applications/feed/builder/PhabricatorFeedBuilder.php
+++ b/src/applications/feed/builder/PhabricatorFeedBuilder.php
@@ -1,70 +1,83 @@
<?php
final class PhabricatorFeedBuilder {
private $stories;
private $framed;
private $hovercards = false;
public function __construct(array $stories) {
assert_instances_of($stories, 'PhabricatorFeedStory');
$this->stories = $stories;
}
public function setFramed($framed) {
$this->framed = $framed;
return $this;
}
public function setUser(PhabricatorUser $user) {
$this->user = $user;
return $this;
}
public function setShowHovercards($hover) {
$this->hovercards = $hover;
return $this;
}
public function buildView() {
if (!$this->user) {
throw new Exception('Call setUser() before buildView()!');
}
$user = $this->user;
$stories = $this->stories;
$null_view = new AphrontNullView();
require_celerity_resource('phabricator-feed-css');
$last_date = null;
foreach ($stories as $story) {
$story->setFramed($this->framed);
$story->setHovercard($this->hovercards);
$date = ucfirst(phabricator_relative_date($story->getEpoch(), $user));
if ($date !== $last_date) {
if ($last_date !== null) {
$null_view->appendChild(
phutil_tag_div('phabricator-feed-story-date-separator'));
}
$last_date = $date;
$header = new PhabricatorActionHeaderView();
$header->setHeaderTitle($date);
$null_view->appendChild($header);
}
- $view = $story->renderView();
- $view->setUser($user);
+ try {
+ $view = $story->renderView();
+ $view->setUser($user);
+ $view = $view->render();
+ } catch (Exception $ex) {
+ // If rendering failed for any reason, don't fail the entire feed,
+ // just this one story.
+ $view = id(new PHUIFeedStoryView())
+ ->setUser($user)
+ ->setChronologicalKey($story->getChronologicalKey())
+ ->setEpoch($story->getEpoch())
+ ->setTitle(
+ pht('Feed Story Failed to Render (%s)', get_class($story)))
+ ->appendChild(pht('%s: %s', get_class($ex), $ex->getMessage()));
+ }
$null_view->appendChild($view);
}
return id(new AphrontNullView())
->appendChild($null_view->render());
}
}

File Metadata

Mime Type
text/x-diff
Expires
Sun, Sep 7, 8:00 AM (5 h, 18 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
222664
Default Alt Text
(2 KB)

Event Timeline