protected function applyCustomInternalTransaction(PhabricatorLiskDAO $object, PhabricatorApplicationTransaction $xaction)
 {
     $new = $xaction->getNewValue();
     switch ($xaction->getTransactionType()) {
         case PhabricatorSpacesNamespaceTransaction::TYPE_NAME:
             $object->setNamespaceName($new);
             return;
         case PhabricatorSpacesNamespaceTransaction::TYPE_DESCRIPTION:
             $object->setDescription($new);
             return;
         case PhabricatorSpacesNamespaceTransaction::TYPE_DEFAULT:
             $object->setIsDefaultNamespace($new ? 1 : null);
             return;
         case PhabricatorSpacesNamespaceTransaction::TYPE_ARCHIVE:
             $object->setIsArchived($new ? 1 : 0);
             return;
         case PhabricatorTransactions::TYPE_VIEW_POLICY:
             $object->setViewPolicy($new);
             return;
         case PhabricatorTransactions::TYPE_EDIT_POLICY:
             $object->setEditPolicy($new);
             return;
     }
     return parent::applyCustomInternalTransaction($object, $xaction);
 }
 protected function applyCustomInternalTransaction(PhabricatorLiskDAO $object, PhabricatorApplicationTransaction $xaction)
 {
     switch ($xaction->getTransactionType()) {
         case PhabricatorDashboardTransaction::TYPE_NAME:
             $object->setName($xaction->getNewValue());
             return;
         case PhabricatorDashboardTransaction::TYPE_LAYOUT_MODE:
             $old_layout = $object->getLayoutConfigObject();
             $new_layout = clone $old_layout;
             $new_layout->setLayoutMode($xaction->getNewValue());
             if ($old_layout->isMultiColumnLayout() != $new_layout->isMultiColumnLayout()) {
                 $panel_phids = $object->getPanelPHIDs();
                 $new_locations = $new_layout->getDefaultPanelLocations();
                 foreach ($panel_phids as $panel_phid) {
                     $new_locations[0][] = $panel_phid;
                 }
                 $new_layout->setPanelLocations($new_locations);
             }
             $object->setLayoutConfigFromObject($new_layout);
             return;
         case PhabricatorTransactions::TYPE_VIEW_POLICY:
             $object->setViewPolicy($xaction->getNewValue());
             return;
         case PhabricatorTransactions::TYPE_EDIT_POLICY:
             $object->setEditPolicy($xaction->getNewValue());
             return;
         case PhabricatorTransactions::TYPE_EDGE:
             return;
     }
     return parent::applyCustomInternalTransaction($object, $xaction);
 }
 protected function applyCustomInternalTransaction(PhabricatorLiskDAO $object, PhabricatorApplicationTransaction $xaction)
 {
     switch ($xaction->getTransactionType()) {
         case PhabricatorDashboardPanelTransaction::TYPE_NAME:
             $object->setName($xaction->getNewValue());
             return;
         case PhabricatorDashboardPanelTransaction::TYPE_ARCHIVE:
             $object->setIsArchived((int) $xaction->getNewValue());
             return;
         case PhabricatorTransactions::TYPE_VIEW_POLICY:
             $object->setViewPolicy($xaction->getNewValue());
             return;
         case PhabricatorTransactions::TYPE_EDIT_POLICY:
             $object->setEditPolicy($xaction->getNewValue());
             return;
     }
     return parent::applyCustomInternalTransaction($object, $xaction);
 }
 protected function applyCustomInternalTransaction(PhabricatorLiskDAO $object, PhabricatorApplicationTransaction $xaction)
 {
     switch ($xaction->getTransactionType()) {
         case PhluxTransaction::TYPE_EDIT_KEY:
             $object->setVariableKey($xaction->getNewValue());
             return;
         case PhluxTransaction::TYPE_EDIT_VALUE:
             $object->setVariableValue($xaction->getNewValue());
             return;
         case PhabricatorTransactions::TYPE_VIEW_POLICY:
             $object->setViewPolicy($xaction->getNewValue());
             return;
         case PhabricatorTransactions::TYPE_EDIT_POLICY:
             $object->setEditPolicy($xaction->getNewValue());
             return;
     }
     return parent::applyCustomInternalTransaction($object, $xaction);
 }
 private function applyInternalEffects(PhabricatorLiskDAO $object, PhabricatorApplicationTransaction $xaction)
 {
     switch ($xaction->getTransactionType()) {
         case PhabricatorTransactions::TYPE_BUILDABLE:
         case PhabricatorTransactions::TYPE_TOKEN:
             return;
         case PhabricatorTransactions::TYPE_VIEW_POLICY:
             $object->setViewPolicy($xaction->getNewValue());
             break;
         case PhabricatorTransactions::TYPE_EDIT_POLICY:
             $object->setEditPolicy($xaction->getNewValue());
             break;
         case PhabricatorTransactions::TYPE_CUSTOMFIELD:
             $field = $this->getCustomFieldForTransaction($object, $xaction);
             return $field->applyApplicationTransactionInternalEffects($xaction);
     }
     return $this->applyCustomInternalTransaction($object, $xaction);
 }
 protected function applyCustomInternalTransaction(PhabricatorLiskDAO $object, PhabricatorApplicationTransaction $xaction)
 {
     $status_review = ArcanistDifferentialRevisionStatus::NEEDS_REVIEW;
     $status_revision = ArcanistDifferentialRevisionStatus::NEEDS_REVISION;
     $status_plan = ArcanistDifferentialRevisionStatus::CHANGES_PLANNED;
     switch ($xaction->getTransactionType()) {
         case PhabricatorTransactions::TYPE_VIEW_POLICY:
             $object->setViewPolicy($xaction->getNewValue());
             return;
         case PhabricatorTransactions::TYPE_EDIT_POLICY:
             $object->setEditPolicy($xaction->getNewValue());
             return;
         case PhabricatorTransactions::TYPE_SUBSCRIBERS:
         case PhabricatorTransactions::TYPE_COMMENT:
         case DifferentialTransaction::TYPE_INLINE:
             return;
         case PhabricatorTransactions::TYPE_EDGE:
             return;
         case DifferentialTransaction::TYPE_UPDATE:
             if (!$this->getIsCloseByCommit() && ($object->getStatus() == $status_revision || $object->getStatus() == $status_plan)) {
                 $object->setStatus($status_review);
             }
             $diff = $this->requireDiff($xaction->getNewValue());
             $object->setLineCount($diff->getLineCount());
             $object->setRepositoryPHID($diff->getRepositoryPHID());
             $object->setArcanistProjectPHID($diff->getArcanistProjectPHID());
             $object->attachActiveDiff($diff);
             // TODO: Update the `diffPHID` once we add that.
             return;
         case DifferentialTransaction::TYPE_ACTION:
             switch ($xaction->getNewValue()) {
                 case DifferentialAction::ACTION_RESIGN:
                 case DifferentialAction::ACTION_ACCEPT:
                 case DifferentialAction::ACTION_REJECT:
                     // These have no direct effects, and affect review status only
                     // indirectly by altering reviewers with TYPE_EDGE transactions.
                     return;
                 case DifferentialAction::ACTION_ABANDON:
                     $object->setStatus(ArcanistDifferentialRevisionStatus::ABANDONED);
                     return;
                 case DifferentialAction::ACTION_RETHINK:
                     $object->setStatus($status_plan);
                     return;
                 case DifferentialAction::ACTION_RECLAIM:
                     $object->setStatus($status_review);
                     return;
                 case DifferentialAction::ACTION_REOPEN:
                     $object->setStatus($status_review);
                     return;
                 case DifferentialAction::ACTION_REQUEST:
                     $object->setStatus($status_review);
                     return;
                 case DifferentialAction::ACTION_CLOSE:
                     $object->setStatus(ArcanistDifferentialRevisionStatus::CLOSED);
                     return;
                 case DifferentialAction::ACTION_CLAIM:
                     $object->setAuthorPHID($this->getActingAsPHID());
                     return;
             }
             break;
     }
     return parent::applyCustomInternalTransaction($object, $xaction);
 }
 /**
  * @{class:PhabricatorTransactions} provides many built-in transactions
  * which should not require much - if any - code in specific applications.
  *
  * This method is a hook for the exceedingly-rare cases where you may need
  * to do **additional** work for built-in transactions. Developers should
  * extend this method, making sure to return the parent implementation
  * regardless of handling any transactions.
  *
  * See also @{method:applyBuiltinExternalTransaction}.
  */
 protected function applyBuiltinInternalTransaction(PhabricatorLiskDAO $object, PhabricatorApplicationTransaction $xaction)
 {
     switch ($xaction->getTransactionType()) {
         case PhabricatorTransactions::TYPE_VIEW_POLICY:
             $object->setViewPolicy($xaction->getNewValue());
             break;
         case PhabricatorTransactions::TYPE_EDIT_POLICY:
             $object->setEditPolicy($xaction->getNewValue());
             break;
         case PhabricatorTransactions::TYPE_JOIN_POLICY:
             $object->setJoinPolicy($xaction->getNewValue());
             break;
         case PhabricatorTransactions::TYPE_SPACE:
             $object->setSpacePHID($xaction->getNewValue());
             break;
     }
 }
 protected function applyCustomInternalTransaction(PhabricatorLiskDAO $object, PhabricatorApplicationTransaction $xaction)
 {
     switch ($xaction->getTransactionType()) {
         case PhabricatorProjectTransaction::TYPE_NAME:
             $object->setName($xaction->getNewValue());
             $object->setPhrictionSlug($xaction->getNewValue());
             return;
         case PhabricatorProjectTransaction::TYPE_SLUGS:
             return;
         case PhabricatorProjectTransaction::TYPE_STATUS:
             $object->setStatus($xaction->getNewValue());
             return;
         case PhabricatorProjectTransaction::TYPE_IMAGE:
             $object->setProfileImagePHID($xaction->getNewValue());
             return;
         case PhabricatorProjectTransaction::TYPE_ICON:
             $object->setIcon($xaction->getNewValue());
             return;
         case PhabricatorProjectTransaction::TYPE_COLOR:
             $object->setColor($xaction->getNewValue());
             return;
         case PhabricatorTransactions::TYPE_EDGE:
             return;
         case PhabricatorTransactions::TYPE_VIEW_POLICY:
             $object->setViewPolicy($xaction->getNewValue());
             return;
         case PhabricatorTransactions::TYPE_EDIT_POLICY:
             $object->setEditPolicy($xaction->getNewValue());
             return;
         case PhabricatorTransactions::TYPE_JOIN_POLICY:
             $object->setJoinPolicy($xaction->getNewValue());
             return;
     }
     return parent::applyCustomInternalTransaction($object, $xaction);
 }
 protected function applyCustomInternalTransaction(PhabricatorLiskDAO $object, PhabricatorApplicationTransaction $xaction)
 {
     switch ($xaction->getTransactionType()) {
         case PassphraseCredentialTransaction::TYPE_NAME:
             $object->setName($xaction->getNewValue());
             return;
         case PassphraseCredentialTransaction::TYPE_DESCRIPTION:
             $object->setDescription($xaction->getNewValue());
             return;
         case PassphraseCredentialTransaction::TYPE_USERNAME:
             $object->setUsername($xaction->getNewValue());
             return;
         case PassphraseCredentialTransaction::TYPE_SECRET_ID:
             $old_id = $object->getSecretID();
             if ($old_id) {
                 $this->destroySecret($old_id);
             }
             $object->setSecretID($xaction->getNewValue());
             return;
         case PassphraseCredentialTransaction::TYPE_DESTROY:
             // When destroying a credential, wipe out its secret.
             $is_destroyed = $xaction->getNewValue();
             $object->setIsDestroyed($is_destroyed);
             if ($is_destroyed) {
                 $secret_id = $object->getSecretID();
                 if ($secret_id) {
                     $this->destroySecret($secret_id);
                     $object->setSecretID(null);
                 }
             }
             return;
         case PhabricatorTransactions::TYPE_VIEW_POLICY:
             $object->setViewPolicy($xaction->getNewValue());
             return;
         case PhabricatorTransactions::TYPE_EDIT_POLICY:
             $object->setEditPolicy($xaction->getNewValue());
             return;
         case PassphraseCredentialTransaction::TYPE_LOOKEDATSECRET:
             return;
         case PassphraseCredentialTransaction::TYPE_LOCK:
             $object->setIsLocked((int) $xaction->getNewValue());
             return;
         case PassphraseCredentialTransaction::TYPE_CONDUIT:
             $object->setAllowConduit((int) $xaction->getNewValue());
             return;
     }
     return parent::applyCustomInternalTransaction($object, $xaction);
 }