Something went wrong. Try again.
@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
Something went wrong. Try again.
1.7 kB · 57 lines
PHP
at commit dcd7a316
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758<?php
final class DiffusionPathCompleteController extends DiffusionController {
public function willProcessRequest(array $data) { // Don't build a DiffusionRequest. }
public function processRequest() { $request = $this->getRequest();
$repository_phid = $request->getStr('repositoryPHID'); $repository = id(new PhabricatorRepositoryQuery()) ->setViewer($request->getUser()) ->withPHIDs(array($repository_phid)) ->executeOne(); if (!$repository) { return new Aphront400Response(); }
$query_path = $request->getStr('q'); if (preg_match('@/$@', $query_path)) { $query_dir = $query_path; } else { $query_dir = dirname($query_path).'/'; } $query_dir = ltrim($query_dir, '/');
$drequest = DiffusionRequest::newFromDictionary( array( 'user' => $request->getUser(), 'repository' => $repository, 'path' => $query_dir, )); $this->setDiffusionRequest($drequest);
$browse_results = DiffusionBrowseResultSet::newFromConduit( $this->callConduitWithDiffusionRequest( 'diffusion.browsequery', array( 'path' => $drequest->getPath(), 'commit' => $drequest->getCommit(), ))); $paths = $browse_results->getPaths();
$output = array(); foreach ($paths as $path) { $full_path = $query_dir.$path->getPath(); if ($path->getFileType() == DifferentialChangeType::FILE_DIRECTORY) { $full_path .= '/'; } $output[] = array('/'.$full_path, null, substr(md5($full_path), 0, 7)); }
return id(new AphrontAjaxResponse())->setContent($output); }}