getID()) { return array(); } return id(new DifferentialChangeset())->loadAllWhere( 'diffID = %d', $this->getID()); } public function delete() { $this->openTransaction(); foreach ($this->loadChangesets() as $changeset) { $changeset->delete(); } $ret = parent::delete(); $this->saveTransaction(); return $ret; } public static function newFromRawChanges(array $changes) { $diff = new DifferentialDiff(); $lines = 0; foreach ($changes as $change) { $changeset = new DifferentialChangeset(); $add_lines = 0; $del_lines = 0; foreach ($change->getHunks() as $hunk) { $dhunk = new Hunk(); $dhunk->setOldOffset($hunk->getOldOffset()); $dhunk->setOldLen($hunk->getOldLength()); $dhunk->setNewOffset($hunk->getNewOffset()); $dhunk->setNewLen($hunk->getNewLength()); $dhunk->setChanges($hunk->getCorpus()); $changeset->addHunk($dhunk); $add_lines += $hunk->getAddLines(); $del_lines += $hunk->getDelLines(); $lines += $add_lines + $del_lines; } $changeset->setHunkCount(count($change->getHunks())); $changeset->setOldFile($change->getOldPath()); $changeset->setNewFile($change->getCurrentPath()); $changeset->setFilename($change->getCurrentPath()); $changeset->setChangeType($change->getType()); $changeset->setFileType($change->getFileType()); $changeset->setMetadata($change->getAllMetadata()); $changeset->setOldProperties($change->getOldProperties()); $changeset->setNewProperties($change->getNewProperties()); $changeset->setAwayPaths($change->getAwayPaths()); $changeset->setAddLines($add_lines); $changeset->setDelLines($del_lines); $diff->addChangeset($changeset); } $diff->setLineCount($lines); return $diff; } }