forked from science-ation/science-ation
f61b4b94f3
- wording changes for creating an account and recovering passwords - updated rollover script to copy the conference logo
1051 lines
37 KiB
PHP
1051 lines
37 KiB
PHP
<?
|
|
/*
|
|
This file is part of the 'Science Fair In A Box' project
|
|
SFIAB Website: http://www.sfiab.ca
|
|
|
|
Copyright (C) 2005-2006 Sci-Tech Ontario Inc <info@scitechontario.org>
|
|
Copyright (C) 2005-2008 James Grant <james@lightbox.org>
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public
|
|
License as published by the Free Software Foundation, version 2.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; see the file COPYING. If not, write to
|
|
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
Boston, MA 02111-1307, USA.
|
|
*/
|
|
?>
|
|
<?
|
|
require("../common.inc.php");
|
|
require_once("../user.inc.php");
|
|
require_once("../config_editor.inc.php");
|
|
superuser_required();
|
|
|
|
/*
|
|
Define the steps used in the setup wizard. It's flow is:
|
|
|
|
start __
|
|
|-> selectNameType -> complete
|
|
|
|
|
|-> selectConference -> enterName -> complete
|
|
*/
|
|
$wizard_steps = array(
|
|
'start' => array(
|
|
'title' => i18n('Add a Conference'),
|
|
'builder' => 'build_start_step',
|
|
'handler' => 'handle_start_step',
|
|
'fields' => array(
|
|
'method'
|
|
),
|
|
'actions' => array(
|
|
'cancel' => i18n('Cancel'),
|
|
'next' => i18n('Next'),
|
|
)
|
|
),
|
|
'selectNameType' => array(
|
|
'title' => i18n('Conference Name and Type'),
|
|
'builder' => 'build_select_nametype_step',
|
|
'handler' => 'handle_select_nametype_step',
|
|
'fields' => array(
|
|
'name',
|
|
'type'
|
|
),
|
|
'actions' => array(
|
|
'cancel' => i18n('Cancel'),
|
|
'next' => i18n('Next'),
|
|
'back' => i18n('Back'),
|
|
)
|
|
),
|
|
'selectConference' => array(
|
|
'title' => i18n('Select a Conference'),
|
|
'builder' => 'build_select_conference_step',
|
|
'handler' => 'handle_select_conference_step',
|
|
'fields' => array(
|
|
'mastercopy',
|
|
'endExisting',
|
|
'rollDates'
|
|
),
|
|
'actions' => array(
|
|
'cancel' => i18n('Cancel'),
|
|
'next' => i18n('Next'),
|
|
'back' => i18n('Back'),
|
|
)
|
|
),
|
|
'enterName' => array(
|
|
'title' => i18n('Conference Name'),
|
|
'builder' => 'build_enter_name_step',
|
|
'handler' => 'handle_enter_name_step',
|
|
'fields' => array(
|
|
'name'
|
|
),
|
|
'actions' => array(
|
|
'cancel' => i18n('Cancel'),
|
|
'next' => i18n('Next'),
|
|
'back' => i18n('Back'),
|
|
)
|
|
|
|
),
|
|
'complete' => array(
|
|
'title' => i18n('Confirmation'),
|
|
'builder' => 'build_complete_step',
|
|
'handler' => 'handle_complete_step',
|
|
'fields' => array(),
|
|
'actions' => array(
|
|
'cancel' => i18n('Cancel'),
|
|
'ok' => i18n('OK'),
|
|
'back' => i18n('Back'),
|
|
)
|
|
),
|
|
'error' => array(
|
|
'title' => i18n('Error'),
|
|
'builder' => null,
|
|
'handler' => 'wizard_close',
|
|
'fields' => array(),
|
|
'actions' => array('close' => i18n('Close'))
|
|
)
|
|
);
|
|
|
|
// check for a step submitted by the wizard
|
|
if(array_key_exists('formAction', $_POST)){
|
|
if(array_key_exists('formStep', $_POST)){
|
|
$stepName = $_POST['formStep'];
|
|
$wizard_steps[$stepName]['handler']();
|
|
}
|
|
exit();
|
|
}
|
|
|
|
// check for an action by the normal method
|
|
if(array_key_exists('action', $_GET)){
|
|
switch($_GET['action']){
|
|
case 'loadTable':
|
|
draw_conferences_list();
|
|
break;
|
|
case 'new':
|
|
// present them with a wizard in which to create a new conference
|
|
$_SESSION['conference_wizard'] = array();
|
|
wizard_draw_step('start');
|
|
break;
|
|
case 'edit':
|
|
// give them an editor in which to modify an existing conference
|
|
$cid = intval($_POST['id']);
|
|
if($cid){
|
|
$conf = mysql_fetch_assoc(mysql_query("SELECT * FROM conferences WHERE id = $cid"));
|
|
if(is_array($conf)){
|
|
echo "<table>";
|
|
echo "<tr><td>" . i18n('Name') . ":</td><td><input type=\"text\" id=\"confName\" value=\"{$conf['name']}\"></input></td></tr>";
|
|
echo "<tr><td>" . i18n('Conference Type') . ":</td><td>";
|
|
echo "<select id=\"confType\">";
|
|
echo "<option value=\"sciencefair\""; if($conf['type'] == 'sciencefair') echo " SELECTED"; echo ">" . i18n("Science Fair") . "</option>";
|
|
echo "<option value=\"scienceolympics\""; if($conf['type'] == 'scienceolympics') echo " SELECTED"; echo ">" . i18n("Science Olympics") . "</option>";
|
|
echo "</select>";
|
|
echo "</td></tr>";
|
|
echo "<tr><td>" . i18n('Status') . ":</td><td>";
|
|
$statuses = array('pending','running','ended');
|
|
echo "<select id=\"confStatus\">";
|
|
foreach($statuses as $status){
|
|
echo "<option value=\"$status\"";
|
|
if($conf['status'] == $status) echo " SELECTED";
|
|
echo ">$status</option>";
|
|
}
|
|
echo "</select>";
|
|
|
|
echo "</td></tr>";
|
|
echo "</table>";
|
|
}
|
|
}
|
|
break;
|
|
case 'save':
|
|
// save the new conference data for the conference that's being edited
|
|
$confId = intval($_POST['id']);
|
|
if(!$confId) {
|
|
error_("invalid conference id");
|
|
}
|
|
else {
|
|
// verify that the specified conference already exists
|
|
$countRecord = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) as tally FROM conferences WHERE id = $confId"));
|
|
$tally = $countRecord['tally'];
|
|
if($tally == 1){
|
|
// ok, it's a valid conference id. Let's go ahead and update the data for it
|
|
$confType = mysql_real_escape_string($_POST['confType']);
|
|
$confName = mysql_real_escape_string($_POST['confName']);
|
|
$confStatus = mysql_real_escape_string($_POST['confStatus']);
|
|
mysql_query("UPDATE conferences SET type='$confType', name='$confName', status='$confStatus' WHERE id='$confId'");
|
|
$errMsg = mysql_error();
|
|
if($errMsg != null){
|
|
error_("SQL error: $errMsg");
|
|
}else{
|
|
happy_("Conference updated successfully");
|
|
}
|
|
}else{
|
|
error_("nonexistant conference id");
|
|
}
|
|
}
|
|
break;
|
|
case 'delete':
|
|
// delete the specified conference
|
|
$confId = intval($_POST['id']);
|
|
if(!$confId){
|
|
error_("invalid conference id");
|
|
}else{
|
|
mysql_query("UPDATE conferences set status='deleted' WHERE id = $confId");
|
|
$errMsg = mysql_error();
|
|
if($errMsg != null){
|
|
error_("SQL error: $errMsg");
|
|
}else{
|
|
happy_("Conference updated successfully");
|
|
}
|
|
}
|
|
|
|
break;
|
|
}
|
|
exit;
|
|
}
|
|
|
|
send_header("Conferences Setup",
|
|
array('Committee Main' => 'committee_main.php',
|
|
'System Setup' => '/super/index.php')
|
|
,"configuration"
|
|
);
|
|
?>
|
|
<script type="text/javascript">
|
|
var wizard;
|
|
|
|
function editConference(cid){
|
|
var editor = $('<div></div>');
|
|
$.post('conferences.php?action=edit', {'id':cid}, function(result){
|
|
editor.html(result);
|
|
editor.dialog({
|
|
'title':'<?=i18n("Edit")?>',
|
|
'modal':'true',
|
|
'buttons':{
|
|
'<?=i18n('Cancel')?>':function(){
|
|
editor.dialog('close');
|
|
editor.remove();
|
|
},
|
|
'<?=i18n('Ok')?>':function(){
|
|
$.post(
|
|
'conferences.php?action=save',
|
|
{
|
|
'id':cid,
|
|
'confStatus':$('#confStatus').val(),
|
|
'confType':$('#confType').val(),
|
|
'confName':$('#confName').val()
|
|
},
|
|
function(result){
|
|
editor.dialog('close');
|
|
editor.remove();
|
|
$('#conferences').load('conferences.php?action=loadTable');
|
|
}
|
|
);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
}
|
|
|
|
function dropConference(cid){
|
|
var confirmation = $('<div></div>');
|
|
confirmation.append('<?=i18n("Are you sure you want to delete this conference?");?>');
|
|
confirmation.dialog({
|
|
'title': '<?=i18n("Are you sure");?>',
|
|
'modal': true,
|
|
'buttons':{
|
|
'<?=i18n('No')?>':function(){
|
|
$(this).dialog('close');
|
|
$(this).remove();
|
|
},
|
|
'<?=i18n('Yes')?>':function(){
|
|
$(this).dialog('close');
|
|
$.post('conferences.php?action=delete', {'id':cid}, function(result){
|
|
$('#conferences').load('conferences.php?action=loadTable');
|
|
});
|
|
$(this).remove();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function openWizard(){
|
|
wizard = $('<div></div>');
|
|
$('#conferences').append(wizard);
|
|
wizard.dialog({
|
|
modal:true,
|
|
width:600,
|
|
height:400,
|
|
resizable:false,
|
|
draggable:false,
|
|
closeOnEscape:false,
|
|
open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); }
|
|
|
|
});
|
|
wizard.load('conferences.php?action=new');
|
|
}
|
|
|
|
function handleSubmit(action){
|
|
var params = {'formAction' : action};
|
|
for(n in fields){
|
|
// is it a checked check box?
|
|
val = $('input:checkbox[name=' + fields[n] + ']:checked').val();
|
|
if(val == undefined){
|
|
// is it an unchecked checkbox?
|
|
val = $('input:checkbox[name=' + fields[n] + ']:unchecked').val();
|
|
if(val != undefined) val = 'no';
|
|
}
|
|
if(val == undefined){
|
|
// perhaps it's a radio button
|
|
val = $('input:radio[name=' + fields[n] + ']:checked').val();
|
|
}
|
|
if(val == undefined){
|
|
// other, then?
|
|
val = $('#' + fields[n]).val();
|
|
}
|
|
if(val != undefined){
|
|
params[fields[n]] = val;
|
|
}
|
|
}
|
|
// the relevant parameters have been pulled out of the form, now submit them
|
|
$.post('conferences.php', params, function(result){
|
|
wizard.html(result);
|
|
});
|
|
}
|
|
|
|
</script>
|
|
|
|
<a href='' onclick="openWizard(); return false;">Add a conference</a>
|
|
<hr/>
|
|
<div id="conferences">
|
|
<?php draw_conferences_list(); ?>
|
|
<br/>
|
|
</div>
|
|
<?
|
|
send_footer();
|
|
|
|
function draw_conferences_list(){
|
|
echo "<table class=\"summarytable\">";
|
|
echo "<thead><tr><th colspan=\"5\">" . i18n("Conferences") . "</th></tr></thead>";
|
|
$query = mysql_query("SELECT * FROM `conferences` WHERE status <> 'deleted'");
|
|
$rowNumbr = 0;
|
|
while($row = mysql_fetch_assoc($query)){
|
|
echo '<tr class="';
|
|
if(($rowNumber++) % 2) echo 'odd';
|
|
else echo 'even';
|
|
echo '">';
|
|
echo "<td>{$row['name']}</td><td>{$row['type']}</td><td>{$row['status']}</td>";
|
|
echo "<td><img style=\"cursor: pointer;\" onclick=\"editConference({$row['id']});return false;\" alt=\"" . i18n("Edit") . "\" src=\"/icons/16/edit.png\"/></td>";
|
|
if($row['status'] == 'running'){
|
|
echo "<td></td>"; // can't delete a running conference
|
|
}else{
|
|
echo "<td><img style=\"cursor: pointer;\" onclick=\"dropConference({$row['id']});return false;\" alt=\"" . i18n("Delete") . "\" src=\"/icons/16/button_cancel.png\"/></td>";
|
|
}
|
|
echo "</tr>";
|
|
}
|
|
echo "</table>";
|
|
}
|
|
|
|
/************** Wizard handling functions *************/
|
|
// draw an individual step in the wizard
|
|
function wizard_draw_step($step, $message = null){
|
|
global $wizard_steps;
|
|
if(array_key_exists($step, $wizard_steps)){
|
|
// tell the client what fields we expect to have sent back
|
|
echo "<script type=\"text/javascript\">";
|
|
if(count($wizard_steps[$step]['fields']) > 0){
|
|
echo "var fields=['formStep','" . implode("','", $wizard_steps[$step]['fields']) . "'];";
|
|
}else{
|
|
echo "var fields=['formStep'];";
|
|
}
|
|
|
|
// add the appropriate buttons
|
|
echo 'wizard.dialog("option","buttons", {';
|
|
$doneone = false;
|
|
foreach($wizard_steps[$step]['actions'] as $tag => $label){
|
|
if($doneone) echo ",";
|
|
else $doneone = true;
|
|
echo '"' . $label . '":function(){handleSubmit("' . $tag . '");}';
|
|
}
|
|
echo '});';
|
|
|
|
// draw the title header
|
|
echo 'wizard.dialog("option", "title", "' . $wizard_steps[$step]['title'] . '");';
|
|
echo "</script>";
|
|
|
|
if($message != null){
|
|
// used for error messages (eg. empty field)
|
|
echo "<div class=\"error\">" . $message . "</div>";
|
|
}
|
|
|
|
// draw the actual content of this step
|
|
echo "<div style=\"margin:1em\">";
|
|
if(function_exists($wizard_steps[$step]['builder'])){
|
|
$wizard_steps[$step]['builder']();
|
|
}
|
|
echo "</div>";
|
|
|
|
echo "<input type=\"hidden\" id=\"formStep\" value=\"$step\"></input>";
|
|
}
|
|
}
|
|
|
|
// close the wizard
|
|
function wizard_close(){
|
|
unset($_SESSION['conference_wizard']);
|
|
echo "
|
|
<script type=\"text/javascript\">
|
|
wizard.dialog('close');
|
|
wizard.remove();
|
|
$('#conferences').load('conferences.php?action=loadTable');
|
|
</script>
|
|
";
|
|
}
|
|
|
|
/************** Functions for drawing and processing individual wizard steps ************/
|
|
function build_start_step(){
|
|
echo '<p>' . i18n("This wizard will help you set up a new conference.") . '<p>';
|
|
// find out if any conferences already exist
|
|
$tally = mysql_result(mysql_query("SELECT COUNT(*) FROM conferences"), 0);
|
|
if($tally == 0){
|
|
// no conferences, so just let them continue
|
|
echo '<p>' . i18n("Click next to continue") . '</p>';
|
|
echo '<input type="hidden" id="method" value="create">';
|
|
}else{
|
|
$copy_selected = '';
|
|
$create_selected = 'checked';
|
|
if(array_key_exists('method', $_SESSION['conference_wizard'])){
|
|
if($_SESSION['conference_wizard']['method'] == 'copy'){
|
|
$copy_selected = 'checked';
|
|
$create_selected = '';
|
|
}
|
|
}else{
|
|
}
|
|
echo '<p>' . i18n("What would you like to do?") . '</p>';
|
|
echo '<div style="margin:1em">';
|
|
echo '<input type="radio" name="method" value="create" ' . $create_selected . '> ' . i18n('Create a new conference') . '</input><br/>';
|
|
echo '<input type="radio" name="method" value="copy" ' . $copy_selected . '> ' . i18n('Copy an existing conference') . '</input><br/>';
|
|
echo '</div>';
|
|
}
|
|
}
|
|
|
|
function handle_start_step(){
|
|
if($_POST['formAction'] == 'cancel'){
|
|
wizard_close();
|
|
}else{
|
|
$_SESSION['conference_wizard']['method'] = $_POST['method'];
|
|
switch($_POST['method']){
|
|
case 'create':
|
|
wizard_draw_step('selectNameType');
|
|
break;
|
|
case 'copy':
|
|
wizard_draw_step('selectConference');
|
|
break;
|
|
default:
|
|
wizard_close();
|
|
$save = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
function build_select_nametype_step(){
|
|
global $conference_types;
|
|
echo "<p>" . i18n("Please enter the name and type of this conference.") . "</p>";
|
|
|
|
echo '<div style="margin:1em">';
|
|
echo "<table><tr>";
|
|
echo "<td>" . i18n("Conference Name") . "</td>";
|
|
$val = '';
|
|
if(array_key_exists('name', $_SESSION['conference_wizard'])){
|
|
$val = ' VALUE="' . $_SESSION['conference_wizard']['name'] . '" ';
|
|
}
|
|
echo "<td><input type=\"text\" size=\"40\" id=\"name\"$val></input></td>";
|
|
echo "</tr><tr>";
|
|
echo "<td>" . i18n("Conference Type") . "</td>";
|
|
echo "<td><select id=\"type\">";
|
|
if(array_key_exists('type', $_SESSION['conference_wizard'])){
|
|
$selectedType = $_SESSION['conference_wizard']['type'];
|
|
}else{
|
|
$selectedType = 'sciencefair';
|
|
}
|
|
foreach($conference_types as $type => $title){
|
|
if($type == $selectedType) $selected = " SELECTED ";
|
|
else $selected = "";
|
|
echo "<option value=\"$type\"$selected>$title</option>";
|
|
}
|
|
echo "</select></td>";
|
|
echo "</tr></table>";
|
|
echo "</div>";
|
|
}
|
|
|
|
function handle_select_nametype_step(){
|
|
if($_POST['formAction'] == 'cancel'){
|
|
wizard_close();
|
|
}else{
|
|
|
|
$_SESSION['conference_wizard']['type'] = $_POST['type'];
|
|
$_SESSION['conference_wizard']['name'] = $_POST['name'];
|
|
|
|
if($_POST['formAction'] == 'back'){
|
|
wizard_draw_step('start');
|
|
}else{
|
|
if($_POST['name'] == ''){
|
|
wizard_draw_step('selectNameType', i18n('A name for the conference is required'));
|
|
}else{
|
|
wizard_draw_step('complete');
|
|
// handle_complete_step();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function build_select_conference_step(){
|
|
// get our default/entered values
|
|
$selectedID = -1;
|
|
$endchecked = '';
|
|
$rollchecked = ' checked ';
|
|
if(array_key_exists('mastercopy', $_SESSION['conference_wizard'])){
|
|
$selectedID = $_SESSION['conference_wizard']['mastercopy'];
|
|
if($_SESSION['conference_wizard']['endExisting'] == 'yes'){
|
|
$endchecked = ' checked ';
|
|
}
|
|
if($_SESSION['conference_wizard']['rollDates'] == 'no'){
|
|
$rollchecked = '';
|
|
}
|
|
}
|
|
|
|
echo "<p>" . i18n("Please select the conference that you wish to copy.") . "</p>";
|
|
echo '<div style="margin:1em">';
|
|
echo "<table><tr><td colspan=\"2\">";
|
|
echo "<select id=\"mastercopy\">";
|
|
$query = mysql_query("SELECT * FROM conferences WHERE status != 'deleted' ORDER BY id DESC");
|
|
while($row = mysql_fetch_assoc($query)){
|
|
$id = $row['id'];
|
|
if($id == $selectedID) $selected = " SELECTED ";
|
|
else if($selectedID == -1) { $selected = " SELECTED "; $selectedID = -2; } // select the first one
|
|
else $selected = "";
|
|
echo "<option $selected value=\"{$row['id']}\">{$row['name']}</option>";
|
|
}
|
|
echo "</select>";
|
|
echo "</td></tr><tr><td>";
|
|
echo "<input type=\"checkbox\" value=\"yes\" name=\"endExisting\" $endchecked ></input>";
|
|
echo "</td><td>" . i18n("End this conference after copying it") . "</td></tr>";
|
|
|
|
echo "<tr><td>";
|
|
echo "<input type=\"checkbox\" value=\"yes\" name=\"rollDates\" $rollchecked ></input>";
|
|
echo "</td><td>" . i18n("Increment dates by a year") . "</td></tr>";
|
|
|
|
echo "</table>";
|
|
echo '</div>';
|
|
}
|
|
|
|
function handle_select_conference_step(){
|
|
if($_POST['formAction'] == 'cancel'){
|
|
wizard_close();
|
|
}else{
|
|
$_SESSION['conference_wizard']['mastercopy'] = $_POST['mastercopy'];
|
|
$_SESSION['conference_wizard']['endExisting'] = $_POST['endExisting'];
|
|
$_SESSION['conference_wizard']['rollDates'] = $_POST['rollDates'];
|
|
|
|
if($_POST['formAction'] == 'back'){
|
|
wizard_draw_step('start');
|
|
}else{
|
|
wizard_draw_step('enterName');
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
function build_enter_name_step(){
|
|
echo "<p>" . i18n("Please enter a name for this conference") . "</p>";
|
|
$val = '';
|
|
if(array_key_exists('name', $_SESSION['conference_wizard'])){
|
|
// get the value previously answered
|
|
$val = ' VALUE="' . $_SESSION['conference_wizard']['name'] . '" ';
|
|
}else if(array_key_exists('mastercopy', $_SESSION['conference_wizard'])){
|
|
// get the name of the conference we're copying
|
|
$query = "SELECT name FROM conferences WHERE id = {$_SESSION['conference_wizard']['mastercopy']}";
|
|
$result = mysql_fetch_assoc(mysql_query($query));
|
|
$val = ' VALUE="' . $result['name'] . '" ';
|
|
}
|
|
echo "<div style=\"margin:1em\"><input type=\"text\" style=\"width: 100%;\" id=\"name\"$val></input></div>";
|
|
}
|
|
|
|
function handle_enter_name_step(){
|
|
if($_POST['formAction'] == 'cancel'){
|
|
wizard_close();
|
|
}else{
|
|
$_SESSION['conference_wizard']['name'] = $_POST['name'];
|
|
|
|
if($_POST['formAction'] == 'back'){
|
|
wizard_draw_step('selectConference');
|
|
}else{
|
|
if($_POST['name'] == ''){
|
|
wizard_draw_step('enterName', i18n('A name for the conference is required'));
|
|
}else{
|
|
wizard_draw_step('complete');
|
|
}
|
|
// handle_complete_step();
|
|
}
|
|
}
|
|
}
|
|
|
|
function build_complete_step(){
|
|
echo "<p>";
|
|
echo i18n("All of the required information has been gathered. Click "OK" to complete the process.");
|
|
echo "</p>";
|
|
}
|
|
|
|
function handle_complete_step(){
|
|
// print_r($_SESSION);
|
|
if($_POST['formAction'] == 'cancel'){
|
|
wizard_close();
|
|
}else if($_POST['formAction'] == 'back'){
|
|
if($_SESSION['conference_wizard']['method'] == 'copy'){
|
|
wizard_draw_step('enterName');
|
|
}else{
|
|
wizard_draw_step('selectNameType');
|
|
}
|
|
}else{
|
|
switch($_SESSION['conference_wizard']['method']){
|
|
case 'create':
|
|
$result = create_conference($_SESSION['conference_wizard']);
|
|
if(is_numeric($result)){
|
|
wizard_close();
|
|
}else{
|
|
wizard_draw_step('error', $result);
|
|
}
|
|
break;
|
|
case 'copy':
|
|
if(copy_conference($_SESSION['conference_wizard'])){
|
|
wizard_close();
|
|
}
|
|
break;
|
|
}
|
|
|
|
}
|
|
}
|
|
// returns the id of the created conference if successful, error message otherwise
|
|
function create_conference($params){
|
|
$cname = mysql_real_escape_string($params['name']);
|
|
$ctype = $params['type'];
|
|
mysql_query("INSERT INTO conferences (oid, name, type, status) VALUES (1, '" . $cname . "', '$ctype', 'pending')");
|
|
|
|
//if its created brand spanking new, we set the copyoriginal and copyparent to be the same as the id
|
|
$conferences_id=mysql_insert_id();
|
|
mysql_query("UPDATE conferences SET copyoriginal='$conferences_id', copyparent='$conferences_id' WHERE id='$conferences_id'");
|
|
|
|
$errorMessage = mysql_error();
|
|
if($errorMessage){
|
|
return "SQL Error:<br/>$errorMessage";
|
|
}
|
|
//copy over the award_types defaults
|
|
$q=mysql_query("SELECT * FROM award_types WHERE conferences_id='-1'");
|
|
while($r=mysql_fetch_object($q)) {
|
|
mysql_query("INSERT INTO award_types (id,type,`order`, conferences_id) VALUES ('$r->id','$r->type','$r->order','".$conferences_id."')");
|
|
}
|
|
|
|
// add this administrator's admin user account for the new conference
|
|
$u = user_create($_SESSION['accounts_id'], $conferences_id);
|
|
$q = mysql_query("SELECT id FROM roles WHERE `type` IN('admin', 'config')");
|
|
while($row = mysql_fetch_assoc($q)){
|
|
mysql_query("
|
|
INSERT INTO user_roles (accounts_id, users_id, roles_id, active, complete)
|
|
VALUES({$_SESSION['accounts_id']}, {$u['id']}, {$row['id']}, 'yes', 'yes')
|
|
");
|
|
}
|
|
|
|
user_add_role($u, 'admin');
|
|
user_add_role($u, 'config');
|
|
|
|
return $conferences_id;
|
|
}
|
|
|
|
// copy users of the specified roles from conference oldConfId to conference newConfId
|
|
// roles can be passed as a single comma delimited string, or as an array of strings
|
|
// return 'ok' on success, error message otherwise
|
|
function conferences_copy_users($oldConfId, $newConfId, $roles){
|
|
if(!is_array($roles)){
|
|
// they must have been passed as a string
|
|
$roles = explode(',', $roles);
|
|
foreach($roles as $idx => $val){
|
|
$roles[$idx] = trim($val);
|
|
}
|
|
}
|
|
|
|
$query = mysql_query("
|
|
SELECT * FROM users WHERE users.id IN(
|
|
SELECT DISTINCT(users.id) FROM users
|
|
JOIN user_roles ON user_roles.users_id = users.id
|
|
JOIN roles on roles.id = user_roles.roles_id
|
|
WHERE roles.`type` IN ('" . implode("','", $roles) . "')
|
|
AND users.conferences_id = $oldConfId
|
|
)
|
|
");
|
|
|
|
$keys = '';
|
|
while(mysql_error() == '' && $row = mysql_fetch_assoc($query)){
|
|
// first we copy the user
|
|
$oldId = $row['id'];
|
|
unset($row['id']);
|
|
if($keys == ''){
|
|
$keyList = array_keys($row);
|
|
$keys = "`" . implode("`,`", $keyList) . "`";
|
|
}
|
|
$row['conferences_id'] = $newConfId;
|
|
$values = "'" . implode("','", $row) . "'";
|
|
mysql_query("INSERT INTO users ($keys) VALUES ($values)");
|
|
$uid = mysql_insert_id();
|
|
$aid = $row['accounts_id'];
|
|
// now copy their applicable roles
|
|
$q2 = mysql_query("
|
|
SELECT roles_id, active, complete FROM user_roles
|
|
JOIN roles ON roles.id = user_roles.roles_id
|
|
WHERE roles.`type` IN('" . implode("','", $roles) . "')
|
|
AND user_roles.users_id = $oldId
|
|
");
|
|
while(mysql_error() == '' && $row2 = mysql_fetch_assoc($q2)){
|
|
mysql_query("
|
|
INSERT INTO user_roles(`accounts_id`, `users_id`, `roles_id`, `active`, `complete`)
|
|
VALUES($aid, $uid, {$row2['roles_id']}, '{$row2['active']}', '{$row2['complete']}')
|
|
");
|
|
}
|
|
}
|
|
|
|
if(mysql_error() != '') return "SQL error :<br/>" . mysql_error();
|
|
return 'ok';
|
|
|
|
}
|
|
|
|
// copy a conference - returns true on success, false otherwise. Gives the wizard an error message one occurs
|
|
function copy_conference($params){
|
|
/* $params: {
|
|
mastercopy => id of conf to copy
|
|
endExisting => end it after copying
|
|
rollDates => increment the dates by a year
|
|
name => the new name
|
|
}*/
|
|
global $config;
|
|
|
|
// start a list of all tables that have been updated
|
|
$completedTables = array();
|
|
|
|
// we'll start by creating the new conference
|
|
$oldConfId = $params['mastercopy'];
|
|
$oldConf = mysql_fetch_assoc(mysql_query("SELECT * FROM conferences WHERE id = {$oldConfId}"));
|
|
|
|
mysql_query("INSERT INTO conferences (oid, name, type, status, copyoriginal, copyparent) VALUES (1, '" . mysql_real_escape_string($params['name']) . "', '{$oldConf['type']}', 'pending','{$oldConf['copyoriginal']}','{$oldConf['id']}')");
|
|
if(mysql_error() != ''){ wizard_draw_step('error', 'SQL error on line #' . (__LINE__ - 1) . ': <br/>' . mysql_error()); return false; }
|
|
$newConfId = mysql_insert_id();
|
|
|
|
// then copy the configuration variables
|
|
config_update_variables($newConfId, $oldConfId);
|
|
|
|
// now the dates
|
|
if($params['rollDates'] == 'yes'){
|
|
$q=mysql_query("SELECT DATE_ADD(date,INTERVAL 365 DAY) AS newdate, name, description FROM dates WHERE conferences_id = $oldConfId");
|
|
}else{
|
|
$q=mysql_query("SELECT date AS newdate, name, description FROM dates WHERE conferences_id = $oldConfId");
|
|
}
|
|
while(mysql_error() == '' && $r = mysql_fetch_object($q))
|
|
mysql_query("INSERT INTO dates (date,name,description,conferences_id) VALUES (
|
|
'".mysql_real_escape_string($r->newdate)."',
|
|
'".mysql_real_escape_string($r->name)."',
|
|
'".mysql_real_escape_string($r->description)."',
|
|
'".mysql_real_escape_string($newConfId)."')");
|
|
$completedTables[] = 'dates';
|
|
if(mysql_error() != ''){ wizard_draw_step('error', 'SQL error before line #' . __LINE__ . ': <br/>' . mysql_error()); rollback($newConfId, $completedTables); return false; }
|
|
|
|
// page text
|
|
$q = mysql_query("SELECT * FROM pagetext WHERE conferences_id = $oldConfId");
|
|
while(mysql_error() == '' && $r=mysql_fetch_object($q))
|
|
mysql_query("INSERT INTO pagetext (textname,textdescription,text,lastupdate,conferences_id,lang) VALUES (
|
|
'".mysql_real_escape_string($r->textname)."',
|
|
'".mysql_real_escape_string($r->textdescription)."',
|
|
'".mysql_real_escape_string($r->text)."',
|
|
'".mysql_real_escape_string($r->lastupdate)."',
|
|
'".mysql_real_escape_string($newConfId)."',
|
|
'".mysql_real_escape_string($r->lang)."')");
|
|
$completedTables[] = 'pagetext';
|
|
if(mysql_error() != ''){ wizard_draw_step('error', 'SQL error before line #' . __LINE__ . ': <br/>' . mysql_error()); rollback($newConfId, $completedTables); return false; }
|
|
|
|
// project categories
|
|
$q = mysql_query("SELECT * FROM projectcategories WHERE conferences_id = $oldConfId");
|
|
while(mysql_error() == '' && $r=mysql_fetch_object($q))
|
|
mysql_query("INSERT INTO projectcategories (id,category,category_shortform,mingrade,maxgrade,conferences_id) VALUES (
|
|
'".mysql_real_escape_string($r->id)."',
|
|
'".mysql_real_escape_string($r->category)."',
|
|
'".mysql_real_escape_string($r->category_shortform)."',
|
|
'".mysql_real_escape_string($r->mingrade)."',
|
|
'".mysql_real_escape_string($r->maxgrade)."',
|
|
'".mysql_real_escape_string($newConfId)."')");
|
|
$completedTables[] = 'projectcategories';
|
|
if(mysql_error() != ''){ wizard_draw_step('error', 'SQL error before line #' . __LINE__ . ': <br/>' . mysql_error()); rollback($newConfId, $completedTables); return false; }
|
|
|
|
// project divisions
|
|
$q=mysql_query("SELECT * FROM projectdivisions WHERE conferences_id=$oldConfId");
|
|
while(mysql_error() == '' && $r=mysql_fetch_object($q))
|
|
mysql_query("INSERT INTO projectdivisions (id,division,division_shortform,cwsfdivisionid,conferences_id) VALUES (
|
|
'".mysql_real_escape_string($r->id)."',
|
|
'".mysql_real_escape_string($r->division)."',
|
|
'".mysql_real_escape_string($r->division_shortform)."',
|
|
'".mysql_real_escape_string($r->cwsfdivisionid)."',
|
|
'".mysql_real_escape_string($newConfId)."')");
|
|
$completedTables[] = 'projectdivisions';
|
|
if(mysql_error() != ''){ wizard_draw_step('error', 'SQL error before line #' . __LINE__ . ': <br/>' . mysql_error()); rollback($newConfId, $completedTables); return false; }
|
|
|
|
// project subdivisions
|
|
$q=mysql_query("SELECT * FROM projectsubdivisions WHERE conferences_id=$oldConfId");
|
|
while(mysql_error() == '' && $r=mysql_fetch_object($q))
|
|
mysql_query("INSERT INTO projectsubdivisions (id,projectdivisions_id,subdivision,conferences_id) VALUES (
|
|
'".mysql_real_escape_string($r->id)."',
|
|
'".mysql_real_escape_string($r->projectsubdivisions_id)."',
|
|
'".mysql_real_escape_string($r->subdivision)."',
|
|
'".mysql_real_escape_string($newConfId)."')");
|
|
$completedTables[] = 'projectsubdivisions';
|
|
if(mysql_error() != ''){ wizard_draw_step('error', 'SQL error before line #' . __LINE__ . ': <br/>' . mysql_error()); rollback($newConfId, $completedTables); return false; }
|
|
|
|
// safety questions
|
|
$q=mysql_query("SELECT * FROM safetyquestions WHERE conferences_id=$oldConfId");
|
|
while(mysql_error() == '' && $r=mysql_fetch_object($q))
|
|
mysql_query("INSERT INTO safetyquestions (question,type,required,ord,conferences_id) VALUES (
|
|
'".mysql_real_escape_string($r->question)."',
|
|
'".mysql_real_escape_string($r->type)."',
|
|
'".mysql_real_escape_string($r->required)."',
|
|
'".mysql_real_escape_string($r->ord)."',
|
|
'".mysql_real_escape_string($newConfId)."')");
|
|
$completedTables[] = 'safetyquestions';
|
|
if(mysql_error() != ''){ wizard_draw_step('error', 'SQL error before line #' . __LINE__ . ': <br/>' . mysql_error()); rollback($newConfId, $completedTables); return false; }
|
|
|
|
// awards
|
|
$q=mysql_query("SELECT * FROM award_awards WHERE conferences_id=$oldConfId");
|
|
$errorMessage = mysql_error();
|
|
while($errorMessage == '' && $r=mysql_fetch_object($q)) {
|
|
/* Roll the one award */
|
|
$errorMessage .= roll($oldConfId, $newConfId, 'award_awards', "id='{$r->id}'");
|
|
$award_awards_id=mysql_insert_id();
|
|
|
|
$errorMessage .= roll($oldConfId, $newConfId, 'award_awards_projectcategories', "award_awards_id='{$r->id}'",
|
|
array('award_awards_id' => $award_awards_id));
|
|
$errorMessage .= roll($oldConfId, $newConfId, 'award_awards_projectdivisions', "award_awards_id='{$r->id}'",
|
|
array('award_awards_id' => $award_awards_id));
|
|
$errorMessage .= roll($oldConfId, $newConfId, 'award_prizes', "award_awards_id='{$r->id}'",
|
|
array('award_awards_id' => $award_awards_id));
|
|
}
|
|
$completedTables[] = 'award_awards';
|
|
$completedTables[] = 'award_awards_projectcategories';
|
|
$completedTables[] = 'award_awards_projectdivisions';
|
|
$completedTables[] = 'award_prizes';
|
|
if($errorMessage != ''){ wizard_draw_step('error', 'SQL error before line #' . __LINE__ . ': <br/>' . $errorMessage); rollback($newConfId, $completedTables); return false; }
|
|
|
|
// award types
|
|
$q=mysql_query("SELECT * FROM award_types WHERE conferences_id = $oldConfId");
|
|
while(mysql_error() == '' && $r=mysql_fetch_object($q))
|
|
mysql_query("INSERT INTO award_types (id,type,`order`,conferences_id) VALUES (
|
|
'".mysql_real_escape_string($r->id)."',
|
|
'".mysql_real_escape_string($r->type)."',
|
|
'".mysql_real_escape_string($r->order)."',
|
|
'".mysql_real_escape_string($newConfId)."')");
|
|
$completedTables[] = 'award_types';
|
|
if(mysql_error() != ''){ wizard_draw_step('error', 'SQL error before line #' . __LINE__ . ': <br/>' . mysql_error()); rollback($newConfId, $completedTables); return false; }
|
|
|
|
// schools
|
|
$q=mysql_query("SELECT * FROM schools WHERE conferences_id=$oldConfId");
|
|
while(mysql_error() == '' && $r=mysql_fetch_object($q)) {
|
|
$puid = ($r->principal_uid == null) ? 'NULL' : ("'".intval($r->principal_uid)."'");
|
|
$shuid = ($r->sciencehead_uid == null) ? 'NULL' : ("'".intval($r->sciencehead_uid)."'");
|
|
|
|
|
|
mysql_query("INSERT INTO schools (school,schoollang,schoollevel,board,district,phone,fax,address,city,province_code,postalcode,principal_uid,schoolemail,sciencehead_uid,accesscode,lastlogin,junior,intermediate,senior,registration_password,projectlimit,projectlimitper,conferences_id) VALUES (
|
|
'".mysql_real_escape_string($r->school)."',
|
|
'".mysql_real_escape_string($r->schoollang)."',
|
|
'".mysql_real_escape_string($r->schoollevel)."',
|
|
'".mysql_real_escape_string($r->board)."',
|
|
'".mysql_real_escape_string($r->district)."',
|
|
'".mysql_real_escape_string($r->phone)."',
|
|
'".mysql_real_escape_string($r->fax)."',
|
|
'".mysql_real_escape_string($r->address)."',
|
|
'".mysql_real_escape_string($r->city)."',
|
|
'".mysql_real_escape_string($r->province_code)."',
|
|
'".mysql_real_escape_string($r->postalcode)."',$puid,
|
|
'".mysql_real_escape_string($r->schoolemail)."',$shuid,
|
|
'".mysql_real_escape_string($r->accesscode)."',
|
|
NULL,
|
|
'".mysql_real_escape_string($r->junior)."',
|
|
'".mysql_real_escape_string($r->intermediate)."',
|
|
'".mysql_real_escape_string($r->senior)."',
|
|
'".mysql_real_escape_string($r->registration_password)."',
|
|
'".mysql_real_escape_string($r->projectlimit)."',
|
|
'".mysql_real_escape_string($r->projectlimitper)."',
|
|
'".mysql_real_escape_string($newConfId)."')");
|
|
}
|
|
$completedTables[] = 'schools';
|
|
if(mysql_error() != ''){ wizard_draw_step('error', 'SQL error before line #' . __LINE__ . ': <br/>' . mysql_error()); rollback($newConfId, $completedTables); return false; }
|
|
|
|
// questions
|
|
$q = mysql_query("SELECT * FROM questions WHERE conferences_id = $oldConfId");
|
|
while(mysql_error() == '' && $r=mysql_fetch_object($q))
|
|
mysql_query("INSERT INTO questions (id,conferences_id,section,db_heading,question,type,required,ord) VALUES (
|
|
'',
|
|
'$newConfId',
|
|
'".mysql_real_escape_string($r->section)."',
|
|
'".mysql_real_escape_string($r->db_heading)."',
|
|
'".mysql_real_escape_string($r->question)."',
|
|
'".mysql_real_escape_string($r->type)."',
|
|
'".mysql_real_escape_string($r->required)."',
|
|
'".mysql_real_escape_string($r->ord)."')");
|
|
$completedTables[] = 'questions';
|
|
if(mysql_error() != ''){ wizard_draw_step('error', 'SQL error before line #' . __LINE__ . ': <br/>' . mysql_error()); rollback($newConfId, $completedTables); return false; }
|
|
|
|
// regfee items
|
|
$errorMessage = roll($oldConfId, $newConfId, 'regfee_items');
|
|
$completedTables[] = 'regfee_items';
|
|
if($errorMessage != ''){ wizard_draw_step('error', 'SQL error before line #' . __LINE__ . ': <br/>' . $errorMessage); rollback($newConfId, $completedTables); return false; }
|
|
|
|
// volunteer positions
|
|
$errorMessage = roll($oldConfId, $newConfId, 'volunteer_positions');
|
|
$completedTables[] = 'volunteer_positions';
|
|
if($errorMessage != ''){ wizard_draw_step('error', 'SQL error before line #' . __LINE__ . ': <br/>' . $errorMessage); rollback($newConfId, $completedTables); return false; }
|
|
|
|
// timeslots and rounds
|
|
$q = mysql_query("SELECT * FROM judges_timeslots WHERE conferences_id='$oldConfId' AND round_id='0'");
|
|
$errorMessage = mysql_error();
|
|
while($errorMessage == '' && $r=mysql_fetch_assoc($q)) {
|
|
if($params['rollDates'] == 'yes'){
|
|
$queryText = "INSERT INTO judges_timeslots (`conferences_id`,`round_id`,`type`,`date`,`starttime`,`endtime`,`name`)
|
|
VALUES ('$newConfId','0','{$r['type']}',DATE_ADD('{$r['date']}', INTERVAL 1 YEAR),
|
|
'{$r['starttime']}','{$r['endtime']}','{$r['name']}')";
|
|
}else{
|
|
$queryText = "INSERT INTO judges_timeslots (`conferences_id`,`round_id`,`type`,`date`,`starttime`,`endtime`,`name`)
|
|
VALUES ('$newConfId','0','{$r['type']}','{$r['date']}',
|
|
'{$r['starttime']}','{$r['endtime']}','{$r['name']}')";
|
|
}
|
|
mysql_query($queryText);
|
|
$errorMessage .= mysql_error();
|
|
$round_id = mysql_insert_id();
|
|
$qq = mysql_query("SELECT * FROM judges_timeslots WHERE round_id='{$r['id']}'");
|
|
if($params['rollDates'] == 'yes'){
|
|
while(($rr=mysql_fetch_assoc($qq)) && $errorMessage == ''){
|
|
$queryText = "INSERT INTO judges_timeslots (`conferences_id`,`round_id`,`type`,`date`,`starttime`,`endtime`)
|
|
VALUES ('$newConfId','$round_id','timeslot',DATE_ADD('{$rr['date']}', INTERVAL 1 YEAR),
|
|
'{$rr['starttime']}','{$rr['endtime']}')";
|
|
mysql_query($queryText);
|
|
$errorMessage .= mysql_error();
|
|
}
|
|
}else{
|
|
while(($rr=mysql_fetch_assoc($qq)) && $errorMessage == ''){
|
|
$queryText = "INSERT INTO judges_timeslots (`conferences_id`,`round_id`,`type`,`date`,`starttime`,`endtime`)
|
|
VALUES ('$newConfId','$round_id','timeslot','{$rr['date']}',
|
|
'{$rr['starttime']}','{$rr['endtime']}')";
|
|
mysql_query($queryText);
|
|
$errorMessage .= mysql_error();
|
|
}
|
|
}
|
|
}
|
|
$completedTables[] = 'judges_timeslots';
|
|
if($errorMessage != ''){ wizard_draw_step('error', 'SQL error before line #' . __LINE__ . ': <br/>' . $errorMessage); rollback($newConfId, $completedTables); return false; }
|
|
|
|
|
|
// admin, config, and committee users
|
|
$errorMessage = conferences_copy_users($oldConfId, $newConfId, array('admin', 'config', 'committee'));
|
|
$completedTables[] = 'users';
|
|
$completedTables[] = 'user_roles';
|
|
if($errorMessage != 'ok'){ wizard_draw_step('error', 'SQL error before line #' . __LINE__ . ': <br/>' . $errorMessage); rollback($newConfId, $completedTables); return false; }
|
|
|
|
// copy the logo files over as well
|
|
$imgPath = $_SERVER['DOCUMENT_ROOT'] . $config['SFIABDIRECTORY'] . "/data";
|
|
|
|
$listing = scandir($imgPath);
|
|
$digits = strlen($oldConfId);
|
|
foreach($listing as $fname){
|
|
if(preg_match("/^$oldConfId-logo/", $fname)){
|
|
$newName = $newConfId . substr($fname, $digits);
|
|
shell_exec("cp $imgPath/$fname $imgPath/$newName");
|
|
}
|
|
}
|
|
|
|
|
|
// WHEW! If we've made it this far, the conference has successfully been copied
|
|
|
|
// end the previous conference if applicable
|
|
if($params['endexisting'] == true){
|
|
// let's go ahead and end the conference that we just copied
|
|
mysql_query("UPDATE conferences SET status = 'ended' WHERE id = '$oldConfId'");
|
|
if(mysql_error() != ''){
|
|
wizard_draw_step('error', i18n("The conference was copied successfully, but not successfully ended. You will need to end the original conference manually.") . "<br/> SQL error:<br/>" . mysql_error());
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
// undo all of the conference rolling over that was done by copy_conference. This only gets called if an error occurs
|
|
// while copying to the new conference. In that case, all of the newly added data relevant to the conference is deleted,
|
|
// as well as the conference itself
|
|
function rollback($conferences_id, $tables){
|
|
foreach($tables as $table){
|
|
mysql_query("DELETE FROM `$table` WHERE `conferences_id` = $conferences_id");
|
|
}
|
|
mysql_query("DELETE FROM conferences WHERE id = $conferences_id");
|
|
}
|
|
|
|
// return empty string on success, error message otherwise
|
|
function roll($oldConfId, $newConfId, $table, $where='', $replace=array()){
|
|
/* Field Type Null Key Default Extra
|
|
* id int(10) unsigned NO PRI NULL auto_increment
|
|
* sponsors_id int(10) unsigned NO MUL 0
|
|
* award_source_fairs_id int(10) unsigned YES NULL
|
|
*/
|
|
|
|
$errMessage = '';
|
|
|
|
/* Get field list for this table */
|
|
$q = mysql_query("SHOW COLUMNS IN `$table`");
|
|
while(($c = mysql_fetch_assoc($q))) {
|
|
$col[$c['Field']] = $c;
|
|
}
|
|
|
|
/* Record fields we care about */
|
|
$fields = array();
|
|
$keys = array_keys($col);
|
|
foreach($keys as $k) {
|
|
/* Skip id field */
|
|
if($col[$k]['Extra'] == 'auto_increment') continue;
|
|
/* Skip year field */
|
|
if($k == 'year') continue;
|
|
/* Skip conferences_id field */
|
|
if($k == 'conferences_id') continue;
|
|
|
|
$fields[] = $k;
|
|
}
|
|
|
|
if($where == '') $where='1';
|
|
|
|
/* Get data */
|
|
$q=mysql_query("SELECT * FROM $table WHERE conferences_id='$oldConfId' AND $where");
|
|
if(mysql_error() != '') $errMessage .= mysql_error() . "<br/>";
|
|
|
|
$names = '`' . implode('`,`', $fields) . '`';
|
|
|
|
/* Process data */
|
|
while($r=mysql_fetch_assoc($q)) {
|
|
$vals = '';
|
|
foreach($fields as $f) {
|
|
if(array_key_exists($f, $replace))
|
|
$vals .= ",'".mysql_real_escape_string($replace[$f])."'";
|
|
else if($col[$f]['Null'] == 'YES' && $r[$f] == NULL)
|
|
$vals .= ',NULL';
|
|
else
|
|
$vals .= ",'".mysql_real_escape_string($r[$f])."'";
|
|
}
|
|
mysql_query("INSERT INTO `$table` (`conferences_id`, $names) VALUES ('$newConfId'$vals)");
|
|
if(mysql_error() != '') $errMessage .= mysql_error() . "<br/>";
|
|
echo mysql_error();
|
|
}
|
|
|
|
return $errMessage;
|
|
}
|