1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-15 11:22:40 +01:00
phorge-phorge/src/applications/diffusion/controller/DiffusionPathTreeController.php

37 lines
933 B
PHP
Raw Normal View History

<?php
final class DiffusionPathTreeController extends DiffusionController {
protected function processDiffusionRequest(AphrontRequest $request) {
$drequest = $this->getDiffusionRequest();
if (!$drequest->getRepository()->canUsePathTree()) {
return new Aphront404Response();
}
$paths = $this->callConduitWithDiffusionRequest(
'diffusion.querypaths',
array(
'path' => $drequest->getPath(),
'commit' => $drequest->getCommit(),
));
$tree = array();
foreach ($paths as $path) {
$parts = preg_split('((?<=/))', $path);
$cursor = &$tree;
foreach ($parts as $part) {
if (!is_array($cursor)) {
$cursor = array();
}
if (!isset($cursor[$part])) {
$cursor[$part] = 1;
}
$cursor = &$cursor[$part];
}
}
return id(new AphrontAjaxResponse())->setContent(array('tree' => $tree));
}
}