1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2025-02-01 17:38:24 +01:00

(stable) Promote 2019 Week 50

This commit is contained in:
epriestley 2019-12-13 10:41:51 -08:00
commit c4b4a53cad
25 changed files with 135 additions and 65 deletions

View file

@ -11690,6 +11690,7 @@ phutil_register_library_map(array(
'PhabricatorUserEmail' => array(
'PhabricatorUserDAO',
'PhabricatorDestructibleInterface',
'PhabricatorPolicyInterface',
),
'PhabricatorUserEmailTestCase' => 'PhabricatorTestCase',
'PhabricatorUserEmpowerTransaction' => 'PhabricatorUserTransactionType',

View file

@ -64,13 +64,12 @@ final class PhabricatorConfigAllController
$content = id(new PHUITwoColumnView())
->setHeader($header)
->setNavigation($nav)
->setFixed(true)
->setMainColumn($view);
->setFooter($view);
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
->setNavigation($nav)
->appendChild($content);
}

View file

@ -18,9 +18,7 @@ final class PhabricatorConfigApplicationController
$content = id(new PHUITwoColumnView())
->setHeader($header)
->setNavigation($nav)
->setFixed(true)
->setMainColumn($apps_list);
->setFooter($apps_list);
$crumbs = $this->buildApplicationCrumbs()
->addTextCrumb($title)
@ -29,6 +27,7 @@ final class PhabricatorConfigApplicationController
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
->setNavigation($nav)
->appendChild($content);
}

View file

@ -33,13 +33,12 @@ final class PhabricatorConfigCacheController
$content = id(new PHUITwoColumnView())
->setHeader($header)
->setNavigation($nav)
->setFixed(true)
->setMainColumn($page);
->setFooter($page);
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
->setNavigation($nav)
->appendChild($content);
}

View file

@ -26,13 +26,12 @@ final class PhabricatorConfigClusterDatabasesController
$content = id(new PHUITwoColumnView())
->setHeader($header)
->setNavigation($nav)
->setFixed(true)
->setMainColumn($status);
->setFooter($status);
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
->setNavigation($nav)
->appendChild($content);
}

View file

@ -28,13 +28,12 @@ final class PhabricatorConfigClusterNotificationsController
$content = id(new PHUITwoColumnView())
->setHeader($header)
->setNavigation($nav)
->setFixed(true)
->setMainColumn($status);
->setFooter($status);
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
->setNavigation($nav)
->appendChild($content);
}

View file

@ -32,16 +32,16 @@ final class PhabricatorConfigClusterRepositoriesController
$content = id(new PHUITwoColumnView())
->setHeader($header)
->setNavigation($nav)
->setFixed(true)
->setMainColumn(array(
$repo_status,
$repo_errors,
));
->setFooter(
array(
$repo_status,
$repo_errors,
));
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
->setNavigation($nav)
->appendChild($content);
}

View file

@ -26,13 +26,12 @@ final class PhabricatorConfigClusterSearchController
$content = id(new PHUITwoColumnView())
->setHeader($header)
->setNavigation($nav)
->setFixed(true)
->setMainColumn($search_status);
->setFooter($search_status);
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
->setNavigation($nav)
->appendChild($content);
}

View file

@ -7,8 +7,6 @@ abstract class PhabricatorConfigController extends PhabricatorController {
}
public function buildSideNavView($filter = null, $for_app = false) {
$guide_href = new PhutilURI('/guides/');
$nav = new AphrontSideNavFilterView();
$nav->setBaseURI(new PhutilURI($this->getApplicationURI()));

View file

@ -167,13 +167,12 @@ final class PhabricatorConfigDatabaseIssueController
$content = id(new PHUITwoColumnView())
->setHeader($header)
->setNavigation($nav)
->setFixed(true)
->setMainColumn($view);
->setFooter($view);
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
->setNavigation($nav)
->appendChild($content);
}

View file

@ -142,13 +142,12 @@ final class PhabricatorConfigDatabaseStatusController
$content = id(new PHUITwoColumnView())
->setHeader($header)
->setNavigation($nav)
->setFixed(true)
->setMainColumn($body);
->setFooter($body);
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
->setNavigation($nav)
->appendChild($content);
}

View file

@ -237,9 +237,8 @@ final class PhabricatorConfigEditController
$view = id(new PHUITwoColumnView())
->setHeader($header)
->setNavigation($nav)
->setFixed(true)
->setMainColumn(array(
->setFooter(
array(
$error_view,
$form_box,
$status_items,
@ -250,6 +249,7 @@ final class PhabricatorConfigEditController
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
->setNavigation($nav)
->appendChild($view);
}

View file

@ -36,13 +36,12 @@ final class PhabricatorConfigGroupController
$content = id(new PHUITwoColumnView())
->setHeader($header)
->setNavigation($nav)
->setFixed(true)
->setMainColumn($view);
->setFooter($view);
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
->setNavigation($nav)
->appendChild($content);
}

View file

@ -36,13 +36,12 @@ final class PhabricatorConfigHistoryController
$content = id(new PHUITwoColumnView())
->setHeader($header)
->setNavigation($nav)
->setFixed(true)
->setMainColumn($timeline);
->setFooter($timeline);
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
->setNavigation($nav)
->appendChild($content);
}

View file

@ -59,13 +59,12 @@ final class PhabricatorConfigIssueListController
$content = id(new PHUITwoColumnView())
->setHeader($header)
->setNavigation($nav)
->setFixed(true)
->setMainColumn($issue_list);
->setFooter($issue_list);
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
->setNavigation($nav)
->appendChild($content);
}

View file

@ -47,13 +47,12 @@ final class PhabricatorConfigIssueViewController
$content = id(new PHUITwoColumnView())
->setHeader($header)
->setNavigation($nav)
->setFixed(true)
->setMainColumn($content);
->setFooter($content);
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
->setNavigation($nav)
->appendChild($content);
}

View file

@ -22,13 +22,12 @@ final class PhabricatorConfigListController
$content = id(new PHUITwoColumnView())
->setHeader($header)
->setNavigation($nav)
->setFixed(true)
->setMainColumn($core_list);
->setFooter($core_list);
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
->setNavigation($nav)
->appendChild($content);
}

View file

@ -28,13 +28,12 @@ final class PhabricatorConfigModuleController
$content = id(new PHUITwoColumnView())
->setHeader($header)
->setNavigation($nav)
->setFixed(true)
->setMainColumn($view);
->setFooter($view);
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
->setNavigation($nav)
->appendChild($content);
}

View file

@ -23,15 +23,13 @@ final class PhabricatorConfigVersionController
$content = id(new PHUITwoColumnView())
->setHeader($header)
->setNavigation($nav)
->setFixed(true)
->setMainColumn($view);
->setFooter($view);
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
->setNavigation($nav)
->appendChild($content);
}
public function renderModuleStatus($viewer) {

View file

@ -226,7 +226,7 @@ final class ManiphestTransactionEditor
$body->addLinkSection(
pht('TASK DETAIL'),
PhabricatorEnv::getProductionURI('/T'.$object->getID()));
$this->getObjectLinkButtonURIForMail($object));
$board_phids = array();

View file

@ -29,6 +29,12 @@ final class PhabricatorPeopleUserEmailPHIDType
PhabricatorHandleQuery $query,
array $handles,
array $objects) {
foreach ($handles as $phid => $handle) {
$email = $objects[$phid];
$handle->setName($email->getAddress());
}
return null;
}

View file

@ -48,6 +48,32 @@ final class PhabricatorPeopleUserEmailQuery
return $where;
}
protected function willLoadPage(array $page) {
$user_phids = mpull($page, 'getUserPHID');
$users = id(new PhabricatorPeopleQuery())
->setViewer($this->getViewer())
->setParentQuery($this)
->withPHIDs($user_phids)
->execute();
$users = mpull($users, null, 'getPHID');
foreach ($page as $key => $address) {
$user = idx($users, $address->getUserPHID());
if (!$user) {
unset($page[$key]);
$this->didRejectResult($address);
continue;
}
$address->attachUser($user);
}
return $page;
}
public function getQueryApplicationClass() {
return 'PhabricatorPeopleApplication';
}

View file

@ -6,7 +6,9 @@
*/
final class PhabricatorUserEmail
extends PhabricatorUserDAO
implements PhabricatorDestructibleInterface {
implements
PhabricatorDestructibleInterface,
PhabricatorPolicyInterface {
protected $userPHID;
protected $address;
@ -14,6 +16,8 @@ final class PhabricatorUserEmail
protected $isPrimary;
protected $verificationCode;
private $user = self::ATTACHABLE;
const MAX_ADDRESS_LENGTH = 128;
protected function getConfiguration() {
@ -52,6 +56,15 @@ final class PhabricatorUserEmail
return parent::save();
}
public function attachUser(PhabricatorUser $user) {
$this->user = $user;
return $this;
}
public function getUser() {
return $this->assertAttached($this->user);
}
/* -( Domain Restrictions )------------------------------------------------ */
@ -287,4 +300,28 @@ final class PhabricatorUserEmail
$this->delete();
}
/* -( PhabricatorPolicyInterface )----------------------------------------- */
public function getCapabilities() {
return array(
PhabricatorPolicyCapability::CAN_VIEW,
PhabricatorPolicyCapability::CAN_EDIT,
);
}
public function getPolicy($capability) {
$user = $this->getUser();
if ($this->getIsSystemAgent() || $this->getIsMailingList()) {
return PhabricatorPolicies::POLICY_ADMIN;
}
return $user->getPHID();
}
public function hasAutomaticCapability($capability, PhabricatorUser $viewer) {
return false;
}
}

View file

@ -16,8 +16,23 @@ final class PhrictionRemarkupRule extends PhutilRemarkupRule {
}
public function markupDocumentLink(array $matches) {
$name = trim(idx($matches, 2, ''));
if (empty($matches[2])) {
$name = null;
}
$path = trim($matches[1]);
if (!$this->isFlatText($name)) {
return $matches[0];
}
if (!$this->isFlatText($path)) {
return $matches[0];
}
// If the link contains an anchor, separate that off first.
$parts = explode('#', trim($matches[1]), 2);
$parts = explode('#', $path, 2);
if (count($parts) == 2) {
$link = $parts[0];
$anchor = $parts[1];
@ -48,11 +63,6 @@ final class PhrictionRemarkupRule extends PhutilRemarkupRule {
}
}
$name = trim(idx($matches, 2, ''));
if (empty($matches[2])) {
$name = null;
}
// Link is now used for slug detection, so append a slash if one
// is needed.
$link = rtrim($link, '/').'/';

View file

@ -136,6 +136,14 @@ final class PhutilRemarkupDocumentLinkRule extends PhutilRemarkupRule {
$uri = trim($matches[1]);
$name = trim(idx($matches, 2));
if (!$this->isFlatText($uri)) {
return $matches[0];
}
if (!$this->isFlatText($name)) {
return $matches[0];
}
// If whatever is being linked to begins with "/" or "#", or has "://",
// or is "mailto:" or "tel:", treat it as a URI instead of a wiki page.
$is_uri = preg_match('@(^/)|(://)|(^#)|(^(?:mailto|tel):)@', $uri);