2011-01-26 18:02:09 +01:00
|
|
|
<?php
|
|
|
|
|
2012-03-14 00:21:04 +01:00
|
|
|
final class PhabricatorObjectHandle {
|
2011-01-26 18:02:09 +01:00
|
|
|
|
|
|
|
private $uri;
|
|
|
|
private $phid;
|
|
|
|
private $type;
|
|
|
|
private $name;
|
|
|
|
private $email;
|
2011-02-03 02:38:03 +01:00
|
|
|
private $fullName;
|
2011-02-01 01:00:42 +01:00
|
|
|
private $imageURI;
|
2011-04-23 00:10:42 +02:00
|
|
|
private $timestamp;
|
2011-05-10 01:31:26 +02:00
|
|
|
private $alternateID;
|
2012-05-17 03:42:06 +02:00
|
|
|
private $status = PhabricatorObjectHandleStatus::STATUS_OPEN;
|
2012-12-22 01:02:31 +01:00
|
|
|
private $title;
|
2011-08-30 21:03:58 +02:00
|
|
|
private $complete;
|
2011-11-16 18:49:18 +01:00
|
|
|
private $disabled;
|
2011-01-26 18:02:09 +01:00
|
|
|
|
|
|
|
public function setURI($uri) {
|
|
|
|
$this->uri = $uri;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getURI() {
|
|
|
|
return $this->uri;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function setPHID($phid) {
|
|
|
|
$this->phid = $phid;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getPHID() {
|
|
|
|
return $this->phid;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function setName($name) {
|
|
|
|
$this->name = $name;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getName() {
|
|
|
|
return $this->name;
|
|
|
|
}
|
|
|
|
|
Add object status to Handles
Summary:
We use ObjectHandles as proxy objects which can refer to any other object in the
system. Add the concept of the underlying object's "status" (e.g., open, closed
or busy).
This allows us to render completed tasks and revisions with strikethrough. In
the future, if we implement OOO or something, we could render users with a
"busy" status if they're on vacation, etc.
Test Plan: Viewed a task with closed revisions and dependencies:
https://secure.phabricator.com/file/view/PHID-FILE-6183e81286fa3288d33d/
Reviewed By: codeblock
Reviewers: codeblock, hunterbridges, jungejason, tuomaspelkonen, aran
CC: aran, codeblock
Differential Revision: 772
2011-08-03 15:37:18 +02:00
|
|
|
public function setStatus($status) {
|
|
|
|
$this->status = $status;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getStatus() {
|
|
|
|
return $this->status;
|
|
|
|
}
|
|
|
|
|
2012-12-22 01:02:31 +01:00
|
|
|
public function setTitle($title) {
|
|
|
|
$this->title = $title;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
2011-02-03 02:38:03 +01:00
|
|
|
public function setFullName($full_name) {
|
|
|
|
$this->fullName = $full_name;
|
|
|
|
return $this;
|
|
|
|
}
|
2011-02-03 04:38:43 +01:00
|
|
|
|
2011-02-03 02:38:03 +01:00
|
|
|
public function getFullName() {
|
2011-02-21 05:08:16 +01:00
|
|
|
if ($this->fullName !== null) {
|
|
|
|
return $this->fullName;
|
|
|
|
}
|
|
|
|
return $this->getName();
|
2011-02-03 02:38:03 +01:00
|
|
|
}
|
|
|
|
|
2011-01-26 18:02:09 +01:00
|
|
|
public function setType($type) {
|
|
|
|
$this->type = $type;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getType() {
|
|
|
|
return $this->type;
|
|
|
|
}
|
|
|
|
|
2011-02-01 01:00:42 +01:00
|
|
|
public function setImageURI($uri) {
|
|
|
|
$this->imageURI = $uri;
|
|
|
|
return $this;
|
|
|
|
}
|
2011-02-02 22:59:52 +01:00
|
|
|
|
2011-02-01 01:00:42 +01:00
|
|
|
public function getImageURI() {
|
|
|
|
return $this->imageURI;
|
|
|
|
}
|
2011-01-26 18:02:09 +01:00
|
|
|
|
2011-04-23 00:10:42 +02:00
|
|
|
public function setTimestamp($timestamp) {
|
|
|
|
$this->timestamp = $timestamp;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getTimestamp() {
|
|
|
|
return $this->timestamp;
|
|
|
|
}
|
|
|
|
|
2011-05-10 01:31:26 +02:00
|
|
|
public function setAlternateID($alternate_id) {
|
|
|
|
$this->alternateID = $alternate_id;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getAlternateID() {
|
|
|
|
return $this->alternateID;
|
|
|
|
}
|
|
|
|
|
Improve search result listing
Summary:
Make it prettier, paginate, add user pictures, show document types, clean some
stuff up a little. Plenty of room for improvement but this should make it a lot
more useful.
Test Plan:
Here's what the new one looks like:
https://secure.phabricator.com/file/view/PHID-FILE-edce2b83c2e3a121c2b7/
Reviewed By: jungejason
Reviewers: tomo, jungejason, aran, tuomaspelkonen, mroch
Commenters: tomo
CC: aran, tomo, jungejason, epriestley
Differential Revision: 545
2011-06-28 23:35:02 +02:00
|
|
|
public function getTypeName() {
|
|
|
|
static $map = array(
|
|
|
|
PhabricatorPHIDConstants::PHID_TYPE_USER => 'User',
|
|
|
|
PhabricatorPHIDConstants::PHID_TYPE_TASK => 'Task',
|
|
|
|
PhabricatorPHIDConstants::PHID_TYPE_DREV => 'Revision',
|
|
|
|
PhabricatorPHIDConstants::PHID_TYPE_CMIT => 'Commit',
|
2011-07-12 02:29:08 +02:00
|
|
|
PhabricatorPHIDConstants::PHID_TYPE_WIKI => 'Phriction',
|
Improve search result listing
Summary:
Make it prettier, paginate, add user pictures, show document types, clean some
stuff up a little. Plenty of room for improvement but this should make it a lot
more useful.
Test Plan:
Here's what the new one looks like:
https://secure.phabricator.com/file/view/PHID-FILE-edce2b83c2e3a121c2b7/
Reviewed By: jungejason
Reviewers: tomo, jungejason, aran, tuomaspelkonen, mroch
Commenters: tomo
CC: aran, tomo, jungejason, epriestley
Differential Revision: 545
2011-06-28 23:35:02 +02:00
|
|
|
);
|
|
|
|
|
|
|
|
return idx($map, $this->getType());
|
|
|
|
}
|
|
|
|
|
2011-11-16 18:49:18 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Set whether or not the underlying object is complete. See
|
2012-04-20 07:26:27 +02:00
|
|
|
* @{method:isComplete} for an explanation of what it means to be complete.
|
2011-11-16 18:49:18 +01:00
|
|
|
*
|
|
|
|
* @param bool True if the handle represents a complete object.
|
|
|
|
* @return this
|
|
|
|
*/
|
2011-08-30 21:03:58 +02:00
|
|
|
public function setComplete($complete) {
|
|
|
|
$this->complete = $complete;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
2011-11-16 18:49:18 +01:00
|
|
|
|
2011-08-30 21:03:58 +02:00
|
|
|
/**
|
|
|
|
* Determine if the handle represents an object which was completely loaded
|
|
|
|
* (i.e., the underlying object exists) vs an object which could not be
|
|
|
|
* completely loaded (e.g., the type or data for the PHID could not be
|
|
|
|
* identified or located).
|
|
|
|
*
|
|
|
|
* Basically, @{class:PhabricatorObjectHandleData} gives you back a handle for
|
|
|
|
* any PHID you give it, but it gives you a complete handle only for valid
|
|
|
|
* PHIDs.
|
|
|
|
*
|
|
|
|
* @return bool True if the handle represents a complete object.
|
|
|
|
*/
|
|
|
|
public function isComplete() {
|
|
|
|
return $this->complete;
|
|
|
|
}
|
|
|
|
|
2011-11-16 18:49:18 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Set whether or not the underlying object is disabled. See
|
2012-04-20 07:26:27 +02:00
|
|
|
* @{method:isDisabled} for an explanation of what it means to be disabled.
|
2011-11-16 18:49:18 +01:00
|
|
|
*
|
|
|
|
* @param bool True if the handle represents a disabled object.
|
|
|
|
* @return this
|
|
|
|
*/
|
|
|
|
public function setDisabled($disabled) {
|
|
|
|
$this->disabled = $disabled;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Determine if the handle represents an object which has been disabled --
|
|
|
|
* for example, disabled users, archived projects, etc. These objects are
|
|
|
|
* complete and exist, but should be excluded from some system interactions
|
|
|
|
* (for instance, they usually should not appear in typeaheads, and should
|
|
|
|
* not have mail/notifications delivered to or about them).
|
|
|
|
*
|
|
|
|
* @return bool True if the handle represents a disabled object.
|
|
|
|
*/
|
|
|
|
public function isDisabled() {
|
|
|
|
return $this->disabled;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2011-01-27 23:55:52 +01:00
|
|
|
public function renderLink() {
|
2012-01-30 13:12:15 +01:00
|
|
|
$name = $this->getLinkName();
|
Add object status to Handles
Summary:
We use ObjectHandles as proxy objects which can refer to any other object in the
system. Add the concept of the underlying object's "status" (e.g., open, closed
or busy).
This allows us to render completed tasks and revisions with strikethrough. In
the future, if we implement OOO or something, we could render users with a
"busy" status if they're on vacation, etc.
Test Plan: Viewed a task with closed revisions and dependencies:
https://secure.phabricator.com/file/view/PHID-FILE-6183e81286fa3288d33d/
Reviewed By: codeblock
Reviewers: codeblock, hunterbridges, jungejason, tuomaspelkonen, aran
CC: aran, codeblock
Differential Revision: 772
2011-08-03 15:37:18 +02:00
|
|
|
$class = null;
|
2012-05-17 03:42:06 +02:00
|
|
|
$title = null;
|
2012-01-17 01:54:05 +01:00
|
|
|
|
Add object status to Handles
Summary:
We use ObjectHandles as proxy objects which can refer to any other object in the
system. Add the concept of the underlying object's "status" (e.g., open, closed
or busy).
This allows us to render completed tasks and revisions with strikethrough. In
the future, if we implement OOO or something, we could render users with a
"busy" status if they're on vacation, etc.
Test Plan: Viewed a task with closed revisions and dependencies:
https://secure.phabricator.com/file/view/PHID-FILE-6183e81286fa3288d33d/
Reviewed By: codeblock
Reviewers: codeblock, hunterbridges, jungejason, tuomaspelkonen, aran
CC: aran, codeblock
Differential Revision: 772
2011-08-03 15:37:18 +02:00
|
|
|
if ($this->status != PhabricatorObjectHandleStatus::STATUS_OPEN) {
|
2012-01-17 01:54:05 +01:00
|
|
|
$class .= ' handle-status-'.$this->status;
|
2012-12-22 01:02:31 +01:00
|
|
|
$title = (isset($this->title) ? $this->title : $this->status);
|
2012-01-17 01:54:05 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
if ($this->disabled) {
|
|
|
|
$class .= ' handle-disabled';
|
2012-05-17 03:42:06 +02:00
|
|
|
$title = 'disabled'; // Overwrite status.
|
Add object status to Handles
Summary:
We use ObjectHandles as proxy objects which can refer to any other object in the
system. Add the concept of the underlying object's "status" (e.g., open, closed
or busy).
This allows us to render completed tasks and revisions with strikethrough. In
the future, if we implement OOO or something, we could render users with a
"busy" status if they're on vacation, etc.
Test Plan: Viewed a task with closed revisions and dependencies:
https://secure.phabricator.com/file/view/PHID-FILE-6183e81286fa3288d33d/
Reviewed By: codeblock
Reviewers: codeblock, hunterbridges, jungejason, tuomaspelkonen, aran
CC: aran, codeblock
Differential Revision: 772
2011-08-03 15:37:18 +02:00
|
|
|
}
|
|
|
|
|
2013-01-18 03:43:35 +01:00
|
|
|
return phutil_tag(
|
2011-01-27 23:55:52 +01:00
|
|
|
'a',
|
|
|
|
array(
|
Add object status to Handles
Summary:
We use ObjectHandles as proxy objects which can refer to any other object in the
system. Add the concept of the underlying object's "status" (e.g., open, closed
or busy).
This allows us to render completed tasks and revisions with strikethrough. In
the future, if we implement OOO or something, we could render users with a
"busy" status if they're on vacation, etc.
Test Plan: Viewed a task with closed revisions and dependencies:
https://secure.phabricator.com/file/view/PHID-FILE-6183e81286fa3288d33d/
Reviewed By: codeblock
Reviewers: codeblock, hunterbridges, jungejason, tuomaspelkonen, aran
CC: aran, codeblock
Differential Revision: 772
2011-08-03 15:37:18 +02:00
|
|
|
'href' => $this->getURI(),
|
|
|
|
'class' => $class,
|
2012-05-17 03:42:06 +02:00
|
|
|
'title' => $title,
|
2011-01-27 23:55:52 +01:00
|
|
|
),
|
2013-01-18 03:43:35 +01:00
|
|
|
$name);
|
2011-01-27 23:55:52 +01:00
|
|
|
}
|
2011-01-26 18:02:09 +01:00
|
|
|
|
2012-01-30 13:12:15 +01:00
|
|
|
public function getLinkName() {
|
|
|
|
switch ($this->getType()) {
|
|
|
|
case PhabricatorPHIDConstants::PHID_TYPE_USER:
|
|
|
|
$name = $this->getName();
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
$name = $this->getFullName();
|
2012-03-08 21:46:29 +01:00
|
|
|
break;
|
2012-01-30 13:12:15 +01:00
|
|
|
}
|
|
|
|
return $name;
|
|
|
|
}
|
|
|
|
|
2011-01-26 18:02:09 +01:00
|
|
|
}
|