protected function getCustomTransactionNewValue(PhabricatorLiskDAO $object, PhabricatorApplicationTransaction $xaction)
 {
     switch ($xaction->getTransactionType()) {
         case PhabricatorProjectTransaction::TYPE_NAME:
         case PhabricatorProjectTransaction::TYPE_STATUS:
         case PhabricatorProjectTransaction::TYPE_IMAGE:
         case PhabricatorProjectTransaction::TYPE_ICON:
         case PhabricatorProjectTransaction::TYPE_COLOR:
         case PhabricatorProjectTransaction::TYPE_LOCKED:
         case PhabricatorProjectTransaction::TYPE_PARENT:
             return $xaction->getNewValue();
         case PhabricatorProjectTransaction::TYPE_SLUGS:
             return $this->normalizeSlugs($xaction->getNewValue());
         case PhabricatorProjectTransaction::TYPE_MILESTONE:
             $current = queryfx_one($object->establishConnection('w'), 'SELECT MAX(milestoneNumber) n
         FROM %T
         WHERE parentProjectPHID = %s', $object->getTableName(), $object->getParentProject()->getPHID());
             if (!$current) {
                 $number = 1;
             } else {
                 $number = (int) $current['n'] + 1;
             }
             return $number;
     }
     return parent::getCustomTransactionNewValue($object, $xaction);
 }
 protected function buildLiskObjectSchema(PhabricatorLiskDAO $object)
 {
     $this->buildRawSchema($object->getApplicationName(), $object->getTableName(), $object->getSchemaColumns(), $object->getSchemaKeys());
 }
 protected function loadStandardPageRows(PhabricatorLiskDAO $table)
 {
     $conn = $table->establishConnection('r');
     $rows = queryfx_all($conn, '%Q FROM %T %Q %Q %Q %Q %Q %Q %Q', $this->buildSelectClause($conn), $table->getTableName(), (string) $this->getPrimaryTableAlias(), $this->buildJoinClause($conn), $this->buildWhereClause($conn), $this->buildGroupClause($conn), $this->buildHavingClause($conn), $this->buildOrderClause($conn), $this->buildLimitClause($conn));
     return $rows;
 }