public static function updateTaskProjects(ManiphestTask $task)
 {
     $dao = new ManiphestTaskProject();
     $conn = $dao->establishConnection('w');
     $sql = array();
     foreach ($task->getProjectPHIDs() as $project_phid) {
         $sql[] = qsprintf($conn, '(%s, %s)', $task->getPHID(), $project_phid);
     }
     queryfx($conn, 'DELETE FROM %T WHERE taskPHID = %s', $dao->getTableName(), $task->getPHID());
     if ($sql) {
         queryfx($conn, 'INSERT INTO %T (taskPHID, projectPHID) VALUES %Q', $dao->getTableName(), implode(', ', $sql));
     }
 }
Example #2
0
 public function save()
 {
     if (!$this->mailKey) {
         $this->mailKey = Filesystem::readRandomCharacters(20);
     }
     $result = parent::save();
     if ($this->projectsNeedUpdate) {
         // If we've changed the project PHIDs for this task, update the link
         // table.
         ManiphestTaskProject::updateTaskProjects($this);
         $this->projectsNeedUpdate = false;
     }
     if ($this->subscribersNeedUpdate) {
         // If we've changed the subscriber PHIDs for this task, update the link
         // table.
         ManiphestTaskSubscriber::updateTaskSubscribers($this);
         $this->subscribersNeedUpdate = false;
     }
     if ($this->auxiliaryDirty) {
         $this->writeAuxiliaryUpdates();
         $this->auxiliaryDirty = array();
     }
     return $result;
 }
 private function buildXProjectJoinClause($conn)
 {
     if (!$this->xprojectPHIDs) {
         return null;
     }
     $project_dao = new ManiphestTaskProject();
     return qsprintf($conn, 'LEFT JOIN %T xproject ON xproject.taskPHID = task.phid
     AND xproject.projectPHID IN (%Ls)', $project_dao->getTableName(), $this->xprojectPHIDs);
 }
Example #4
0
#!/usr/bin/env php
<?php 
/*
 * Copyright 2011 Facebook, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
$root = dirname(dirname(dirname(__FILE__)));
require_once $root . '/scripts/__init_script__.php';
ini_set('memory_limit', -1);
$tasks = id(new ManiphestTask())->loadAll();
echo "Updating relationships for " . count($tasks) . " tasks";
foreach ($tasks as $task) {
    ManiphestTaskProject::updateTaskProjects($task);
    ManiphestTaskSubscriber::updateTaskSubscribers($task);
    echo '.';
}
echo "\nDone.\n";
 public function save()
 {
     if (!$this->mailKey) {
         $this->mailKey = sha1(Filesystem::readRandomBytes(20));
     }
     $result = parent::save();
     if ($this->projectsNeedUpdate) {
         // If we've changed the project PHIDs for this task, update the link
         // table.
         ManiphestTaskProject::updateTaskProjects($this);
         $this->projectsNeedUpdate = false;
     }
     if ($this->subscribersNeedUpdate) {
         // If we've changed the subscriber PHIDs for this task, update the link
         // table.
         ManiphestTaskSubscriber::updateTaskSubscribers($this);
         $this->subscribersNeedUpdate = false;
     }
     return $result;
 }
 private function buildProjectJoinClause($conn)
 {
     if (!$this->projectPHIDs) {
         return null;
     }
     $project_dao = new ManiphestTaskProject();
     return qsprintf($conn, 'JOIN %T project ON project.taskPHID = task.phid', $project_dao->getTableName());
 }