<?php //unique society identifier $GroupingID = "6613"; include "../lib/member_functions.php"; include "../lib/date.php"; include "../suapi.inc.php"; $error_email = "admin@sucs.org"; $mode = 'login'; //login if(!empty($_REQUEST['sid'])&&!empty($_REQUEST['transactionID'])){ //set signup details $sid = $_REQUEST['sid']; $transactionID = $_REQUEST['transactionID']; //set POST variables $url = "https://$suapi_user:$suapi_pass@su-api.sucs.org/memberships/Membership.asmx/GetMemberByTransactionID"; $fields = array( 'transactionID'=>urlencode($transactionID), 'GroupingID'=>urlencode($GroupingID), ); //url-ify the data for the POST $field_string = ""; foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } rtrim($fields_string,'&'); //open connection $ch = curl_init(); //set the url, number of POST vars, POST data curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_POST,count($fields)); curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string); curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //execute post $result = curl_exec($ch); //close connection curl_close($ch); if(!$result){ $mode = "error"; $smarty->assign("error_text", "Invalid query returned"); } else { libxml_use_internal_errors(true); $xml=simplexml_load_string($result); if (!$xml||isset($xml->head->title)) { $mode='error'; $smarty->assign("error_text", "An error occurred communicating with the SUSU API"); } else{ $re1='.*?'; $re2='(\\{.*?\\})'; if ($c=preg_match_all ("/".$re1.$re2."/is", $result, $matches)) { $json_string=$matches[1][0]; } else{ $mode = "error"; } $array = json_decode($json_string,TRUE); if($array['cardNumber'] == $sid && $sid != ""){ $mode = 'form'; // SET THIS FOR DEBUG MODE // $sucsDB->debug = true; $fullName = $array['firstName']." ".$array['lastName']; $query = "INSERT INTO transactions (transactionID,fullName,emailAddress,cardNumber,personID) values(?, ?, ?, ?, ?)"; $attribs[] = $transactionID; $attribs[] = $fullName; $attribs[] = $array['emailAddress']; $attribs[] = $array['cardNumber']; $attribs[] = $array['personID']; $valid = true; if(!$sucsDB->Execute($query,$attribs)) { // We did this because Adodb ErrorNo command is broken $query = "SELECT * FROM transactions WHERE transactionID = ?"; unset($attribs); $attribs[]=$transactionID; if($sucsDB->Execute($query,$attribs)) { $query = "SELECT * FROM transactions WHERE transactionID = ?"; $attribs= array(); $attribs[]=$transactionID; $data = $sucsDB->GetAll($query,$attribs); if(is_array($data)&&sizeof($data)==1&&$data[0]['signupid']==NULL){ // As it stands this shouldn't happen but if it does, no reason not to let them carry on $valid = true; } elseif(is_array($data)&&sizeof($data)==1&&$data[0]['signupid']!=NULL) { $query = "SELECT * FROM signup WHERE sid = ?"; unset($attribs); $attribs[]=$sid; $data = $sucsDB->Execute($query, $attribs); if(!$data) { mail( $error_email, "SUSignup Error", "An error occured in the susignup system at stage 0\n Love the signup system.\n\nP.S. The Error is:\n ".$sucsDB->ErrorMsg(), "From: \"SUCS Admin\" <admin@sucs.org>" ); $valid=false; } else if($data->fields['username']!=NULL){ $smarty->assign("username", $data->fields['username']); $mode='numpty2'; // This happens if they already ahve a SUCS account and are trying to create a new signupid $valid = false; } else { $smarty->assign("id", $data->fields['id']); $smarty->assign("pass", $data->fields['password']); $mode='numpty'; // If this happens they tried to get a new signupid/pass after already getting one, and should get weekly reminders about it $valid = false; } } else { $mode="error"; mail( $error_email, "SUSignup Error", "An error occured in the susignup system at stage 1\n Love the signup system.\n\nP.S. The Error is:\n ".$sucsDB->ErrorMsg(), "From: \"SUCS Admin\" <admin@sucs.org>" ); $valid = false; } } else { $mode="error"; mail( $error_email, "SUSignup Error", "An error occured in the susignup system at stage 2\n Love the signup system.\n\nP.S. The Error is:\n ".$sucsDB->ErrorMsg(), "From: \"SUCS Admin\" <admin@sucs.org>" ); $valid = false; } } if($valid) { unset($attribs); unset($query); $query = "SELECT * FROM members WHERE sid = ?"; $attribs[] = $sid; unset($data); $data = $sucsDB->Execute($query, $attribs); if (!$data) { $mode = "error"; $smarty->assign("error_text", "Error in internal database check"); } elseif ($data->RecordCount()==1) { $mode = "renew"; $q="UPDATE members SET paid=?, lastupdate=DEFAULT, lastedit=? WHERE username=?;"; $r=$sucsDB->Execute($q, array(paidUntil(time()), '99999', $data->fields['username'])); if (!$r) { mail( $error_email, "SUSignup Error", "An error occured in the susignup system at stage 2.5\n Love the signup system.\n\nP.S. The Error is:\n ".$sucsDB->ErrorMsg(), "From: \"SUCS Admin\" <admin@sucs.org>" ); } else { $q="SELECT email, typename FROM members, member_type WHERE username=? AND type=member_type.id;"; $r=$sucsDB->Execute($q, array($data->fields['username'])); $message = "Account Renewal notification\n\n"; $message .= "Account : ".$data->fields['username']."\n"; $message .= "User Type : ".$r->fields['typename']."\n"; $message .= "Renewed by: ".$data->fields['username'].".\n\n"; $message .= "**** Payment was made via the SU payments system ****\n"; $message .= "Regards\n The SU Renewals script"; mail("treasurer@sucs.org","Account Renewal",$message); $message = "Your Swansea University Computer Society (SUCS) membership has been renewed\n\n"; $message .= "Username: ".$renew_name."\n"; $message .= "If you do not know or have forgotten your password, please email admin@sucs.org to arrange for it to be changed.\n\n"; $message .= "Regards\n The SUCS admin"; $header = "From: admin@sucs.org\r\n"; $header .= "Reply-To: admin@sucs.org"; // Personal account mail($r->fields['email'],"SUCS account renewal",$message,$header); // sucs account mail($data->fields['username']."@sucs.org","SUCS account renewal",$message,$header); unset($query); unset($attribs); $query = "UPDATE transactions set signupid=? WHERE transactionID=?"; $attribs[]="000"; $attribs[]=$transactionID; $data = $sucsDB->Execute($query,$attribs); if (!$data) { $mode="error"; mail( $error_email, "SUSignup Error", "An error occured in the susignup system at stage 2.6\n Love the signup system.\n\nP.S. The Error is:\n ".$sucsDB->ErrorMsg(), "From: \"SUCS Admin\" <admin@sucs.org>" ); } } } else { $pass = make_password(); unset($query); $query = "insert into signup (password,sid,issuedby) values( ?, ?, ?) returning id"; unset($attribs); $attribs[]=$pass; $attribs[]=$array['cardNumber']; $attribs[]='99999'; $iddata = $sucsDB->Execute($query,$attribs); $id = $iddata->fields['id']; if (!$iddata) { $mode="error"; mail( $error_email, "SUSignup Error", "An error occured in the susignup system at stage 3\n Love the signup system.\n\nP.S. The Error is:\n ".$sucsDB->ErrorMsg(), "From: \"SUCS Admin\" <admin@sucs.org>" ); } else { $query = "update transactions set signupid=? WHERE transactionID=?"; unset($attribs); $attribs[]=$id; $attribs[]=$transactionID; if(!$sucsDB->Execute($query,$attribs)) { $mode="error"; mail( $error_email, "SUSignup Error", "An error occured in the susignup system at stage 4\n Love the signup system.\n\nP.S. The Error is:\n ".$sucsDB->ErrorMsg(), "From: \"SUCS Admin\" <admin@sucs.org>" ); print($sucsDB->ErrorMsg()); } else { $smarty->assign("id", $id); $smarty->assign("pass", $pass); mail( $array['emailAddress'].','.$sid.'@swansea.ac.uk', "SUCS Signup Information", "Thankyou for joining Swansea University Computer Society, your signup details are below;\nSignupID: $id\nSignup Password: $pass\nIf you have successfully completed signup immediately then you can disregard this message.\n\nSUCS Admin Team.", "From: \"SUCS Admin\" <admin@sucs.org>" ); } } } } } } } } $smarty->assign("mode", $mode); $output = $smarty->fetch("susignup.tpl"); $smarty->assign("title", "Join"); $smarty->assign("body", $output); ?>