public function generateCompareUrl($sourceUrlFrom, Version $versionFrom, $sourceUrlTo, Version $versionTo)
{
// Check if both urls come from the supported domain
// It avoids problems when one url is from another domain or is local
if (!$this->supports($sourceUrlFrom) || !$this->supports($sourceUrlTo)) {
return false;
}
$sourceUrlFrom = $this->generateBaseUrl($sourceUrlFrom);
$sourceUrlTo = $this->generateBaseUrl($sourceUrlTo);
// Check if comparison across forks is needed
if ($sourceUrlFrom !== $sourceUrlTo) {
$repositoryFrom = $this->extractRepositoryInformation($sourceUrlFrom);
$repositoryTo = $this->extractRepositoryInformation($sourceUrlTo);
return sprintf('%s/branches/compare/%s/%s:%s%%0D%s/%s:%s', $sourceUrlTo, $repositoryTo['user'], $repositoryTo['repository'], $this->getCompareVersion($versionTo), $repositoryFrom['user'], $repositoryFrom['repository'], $this->getCompareVersion($versionFrom));
}
return sprintf('%s/branches/compare/%s%%0D%s', $sourceUrlTo, $this->getCompareVersion($versionTo), $this->getCompareVersion($versionFrom));
}