3 final class DiffusionRenameHistoryQuery
extends Phobject
{
10 public function setViewer(PhabricatorUser
$viewer) {
11 $this->viewer
= $viewer;
15 public function getWasCreated() {
16 return $this->wasCreated
;
19 public function setRequest(DiffusionRequest
$request) {
20 $this->request
= $request;
24 public function setOldCommit($old_commit) {
25 $this->oldCommit
= $old_commit;
29 public function getOldCommit() {
30 return $this->oldCommit
;
33 public function loadOldFilename() {
34 $drequest = $this->request
;
35 $repository_id = $drequest->getRepository()->getID();
36 $conn_r = id(new PhabricatorRepository())->establishConnection('r');
38 $commit_id = $this->loadCommitId($this->oldCommit
);
39 $old_commit_sequence = $this->loadCommitSequence($commit_id);
41 $path = '/'.$drequest->getPath();
42 $commit_id = $this->loadCommitId($drequest->getCommit());
45 $commit_sequence = $this->loadCommitSequence($commit_id);
46 $change = queryfx_one(
48 'SELECT pc.changeType, pc.targetCommitID, tp.path
50 JOIN %T pc ON p.id = pc.pathID
51 LEFT JOIN %T tp ON pc.targetPathID = tp.id
53 AND pc.repositoryID = %d
54 AND pc.changeType IN (%d, %d)
55 AND pc.commitSequence BETWEEN %d AND %d
56 ORDER BY pc.commitSequence DESC
58 PhabricatorRepository
::TABLE_PATH
,
59 PhabricatorRepository
::TABLE_PATHCHANGE
,
60 PhabricatorRepository
::TABLE_PATH
,
63 ArcanistDiffChangeType
::TYPE_MOVE_HERE
,
64 ArcanistDiffChangeType
::TYPE_ADD
,
68 if ($change['changeType'] == ArcanistDiffChangeType
::TYPE_ADD
) {
69 $this->wasCreated
= true;
72 $commit_id = $change['targetCommitID'];
73 $path = $change['path'];
75 } while ($change && $path);
80 private function loadCommitId($commit_identifier) {
81 $commit = id(new DiffusionCommitQuery())
82 ->setViewer($this->viewer
)
83 ->withIdentifiers(array($commit_identifier))
84 ->withRepository($this->request
->getRepository())
86 return $commit->getID();
89 private function loadCommitSequence($commit_id) {
90 $conn_r = id(new PhabricatorRepository())->establishConnection('r');
91 $path_change = queryfx_one(
93 'SELECT commitSequence
95 WHERE repositoryID = %d AND commitID = %d
97 PhabricatorRepository
::TABLE_PATHCHANGE
,
98 $this->request
->getRepository()->getID(),
100 return reset($path_change);