public static function updateProjectSubproject(PhabricatorProject $project)
 {
     $dao = new PhabricatorProjectSubproject();
     $conn = $dao->establishConnection('w');
     $sql = array();
     foreach ($project->getSubprojectPHIDs() as $subproject_phid) {
         $sql[] = qsprintf($conn, '(%s, %s)', $project->getPHID(), $subproject_phid);
     }
     queryfx($conn, 'DELETE FROM %T WHERE projectPHID = %s', $dao->getTableName(), $project->getPHID());
     if ($sql) {
         queryfx($conn, 'INSERT INTO %T (projectPHID, subprojectPHID) VALUES %Q', $dao->getTableName(), implode(', ', $sql));
     }
 }
 public function save()
 {
     $result = parent::save();
     if ($this->subprojectsNeedUpdate) {
         // If we've changed the project PHIDs for this task, update the link
         // table.
         PhabricatorProjectSubproject::updateProjectSubproject($this);
         $this->subprojectsNeedUpdate = false;
     }
     return $result;
 }