Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F81205479
DiffusionCommitActionTransaction.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Wed, Sep 4, 18:12
Size
3 KB
Mime Type
text/x-php
Expires
Fri, Sep 6, 18:12 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
20524622
Attached To
rPH Phabricator
DiffusionCommitActionTransaction.php
View Options
<?php
abstract
class
DiffusionCommitActionTransaction
extends
DiffusionCommitTransactionType
{
final
public
function
getCommitActionKey
()
{
return
$this
->
getPhobjectClassConstant
(
'ACTIONKEY'
,
32
);
}
public
function
isActionAvailable
(
$object
,
PhabricatorUser
$viewer
)
{
try
{
$this
->
validateAction
(
$object
,
$viewer
);
return
true
;
}
catch
(
Exception
$ex
)
{
return
false
;
}
}
abstract
protected
function
validateAction
(
$object
,
PhabricatorUser
$viewer
);
abstract
protected
function
getCommitActionLabel
();
public
function
getCommandKeyword
()
{
return
null
;
}
public
function
getCommandAliases
()
{
return
array
();
}
public
function
getCommandSummary
()
{
return
null
;
}
protected
function
getCommitActionOrder
()
{
return
1000
;
}
public
function
getCommitActionOrderVector
()
{
return
id
(
new
PhutilSortVector
())
->
addInt
(
$this
->
getCommitActionOrder
());
}
protected
function
getCommitActionGroupKey
()
{
return
DiffusionCommitEditEngine
::
ACTIONGROUP_COMMIT
;
}
protected
function
getCommitActionDescription
()
{
return
null
;
}
public
static
function
loadAllActions
()
{
return
id
(
new
PhutilClassMapQuery
())
->
setAncestorClass
(
__CLASS__
)
->
setUniqueMethod
(
'getCommitActionKey'
)
->
execute
();
}
protected
function
isViewerCommitAuthor
(
PhabricatorRepositoryCommit
$commit
,
PhabricatorUser
$viewer
)
{
if
(!
$viewer
->
getPHID
())
{
return
false
;
}
return
(
$viewer
->
getPHID
()
===
$commit
->
getAuthorPHID
());
}
public
function
newEditField
(
PhabricatorRepositoryCommit
$commit
,
PhabricatorUser
$viewer
)
{
// Actions in the "audit" group, like "Accept Commit", do not require
// that the actor be able to edit the commit.
$group_audit
=
DiffusionCommitEditEngine
::
ACTIONGROUP_AUDIT
;
$is_audit
=
(
$this
->
getCommitActionGroupKey
()
==
$group_audit
);
$field
=
id
(
new
PhabricatorApplyEditField
())
->
setKey
(
$this
->
getCommitActionKey
())
->
setTransactionType
(
$this
->
getTransactionTypeConstant
())
->
setCanApplyWithoutEditCapability
(
$is_audit
)
->
setValue
(
true
);
if
(
$this
->
isActionAvailable
(
$commit
,
$viewer
))
{
$label
=
$this
->
getCommitActionLabel
();
if
(
$label
!==
null
)
{
$field
->
setCommentActionLabel
(
$label
);
$description
=
$this
->
getCommitActionDescription
();
$field
->
setActionDescription
(
$description
);
$group_key
=
$this
->
getCommitActionGroupKey
();
$field
->
setCommentActionGroupKey
(
$group_key
);
$field
->
setActionConflictKey
(
'commit.action'
);
}
}
return
$field
;
}
public
function
validateTransactions
(
$object
,
array
$xactions
)
{
$errors
=
array
();
$actor
=
$this
->
getActor
();
$action_exception
=
null
;
try
{
$this
->
validateAction
(
$object
,
$actor
);
}
catch
(
Exception
$ex
)
{
$action_exception
=
$ex
;
}
foreach
(
$xactions
as
$xaction
)
{
if
(
$action_exception
)
{
$errors
[]
=
$this
->
newInvalidError
(
$action_exception
->
getMessage
(),
$xaction
);
}
}
return
$errors
;
}
}
Event Timeline
Log In to Comment