当前位置: 首页>>代码示例>>PHP>>正文


PHP PhabricatorApplicationTransactionEditor::applyBuiltinExternalTransaction方法代码示例

本文整理汇总了PHP中PhabricatorApplicationTransactionEditor::applyBuiltinExternalTransaction方法的典型用法代码示例。如果您正苦于以下问题:PHP PhabricatorApplicationTransactionEditor::applyBuiltinExternalTransaction方法的具体用法?PHP PhabricatorApplicationTransactionEditor::applyBuiltinExternalTransaction怎么用?PHP PhabricatorApplicationTransactionEditor::applyBuiltinExternalTransaction使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在PhabricatorApplicationTransactionEditor的用法示例。


在下文中一共展示了PhabricatorApplicationTransactionEditor::applyBuiltinExternalTransaction方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: applyBuiltinExternalTransaction

 protected function applyBuiltinExternalTransaction(PhabricatorLiskDAO $object, PhabricatorApplicationTransaction $xaction)
 {
     switch ($xaction->getTransactionType()) {
         case PhabricatorTransactions::TYPE_INLINESTATE:
             $table = new DifferentialTransactionComment();
             $conn_w = $table->establishConnection('w');
             foreach ($xaction->getNewValue() as $phid => $state) {
                 queryfx($conn_w, 'UPDATE %T SET fixedState = %s WHERE phid = %s', $table->getTableName(), $state, $phid);
             }
             break;
     }
     return parent::applyBuiltinExternalTransaction($object, $xaction);
 }
开发者ID:kristain,项目名称:phabricator,代码行数:13,代码来源:DifferentialTransactionEditor.php

示例2: applyBuiltinExternalTransaction

 protected function applyBuiltinExternalTransaction(PhabricatorLiskDAO $object, PhabricatorApplicationTransaction $xaction)
 {
     switch ($xaction->getTransactionType()) {
         case PhabricatorTransactions::TYPE_EDGE:
             $edge_type = $xaction->getMetadataValue('edge:type');
             switch ($edge_type) {
                 case PhabricatorProjectProjectHasMemberEdgeType::EDGECONST:
                 case PhabricatorObjectHasWatcherEdgeType::EDGECONST:
                     $old = $xaction->getOldValue();
                     $new = $xaction->getNewValue();
                     // When adding members or watchers, we add subscriptions.
                     $add = array_keys(array_diff_key($new, $old));
                     // When removing members, we remove their subscription too.
                     // When unwatching, we leave subscriptions, since it's fine to be
                     // subscribed to a project but not be a member of it.
                     $edge_const = PhabricatorProjectProjectHasMemberEdgeType::EDGECONST;
                     if ($edge_type == $edge_const) {
                         $rem = array_keys(array_diff_key($old, $new));
                     } else {
                         $rem = array();
                     }
                     // NOTE: The subscribe is "explicit" because there's no implicit
                     // unsubscribe, so Join -> Leave -> Join doesn't resubscribe you
                     // if we use an implicit subscribe, even though you never willfully
                     // unsubscribed. Not sure if adding implicit unsubscribe (which
                     // would not write the unsubscribe row) is justified to deal with
                     // this, which is a fairly weird edge case and pretty arguable both
                     // ways.
                     // Subscriptions caused by watches should also clearly be explicit,
                     // and that case is unambiguous.
                     id(new PhabricatorSubscriptionsEditor())->setActor($this->requireActor())->setObject($object)->subscribeExplicit($add)->unsubscribe($rem)->save();
                     if ($rem) {
                         // When removing members, also remove any watches on the project.
                         $edge_editor = new PhabricatorEdgeEditor();
                         foreach ($rem as $rem_phid) {
                             $edge_editor->removeEdge($object->getPHID(), PhabricatorObjectHasWatcherEdgeType::EDGECONST, $rem_phid);
                         }
                         $edge_editor->save();
                     }
                     break;
             }
             break;
     }
     return parent::applyBuiltinExternalTransaction($object, $xaction);
 }
开发者ID:pra85,项目名称:phabricator,代码行数:45,代码来源:PhabricatorProjectTransactionEditor.php


注:本文中的PhabricatorApplicationTransactionEditor::applyBuiltinExternalTransaction方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。