function validate_ownership(Repository $repo, Contact $user, Contact $partner = null, MessageSet $ms = null) { $xpartner = $partner && $partner->seascode_username; if (!str_starts_with($this->base, "~") || !$user->seascode_username) { return -1; } if (preg_match('_\\A~(?:' . preg_quote($user->seascode_username) . ($partner ? "|" . preg_quote($partner->seascode_username) : "") . ')/_i', $this->base)) { return 1; } if ($ms) { $ms->set_error_html("ownership", $partner ? "This repository belongs to neither you nor your partner." : "This repository does not belong to you."); } return 0; }
function validate_working(MessageSet $ms = null) { $status = RepositorySite::run_ls_remote($this->ssh_url(), $output); $answer = join("\n", $output); if ($status == 0 && $ms) { $ms->set_error_html("working", $this->expand_message("repo_unreadable", $ms->user)); } if ($status > 0 && !preg_match(',^[0-9a-f]{40}\\s+refs/heads/master,m', $answer)) { if ($ms) { $ms->set_error_html("working", $this->expand_message("repo_nomaster", $ms->user)); } $status = 0; } return $status; }