Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F93584170
PhabricatorAuditTransaction.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
Fri, Nov 29, 22:43
Size
14 KB
Mime Type
text/x-php
Expires
Sun, Dec 1, 22:43 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
22664948
Attached To
rPH Phabricator
PhabricatorAuditTransaction.php
View Options
<?php
final
class
PhabricatorAuditTransaction
extends
PhabricatorModularTransaction
{
const
TYPE_COMMIT
=
'audit:commit'
;
const
MAILTAG_ACTION_CONCERN
=
'audit-action-concern'
;
const
MAILTAG_ACTION_ACCEPT
=
'audit-action-accept'
;
const
MAILTAG_ACTION_RESIGN
=
'audit-action-resign'
;
const
MAILTAG_ACTION_CLOSE
=
'audit-action-close'
;
const
MAILTAG_ADD_AUDITORS
=
'audit-add-auditors'
;
const
MAILTAG_ADD_CCS
=
'audit-add-ccs'
;
const
MAILTAG_COMMENT
=
'audit-comment'
;
const
MAILTAG_COMMIT
=
'audit-commit'
;
const
MAILTAG_PROJECTS
=
'audit-projects'
;
const
MAILTAG_OTHER
=
'audit-other'
;
public
function
getApplicationName
()
{
return
'audit'
;
}
public
function
getBaseTransactionClass
()
{
return
'DiffusionCommitTransactionType'
;
}
public
function
getApplicationTransactionType
()
{
return
PhabricatorRepositoryCommitPHIDType
::
TYPECONST
;
}
public
function
getApplicationTransactionCommentObject
()
{
return
new
PhabricatorAuditTransactionComment
();
}
public
function
getApplicationTransactionViewObject
()
{
return
new
PhabricatorAuditTransactionView
();
}
public
function
getRemarkupBlocks
()
{
$blocks
=
parent
::
getRemarkupBlocks
();
switch
(
$this
->
getTransactionType
())
{
case
self
::
TYPE_COMMIT
:
$data
=
$this
->
getNewValue
();
$blocks
[]
=
$data
[
'description'
];
break
;
}
return
$blocks
;
}
public
function
getRequiredHandlePHIDs
()
{
$phids
=
parent
::
getRequiredHandlePHIDs
();
$type
=
$this
->
getTransactionType
();
switch
(
$type
)
{
case
self
::
TYPE_COMMIT
:
$phids
[]
=
$this
->
getObjectPHID
();
$data
=
$this
->
getNewValue
();
if
(
$data
[
'authorPHID'
])
{
$phids
[]
=
$data
[
'authorPHID'
];
}
if
(
$data
[
'committerPHID'
])
{
$phids
[]
=
$data
[
'committerPHID'
];
}
break
;
case
PhabricatorAuditActionConstants
::
ADD_CCS
:
case
PhabricatorAuditActionConstants
::
ADD_AUDITORS
:
$old
=
$this
->
getOldValue
();
$new
=
$this
->
getNewValue
();
if
(!
is_array
(
$old
))
{
$old
=
array
();
}
if
(!
is_array
(
$new
))
{
$new
=
array
();
}
foreach
(
array_keys
(
$old
+
$new
)
as
$phid
)
{
$phids
[]
=
$phid
;
}
break
;
}
return
$phids
;
}
public
function
getActionName
()
{
switch
(
$this
->
getTransactionType
())
{
case
PhabricatorAuditActionConstants
::
ACTION
:
switch
(
$this
->
getNewValue
())
{
case
PhabricatorAuditActionConstants
::
CONCERN
:
return
pht
(
'Raised Concern'
);
case
PhabricatorAuditActionConstants
::
ACCEPT
:
return
pht
(
'Accepted'
);
case
PhabricatorAuditActionConstants
::
RESIGN
:
return
pht
(
'Resigned'
);
case
PhabricatorAuditActionConstants
::
CLOSE
:
return
pht
(
'Closed'
);
}
break
;
case
PhabricatorAuditActionConstants
::
ADD_AUDITORS
:
return
pht
(
'Added Auditors'
);
case
self
::
TYPE_COMMIT
:
return
pht
(
'Committed'
);
}
return
parent
::
getActionName
();
}
public
function
getColor
()
{
$type
=
$this
->
getTransactionType
();
switch
(
$type
)
{
case
PhabricatorAuditActionConstants
::
ACTION
:
switch
(
$this
->
getNewValue
())
{
case
PhabricatorAuditActionConstants
::
CONCERN
:
return
'red'
;
case
PhabricatorAuditActionConstants
::
ACCEPT
:
return
'green'
;
case
PhabricatorAuditActionConstants
::
RESIGN
:
return
'black'
;
case
PhabricatorAuditActionConstants
::
CLOSE
:
return
'indigo'
;
}
}
return
parent
::
getColor
();
}
public
function
getIcon
()
{
$type
=
$this
->
getTransactionType
();
switch
(
$type
)
{
case
PhabricatorAuditActionConstants
::
ACTION
:
switch
(
$this
->
getNewValue
())
{
case
PhabricatorAuditActionConstants
::
CONCERN
:
return
'fa-exclamation-circle'
;
case
PhabricatorAuditActionConstants
::
ACCEPT
:
return
'fa-check'
;
case
PhabricatorAuditActionConstants
::
RESIGN
:
return
'fa-plane'
;
case
PhabricatorAuditActionConstants
::
CLOSE
:
return
'fa-check'
;
}
}
return
parent
::
getIcon
();
}
public
function
getTitle
()
{
$old
=
$this
->
getOldValue
();
$new
=
$this
->
getNewValue
();
$author_handle
=
$this
->
renderHandleLink
(
$this
->
getAuthorPHID
());
$type
=
$this
->
getTransactionType
();
switch
(
$type
)
{
case
PhabricatorAuditActionConstants
::
ADD_CCS
:
case
PhabricatorAuditActionConstants
::
ADD_AUDITORS
:
if
(!
is_array
(
$old
))
{
$old
=
array
();
}
if
(!
is_array
(
$new
))
{
$new
=
array
();
}
$add
=
array_keys
(
array_diff_key
(
$new
,
$old
));
$rem
=
array_keys
(
array_diff_key
(
$old
,
$new
));
break
;
}
switch
(
$type
)
{
case
self
::
TYPE_COMMIT
:
$author
=
null
;
if
(
$new
[
'authorPHID'
])
{
$author
=
$this
->
renderHandleLink
(
$new
[
'authorPHID'
]);
}
else
{
$author
=
$new
[
'authorName'
];
}
$committer
=
null
;
if
(
$new
[
'committerPHID'
])
{
$committer
=
$this
->
renderHandleLink
(
$new
[
'committerPHID'
]);
}
else
if
(
$new
[
'committerName'
])
{
$committer
=
$new
[
'committerName'
];
}
$commit
=
$this
->
renderHandleLink
(
$this
->
getObjectPHID
());
if
(!
$committer
)
{
$committer
=
$author
;
$author
=
null
;
}
if
(
$author
)
{
$title
=
pht
(
'%s committed %s (authored by %s).'
,
$committer
,
$commit
,
$author
);
}
else
{
$title
=
pht
(
'%s committed %s.'
,
$committer
,
$commit
);
}
return
$title
;
case
PhabricatorAuditActionConstants
::
INLINE
:
return
pht
(
'%s added inline comments.'
,
$author_handle
);
case
PhabricatorAuditActionConstants
::
ADD_CCS
:
if
(
$add
&&
$rem
)
{
return
pht
(
'%s edited subscribers; added: %s, removed: %s.'
,
$author_handle
,
$this
->
renderHandleList
(
$add
),
$this
->
renderHandleList
(
$rem
));
}
else
if
(
$add
)
{
return
pht
(
'%s added subscribers: %s.'
,
$author_handle
,
$this
->
renderHandleList
(
$add
));
}
else
if
(
$rem
)
{
return
pht
(
'%s removed subscribers: %s.'
,
$author_handle
,
$this
->
renderHandleList
(
$rem
));
}
else
{
return
pht
(
'%s added subscribers...'
,
$author_handle
);
}
case
PhabricatorAuditActionConstants
::
ADD_AUDITORS
:
if
(
$add
&&
$rem
)
{
return
pht
(
'%s edited auditors; added: %s, removed: %s.'
,
$author_handle
,
$this
->
renderHandleList
(
$add
),
$this
->
renderHandleList
(
$rem
));
}
else
if
(
$add
)
{
return
pht
(
'%s added auditors: %s.'
,
$author_handle
,
$this
->
renderHandleList
(
$add
));
}
else
if
(
$rem
)
{
return
pht
(
'%s removed auditors: %s.'
,
$author_handle
,
$this
->
renderHandleList
(
$rem
));
}
else
{
return
pht
(
'%s added auditors...'
,
$author_handle
);
}
case
PhabricatorAuditActionConstants
::
ACTION
:
switch
(
$new
)
{
case
PhabricatorAuditActionConstants
::
ACCEPT
:
return
pht
(
'%s accepted this commit.'
,
$author_handle
);
case
PhabricatorAuditActionConstants
::
CONCERN
:
return
pht
(
'%s raised a concern with this commit.'
,
$author_handle
);
case
PhabricatorAuditActionConstants
::
RESIGN
:
return
pht
(
'%s resigned from this audit.'
,
$author_handle
);
case
PhabricatorAuditActionConstants
::
CLOSE
:
return
pht
(
'%s closed this audit.'
,
$author_handle
);
}
}
return
parent
::
getTitle
();
}
public
function
getTitleForFeed
()
{
$old
=
$this
->
getOldValue
();
$new
=
$this
->
getNewValue
();
$author_handle
=
$this
->
renderHandleLink
(
$this
->
getAuthorPHID
());
$object_handle
=
$this
->
renderHandleLink
(
$this
->
getObjectPHID
());
$type
=
$this
->
getTransactionType
();
switch
(
$type
)
{
case
PhabricatorAuditActionConstants
::
ADD_CCS
:
case
PhabricatorAuditActionConstants
::
ADD_AUDITORS
:
if
(!
is_array
(
$old
))
{
$old
=
array
();
}
if
(!
is_array
(
$new
))
{
$new
=
array
();
}
$add
=
array_keys
(
array_diff_key
(
$new
,
$old
));
$rem
=
array_keys
(
array_diff_key
(
$old
,
$new
));
break
;
}
switch
(
$type
)
{
case
self
::
TYPE_COMMIT
:
$author
=
null
;
if
(
$new
[
'authorPHID'
])
{
$author
=
$this
->
renderHandleLink
(
$new
[
'authorPHID'
]);
}
else
{
$author
=
$new
[
'authorName'
];
}
$committer
=
null
;
if
(
$new
[
'committerPHID'
])
{
$committer
=
$this
->
renderHandleLink
(
$new
[
'committerPHID'
]);
}
else
if
(
$new
[
'committerName'
])
{
$committer
=
$new
[
'committerName'
];
}
if
(!
$committer
)
{
$committer
=
$author
;
$author
=
null
;
}
if
(
$author
)
{
$title
=
pht
(
'%s committed %s (authored by %s).'
,
$committer
,
$object_handle
,
$author
);
}
else
{
$title
=
pht
(
'%s committed %s.'
,
$committer
,
$object_handle
);
}
return
$title
;
case
PhabricatorAuditActionConstants
::
INLINE
:
return
pht
(
'%s added inline comments to %s.'
,
$author_handle
,
$object_handle
);
case
PhabricatorAuditActionConstants
::
ADD_AUDITORS
:
if
(
$add
&&
$rem
)
{
return
pht
(
'%s edited auditors for %s; added: %s, removed: %s.'
,
$author_handle
,
$object_handle
,
$this
->
renderHandleList
(
$add
),
$this
->
renderHandleList
(
$rem
));
}
else
if
(
$add
)
{
return
pht
(
'%s added auditors to %s: %s.'
,
$author_handle
,
$object_handle
,
$this
->
renderHandleList
(
$add
));
}
else
if
(
$rem
)
{
return
pht
(
'%s removed auditors from %s: %s.'
,
$author_handle
,
$object_handle
,
$this
->
renderHandleList
(
$rem
));
}
else
{
return
pht
(
'%s added auditors to %s...'
,
$author_handle
,
$object_handle
);
}
case
PhabricatorAuditActionConstants
::
ACTION
:
switch
(
$new
)
{
case
PhabricatorAuditActionConstants
::
ACCEPT
:
return
pht
(
'%s accepted %s.'
,
$author_handle
,
$object_handle
);
case
PhabricatorAuditActionConstants
::
CONCERN
:
return
pht
(
'%s raised a concern with %s.'
,
$author_handle
,
$object_handle
);
case
PhabricatorAuditActionConstants
::
RESIGN
:
return
pht
(
'%s resigned from auditing %s.'
,
$author_handle
,
$object_handle
);
case
PhabricatorAuditActionConstants
::
CLOSE
:
return
pht
(
'%s closed the audit of %s.'
,
$author_handle
,
$object_handle
);
}
}
return
parent
::
getTitleForFeed
();
}
public
function
getBodyForFeed
(
PhabricatorFeedStory
$story
)
{
switch
(
$this
->
getTransactionType
())
{
case
self
::
TYPE_COMMIT
:
$data
=
$this
->
getNewValue
();
return
$story
->
renderSummary
(
$data
[
'summary'
]);
}
return
parent
::
getBodyForFeed
(
$story
);
}
public
function
isInlineCommentTransaction
()
{
switch
(
$this
->
getTransactionType
())
{
case
PhabricatorAuditActionConstants
::
INLINE
:
return
true
;
}
return
parent
::
isInlineCommentTransaction
();
}
public
function
getBodyForMail
()
{
switch
(
$this
->
getTransactionType
())
{
case
self
::
TYPE_COMMIT
:
$data
=
$this
->
getNewValue
();
return
$data
[
'description'
];
}
return
parent
::
getBodyForMail
();
}
public
function
getMailTags
()
{
$tags
=
array
();
switch
(
$this
->
getTransactionType
())
{
case
DiffusionCommitAcceptTransaction
::
TRANSACTIONTYPE
:
$tags
[]
=
self
::
MAILTAG_ACTION_ACCEPT
;
break
;
case
DiffusionCommitConcernTransaction
::
TRANSACTIONTYPE
:
$tags
[]
=
self
::
MAILTAG_ACTION_CONCERN
;
break
;
case
DiffusionCommitResignTransaction
::
TRANSACTIONTYPE
:
$tags
[]
=
self
::
MAILTAG_ACTION_RESIGN
;
break
;
case
DiffusionCommitAuditorsTransaction
::
TRANSACTIONTYPE
:
$tags
[]
=
self
::
MAILTAG_ADD_AUDITORS
;
break
;
case
PhabricatorAuditActionConstants
::
ACTION
:
switch
(
$this
->
getNewValue
())
{
case
PhabricatorAuditActionConstants
::
CONCERN
:
$tags
[]
=
self
::
MAILTAG_ACTION_CONCERN
;
break
;
case
PhabricatorAuditActionConstants
::
ACCEPT
:
$tags
[]
=
self
::
MAILTAG_ACTION_ACCEPT
;
break
;
case
PhabricatorAuditActionConstants
::
RESIGN
:
$tags
[]
=
self
::
MAILTAG_ACTION_RESIGN
;
break
;
case
PhabricatorAuditActionConstants
::
CLOSE
:
$tags
[]
=
self
::
MAILTAG_ACTION_CLOSE
;
break
;
}
break
;
case
PhabricatorAuditActionConstants
::
ADD_AUDITORS
:
$tags
[]
=
self
::
MAILTAG_ADD_AUDITORS
;
break
;
case
PhabricatorAuditActionConstants
::
ADD_CCS
:
$tags
[]
=
self
::
MAILTAG_ADD_CCS
;
break
;
case
PhabricatorAuditActionConstants
::
INLINE
:
case
PhabricatorTransactions
::
TYPE_COMMENT
:
$tags
[]
=
self
::
MAILTAG_COMMENT
;
break
;
case
self
::
TYPE_COMMIT
:
$tags
[]
=
self
::
MAILTAG_COMMIT
;
break
;
case
PhabricatorTransactions
::
TYPE_EDGE
:
switch
(
$this
->
getMetadataValue
(
'edge:type'
))
{
case
PhabricatorProjectObjectHasProjectEdgeType
::
EDGECONST
:
$tags
[]
=
self
::
MAILTAG_PROJECTS
;
break
;
case
PhabricatorObjectHasSubscriberEdgeType
::
EDGECONST
:
$tags
[]
=
self
::
MAILTAG_ADD_CCS
;
break
;
default
:
$tags
[]
=
self
::
MAILTAG_OTHER
;
break
;
}
break
;
default
:
$tags
[]
=
self
::
MAILTAG_OTHER
;
break
;
}
return
$tags
;
}
public
function
shouldDisplayGroupWith
(
array
$group
)
{
// Make the "This commit now requires audit." state message stand alone.
$type_state
=
DiffusionCommitStateTransaction
::
TRANSACTIONTYPE
;
if
(
$this
->
getTransactionType
()
==
$type_state
)
{
return
false
;
}
foreach
(
$group
as
$xaction
)
{
if
(
$xaction
->
getTransactionType
()
==
$type_state
)
{
return
false
;
}
}
return
parent
::
shouldDisplayGroupWith
(
$group
);
}
}
Event Timeline
Log In to Comment