<?php require_once('common.inc.php'); require_once('user.inc.php'); require_once('account.inc.php'); if($_SESSION['schoolid'] && $_SESSION['schoolaccesscode'] && $conference['type'] == 'scienceolympics'){ switch($_GET['action']){ case 'new': $results = process_newRecord($_POST['firstName'], $_POST['lastName'], $_POST['email']); if($results !== true){ echo "<script type=\"text/javascript\">var success = false;</script>"; error_($results); }else{ echo "<script type=\"text/javascript\">var success = true;</script>"; } break; case 'update': $results = alter_record($_POST['recordId'], $_POST['firstName'], $_POST['lastName'], $_POST['email']); if($results !== true){ echo "<script type=\"text/javascript\">var success = false;</script>"; error_($results); }else{ echo "<script type=\"text/javascript\">var success = true;</script>"; } break; case 'delete': if(!delete_record($_POST['uid'])){ echo "<script type=\"text/javascript\">var success = false;</script>"; error_("Unable to delete record"); }else{ echo "<script type=\"text/javascript\">var success = true;</script>"; } break; default: $title = i18n("Manage Students"); send_header($title, array("School Home" => "schoolaccess.php")); draw_javascript(); draw_list(); send_footer(); } }else{ header('Location: schoolaccess.php'); } // alter an existing user record. returns true on success, error message on failure function alter_record($uid, $firstName, $lastName, $email){ global $conference; $returnval = true; $firstName = trim($firstName); $lastName = trim($lastName); $email = strtolower(trim($email)); $user = user_load(null, $uid); if($user){ $user['firstname'] = $firstName; $user['lastname'] = $lastName; $user['email'] = $email; user_save($user); echo user_row($uid, $user['username'], $firstName, $lastName, $email); }else{ $returnval = "User not found"; } return $returnval; } // create a new record with the given first name last name and e-mail address // return true on success, error message on failure function process_newRecord($firstName, $lastName, $email){ global $conference; $firstName = trim($firstName); $lastName = trim($lastName); $email = strtolower(trim($email)); $uid = null; // make sure we are actually given a first and last name if(strlen($firstName) == 0 || strlen($lastName) == 0){ return "First and last names are required fields"; } // if they have an e-mail address, make sure it's not already in use if($email){ $account = account_load_by_username($email); }else{ $account = false; } if(!$account) { if($email) { $username=$email; } else { // generate a user name $nameBase = substr(strtolower($firstName), 0, 1) . strtolower($lastName); $suffix = ''; do{ $q = mysql_fetch_array(mysql_query('SELECT COUNT(*) AS tally FROM accounts WHERE username="' . ($nameBase . $suffix) . '";')); if($q['tally'] > 0){ if($suffix == '') $suffix = 1; else $suffix++; } }while($q['tally'] > 0); $username = $nameBase . $suffix; } // now that we have the username we want to use, let's create the user $account=account_create($username); } //next, we try to load their user record $user = user_load(0,$account['id']); if(!$user) { $user=user_create($account['id']); } user_add_role($user,'student'); //we're gonna set teh firstname/lastname too $user['firstname'] = $firstName; $user['lastname'] = $lastName; //and dont forget the school id, because we know what at this point $user['schools_id'] = $_SESSION['schoolid']; user_save($user); $uid = $user['uid']; echo user_row($uid, $username, $firstName, $lastName, $email); return true; } // generate the table row for thisa given record function user_row($uid, $username, $firstName, $lastName, $email){ $rval = "<tr id=\"$uid\">"; $rval .= "<td style=\"cursor: pointer;\" onclick=\"populate($uid);\""; $rval .= ">$username</td>"; $rval .= "<td>$firstName</td>"; $rval .= "<td>$lastName</td>"; $rval .= "<td>$email</td>"; $rval .= '<td style="text-align:center"><img border="0" src="/sfiab/images/16/button_cancel.png" onclick="deleteRecord(' . $uid . ')"/></td>'; $rval .= "</tr>"; return $rval; } // delete the record for the specified user id. Returns true on succes, error message on failure function delete_record($uid){ // delete schedule registrations mysql_query("DELETE FROM schedule_registrations_users_link WHERE users_uid = $uid"); // now delete the user $user = user_load_by_uid($uid); user_delete($user); $user = user_load_by_uid($uid); if($user['deleted'] != 'yes'){ return "Failed to delete user"; } return true; } function draw_javascript(){ ?> <script type="text/javascript"> var awaiting_ajax = false; // used to prevent the same record from being submitted multiple times // populate the edit fields with this user's info function populate(uid){ // extract the user's info from our table var n = 0; $('#' + uid + ' > td').each(function() { switch(n){ case 1: $('#newFirstName').attr({value:this.innerHTML}); break; case 2: $('#newLastName').attr({value:this.innerHTML}); break; case 3: $('#newEmail').attr({value:this.innerHTML}); break; } n++; }); $('#existingRecordId').attr({value:uid}); } function clearFields(){ $('#newFirstName').select(); $('#existingRecordId').attr({ value: -1 }); $('#newFirstName').attr({ value: '' }); $('#newLastName').attr({ value: '' }); $('#newEmail').attr({ value: '' }); } function deleteRecord(uid){ var params; if(awaiting_ajax) return false; awaiting_ajax = true; params = [{ 'name' : 'uid', 'value' : uid }]; $("#debug").load("schoolstudents.php?action=delete", params, function(response){ if(success){ $('#' + uid).remove(); } awaiting_ajax = false; }); } function saveRecord(){ var params; var firstName = $('#newFirstName').val(); var lastName = $('#newLastName').val(); var email = $('#newEmail').val(); var recordId = $('#existingRecordId').val(); if(firstName == '' || lastName == ''){ notice_create('error', '<?=i18n('First and last names are required fields'); ?>', 5000); return false; } // don't allow multiple submits if(awaiting_ajax) return false; awaiting_ajax = true; params = [ { 'name' : 'recordId', 'value' : recordId }, { 'name' : 'firstName', 'value' : firstName }, { 'name' : 'lastName', 'value' : lastName }, { 'name' : 'email', 'value' : email } ]; if(recordId != -1){ $("#debug").load("schoolstudents.php?action=update", params, function(response){ if(success){ $('#' + recordId).remove(); $('#studentList > tbody:last').append(response); clearFields(); } awaiting_ajax = false; }); }else{ $("#debug").load("schoolstudents.php?action=new", params, function(response){ if(success){ $('#studentList > tbody:last').append(response); clearFields(); } awaiting_ajax = false; }); } } </script> <?php } // draw an editable list of all students for this school in the users_stunt table function draw_list(){ global $conference; ?> <table id="studentList" class="summarytable"> <thead> <tr> <th><?=i18n("Username");?></th> <th><?=i18n("First Name");?></th> <th><?=i18n("Last Name");?></th> <th><?=i18n("Email Address / Username");?><br />(Leave blank to auto-generate)</th> <th></th> </tr> <tr> <th><span onclick="clearFields();" onmouseover="document.body.style.cursor='pointer';" onmouseout="document.body.style.cursor='auto';"> <?=i18n("New:")?> </span> <input type="hidden" id="existingRecordId" value="-1"></input> </th> <th><input type="text" id="newFirstName"></input></th> <th><input type="text" id="newLastName"></input></th> <th><input type="text" id="newEmail"></input></th> <th><button name="newRecord" onclick="saveRecord()"><?=i18n("Add")?></button></th> </tr> </thead> <tbody> <?php $query = 'SELECT * FROM users_student'; $query .= ' JOIN users ON users_student.users_id = users.uid'; $query .= ' JOIN users_conferences_link ucl ON ucl.users_uid = users_student.users_id'; $query .= ' WHERE schools_id = ' . $_SESSION['schoolid']; $query .= ' AND ucl.conferences_id=' . $conference['id']; $query .= ' AND users.deleted = "no"'; $data = mysql_query($query); if($data){ while($row = mysql_fetch_array($data)){ $uid = $row['users_uid']; echo user_row($uid, $row['username'], $row['firstname'], $row['lastname'], $row['email']); } } ?> </tbody> </table> <?php }