Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F804771
DifferentialExactUserFunctionDatasource.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
DifferentialExactUserFunctionDatasource.php
View Options
<?php
final
class
DifferentialExactUserFunctionDatasource
extends
PhabricatorTypeaheadCompositeDatasource
{
public
function
getBrowseTitle
()
{
return
pht
(
'Browse Users'
);
}
public
function
getPlaceholderText
()
{
return
pht
(
'Type exact(<user>)...'
);
}
public
function
getDatasourceApplicationClass
()
{
return
'PhabricatorPeopleApplication'
;
}
public
function
getComponentDatasources
()
{
return
array
(
new
PhabricatorPeopleDatasource
(),
);
}
public
function
getDatasourceFunctions
()
{
return
array
(
'exact'
=>
array
(
'name'
=>
pht
(
'Exact: ...'
),
'arguments'
=>
pht
(
'username'
),
'summary'
=>
pht
(
'Find results matching users exactly.'
),
'description'
=>
pht
(
"This function allows you to find results associated only with "
.
"a user, exactly, and not any of their projects or packages. For "
.
"example, this will find results associated with only `%s`:"
.
"
\n\n
%s
\n\n
"
,
'alincoln'
,
'> exact(alincoln)'
),
),
);
}
protected
function
didLoadResults
(
array
$results
)
{
foreach
(
$results
as
$result
)
{
$result
->
setColor
(
null
)
->
setTokenType
(
PhabricatorTypeaheadTokenView
::
TYPE_FUNCTION
)
->
setIcon
(
'fa-asterisk'
)
->
setPHID
(
'exact('
.
$result
->
getPHID
().
')'
)
->
setDisplayName
(
pht
(
'Exact User: %s'
,
$result
->
getDisplayName
()))
->
setName
(
$result
->
getName
().
' exact'
);
}
return
$results
;
}
protected
function
evaluateFunction
(
$function
,
array
$argv_list
)
{
$phids
=
array
();
foreach
(
$argv_list
as
$argv
)
{
$phids
[]
=
head
(
$argv
);
}
return
$this
->
resolvePHIDs
(
$phids
);
}
public
function
renderFunctionTokens
(
$function
,
array
$argv_list
)
{
$phids
=
array
();
foreach
(
$argv_list
as
$argv
)
{
$phids
[]
=
head
(
$argv
);
}
$phids
=
$this
->
resolvePHIDs
(
$phids
);
$tokens
=
$this
->
renderTokens
(
$phids
);
foreach
(
$tokens
as
$token
)
{
$token
->
setColor
(
null
);
if
(
$token
->
isInvalid
())
{
$token
->
setValue
(
pht
(
'Exact User: Invalid User'
));
}
else
{
$token
->
setIcon
(
'fa-asterisk'
)
->
setTokenType
(
PhabricatorTypeaheadTokenView
::
TYPE_FUNCTION
)
->
setKey
(
'exact('
.
$token
->
getKey
().
')'
)
->
setValue
(
pht
(
'Exact User: %s'
,
$token
->
getValue
()));
}
}
return
$tokens
;
}
private
function
resolvePHIDs
(
array
$phids
)
{
$usernames
=
array
();
foreach
(
$phids
as
$key
=>
$phid
)
{
if
(
phid_get_type
(
$phid
)
!=
PhabricatorPeopleUserPHIDType
::
TYPECONST
)
{
$usernames
[
$key
]
=
$phid
;
}
}
if
(
$usernames
)
{
$users
=
id
(
new
PhabricatorPeopleQuery
())
->
setViewer
(
$this
->
getViewer
())
->
withUsernames
(
$usernames
)
->
execute
();
$users
=
mpull
(
$users
,
null
,
'getUsername'
);
foreach
(
$usernames
as
$key
=>
$username
)
{
$user
=
idx
(
$users
,
$username
);
if
(
$user
)
{
$phids
[
$key
]
=
$user
->
getPHID
();
}
}
}
return
$phids
;
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Thu, May 29, 12:50 PM (20 h, 47 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
182286
Default Alt Text
DifferentialExactUserFunctionDatasource.php (3 KB)
Attached To
Mode
rP Phorge
Attached
Detach File
Event Timeline
Log In to Comment