/** Add daily changes if necessary */
function addDailyChanges($projectid)
{
include "cdash/config.php";
include_once "cdash/common.php";
include_once "cdash/sendemail.php";
$db = pdo_connect("{$CDASH_DB_HOST}", "{$CDASH_DB_LOGIN}", "{$CDASH_DB_PASS}");
pdo_select_db("{$CDASH_DB_NAME}", $db);
$project_array = pdo_fetch_array(pdo_query("SELECT nightlytime,name,autoremovetimeframe,autoremovemaxbuilds,emailadministrator\n FROM project WHERE id='{$projectid}'"));
$date = "";
// now
list($previousdate, $currentstarttime, $nextdate) = get_dates($date, $project_array["nightlytime"]);
$date = gmdate(FMT_DATE, $currentstarttime);
// Check if we already have it somwhere
$query = pdo_query("SELECT id FROM dailyupdate WHERE projectid='{$projectid}' AND date='{$date}'");
if (pdo_num_rows($query) == 0) {
$cvsauthors = array();
pdo_query("INSERT INTO dailyupdate (projectid,date,command,type,status)\n VALUES ({$projectid},'{$date}','NA','NA','0')");
$updateid = pdo_insert_id("dailyupdate");
$dates = get_related_dates($project_array["nightlytime"], $date);
$commits = get_repository_commits($projectid, $dates);
// Insert the commits
foreach ($commits as $commit) {
$filename = $commit['directory'] . "/" . $commit['filename'];
$checkindate = $commit['time'];
$author = addslashes($commit['author']);
$email = '';
if (isset($commit['email'])) {
$email = addslashes($commit['email']);
}
$log = addslashes($commit['comment']);
$revision = $commit['revision'];
$priorrevision = $commit['priorrevision'];
// Check if we have a robot file for this build
$robot = pdo_query("SELECT authorregex FROM projectrobot\n WHERE projectid=" . qnum($projectid) . " AND robotname='" . $author . "'");
if (pdo_num_rows($robot) > 0) {
$robot_array = pdo_fetch_array($robot);
$regex = $robot_array['authorregex'];
preg_match($regex, $commit['comment'], $matches);
if (isset($matches[1])) {
$author = addslashes($matches[1]);
}
}
if (!in_array(stripslashes($author), $cvsauthors)) {
$cvsauthors[] = stripslashes($author);
}
pdo_query("INSERT INTO dailyupdatefile (dailyupdateid,filename,checkindate,author,email,log,revision,priorrevision)\n VALUES ({$updateid},'{$filename}','{$checkindate}','{$author}','{$email}','{$log}','{$revision}','{$priorrevision}')");
add_last_sql_error("addDailyChanges", $projectid);
}
// end foreach commit
// If the project has the option to send an email to the author
if ($project_array['emailadministrator']) {
sendEmailUnregisteredUsers($projectid, $cvsauthors);
}
// Send an email if some expected builds have not been submitting
sendEmailExpectedBuilds($projectid, $currentstarttime);
// cleanBuildEmail
cleanBuildEmail();
cleanUserTemp();
// If the status of daily update is set to 2 that means we should send an email
$query = pdo_query("SELECT status FROM dailyupdate WHERE projectid='{$projectid}' AND date='{$date}'");
$dailyupdate_array = pdo_fetch_array($query);
$dailyupdate_status = $dailyupdate_array["status"];
if ($dailyupdate_status == 2) {
// Find the groupid
$group_query = pdo_query("SELECT buildid,groupid FROM summaryemail WHERE date='{$date}'");
while ($group_array = pdo_fetch_array($group_query)) {
$groupid = $group_array["groupid"];
$buildid = $group_array["buildid"];
// Find if the build has any errors
$builderror = pdo_query("SELECT count(buildid) FROM builderror WHERE buildid='{$buildid}' AND type='0'");
$builderror_array = pdo_fetch_array($builderror);
$nbuilderrors = $builderror_array[0];
// Find if the build has any warnings
$buildwarning = pdo_query("SELECT count(buildid) FROM builderror WHERE buildid='{$buildid}' AND type='1'");
$buildwarning_array = pdo_fetch_array($buildwarning);
$nbuildwarnings = $buildwarning_array[0];
// Find if the build has any test failings
if ($project_emailtesttimingchanged) {
$sql = "SELECT count(testid) FROM build2test WHERE buildid='{$buildid}' AND (status='failed' OR timestatus>" . qnum($project_testtimemaxstatus) . ")";
} else {
$sql = "SELECT count(testid) FROM build2test WHERE buildid='{$buildid}' AND status='failed'";
}
$nfail_array = pdo_fetch_array(pdo_query($sql));
$nfailingtests = $nfail_array[0];
sendsummaryemail($projectid, $groupid, $nbuildwarnings, $nbuilderrors, $nfailingtests);
}
}
pdo_query("UPDATE dailyupdate SET status='1' WHERE projectid='{$projectid}' AND date='{$date}'");
// Remove the old logs
include_once "models/errorlog.php";
$ErrorLog = new ErrorLog();
$ErrorLog->Clean(10);
// 10 days
// Clean the backup directory
clean_backup_directory();
// Remove the first builds of the project
include_once "cdash/autoremove.php";
removeFirstBuilds($projectid, $project_array["autoremovetimeframe"], $project_array["autoremovemaxbuilds"]);
removeBuildsGroupwise($projectid, $project_array["autoremovemaxbuilds"]);
//.........这里部分代码省略.........
<?php
require_once 'mysql.inc.php';
pdo_select_db($DBsta);
echo 'Scanning SND...';
$res = $DB->query("SELECT *\n FROM ressnd\n WHERE resfolder NOT LIKE '5QDemo/%'\n AND resfolder NOT LIKE '%Mb84'\n AND resfolder NOT LIKE '%Mb85'\n AND resfolder NOT LIKE '%Mh23'\n AND resfolder NOT LIKE '%Md42'\n AND resfolder NOT LIKE '%Md70'\n AND resfolder NOT LIKE '%Md71'\n AND resfolder NOT LIKE '%Md72'\n AND resfolder NOT LIKE '%Me13'\n AND resfolder NOT LIKE '%Me21'\n AND resfolder NOT LIKE '%Me22'\n AND resfolder NOT LIKE '%Me23'\n AND resfolder NOT LIKE '%Mg40'");
while ($rs = $res->fetch()) {
$list = scandir('../res-full/' . $rs['resfolder']);
if (sizeof($list)) {
$IDlist = array();
foreach ($list as $file) {
if (strpos($file, '.ogg') !== FALSE) {
$ID = str_replace('.ogg', '', $file);
if ($ID < 1000) {
$IDlist[$ID] = 1;
}
}
}
ksort($IDlist);
if (sizeof($IDlist) > 0) {
$IDlist = implode(',', array_keys($IDlist));
$DB->query("UPDATE ressnd\n SET val = '" . addslashes($IDlist) . "'\n WHERE grp = '" . addslashes($rs['grp']) . "'\n AND name = '" . addslashes($rs['name']) . "'\n AND variantType = '" . addslashes($rs['variantType']) . "'\n AND variantValue = '" . addslashes($rs['variantValue']) . "'");
}
} else {
echo $rs['resfolder'] . " doesn't exists;";
}
}
echo 'OK<br/>';
开发者ID:Mwyann,项目名称:ydkjs,代码行数:28,代码来源:scan-snd.php
示例12: register
/** Authentication function */
function register()
{
global $reg;
include "cdash/config.php";
require_once "cdash/pdo.php";
if (isset($_GET["key"])) {
$key = pdo_real_escape_string($_GET["key"]);
$sql = "SELECT * FROM " . qid("usertemp") . " WHERE registrationkey='{$key}'";
$query = pdo_query($sql);
if (pdo_num_rows($query) == 0) {
$reg = "The key is invalid.";
return 0;
}
$query_array = pdo_fetch_array($query);
$email = $query_array['email'];
$passwd = $query_array['password'];
$fname = $query_array['firstname'];
$lname = $query_array['lastname'];
$institution = $query_array['institution'];
// We copy the data from usertemp to user
$sql = "INSERT INTO " . qid("user") . " (email,password,firstname,lastname,institution)\n VALUES ('{$email}','{$passwd}','{$fname}','{$lname}','{$institution}')";
if (pdo_query($sql)) {
pdo_query("DELETE FROM usertemp WHERE email='" . $email . "'");
return 1;
} else {
$reg = pdo_error();
return 0;
}
} else {
if (isset($_POST["sent"])) {
$url = $_POST["url"];
if ($url != "catchbot") {
$reg = "Bots are not allowed to obtain CDash accounts!";
return 0;
}
$email = $_POST["email"];
$passwd = $_POST["passwd"];
$passwd2 = $_POST["passwd2"];
if (!($passwd == $passwd2)) {
$reg = "Passwords do not match!";
return 0;
}
$fname = $_POST["fname"];
$lname = $_POST["lname"];
$institution = $_POST["institution"];
if ($email && $passwd && $passwd2 && $fname && $lname && $institution) {
$db = pdo_connect("{$CDASH_DB_HOST}", "{$CDASH_DB_LOGIN}", "{$CDASH_DB_PASS}");
pdo_select_db("{$CDASH_DB_NAME}", $db);
$passwd = md5($passwd);
$email = pdo_real_escape_string($email);
$sql = "SELECT email FROM " . qid("user") . " WHERE email='{$email}'";
if (pdo_num_rows(pdo_query($sql)) > 0) {
$reg = "{$email} is already registered.";
return 0;
}
$sql = "SELECT email FROM " . qid("usertemp") . " WHERE email='{$email}'";
if (pdo_num_rows(pdo_query($sql)) > 0) {
$reg = "{$email} is already registered. Check your email if you haven't received the link to activate yet.";
return 0;
}
$passwd = pdo_real_escape_string($passwd);
$fname = pdo_real_escape_string($fname);
$lname = pdo_real_escape_string($lname);
$institution = pdo_real_escape_string($institution);
if ($CDASH_REGISTRATION_EMAIL_VERIFY) {
// Create a key
srand(microtime_float());
$keychars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$length = 40;
$key = "";
$max = strlen($keychars) - 1;
for ($i = 0; $i < $length; $i++) {
$key .= substr($keychars, rand(0, $max), 1);
}
$date = date(FMT_DATETIME);
$sql = "INSERT INTO " . qid("usertemp") . " (email,password,firstname,lastname,institution,registrationkey,registrationdate)\n VALUES ('{$email}','{$passwd}','{$fname}','{$lname}','{$institution}','{$key}','{$date}')";
} else {
$sql = "INSERT INTO " . qid("user") . " (email,password,firstname,lastname,institution)\n VALUES ('{$email}','{$passwd}','{$fname}','{$lname}','{$institution}')";
}
if (pdo_query($sql)) {
if ($CDASH_REGISTRATION_EMAIL_VERIFY) {
$currentURI = get_server_URI();
// Send the email
$emailtitle = "Welcome to CDash!";
$emailbody = "Hello " . $fname . ",\n\n";
$emailbody .= "Welcome to CDash! In order to validate your registration please follow this link: \n";
$emailbody .= $currentURI . "/register.php?key=" . $key . "\n";
$serverName = $CDASH_SERVER_NAME;
if (strlen($serverName) == 0) {
$serverName = $_SERVER['SERVER_NAME'];
}
$emailbody .= "\n-CDash on " . $serverName . "\n";
if (cdashmail("{$email}", $emailtitle, $emailbody, "From: CDash <" . $CDASH_EMAIL_FROM . ">\nReply-To: " . $CDASH_EMAIL_REPLY . "\nContent-type: text/plain; charset=utf-8\nX-Mailer: PHP/" . phpversion() . "\nMIME-Version: 1.0")) {
add_log("email sent to: " . $email, "Registration");
} else {
add_log("cannot send email to: " . $email, "Registration", LOG_ERR);
}
$reg = "A confirmation email has been sent. Check your email (including your spam folder) to confirm your registration!\n";
$reg .= "You need to activate your account within 24 hours.";
//.........这里部分代码省略.........
function get_dashboard_JSON($projectname, $date, &$response)
{
include 'config/config.php';
require_once 'include/pdo.php';
$projectid = get_project_id($projectname);
if ($projectid == -1) {
return;
}
$db = pdo_connect("{$CDASH_DB_HOST}", "{$CDASH_DB_LOGIN}", "{$CDASH_DB_PASS}");
if (!$db) {
echo "Error connecting to CDash database server<br>\n";
exit(0);
}
if (!pdo_select_db("{$CDASH_DB_NAME}", $db)) {
echo "Error selecting CDash database<br>\n";
exit(0);
}
$project = pdo_query("SELECT * FROM project WHERE id='{$projectid}'");
if (pdo_num_rows($project) > 0) {
$project_array = pdo_fetch_array($project);
} else {
$project_array = array();
$project_array['cvsurl'] = 'unknown';
$project_array['bugtrackerurl'] = 'unknown';
$project_array['documentationurl'] = 'unknown';
$project_array['homeurl'] = 'unknown';
$project_array['googletracker'] = 'unknown';
$project_array['name'] = $projectname;
$project_array['nightlytime'] = '00:00:00';
}
if (is_null($date)) {
$date = date(FMT_DATE);
}
list($previousdate, $currentstarttime, $nextdate) = get_dates($date, $project_array['nightlytime']);
$response['datetime'] = date('l, F d Y H:i:s', time());
$response['date'] = $date;
$response['unixtimestamp'] = $currentstarttime;
$response['startdate'] = date('l, F d Y H:i:s', $currentstarttime);
$response['vcs'] = make_cdash_url(htmlentities($project_array['cvsurl']));
$response['bugtracker'] = make_cdash_url(htmlentities($project_array['bugtrackerurl']));
$response['googletracker'] = htmlentities($project_array['googletracker']);
$response['documentation'] = make_cdash_url(htmlentities($project_array['documentationurl']));
$response['projectid'] = $projectid;
$response['projectname'] = $project_array['name'];
$response['projectname_encoded'] = urlencode($project_array['name']);
$response['public'] = $project_array['public'];
$response['previousdate'] = $previousdate;
$response['nextdate'] = $nextdate;
$response['logoid'] = getLogoID($projectid);
if (empty($project_array['homeurl'])) {
$response['home'] = 'index.php?project=' . urlencode($project_array['name']);
} else {
$response['home'] = make_cdash_url(htmlentities($project_array['homeurl']));
}
if ($CDASH_USE_LOCAL_DIRECTORY && file_exists('local/models/proProject.php')) {
include_once 'local/models/proProject.php';
$pro = new proProject();
$pro->ProjectId = $projectid;
$response['proedition'] = $pro->GetEdition(1);
}
$userid = 0;
if (isset($_SESSION['cdash']) && isset($_SESSION['cdash']['loginid'])) {
$userid = $_SESSION['cdash']['loginid'];
// Is the user an administrator of this project?
$row = pdo_single_row_query('SELECT role FROM user2project
WHERE userid=' . qnum($userid) . ' AND
projectid=' . qnum($projectid));
$response['projectrole'] = $row[0];
if ($response['projectrole'] > 1) {
$response['user']['admin'] = 1;
}
}
$response['userid'] = $userid;
}
开发者ID:kitware,项目名称:cdash,代码行数:74,代码来源:common.php
示例14: set_time_limit
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
include "cdash/config.php";
require_once "cdash/pdo.php";
include 'login.php';
include "cdash/version.php";
require_once "cdash/common.php";
set_time_limit(0);
$db = pdo_connect("{$CDASH_DB_HOST}", "{$CDASH_DB_LOGIN}", "{$CDASH_DB_PASS}");
if (!$db) {
echo pdo_error();
}
if (pdo_select_db("{$CDASH_DB_NAME}", $db) === FALSE) {
echo pdo_error();
return;
}
checkUserPolicy(@$_SESSION['cdash']['loginid'], 0);
// only admin
@($projectid = $_GET["projectid"]);
if ($projectid != NULL) {
$projectid = pdo_real_escape_numeric($projectid);
}
$xml = begin_XML_for_XSLT();
//get date info here
@($dayTo = pdo_real_escape_numeric($_POST["dayFrom"]));
if (empty($dayTo)) {
$time = strtotime("2000-01-01 00:00:00");
if (isset($projectid)) {
请发表评论