[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/resources/sql/patches/ -> 098.heraldruletypemigration.php (source)

   1  <?php
   2  
   3  echo "Checking for rules that can be converted to 'personal'. ";
   4  $table = new HeraldRule();
   5  $table->openTransaction();
   6  $table->beginReadLocking();
   7  
   8  $rules = $table->loadAll();
   9  
  10  foreach ($rules as $rule) {
  11    if ($rule->getRuleType() !== HeraldRuleTypeConfig::RULE_TYPE_PERSONAL) {
  12      $actions = $rule->loadActions();
  13      $can_be_personal = true;
  14      foreach ($actions as $action) {
  15        $target = $action->getTarget();
  16        if (is_array($target)) {
  17          if (count($target) > 1) {
  18            $can_be_personal = false;
  19            break;
  20          } else {
  21            $targetPHID = head($target);
  22            if ($targetPHID !== $rule->getAuthorPHID()) {
  23              $can_be_personal = false;
  24              break;
  25            }
  26          }
  27        } else if ($target) {
  28          if ($target !== $rule->getAuthorPHID()) {
  29            $can_be_personal = false;
  30            break;
  31          }
  32        }
  33      }
  34  
  35      if ($can_be_personal) {
  36        $rule->setRuleType(HeraldRuleTypeConfig::RULE_TYPE_PERSONAL);
  37        queryfx(
  38          $rule->establishConnection('w'),
  39          'UPDATE %T SET ruleType = %s WHERE id = %d',
  40          $rule->getTableName(),
  41          $rule->getRuleType(),
  42          $rule->getID());
  43  
  44        echo "Setting rule '".$rule->getName()."' to personal. ";
  45      }
  46    }
  47  }
  48  
  49  $table->endReadLocking();
  50  $table->saveTransaction();
  51  echo "Done.\n";


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1