blob: 8ce30d269515356fa491fc833558c261162ce7df [file] [log] [blame]
<?php
/*******************************************************************************
* Copyright (c) 2010, 2015 Eclipse Foundation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Wayne Beaton (Eclipse Foundation)- initial API and implementation
******************************************************************************/
require_once(dirname(__FILE__) . "../../eclipse.org-common/system/app.class.php");
require_once(dirname(__FILE__)) . '/classes/Project.class.php';
require_once(dirname(__FILE__) . "/classes/common.php");
require_once(dirname(__FILE__) . "/classes/debug.php");
mustBeEclipseFoundationCaller();
//mustBeFoundationEmployee();
$App = new App();
/*
* WTB: Define some functions in a particular way depending on mode so that we
* don't have to keep checking the "debug" flag.
*/
if (!$App->devmode) {
function execute($sql) {
global $App;
$App->portal_sql($sql);
}
function send_mail($CEMailDest, $CEMailSubject, $cmailstr, $EMailHeaders) {
mail($CEMailDest, $CEMailSubject, $cmailstr, $EMailHeaders);
}
} else {
function execute($sql) {
echo "<div style=\"border-style:solid;border-width:1px\">$sql</div>";
return false;
}
function send_mail($CEMailDest, $CEMailSubject, $cmailstr, $EMailHeaders) {
$content = str_replace("\n", "<br/>", $cmailstr);
echo "<div style=\"border-style:solid;border-width:1px\">The following email was <em>NOT</em> sent since we are in debug mode.
<p>Destination: $CEMailDest<br/>
Subject: $CEMailSubject<br/>
Headers: $EMailHeaders<p/>
<blockquote>$content</blockquote>
</div>";
}
}
function person_exists_in_portal_record($project, $email) {
global $App;
$email = $App->sqlSanitize($email);
$projectid = $project->getId();
$sql = "SELECT count(1) AS found
FROM committer_votes
WHERE candidateemail = '$email'
AND projectid = '$projectid'";
$result = execute($sql);
if (!$result) return false;
$row = mysql_fetch_assoc($result);
return $row['found'];
}
function notify_portal_about_committer($project, $name, $email) {
$email = strtolower(addslashes($email));
$projectid = $project->getId();
// Make sure we only make one record even if the form is re-submitted
if(!person_exists_in_portal_record($project, $email)) {
$name = ucwords(strtolower(addslashes($name)));
$parentproj = $project->getTopLevelProject()->getId();
// WTB: Protect against SQL injection
global $App;
$parentproj = $App->sqlSanitize($parentproj);
$projectid = $App->sqlSanitize($projectid);
$name = $App->sqlSanitize($name);
$email = $App->sqlSanitize($email);
$sql = "INSERT INTO committer_votes " .
"(nominator, status, topid, projectid, candidate, candidateemail, startdate, enddate) " .
"VALUES('NPPR_FORM','need_candidate_paperwork','$parentproj','$projectid','$name','$email',now(),now())";
execute($sql);
}
}
$EMailHeaders = "From: \"Eclipse WebMaster (Automated)\"<webmaster@eclipse.org>\n";
$EMailHeaders .= "X-Mailer: Eclipse.org automailer process\n";
function email_committer($project, $name, $email){
global $EMailHeaders;
$cmailstr = "
Dear " . $name . ",
If you do not already have a dev.eclipse.org unix account,
please do the following:
1. Create a Bugzilla account for yourself using your same
email address: " . $email . "
If you do not use this same email address, your Bugzilla
permissions will not be set correctly.
2. Follow the instructions in item 5 \"Paperwork\" of:
http://www.eclipse.org/projects/dev_process/new-committer.php
If you have not already done so, you need to fill out a web
form questionnaire and possibly one or two paper agreements.
Your committer account cannot be processed until these
forms are received.
If you are currently an Eclipse committer, you need not do anything at
this time. If further paperwork is required to cover these subsequent
rights, you will be contacted shortly.
Thank you.
-------------------------------------------------
New Committer Request
New Committer Info:
===================
initial project creation
Name: " . $name . "
Project: " . $project->getId() . "
Email: " . $email;
$CEMailDest = "emo-records@eclipse.org";
if ($email != ""){
$CEMailDest .= "," . $email;
}
$CEMailSubject = $name . " - New Committer Request Form";
send_mail($CEMailDest, $CEMailSubject, $cmailstr, $EMailHeaders);
}
class CommitterInfo {
var $project, $name, $email;
function __construct($project, $name, $email) {
$this->project = $project;
$this->name = $name;
$this->email = $email;
}
}
function getCommitterInfo() {
if (!$project = get_project_from_pmi($_GET['id'])) return null;
if (!$name = htmlentities($_GET['name'])) return null;
if (!$email = htmlentities($_GET['email'])) return null;
return new CommitterInfo($project, $name, $email);
}
if ($info = getCommitterInfo()) {
if (!person_exists_in_portal_record($info->project, $info->email)) {
email_committer($info->project, $info->name, $info->email);
notify_portal_about_committer($info->project, $info->name, $info->email);
echo "Committer paperwork request submitted.";
} else {
echo "Record exists. No action has been taken.";
}
} else {
echo "Eclipse Foundation use only. Submit paperwork request for new committer.";
echo "<form>";
echo "Project Id: <input type=text name=id /><br/>";
echo "Committer name: <input type=text name=name /><br/>";
echo "Committer email: <input type=text name=email /><br/>";
echo "Committer name: <input type=submit />";
echo "</form>";
}
?>