diff --git a/account.inc.php b/account.inc.php
index d01f439..0b787e8 100644
--- a/account.inc.php
+++ b/account.inc.php
@@ -198,6 +198,12 @@ function account_add_role($accounts_id, $roles_id, $conferences_id, $password =
global $config;
global $conference;
+ //if we get role as a type string instead of an id (eg, 'teacher'), lets just look it up
+ if(!is_numeric($roles_id)) {
+ $tq=mysql_query("SELECT id FROM roles WHERE type='".mysql_real_escape_string($roles_id)."'");
+ $tr=mysql_fetch_object($tq);
+ $roles_id=$tr->id;
+ }
// avoid injections
$accounts_id=intval($accounts_id);
$roles_id=intval($roles_id);
diff --git a/admin/schools.php b/admin/schools.php
index 2f2a1cc..8fcd772 100644
--- a/admin/schools.php
+++ b/admin/schools.php
@@ -66,6 +66,48 @@ if($_POST['action']=="removeuser") {
echo "ok";
exit;
}
+else if($_POST['action']=="adduser") {
+ /* we have the following to work with:
+ accounts_id, conferenceid, field, role, username, users_id
+ */
+
+ //if accounts_id is 0, it means its a new user
+ $accounts_id=intval($_POST['accounts_id']);
+ $conferenceid=intval($_POST['conferenceid']);
+ $schoolid=intval($_POST['schoolid']);
+
+ if($accounts_id==0) {
+ $a=account_create($_POST['username']);
+ if(isEmailAddress($_POST['username']))
+ account_set_email($a['id'],$_POST['username']);
+ //and load it again, just so we have the most up-to-date
+ $a=account_load($a['id']);
+ }
+ else
+ $a=account_load($accounts_id);
+
+ //now lets add the role -- this fails gracefully if they already have the role, or if its added, in both cases it returns 'ok'
+ $ret=account_add_role($a['id'],$_POST['role'],$conferenceid);
+
+ //we still need the user id
+ $u=user_load_by_accounts_id($a['id']);
+
+ if($ret=='ok' && $u['id']) {
+ mysql_query("UPDATE schools SET `".mysql_real_escape_string($_POST['field'])."`='{$u['id']}' WHERE id='$schoolid'");
+ echo mysql_error();
+ //and update the users schools_id, yes, maybe we should use the user object and user_save() but the single query here is easier and probably waaaaaay faster
+ mysql_query("UPDATE users SET schools_id='$schoolid' WHERE id='{$u['id']}'");
+ echo mysql_error();
+ echo "ok";
+ }
+ else {
+ echo "error\n";
+ echo "ret=$ret\n";
+ echo "u="; print_r($u);
+ //error ?
+ }
+ exit;
+}
if($_GET['action']=='loaduser') {
$schoolid=intval($_GET['schoolid']);
@@ -82,7 +124,7 @@ if($_GET['action']=='loaduser') {
if($r->userid > 0) {
//we already have one, so just display teh details, with the option to remove or edit
echo "
";
- echo "id\">";
+ echo "userid); return false;\" href=\"#\">";
echo " ";
echo "";
@@ -102,11 +144,13 @@ if($_GET['action']=='loaduser') {
}
+
+
function emit_user_selector($name,$conferenceid,$role,$allowcreate=true) {
echo "\n";
echo "";
echo "";
- echo "";
+ echo "";
echo "\n";
}
@@ -121,84 +165,6 @@ function emit_user_selector($name,$conferenceid,$role,$allowcreate=true) {
$atrisk = $_POST['atrisk'] == 'yes' ? 'yes' : 'no';
-/*
- "sciencehead='".mysql_escape_string(stripslashes($_POST['sciencehead']))."', ".
- "scienceheadphone='".mysql_escape_string(stripslashes($_POST['scienceheadphone']))."', ".
- "scienceheademail='".mysql_escape_string(stripslashes($_POST['scienceheademail']))."', ".
- "principal='".mysql_escape_string(stripslashes($_POST['principal']))."', ".
-*/
-
- /* Get the uids for principal/science head */
- $q = mysql_query("SELECT principal_uid,sciencehead_uid FROM schools WHERE id='$id'");
- $i = mysql_fetch_assoc($q);
-
- $principal_update = '';
- $sciencehead_update = '';
-
- list($first, $last) = explode(' ', $_POST['principal'], 2);
- /* Load existing entry if it exists, else make an entry if
- * there is data, else, do nothing */
- if($i['principal_uid'] > 0)
- $pl = user_load($i['principal_uid']);
- else if($first != '' && $last != '') {
- $pl = user_create('principal', "*$first$last".user_generate_password());
- $principal_update = "principal_uid='{$pl['uid']}',";
- } else
- $pl = false;
-
- /* If we loaded or created an entry, either
- * update and save, or purge it */
- if(is_array($pl)) {
- if($first == '' && $last == '') {
- user_purge($pl, 'principal');
- $principal_update = 'principal_uid=NULL,';
- } else {
- $pl['firstname'] = $first;
- $pl['lastname'] = $last;
- user_save($pl);
- }
- }
-
-
- /* Get info about science head */
- list($first, $last) = explode(' ', $_POST['sciencehead'], 2);
- $em = $_POST['scienceheademail'];
- if($em == '' && ($first != '' || $last != '')) $em = "*$first$last".user_generate_password();
- /* Load existing record, or create new if there's something
- * to insert */
- $sh = false;
- if($i['sciencehead_uid'] > 0) {
- $sh = user_load($i['sciencehead_uid']);
- /* It's possile for sh to be false now, happens when the user is
- * deleted outside the school editor, this condition needs to be
- * fixed. If we let it go, the saving the teacher info will
- * silently fail. So let's just create a new teacher */
-
- if(is_array($sh) && ($em != $sh['email'] || $em=='')) {
- /* If the emails don't match we have no way of knowing if we're creating a different
- * user, or doing a correction, assume it's a different user */
- user_purge($sh, 'teacher');
- $sh = false;
- }
- }
-
- /* If there was no teacher loaded, or if we just purged it, create a new one
- * if there's an email address */
- if($sh == false && $em != '') {
- $sh = user_create('teacher', $em);
- $sciencehead_update = "sciencehead_uid='{$sh['uid']}',";
- }
-
- /* If we have a record update it */
- if(is_array($sh)) {
- $sh['firstname'] = $first;
- $sh['lastname'] = $last;
- $sh['phonework'] = $_POST['scienceheadphone'];
- $sh['email'] = $em;
- $sh['username'] = $em;
- user_save($sh);
- }
-
$exec="UPDATE schools SET ".
"school='".mysql_escape_string(stripslashes($_POST['school']))."', ".
"schoollang='".mysql_escape_string(stripslashes($_POST['schoollang']))."', ".
@@ -218,7 +184,6 @@ function emit_user_selector($name,$conferenceid,$role,$allowcreate=true) {
"projectlimit='".mysql_escape_string(stripslashes($_POST['projectlimit']))."', ".
"projectlimitper='".mysql_escape_string(stripslashes($_POST['projectlimitper']))."', ".
"accesscode='".mysql_escape_string(stripslashes($_POST['accesscode']))."', ".
- $sciencehead_update.$principal_update.
"atrisk='$atrisk' ".
"WHERE id='$id'";
mysql_query($exec);
@@ -229,8 +194,7 @@ function emit_user_selector($name,$conferenceid,$role,$allowcreate=true) {
else
$notice = 'saved';
}
- else if($_POST['action'] == "save_participation")
- {
+ else if($_POST['action'] == "save_participation") {
// update the schools' participation in fairs an olympics to reflect the settings submitted
$olympicSet = array();
$fairSet = array();
@@ -258,6 +222,9 @@ function emit_user_selector($name,$conferenceid,$role,$allowcreate=true) {
$q=mysql_query("SELECT * FROM schools WHERE conferences_id=$oldConfId");
while($r=mysql_fetch_object($q)) {
+ //FIXME: we need to roll the userid's to new ones for the new conference, if we use the same ones its not gonna work
+ //nobody should be copying for now, so we should be safe for a few months
+ //2011-02-22
$puid = ($r->principal_uid == null) ? 'NULL' : ("'".intval($r->principal_uid)."'");
$shuid = ($r->sciencehead_uid == null) ? 'NULL' : ("'".intval($r->sciencehead_uid)."'");
@@ -300,8 +267,7 @@ function emit_user_selector($name,$conferenceid,$role,$allowcreate=true) {
if($_GET['action']=="makeaccesscodes") {
$q=mysql_query("SELECT id FROM schools WHERE conferences_id='{$conference['id']}' AND (accesscode IS NULL OR accesscode='')");
- while($r=mysql_fetch_object($q))
- {
+ while($r=mysql_fetch_object($q)) {
$ac=generatePassword(5);
mysql_query("UPDATE schools SET accesscode='$ac' WHERE id='$r->id' AND conferences_id='{$conference['id']}'");
@@ -345,30 +311,12 @@ function updateUser(role,schoolid) {
var field=$(this).attr("name");
var conferenceid=$("#"+field+'_conferenceid').val();
var role=$("#"+field+'_role').val();
- if(accounts_id==0) {
- //awesome, we can just post to the API!!
- alert("Creating new account with username: "+username+" role: "+role+" schoolid: "+schoolid+" conferenceid: "+conferenceid);
- /*
- $.post("../api/account/create",{username: username},function(d) {
- if(d.status=="ok") {
- alert('successfully created account');
- }
- else {
- alert('error creating account');
- }
- },"json");
-*/
- }
- else {
- alert('selecting account id: '+accounts_id);
- if(users_id==0) {
- alert('Creating new user record for this account/conference');
- } else {
- alert('selecing users id: '+users_id);
- }
- }
- $(this).prev().val(users_id);
+ var options={action: 'adduser', accounts_id: accounts_id, users_id: users_id, username: username, field: field, conferenceid: conferenceid, schoolid: global_schoolid, role: role };
+
+ $.post("schools.php",options,function() {
+ updateUser(role,global_schoolid);
+ });
}
});
});