Add 'viewer' to some Remarkup callsites
Summary:
I want to implement a `{P123}` rule to embed pastes, but we need viewers everywhere before it will work with privacy.
This is not exhaustive; many Remarkup callsites haven't been converted to `PhabricatorMarkupInterface` yet.
Test Plan: Looked at Maniphest, Differential, Diffusion, Phriction; added markup, made edits and hit previews.
Reviewers: vrana, btrahan
Reviewed By: vrana
CC: aran
Differential Revision: https://secure.phabricator.com/D3428
			
			
This commit is contained in:
		| @@ -57,6 +57,7 @@ final class ConduitAPI_remarkup_process_Method extends ConduitAPIMethod { | ||||
|     } | ||||
|  | ||||
|     $engine = PhabricatorMarkupEngine::$engine_class(); | ||||
|     $engine->setConfig('viewer', $request->getUser()); | ||||
|  | ||||
|     $result = array( | ||||
|       'content' => $engine->markupText($content), | ||||
|   | ||||
| @@ -64,6 +64,7 @@ final class ManiphestTaskDescriptionChangeController | ||||
|     $handles = $this->loadViewerHandles($phids); | ||||
|  | ||||
|     $engine = new PhabricatorMarkupEngine(); | ||||
|     $engine->setViewer($user); | ||||
|     $engine->addObject($transaction, ManiphestTransaction::MARKUP_FIELD_BODY); | ||||
|     $engine->process(); | ||||
|  | ||||
|   | ||||
| @@ -23,7 +23,6 @@ final class ManiphestTaskDescriptionPreviewController | ||||
|   extends ManiphestController { | ||||
|  | ||||
|   public function processRequest() { | ||||
|  | ||||
|     $request = $this->getRequest(); | ||||
|     $description = $request->getStr('description'); | ||||
|  | ||||
| @@ -32,7 +31,8 @@ final class ManiphestTaskDescriptionPreviewController | ||||
|  | ||||
|     $output = PhabricatorMarkupEngine::renderOneObject( | ||||
|       $task, | ||||
|       ManiphestTask::MARKUP_FIELD_DESCRIPTION); | ||||
|       ManiphestTask::MARKUP_FIELD_DESCRIPTION, | ||||
|       $request->getUser()); | ||||
|  | ||||
|     $content = | ||||
|       '<div class="phabricator-remarkup">'. | ||||
|   | ||||
| @@ -314,6 +314,7 @@ final class ManiphestTaskDetailController extends ManiphestController { | ||||
|     $headsup_panel->setProperties($dict); | ||||
|  | ||||
|     $engine = new PhabricatorMarkupEngine(); | ||||
|     $engine->setViewer($user); | ||||
|     $engine->addObject($task, ManiphestTask::MARKUP_FIELD_DESCRIPTION); | ||||
|     foreach ($transactions as $xaction) { | ||||
|       if ($xaction->hasComments()) { | ||||
|   | ||||
| @@ -119,6 +119,7 @@ final class ManiphestTransactionPreviewController extends ManiphestController { | ||||
|     $transactions[] = $transaction; | ||||
|  | ||||
|     $engine = new PhabricatorMarkupEngine(); | ||||
|     $engine->setViewer($user); | ||||
|     $engine->addObject($transaction, ManiphestTransaction::MARKUP_FIELD_BODY); | ||||
|     $engine->process(); | ||||
|  | ||||
|   | ||||
| @@ -158,7 +158,7 @@ final class PhrictionDocumentController | ||||
|  | ||||
|       $doc_status = $document->getStatus(); | ||||
|       if ($doc_status == PhrictionDocumentStatus::STATUS_EXISTS) { | ||||
|         $core_content = $content->renderContent(); | ||||
|         $core_content = $content->renderContent($user); | ||||
|       } else if ($doc_status == PhrictionDocumentStatus::STATUS_DELETED) { | ||||
|         $notice = new AphrontErrorView(); | ||||
|         $notice->setSeverity(AphrontErrorView::SEVERITY_NOTICE); | ||||
|   | ||||
| @@ -42,9 +42,7 @@ final class PhrictionDocumentPreviewController | ||||
|  | ||||
|     $content_obj = new PhrictionContent(); | ||||
|     $content_obj->setContent($document); | ||||
|  | ||||
|     $engine = PhabricatorMarkupEngine::newPhrictionMarkupEngine(); | ||||
|     $content = $content_obj->renderContent(); | ||||
|     $content = $content_obj->renderContent($request->getUser()); | ||||
|  | ||||
|     return id(new AphrontAjaxResponse())->setContent($content); | ||||
|   } | ||||
|   | ||||
| @@ -39,10 +39,11 @@ final class PhrictionContent extends PhrictionDAO | ||||
|   protected $changeType; | ||||
|   protected $changeRef; | ||||
|  | ||||
|   public function renderContent() { | ||||
|   public function renderContent(PhabricatorUser $viewer) { | ||||
|     return PhabricatorMarkupEngine::renderOneObject( | ||||
|       $this, | ||||
|       self::MARKUP_FIELD_BODY); | ||||
|       self::MARKUP_FIELD_BODY, | ||||
|       $viewer); | ||||
|   } | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -75,7 +75,8 @@ final class PonderCommentBodyView extends AphrontView { | ||||
|  | ||||
|     $content = PhabricatorMarkupEngine::renderOneObject( | ||||
|       $target, | ||||
|       $target->getMarkupField()); | ||||
|       $target->getMarkupField(), | ||||
|       $this->user); | ||||
|  | ||||
|     $content = | ||||
|       '<div class="phabricator-remarkup">'. | ||||
|   | ||||
| @@ -56,6 +56,7 @@ | ||||
| final class PhabricatorMarkupEngine { | ||||
|  | ||||
|   private $objects = array(); | ||||
|   private $viewer; | ||||
|  | ||||
|  | ||||
| /* -(  Markup Pipeline  )---------------------------------------------------- */ | ||||
| @@ -67,13 +68,16 @@ final class PhabricatorMarkupEngine { | ||||
|    * | ||||
|    * @param PhabricatorMarkupInterface  The object to render. | ||||
|    * @param string                      The field to render. | ||||
|    * @param PhabricatorUser             User viewing the markup. | ||||
|    * @return string                     Marked up output. | ||||
|    * @task markup | ||||
|    */ | ||||
|   public static function renderOneObject( | ||||
|     PhabricatorMarkupInterface $object, | ||||
|     $field) { | ||||
|     $field, | ||||
|     PhabricatorUser $viewer) { | ||||
|     return id(new PhabricatorMarkupEngine()) | ||||
|       ->setViewer($viewer) | ||||
|       ->addObject($object, $field) | ||||
|       ->process() | ||||
|       ->getOutput($object, $field); | ||||
| @@ -126,6 +130,7 @@ final class PhabricatorMarkupEngine { | ||||
|     $engines = array(); | ||||
|     foreach ($objects as $key => $info) { | ||||
|       $engines[$key] = $info['object']->newMarkupEngine($info['field']); | ||||
|       $engines[$key]->setConfig('viewer', $this->viewer); | ||||
|     } | ||||
|  | ||||
|     // Load or build the preprocessor caches. | ||||
| @@ -243,9 +248,23 @@ final class PhabricatorMarkupEngine { | ||||
|   } | ||||
|  | ||||
|  | ||||
|   /** | ||||
|    * Set the viewing user. Used to implement object permissions. | ||||
|    * | ||||
|    * @param PhabricatorUser The viewing user. | ||||
|    * @return this | ||||
|    * @task markup | ||||
|    */ | ||||
|   public function setViewer(PhabricatorUser $viewer) { | ||||
|     $this->viewer = $viewer; | ||||
|     return $this; | ||||
|   } | ||||
|  | ||||
|  | ||||
| /* -(  Engine Construction  )------------------------------------------------ */ | ||||
|  | ||||
|  | ||||
|  | ||||
|   /** | ||||
|    * @task engine | ||||
|    */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 epriestley
					epriestley