| | <?php |
| |
|
| | class StaticData |
| | { |
| | const logs_path = "./data/"; |
| | } |
| |
|
| | function get_all_branch_names() |
| | { |
| | $branches = array(); |
| | $dir_hdl = opendir(StaticData::logs_path); |
| | while (($file = readdir($dir_hdl)) !== false) { |
| | if (($pos = strpos($file, ".revlist")) > 0) { |
| | array_push($branches, substr($file, 0, $pos)); |
| | } |
| | } |
| | return $branches; |
| | } |
| |
|
| | class Branch |
| | { |
| | public function __construct($name) |
| | { |
| | $this->name = $name; |
| | $this->create_revlist_hdl(); |
| | } |
| |
|
| | public function get_next_commit() |
| | { |
| | return new Commit( chop( fgets($this->revlist_hdl) ) ); |
| | } |
| |
|
| | public function set_line($line) |
| | { |
| | $this->reset(); |
| | $index = 0; |
| | while ($this->revlist_hdl && $index < $line) { |
| | fgets($this->revlist_hdl); |
| | $index++; |
| | } |
| | } |
| |
|
| | public function reset() |
| | { |
| | fclose($this->revlist_hdl); |
| | $this->create_revlist_hdl(); |
| | } |
| |
|
| | private function create_revlist_hdl() |
| | { |
| | $this->revlist_hdl = fopen(StaticData::logs_path . "/" . $this->name . ".revlist", "r"); |
| | } |
| |
|
| | private $name; |
| | private $revlist_hdl; |
| | } |
| |
|
| | class Commit |
| | { |
| | public function __construct($name) |
| | { |
| | $this->name = $name; |
| | } |
| |
|
| | public function read_log() |
| | { |
| | if (! $this->was_tested()) { |
| | return; |
| | } |
| |
|
| | $log_hdl = fopen(StaticData::logs_path . "/" . substr($this->name, 0, 1) . "/" . $this->name . ".log", "r"); |
| | while (($line = fgets($log_hdl)) !== false) { |
| | if (preg_match('/tests passed/', $line)) { |
| | $this->passed_percent = substr($line, 0, strpos('%', $line)); |
| | } |
| | else if (preg_match('/INVESTIGATE THESE FAILED TESTS/', $line)) { |
| | $this->failed_tests = substr($line, 39); |
| | } |
| | else if (! $this->is_ok() && preg_match('/## Status:/', $line)) { |
| | $this->failed_at = substr($line, 16); |
| | } |
| | } |
| | } |
| |
|
| | public function read_info() |
| | { |
| | $info_hdl = fopen(StaticData::logs_path . "/" . substr($this->name, 0, 1) . "/" . $this->name . ".info", "r"); |
| | while (($line = fgets($info_hdl)) !== false) { |
| | if (preg_match('/Author:/', $line)) { |
| | $this->author = substr("$line", 7); |
| | } |
| | else if (preg_match('/Date:/', $line)) { |
| | $this->timestamp = substr("$line", 12); |
| | break; |
| | } |
| | } |
| | while (($line = fgets($info_hdl)) !== false) { |
| | $this->message .= chop($line); |
| | } |
| | $this->message = preg_replace('/\s+/', ' ', $this->message); |
| | } |
| |
|
| | public function was_tested() |
| | { |
| | return file_exists(StaticData::logs_path . "/" . substr($this->name, 0, 1) . "/" . $this->name . ".log"); |
| | } |
| |
|
| | public function is_ok() |
| | { |
| | if (! $this->was_tested()) { |
| | return false; |
| | } else { |
| | return file_exists(StaticData::logs_path . "/" . substr($this->name, 0, 1) . "/" . $this->name . ".OK"); |
| | } |
| | } |
| |
|
| | public function get_status() |
| | { |
| | return $this->was_tested() |
| | ? ($this->is_ok() ? "OK" : "Failed: " . $this->get_failed_at()) : "Not tested"; |
| | } |
| |
|
| | public function get_passed_percent() |
| | { |
| | return $this->passed_percent; |
| | } |
| |
|
| | public function get_failed_tests() |
| | { |
| | return $this->failed_tests; |
| | } |
| |
|
| | public function get_failed_at() |
| | { |
| | return $this->failed_at; |
| | } |
| |
|
| | public function get_message() |
| | { |
| | return $this->message; |
| | } |
| |
|
| | public function get_author() |
| | { |
| | return $this->author; |
| | } |
| |
|
| | public function get_timestamp() |
| | { |
| | return $this->timestamp; |
| | } |
| |
|
| | public function get_name() |
| | { |
| | return $this->name; |
| | } |
| |
|
| | public function get_log_file() |
| | { |
| | return "show_commit.php?commit_id=$this->name&type=log"; |
| | } |
| |
|
| | public function get_info_file() |
| | { |
| | return "show_commit.php?commit_id=$this->name&type=info"; |
| | } |
| |
|
| | private function open_log() |
| | { |
| | return fopen($this->get_log_file()); |
| | } |
| |
|
| | private function open_info() |
| | { |
| | return fopen($this->get_info_file()); |
| | } |
| |
|
| | private $name; |
| | private $passed_percent; |
| | private $failed_tests; |
| | private $failed_at; |
| | private $message; |
| | private $author; |
| | private $timestamp; |
| |
|
| | } |
| |
|
| | ?> |
| |
|