Differential D12033 Diff 29183 src/applications/differential/controller/DifferentialChangesetViewController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/differential/controller/DifferentialChangesetViewController.php
| <?php | <?php | ||||
| final class DifferentialChangesetViewController extends DifferentialController { | final class DifferentialChangesetViewController extends DifferentialController { | ||||
| public function shouldAllowPublic() { | public function shouldAllowPublic() { | ||||
| return true; | return true; | ||||
| } | } | ||||
| public function processRequest() { | public function processRequest() { | ||||
| $request = $this->getRequest(); | $request = $this->getRequest(); | ||||
| $viewer = $this->getViewer(); | |||||
| $author_phid = $request->getUser()->getPHID(); | $author_phid = $viewer->getPHID(); | ||||
| $rendering_reference = $request->getStr('ref'); | $rendering_reference = $request->getStr('ref'); | ||||
| $parts = explode('/', $rendering_reference); | $parts = explode('/', $rendering_reference); | ||||
| if (count($parts) == 2) { | if (count($parts) == 2) { | ||||
| list($id, $vs) = $parts; | list($id, $vs) = $parts; | ||||
| } else { | } else { | ||||
| $id = $parts[0]; | $id = $parts[0]; | ||||
| $vs = 0; | $vs = 0; | ||||
| } | } | ||||
| $id = (int)$id; | $id = (int)$id; | ||||
| $vs = (int)$vs; | $vs = (int)$vs; | ||||
| $load_ids = array($id); | $load_ids = array($id); | ||||
| if ($vs && ($vs != -1)) { | if ($vs && ($vs != -1)) { | ||||
| $load_ids[] = $vs; | $load_ids[] = $vs; | ||||
| } | } | ||||
| $changesets = id(new DifferentialChangesetQuery()) | $changesets = id(new DifferentialChangesetQuery()) | ||||
| ->setViewer($request->getUser()) | ->setViewer($viewer) | ||||
| ->withIDs($load_ids) | ->withIDs($load_ids) | ||||
| ->needHunks(true) | ->needHunks(true) | ||||
| ->execute(); | ->execute(); | ||||
| $changesets = mpull($changesets, null, 'getID'); | $changesets = mpull($changesets, null, 'getID'); | ||||
| $changeset = idx($changesets, $id); | $changeset = idx($changesets, $id); | ||||
| if (!$changeset) { | if (!$changeset) { | ||||
| return new Aphront404Response(); | return new Aphront404Response(); | ||||
| ▲ Show 20 Lines • Show All 145 Lines • ▼ Show 20 Lines | foreach ($inlines as $inline) { | ||||
| } | } | ||||
| } | } | ||||
| $phids = array_keys($phids); | $phids = array_keys($phids); | ||||
| $handles = $this->loadViewerHandles($phids); | $handles = $this->loadViewerHandles($phids); | ||||
| $parser->setHandles($handles); | $parser->setHandles($handles); | ||||
| $engine = new PhabricatorMarkupEngine(); | $engine = new PhabricatorMarkupEngine(); | ||||
| $engine->setViewer($request->getUser()); | $engine->setViewer($viewer); | ||||
| foreach ($inlines as $inline) { | foreach ($inlines as $inline) { | ||||
| $engine->addObject( | $engine->addObject( | ||||
| $inline, | $inline, | ||||
| PhabricatorInlineCommentInterface::MARKUP_FIELD_BODY); | PhabricatorInlineCommentInterface::MARKUP_FIELD_BODY); | ||||
| } | } | ||||
| $engine->process(); | $engine->process(); | ||||
| $diff = $changeset->getDiff(); | |||||
| $revision_id = $diff->getRevisionID(); | |||||
| $can_mark = false; | |||||
| if ($revision_id) { | |||||
| $revision = id(new DifferentialRevisionQuery()) | |||||
| ->setViewer($viewer) | |||||
| ->withIDs(array($revision_id)) | |||||
| ->executeOne(); | |||||
| if ($revision) { | |||||
| $can_mark = ($revision->getAuthorPHID() == $viewer->getPHID()); | |||||
| } | |||||
| } | |||||
| $parser | $parser | ||||
| ->setUser($request->getUser()) | ->setUser($viewer) | ||||
| ->setMarkupEngine($engine) | ->setMarkupEngine($engine) | ||||
| ->setShowEditAndReplyLinks(true) | ->setShowEditAndReplyLinks(true) | ||||
| ->setCanMarkDone($can_mark) | |||||
| ->setRange($range_s, $range_e) | ->setRange($range_s, $range_e) | ||||
| ->setMask($mask); | ->setMask($mask); | ||||
| if ($request->isAjax()) { | if ($request->isAjax()) { | ||||
| $mcov = $parser->renderModifiedCoverage(); | $mcov = $parser->renderModifiedCoverage(); | ||||
| $coverage = array( | $coverage = array( | ||||
| 'differential-mcoverage-'.md5($changeset->getFilename()) => $mcov, | 'differential-mcoverage-'.md5($changeset->getFilename()) => $mcov, | ||||
| ); | ); | ||||
| return id(new PhabricatorChangesetResponse()) | return id(new PhabricatorChangesetResponse()) | ||||
| ->setRenderedChangeset($parser->renderChangeset()) | ->setRenderedChangeset($parser->renderChangeset()) | ||||
| ->setCoverage($coverage) | ->setCoverage($coverage) | ||||
| ->setUndoTemplates($parser->getRenderer()->renderUndoTemplates()); | ->setUndoTemplates($parser->getRenderer()->renderUndoTemplates()); | ||||
| } | } | ||||
| $diff = $changeset->getDiff(); | |||||
| $detail = id(new DifferentialChangesetListView()) | $detail = id(new DifferentialChangesetListView()) | ||||
| ->setUser($this->getViewer()) | ->setUser($this->getViewer()) | ||||
| ->setChangesets(array($changeset)) | ->setChangesets(array($changeset)) | ||||
| ->setVisibleChangesets(array($changeset)) | ->setVisibleChangesets(array($changeset)) | ||||
| ->setRenderingReferences(array($rendering_reference)) | ->setRenderingReferences(array($rendering_reference)) | ||||
| ->setRenderURI('/differential/changeset/') | ->setRenderURI('/differential/changeset/') | ||||
| ->setDiff($diff) | ->setDiff($diff) | ||||
| ->setTitle(pht('Standalone View')) | ->setTitle(pht('Standalone View')) | ||||
| ->setParser($parser); | ->setParser($parser); | ||||
| $revision_id = $diff->getRevisionID(); | |||||
| if ($revision_id) { | if ($revision_id) { | ||||
| $detail->setInlineCommentControllerURI( | $detail->setInlineCommentControllerURI( | ||||
| '/differential/comment/inline/edit/'.$revision_id.'/'); | '/differential/comment/inline/edit/'.$revision_id.'/'); | ||||
| } | } | ||||
| $crumbs = $this->buildApplicationCrumbs(); | $crumbs = $this->buildApplicationCrumbs(); | ||||
| if ($revision_id) { | if ($revision_id) { | ||||
| Show All 30 Lines | return id(new DifferentialInlineCommentQuery()) | ||||
| ->withViewerAndChangesetIDs($author_phid, $changeset_ids) | ->withViewerAndChangesetIDs($author_phid, $changeset_ids) | ||||
| ->execute(); | ->execute(); | ||||
| } | } | ||||
| private function buildRawFileResponse( | private function buildRawFileResponse( | ||||
| DifferentialChangeset $changeset, | DifferentialChangeset $changeset, | ||||
| $is_new) { | $is_new) { | ||||
| $viewer = $this->getRequest()->getUser(); | $viewer = $this->getViewer(); | ||||
| if ($is_new) { | if ($is_new) { | ||||
| $key = 'raw:new:phid'; | $key = 'raw:new:phid'; | ||||
| } else { | } else { | ||||
| $key = 'raw:old:phid'; | $key = 'raw:old:phid'; | ||||
| } | } | ||||
| $metadata = $changeset->getMetadata(); | $metadata = $changeset->getMetadata(); | ||||
| ▲ Show 20 Lines • Show All 72 Lines • Show Last 20 Lines | |||||