protected function loadPage()
 {
     $table = new PhabricatorRepositoryPushLog();
     $conn_r = $table->establishConnection('r');
     $data = queryfx_all($conn_r, 'SELECT * FROM %T %Q %Q %Q', $table->getTableName(), $this->buildWhereClause($conn_r), $this->buildOrderClause($conn_r), $this->buildLimitClause($conn_r));
     return $table->loadAllFromArray($data);
 }
 public function renderConditionValue(PhabricatorUser $viewer, $value)
 {
     $change_map = PhabricatorRepositoryPushLog::getHeraldChangeFlagConditionOptions();
     foreach ($value as $index => $val) {
         $name = idx($change_map, $val);
         if ($name) {
             $value[$index] = $name;
         }
     }
     return phutil_implode_html(', ', $value);
 }
<?php

$table = new PhabricatorRepositoryPushLog();
$conn_w = $table->establishConnection('w');
echo pht('Assigning PHIDs to push logs...') . "\n";
$logs = new LiskMigrationIterator($table);
foreach ($logs as $log) {
    $id = $log->getID();
    echo pht('Updating %s...', $id) . "\n";
    queryfx($conn_w, 'UPDATE %T SET phid = %s WHERE id = %d', $table->getTableName(), $log->generatePHID(), $id);
}
echo pht('Done.') . "\n";
 private function newPushLog()
 {
     // NOTE: We generate PHIDs up front so the Herald transcripts can pick them
     // up.
     $phid = id(new PhabricatorRepositoryPushLog())->generatePHID();
     $device = AlmanacKeys::getLiveDevice();
     if ($device) {
         $device_phid = $device->getPHID();
     } else {
         $device_phid = null;
     }
     return PhabricatorRepositoryPushLog::initializeNewLog($this->getViewer())->setPHID($phid)->setDevicePHID($device_phid)->setRepositoryPHID($this->getRepository()->getPHID())->attachRepository($this->getRepository())->setEpoch(time());
 }
 private function setupEditorBehavior(HeraldRule $rule, array $handles, HeraldAdapter $adapter)
 {
     $serial_conditions = array(array('default', 'default', ''));
     if ($rule->getConditions()) {
         $serial_conditions = array();
         foreach ($rule->getConditions() as $condition) {
             $value = $adapter->getEditorValueForCondition($this->getViewer(), $condition, $handles);
             $serial_conditions[] = array($condition->getFieldName(), $condition->getFieldCondition(), $value);
         }
     }
     $serial_actions = array(array('default', ''));
     if ($rule->getActions()) {
         $serial_actions = array();
         foreach ($rule->getActions() as $action) {
             switch ($action->getAction()) {
                 case HeraldAdapter::ACTION_FLAG:
                 case HeraldAdapter::ACTION_BLOCK:
                     $current_value = $action->getTarget();
                     break;
                 default:
                     if (is_array($action->getTarget())) {
                         $target_map = array();
                         foreach ((array) $action->getTarget() as $fbid) {
                             $target_map[$fbid] = $handles[$fbid]->getName();
                         }
                         $current_value = $target_map;
                     } else {
                         $current_value = $action->getTarget();
                     }
                     break;
             }
             $serial_actions[] = array($action->getAction(), $current_value);
         }
     }
     $all_rules = $this->loadRulesThisRuleMayDependUpon($rule);
     $all_rules = mpull($all_rules, 'getName', 'getPHID');
     asort($all_rules);
     $all_fields = $adapter->getFieldNameMap();
     $all_conditions = $adapter->getConditionNameMap();
     $all_actions = $adapter->getActionNameMap($rule->getRuleType());
     $fields = $adapter->getFields();
     $field_map = array_select_keys($all_fields, $fields);
     // Populate any fields which exist in the rule but which we don't know the
     // names of, so that saving a rule without touching anything doesn't change
     // it.
     foreach ($rule->getConditions() as $condition) {
         $field_name = $condition->getFieldName();
         if (empty($field_map[$field_name])) {
             $field_map[$field_name] = pht('<Unknown Field "%s">', $field_name);
         }
     }
     $actions = $adapter->getActions($rule->getRuleType());
     $action_map = array_select_keys($all_actions, $actions);
     // Populate any actions which exist in the rule but which we don't know the
     // names of, so that saving a rule without touching anything doesn't change
     // it.
     foreach ($rule->getActions() as $action) {
         $action_name = $action->getAction();
         if (empty($action_map[$action_name])) {
             $action_map[$action_name] = pht('<Unknown Action "%s">', $action_name);
         }
     }
     $config_info = array();
     $config_info['fields'] = $field_map;
     $config_info['conditions'] = $all_conditions;
     $config_info['actions'] = $action_map;
     foreach ($config_info['fields'] as $field => $name) {
         try {
             $field_conditions = $adapter->getConditionsForField($field);
         } catch (Exception $ex) {
             $field_conditions = array(HeraldAdapter::CONDITION_UNCONDITIONALLY);
         }
         $config_info['conditionMap'][$field] = $field_conditions;
     }
     foreach ($config_info['fields'] as $field => $fname) {
         foreach ($config_info['conditionMap'][$field] as $condition) {
             $value_type = $adapter->getValueTypeForFieldAndCondition($field, $condition);
             $config_info['values'][$field][$condition] = $value_type;
         }
     }
     $config_info['rule_type'] = $rule->getRuleType();
     foreach ($config_info['actions'] as $action => $name) {
         try {
             $action_value = $adapter->getValueTypeForAction($action, $rule->getRuleType());
         } catch (Exception $ex) {
             $action_value = array(HeraldAdapter::VALUE_NONE);
         }
         $config_info['targets'][$action] = $action_value;
     }
     $changeflag_options = PhabricatorRepositoryPushLog::getHeraldChangeFlagConditionOptions();
     Javelin::initBehavior('herald-rule-editor', array('root' => 'herald-rule-edit-form', 'conditions' => (object) $serial_conditions, 'actions' => (object) $serial_actions, 'select' => array(HeraldAdapter::VALUE_CONTENT_SOURCE => array('options' => PhabricatorContentSource::getSourceNameMap(), 'default' => PhabricatorContentSource::SOURCE_WEB), HeraldAdapter::VALUE_FLAG_COLOR => array('options' => PhabricatorFlagColor::getColorNameMap(), 'default' => PhabricatorFlagColor::COLOR_BLUE), HeraldPreCommitRefAdapter::VALUE_REF_TYPE => array('options' => array(PhabricatorRepositoryPushLog::REFTYPE_BRANCH => pht('branch (git/hg)'), PhabricatorRepositoryPushLog::REFTYPE_TAG => pht('tag (git)'), PhabricatorRepositoryPushLog::REFTYPE_BOOKMARK => pht('bookmark (hg)')), 'default' => PhabricatorRepositoryPushLog::REFTYPE_BRANCH), HeraldPreCommitRefAdapter::VALUE_REF_CHANGE => array('options' => $changeflag_options, 'default' => PhabricatorRepositoryPushLog::CHANGEFLAG_ADD)), 'template' => $this->buildTokenizerTemplates($handles) + array('rules' => $all_rules), 'author' => array($rule->getAuthorPHID() => $handles[$rule->getAuthorPHID()]->getName()), 'info' => $config_info));
 }
Esempio n. 6
0
 private function renderConditionValueAsText(HeraldCondition $condition, PhabricatorHandleList $handles)
 {
     $value = $condition->getValue();
     if (!is_array($value)) {
         $value = array($value);
     }
     switch ($condition->getFieldName()) {
         case self::FIELD_TASK_PRIORITY:
             $priority_map = ManiphestTaskPriority::getTaskPriorityMap();
             foreach ($value as $index => $val) {
                 $name = idx($priority_map, $val);
                 if ($name) {
                     $value[$index] = $name;
                 }
             }
             break;
         case self::FIELD_TASK_STATUS:
             $status_map = ManiphestTaskStatus::getTaskStatusMap();
             foreach ($value as $index => $val) {
                 $name = idx($status_map, $val);
                 if ($name) {
                     $value[$index] = $name;
                 }
             }
             break;
         case HeraldPreCommitRefAdapter::FIELD_REF_CHANGE:
             $change_map = PhabricatorRepositoryPushLog::getHeraldChangeFlagConditionOptions();
             foreach ($value as $index => $val) {
                 $name = idx($change_map, $val);
                 if ($name) {
                     $value[$index] = $name;
                 }
             }
             break;
         default:
             foreach ($value as $index => $val) {
                 $handle = $handles->getHandleIfExists($val);
                 if ($handle) {
                     $value[$index] = $handle->renderLink();
                 }
             }
             break;
     }
     $value = phutil_implode_html(', ', $value);
     return $value;
 }
 private function newPushLog()
 {
     // NOTE: We generate PHIDs up front so the Herald transcripts can pick them
     // up.
     $phid = id(new PhabricatorRepositoryPushLog())->generatePHID();
     return PhabricatorRepositoryPushLog::initializeNewLog($this->getViewer())->setPHID($phid)->setRepositoryPHID($this->getRepository()->getPHID())->attachRepository($this->getRepository())->setEpoch(time());
 }
Esempio n. 8
0
 private function renderConditionValueAsText(HeraldCondition $condition, PhabricatorHandleList $handles, PhabricatorUser $viewer)
 {
     $impl = $this->getFieldImplementation($condition->getFieldName());
     if ($impl) {
         return $impl->renderConditionValue($viewer, $condition->getValue());
     }
     $value = $condition->getValue();
     if (!is_array($value)) {
         $value = array($value);
     }
     switch ($condition->getFieldName()) {
         case HeraldPreCommitRefAdapter::FIELD_REF_CHANGE:
             $change_map = PhabricatorRepositoryPushLog::getHeraldChangeFlagConditionOptions();
             foreach ($value as $index => $val) {
                 $name = idx($change_map, $val);
                 if ($name) {
                     $value[$index] = $name;
                 }
             }
             break;
         default:
             foreach ($value as $index => $val) {
                 $handle = $handles->getHandleIfExists($val);
                 if ($handle) {
                     $value[$index] = $handle->renderLink();
                 }
             }
             break;
     }
     $value = phutil_implode_html(', ', $value);
     return $value;
 }
 public function getHeraldFieldValueType($condition)
 {
     return id(new HeraldSelectFieldValue())->setKey(self::FIELDCONST)->setOptions(PhabricatorRepositoryPushLog::getHeraldChangeFlagConditionOptions())->setDefault(PhabricatorRepositoryPushLog::CHANGEFLAG_ADD);
 }