mirror of
https://github.com/php/web-master.git
synced 2026-04-25 16:38:21 +02:00
53 lines
1.7 KiB
PHP
53 lines
1.7 KiB
PHP
<?php
|
|
$config = array(
|
|
'repos' => array(
|
|
'php-src' => 'internals@lists.php.net',
|
|
'web-' => 'php-webmaster@lists.php.net',
|
|
'pecl-' => 'pecl-dev@lists.php.net',
|
|
),
|
|
);
|
|
if (
|
|
!isset($_SERVER['HTTP_X_HUB_SIGNATURE'], $_SERVER['HTTP_X_GITHUB_EVENT'])
|
|
&& $_SERVER['HTTP_X_HUB_SIGNATURE'] !== 'sha1=e2a3e7a586aa08d7c9d3c73482e618164c7c75b1'
|
|
) {
|
|
header('HTTP/1.1 403 Forbidden');
|
|
exit;
|
|
}
|
|
switch ($_SERVER['HTTP_X_GITHUB_EVENT']) {
|
|
case 'ping':
|
|
break;
|
|
case 'pull_request':
|
|
$payload = json_decode(file_get_contents("php://input"));
|
|
$action = $payload->action;
|
|
$PRNumber = $payload->number;
|
|
$PR = $payload->pull_request;
|
|
$htmlUrl = $PR->html_url;
|
|
$title = $PR->title;
|
|
$body = $PR->body;
|
|
$repoName = $PR->base->repo->name;
|
|
|
|
$targetBranch = $PR->base->ref;
|
|
$mergeable = $PR->mergeable;
|
|
|
|
// if we somehow end up receiving a PR for a repo not matching anything send it to systems so that we can fix it
|
|
$to = 'systems@php.net';
|
|
foreach ($config['repos'] as $repoPrefix => $email) {
|
|
if (strpos($repoName, $repoPrefix) === 0) {
|
|
$to = $email;
|
|
}
|
|
}
|
|
|
|
$subject = sprintf('[PR][%s][#%s][%s][%s] - %s', $repoName, $PRNumber, $targetBranch, $action, $title);
|
|
$message = sprintf("You can view the Pull Request on github:\r\n%s", $htmlUrl);
|
|
if ($mergeable === false) {
|
|
$message .= "\r\n\r\nWarning: according to github, the Pull Request cannot be merged without manual conflict resolution!";
|
|
}
|
|
if ($body) {
|
|
$message .= sprintf("\r\n\r\nPull Request Description:\r\n%s", $body);
|
|
}
|
|
$headers = "From: noreply@php.net\r\nContent-Type: text/plain; charset=utf-8\r\n";
|
|
mail($to, '=?utf-8?B?'.base64_encode($subject).'?=', $message, $headers);
|
|
break;
|
|
default:
|
|
header('HTTP/1.1 501 Not Implemented');
|
|
} |