diff options
author | Erich Eckner <git@eckner.net> | 2018-07-27 09:31:58 +0200 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2018-07-27 09:31:58 +0200 |
commit | a0c305ec1b70c0d5a8aad8a1d3b2477bc3a15bbe (patch) | |
tree | 510b29364a4c736f5634147046b656b146faced3 /lib/helper.php | |
parent | 1a7538265f7a2748e8864c002e75e55cb8a270ba (diff) | |
download | archweb32-a0c305ec1b70c0d5a8aad8a1d3b2477bc3a15bbe.tar.xz |
git_url() new
Diffstat (limited to 'lib/helper.php')
-rw-r--r-- | lib/helper.php | 74 |
1 files changed, 73 insertions, 1 deletions
diff --git a/lib/helper.php b/lib/helper.php index 41951c7..732b52a 100644 --- a/lib/helper.php +++ b/lib/helper.php @@ -83,4 +83,76 @@ function format_time_duration($val) { $result ); return $result; -} +}; + +function git_url($repository,$type,$commit,$path,$line = null,$commit_is_hash = null) { + global $git_available; + # TODO: we might want to cache this value (with memcached ?) + if (!isset($git_available)) { + $git_available = + preg_match( + "/ 200 OK$/", + get_headers("https://git.archlinux32.org/archlinux32/packagess")[0] + ) == 1; + } + if (!isset($commit_is_hash)) + $commit_is_hash = preg_match("/^[0-9a-f]{40}$/",$commit)==1; + if ($git_available) { + if (isset($line)) + $line = "#L" . $line; + else + $line = ""; + if ($commit_is_hash) + $commit = "commit/" . $commit; + else + $commit = "branch/" . $commit; + switch ($type) { + case "tree": + return + "https://git.archlinux32.org/archlinux32/" . + $repository . + "/src/" . + $commit . + "/" . + $path . + $line; + case "log": + return + "https://git.archlinux32.org/archlinux32/" . + $repository . + "/commits/" . + $commit . + "/" . + $path . + $line; + } + + } else { + if (isset($line)) + $line = "#n" . $line; + else + $line = ""; + if ($commit_is_hash) + $commit = "?id=" . $commit; + else + $commit = "?h=" . $commit; + switch ($type) { + case "tree": + return + "https://git2.archlinux32.org/Archlinux32/" . + $repository . + "/tree/" . + $path . + $commit . + $line; + case "log": + return + "https://git2.archlinux32.org/Archlinux32/" . + $repository . + "/log/" . + $path . + $commit . + $line; + } + }; +}; |