Index: resources/sql/autopatches/20170322.reviewers.04.actor.sql =================================================================== --- /dev/null +++ resources/sql/autopatches/20170322.reviewers.04.actor.sql @@ -0,0 +1,2 @@ +ALTER TABLE {$NAMESPACE}_differential.differential_reviewer + ADD lastActorPHID VARBINARY(64); Index: src/applications/differential/storage/DifferentialReviewer.php =================================================================== --- src/applications/differential/storage/DifferentialReviewer.php +++ src/applications/differential/storage/DifferentialReviewer.php @@ -8,6 +8,7 @@ protected $reviewerStatus; protected $lastActionDiffPHID; protected $lastCommentDiffPHID; + protected $lastActorPHID; private $authority = array(); @@ -17,6 +18,7 @@ 'reviewerStatus' => 'text64', 'lastActionDiffPHID' => 'phid?', 'lastCommentDiffPHID' => 'phid?', + 'lastActorPHID' => 'phid?', ), self::CONFIG_KEY_SCHEMA => array( 'key_revision' => array( Index: src/applications/differential/xaction/DifferentialRevisionReviewTransaction.php =================================================================== --- src/applications/differential/xaction/DifferentialRevisionReviewTransaction.php +++ src/applications/differential/xaction/DifferentialRevisionReviewTransaction.php @@ -198,12 +198,17 @@ ->setReviewerPHID($dst_phid); } + $old_status = $reviewer->getReviewerStatus(); $reviewer->setReviewerStatus($status); if ($diff_phid) { $reviewer->setLastActionDiffPHID($diff_phid); } + if ($old_status !== $status) { + $reviewer->setLastActorPHID($this->getActingAsPHID()); + } + if ($status == DifferentialReviewerStatus::STATUS_RESIGNED) { if ($reviewer->getID()) { $reviewer->delete();