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.
2.8 kB · 95 lines
PHP
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596<?php
final class PhabricatorProjectMembersRemoveController extends PhabricatorProjectController {
public function handleRequest(AphrontRequest $request) { $viewer = $request->getViewer(); $id = $request->getURIData('id'); $type = $request->getURIData('type');
$project = id(new PhabricatorProjectQuery()) ->setViewer($viewer) ->withIDs(array($id)) ->needMembers(true) ->needWatchers(true) ->requireCapabilities( array( PhabricatorPolicyCapability::CAN_VIEW, PhabricatorPolicyCapability::CAN_EDIT, )) ->executeOne(); if (!$project) { return new Aphront404Response(); }
if ($type == 'watchers') { $is_watcher = true; $edge_type = PhabricatorObjectHasWatcherEdgeType::EDGECONST; } else { if (!$project->supportsEditMembers()) { return new Aphront404Response(); }
$is_watcher = false; $edge_type = PhabricatorProjectProjectHasMemberEdgeType::EDGECONST; }
$members_uri = $this->getApplicationURI('members/'.$project->getID().'/'); $remove_phid = $request->getStr('phid');
if ($request->isFormPost()) { $xactions = array();
$xactions[] = id(new PhabricatorProjectTransaction()) ->setTransactionType(PhabricatorTransactions::TYPE_EDGE) ->setMetadataValue('edge:type', $edge_type) ->setNewValue( array( '-' => array($remove_phid => $remove_phid), ));
$editor = id(new PhabricatorProjectTransactionEditor()) ->setActor($viewer) ->setContentSourceFromRequest($request) ->setContinueOnNoEffect(true) ->setContinueOnMissingFields(true) ->applyTransactions($project, $xactions);
return id(new AphrontRedirectResponse()) ->setURI($members_uri); }
$handle = id(new PhabricatorHandleQuery()) ->setViewer($viewer) ->withPHIDs(array($remove_phid)) ->executeOne();
$target_name = phutil_tag('strong', array(), $handle->getName()); $project_name = phutil_tag('strong', array(), $project->getName());
if ($is_watcher) { $title = pht('Remove Watcher'); $body = pht( 'Remove %s as a watcher of %s?', $target_name, $project_name); $button = pht('Remove Watcher'); } else { $title = pht('Remove Member'); $body = pht( 'Remove %s as a project member of %s?', $target_name, $project_name); $button = pht('Remove Member'); }
return $this->newDialog() ->setTitle($title) ->addHiddenInput('phid', $remove_phid) ->appendParagraph($body) ->addCancelButton($members_uri) ->addSubmitButton($button); }
}