diff --git a/inside/ActionParser.php b/inside/ActionParser.php
index bf20c89..bd95502 100644
--- a/inside/ActionParser.php
+++ b/inside/ActionParser.php
@@ -851,68 +851,79 @@ class ActionParser {
}
public function _registerMembership() {
- $cardno = scriptParam("cardno");
+ $id = scriptParam("cardno");
$password = scriptParam("verificationCode");
- if (checkPassword($cardno, $password)) {
+
+ $msa_code = verifyActivationCode($id, $password);
+ // was the verification successful ?
+ if (!is_null($msa_code)) {
$user = new User(scriptParam("userid"));
- if ($user->cardno != NULL) {
- $this->_renewMembership();
- return;
+ if (!is_null($user->getMembercard())) {
+ // user has a card, only renew membership
+ return $this->_renewMembership();
}
- if ($user->registerMembership($cardno) == true) {
- notify("Betalt medlemskap er registrert. Medlemskort vil bli produsert og sendt til din registrerte adresse.");
+
+ if ($user->registerMembership()) {
+ // mark activation code as used
+ $msa_code->setUserId($user->getId());
+ $msa_code->setUsed(new DateTime());
+ $msa_code->store();
+
+ notify("Betalt medlemskap er registrert. Medlemskort vil bli produsert.");
} else {
$GLOBALS['extraScriptParams']['page'] = "register-membership";
}
} else {
- notify("Kortnummer og kortkode passer ikke sammen. Kortnummeret er det som står på kodelappen, ikke det som står på medlemskortet ditt. Vi gjør også oppmerksom på det skilles mellom store og små bokstaver.");
+ notify("Aktiveringsnummer og kode passer ikke sammen. Kortnummeret er det som står på kodelappen, ikke det som står på medlemskortet ditt. Vi gjør også oppmerksom på det skilles mellom store og små bokstaver.");
$GLOBALS['extraScriptParams']['page'] = "register-membership";
$GLOBALS['extraScriptParams']['report-bug'] = "register-membership";
}
}
public function _registerMembershipPayex() {
- $user = new User(scriptParam("userid"));
- $cardno = $user->cardno;
- $expires = $user->expires;
- if ($cardno == NULL) {
- if (!$user->registerMembershipPayex()) {
- return false;
- }
- } else {
- if (!$user->renewMembershipPayex()) {
- return false;
- }
- }
$payment = new Payment(NULL, $_POST);
if ($payment->status == "FAILURE") {
$GLOBALS['extraScriptParams']['page'] = "register-membership";
- if ($cardno == NULL) {
- $user->setCardno("NULL");
- }
- $user->setExpires($expires);
} else {
+ $user = new User(scriptParam("userid"));
+
+ // check if user needs a member card
+ if (is_null($user->getMemberCard())) {
+ if (!$user->registerMembershipPayex()) {
+ return false;
+ }
+ } else {
+ if (!$user->renewMembershipPayex()) {
+ return false;
+ }
+ }
+
$GLOBALS['extraScriptParams']['page'] = "register-payex-transaction-confirm";
$GLOBALS['extraScriptParams']['transactionid'] = $payment->transaction_id;
}
}
public function _renewMembership() {
- $cardno = scriptParam("cardno");
+ $id = scriptParam("cardno");
$password = scriptParam("verificationCode");
- if ($cardno == "") {
- notify("Du må taste inn et kortnummer.");
+
+ if (empty($id)) {
+ notify("Du må taste inn et aktiveringsnummer.");
$GLOBALS['extraScriptParams']['page'] = "renew-membership";
return false;
}
- if (!validCardno($cardno)) {
- notify("Aktiveringsnummeret er allerede registrert.");
- $GLOBALS['extraScriptParams']['page'] = "renew-membership";
- return false;
- }
- if (checkPassword($cardno, $password)) {
+
+ $msa_code = verifyActivationCode($id, $password);
+
+ // was the verification successful ?
+ if (!is_null($msa_code)) {
$user = new User(scriptParam("userid"));
- if ($user->renewMembership($cardno) == true) {
+ if ($user->renewMembership()) {
+ // mark code as used
+ $msa_code->setUsed(new DateTime());
+ $msa_code->setUserId($user->getId());
+ $msa_code->store();
+
notify("Fornyelse av medlemskap er registrert. Nytt oblat vil bli sendt til din registrerte adresse.");
} else {
$GLOBALS['extraScriptParams']['page'] = "renew-membership";
@@ -923,6 +934,22 @@ class ActionParser {
$GLOBALS['extraScriptParams']['report-bug'] = "renew-membership";
}
}
+
+ protected function verifyActivationCode($id, $password) {
+ $msa_code = new MembershipActivationCode();
+ if ($msa_code->findById($id)) {
+ if (!is_null($msa_code->getUsed())) {
+ // code has been used allready, and is therefore illegal
+ return null;
+ }
+
+ if (trim($password) == $msa_code->getCode()) {
+ // valid password, return object
+ return $msa_code;
+ }
+ }
+ return null;
+ }
public function _cartCheckout() {
$order_id = scriptParam("order_id");
@@ -936,20 +963,20 @@ class ActionParser {
$payment->executeRedirect(scriptParam('transaction_id_string'), $order_id);
}
- public function _transactionReturn() {
- $orderRef = scriptParam('orderRef');
- $transaction_id = scriptParam('transactionid');
- $transaction = new Transaction($transaction_id);
- $payment = new Payment();
- if ($payment->completeTransaction($orderRef, $transaction_id)) {
- $order_id = $transaction->order_id;
- $order = new Order($order_id);
- $order->setStatus(4);
- $order->performOperations();
- $GLOBALS['extraScriptParams']['page'] = "transaction-confirmation";
- $GLOBALS['extraScriptParams']['transactionid'] = $transaction_id;
- }
- }
+ public function _transactionReturn() {
+ $orderRef = scriptParam('orderRef');
+ $transaction_id = scriptParam('transactionid');
+ $transaction = new Transaction($transaction_id);
+ $payment = new Payment();
+ if ($payment->completeTransaction($orderRef, $transaction_id)) {
+ $order_id = $transaction->order_id;
+ $order = new Order($order_id);
+ $order->setStatus(4);
+ $order->performOperations();
+ $GLOBALS['extraScriptParams']['page'] = "transaction-confirmation";
+ $GLOBALS['extraScriptParams']['transactionid'] = $transaction_id;
+ }
+ }
public function _payexTransaction() {
$payment = new Payment(NULL, $_POST);
@@ -1007,13 +1034,15 @@ class ActionParser {
}
public function _grantCardno() {
- $user = new User(scriptParam("userid"));
- $user->grantCardno();
+ //$user = new User(scriptParam("userid"));
+ //$user->grantCardno();
+ notify("Error: ActionParser::_grantCardno() is a deprecated function.");
}
public function _updateUserHasCard() {
- $user = new User(scriptParam("userid"));
- $user->setHasCard(1);
+ //$user = new User(scriptParam("userid"));
+ //$user->setHasCard(1);
+ notify("Error: ActionParser::_updateUserHasCard() is a deprecated function.");
}
public function _updateUserDivisionRequest() {
diff --git a/inside/Page.php b/inside/Page.php
index 40fb357..eb1f1dc 100644
--- a/inside/Page.php
+++ b/inside/Page.php
@@ -2117,7 +2117,8 @@ Teksten under er hentet fra kunnskapsdatabasen. Du st
Array("id" => 'expired', "title" => "utløpt medlemskap"),
Array("id" => 'valid', "title" => "gyldig medlemskap"),
Array("id" => 'no-cardno', "title" => "ikke kjøpt medlemskap (etter H05)"),
- Array("id" => 'no-card', "title" => "ikke fått medlemskort"),
+ Array("id" => 'card-not-produced', "title" => "medlemskort ikke produsert"),
+ Array("id" => 'card-not-delivered', "title" => "kort produsert, ikke levert"),
Array("id" => 'no-sticker', "title" => "har kort, mangler oblat"),
);
@@ -2490,16 +2491,18 @@ Teksten under er hentet fra kunnskapsdatabasen. Du st
$fields[] = Array("label" => "studiested", "type" => "select",
"attributes" => Array("name" => "placeOfStudy", "values" => $pos,
"disabled" => $readonly, "currentValue" => $user->placeOfStudy));
- if(isAdmin() || checkAuth("perform-update-user-hascard")){
- $fields[] = Array("label" => "har medlemskort", "type" => "select",
- "attributes" => Array("name" => "hasCard", "values" => $cardValues,
- "disabled" => $readonly, "currentValue" => $user->hasCard));
- }else {
- $fields[] = Array("label" => "har medlemskort", "type" => "hidden",
- "attributes" => Array("name" => "hasCard",
- "disabled" => $readonly, "value" => $user->hasCard));
-
- }
+ if (isAdmin() || checkAuth("perform-update-user-hascard")) {
+ $fields[] = Array("label" => "har medlemskort", "type" => "select",
+ "attributes" => Array("name" => "cardProduced", "values" => $cardValues,
+ "disabled" => $readonly, "currentValue" => $user->getCardProduced()));
+ } else {
+ $fields[] = Array("label" => "har medlemskort", "type" => "hidden",
+ "attributes" => Array("name" => "cardProduced",
+ "disabled" => $readonly, "value" => $user->getCardProduced()));
+ }
+ $fields[] = Array("label" => "har fått utlevert medlemskort", "type" => "hidden",
+ "attributes" => Array("name" => "cardDelivered",
+ "disabled" => $readonly, "value" => $user->getCardDelivered()));
$form = new Form($title, $enctype, $method, $action, $fields, NULL, $readonly);
$form->display();
@@ -3216,8 +3219,13 @@ Teksten under er hentet fra kunnskapsdatabasen. Du st
print "";
print "
";
- if ($user->hasCard()) print ' ';
- else print ' ';
+ if ($user->getCardDelivered()) {
+ print ' ';
+ } elseif ($user->getCardProduced()) {
+ print ' ';
+ } else {
+ print ' ';
+ }
print " | ";
print "" . $user->getLastSticker() . " | ";
@@ -3227,8 +3235,10 @@ Teksten under er hentet fra kunnskapsdatabasen. Du st
print "";
print "getId() . "\" />";
if ($user->hasExpired()) {
- if (!$user->hasCard()) {
+ if (!$user->getCardProduced()) {
print "forny (produser kort)";
+ } elseif (!$user->getCardDelivered()) {
+ print "lever ut kort";
} else {
print "";
print "\n";
print "\n";
print "";
- } else {
- print "";
}
print "";
print "\n";
@@ -1191,20 +1238,21 @@ class User {
print "\n";
print " ";
- print "";
+ if ($this->cardno != NULL) {
+ print "";
+ }
print " | \n";
print " " . $this->getRegistered() . " | \n";
@@ -1425,14 +1473,16 @@ class User {
elseif (strtotime($this->expires) < strtotime("now"))
return "Du har ikke registrert gyldig medlemskap i år (medlemskapet ditt gikk ut " . date("d.m.Y", strtotime($this->expires)) . ").";
elseif (strtotime($this->expires) > strtotime("now")) {
- if ($this->hasCard == "1") {
+ if ($this->getCardDelivered()) {
if ($this->lastSticker < date("Y", strtotime($this->expires))) {
- return "Du har aktivert medlemskapet ditt, og det vil bli sendt oblat til å klistre på medlemskortet ditt.";
+ return "Du har aktivert medlemskapet ditt, og du kan hente oblat til å klistre på medlemskortet ditt i bilettluka på Det Norske Studentersamfund.";
} else {
return "Du har gyldig medlemskap (gyldig til " . date("d. m. Y", strtotime($this->expires)) . ").";
}
- } elseif ($this->hasCard == "0") {
- return "Medlemskapet ditt er registrert, og medlemskortet ditt for " . date("Y", strtotime($this->expires)) . " produseres. Det tar normalt rundt to uker fra medlemskapet er registrert til du mottar ditt medlemskort.";
+ } elseif ($this->getCardProduced()) {
+ return "Medlemskapet ditt for " . date("Y", strtotime($this->expires)) . " er registrert, og medlemskortet ditt ligger klar til henting i billettluka på Det Norske Studentersamfund.";
+ } else {
+ return "Medlemskapet ditt er registrert, og medlemskortet ditt for " . date("Y", strtotime($this->expires)) . " produseres.";
}
}
diff --git a/inside/Users.php b/inside/Users.php
index 5fe70d5..fef886c 100644
--- a/inside/Users.php
+++ b/inside/Users.php
@@ -96,11 +96,14 @@ class Users {
case 'no-cardno':
$expression = "u.cardno IS NULL";
break;
- case 'no-card':
- $expression = "u.hasCard = 0 AND u.cardno IS NOT NULL";
+ case 'card-not-produced':
+ $expression = "u.cardProduced = 0 AND u.cardno IS NOT NULL";
+ break;
+ case 'card-not-delivered':
+ $expression = "u.cardProduced = 1 AND u.cardDelivered = 0 AND u.cardno IS NOT NULL";
break;
case 'no-sticker':
- $expression = "u.hasCard = 1 AND u.expires > NOW() AND u.lastSticker < YEAR(u.expires)";
+ $expression = "u.cardDelivered = 1 AND u.expires > NOW() AND u.lastSticker < YEAR(u.expires)";
break;
case 'all':
$expression = '1';
diff --git a/inside/ajax.js b/inside/ajax.js
index 111198f..462162b 100644
--- a/inside/ajax.js
+++ b/inside/ajax.js
@@ -45,12 +45,12 @@ function grantCardNumber(userid) {
oXmlHttp.send(null);
}
-function setHasCard(userid) {
- var form = document.getElementById("user_"+userid+"_hascard_form");
+function setCardProduced(userid) {
+ var form = document.getElementById("user_"+userid+"_cardproduced_form");
form.style.display = "none";
var oXmlHttp = zXmlHttp.createRequest();
- var sURL = "sethascard.php?userid=" + userid;
+ var sURL = "setcardproduced.php?userid=" + userid;
oXmlHttp.open("get", sURL, true);
oXmlHttp.onreadystatechange = function() {
if (oXmlHttp.readyState == 4){
@@ -70,6 +70,31 @@ function setHasCard(userid) {
oXmlHttp.send(null);
}
+function setCardDelivered(userid) {
+ var form = document.getElementById("user_"+userid+"_carddelivered_form");
+ form.style.display = "none";
+
+ var oXmlHttp = zXmlHttp.createRequest();
+ var sURL = "setcarddelivered.php?userid=" + userid;
+ oXmlHttp.open("get", sURL, true);
+ oXmlHttp.onreadystatechange = function() {
+ if (oXmlHttp.readyState == 4){
+ if (oXmlHttp.status == 200) {
+ //alert(oXmlHttp.responseXML);
+ //alert(oXmlHttp.responseText);
+ var response = oXmlHttp.responseXML.documentElement;
+ var lastSticker = response.getElementsByTagName('laststicker')[0].firstChild.data;
+ document.getElementById('user_'+userid+'_laststicker').innerHTML = lastSticker;
+
+ form.parentNode.innerHTML = "Medlemskort er levert";
+ }else {
+ alert("An error occured: " + oXmlHttp.statusText);
+ }
+ }
+ };
+ oXmlHttp.send(null);
+}
+
function updateUserExpiry(userid) {
var input = document.getElementById("newExpiryDate_"+userid);
var value = input.value;
diff --git a/inside/includes.php b/inside/includes.php
index 9cc8480..ea7f24d 100644
--- a/inside/includes.php
+++ b/inside/includes.php
@@ -63,6 +63,8 @@ require_once "JobCategory.php";
require_once "JobCategories.php";
require_once "Locations.php";
require_once "Messages.php";
+require_once "MemberCard.php";
+require_once "MembershipActivationCode.php";
require_once "Navigation.php";
require_once "Nordea.php";
require_once "Order.php";
@@ -79,7 +81,11 @@ require_once "Products.php";
require_once "ProgramSelection.php";
require_once "ProgramsSelection.php";
require_once "Transaction.php";
-require_once "User.php";
+//if (getcurrentuser() == 2460) {
+// require_once "User_new.php";
+//} else {
+ require_once "User.php";
+//}
require_once "Users.php";
require_once "UserGroupRelationship.php";
require_once "UserGroupRelationships.php";
diff --git a/inside/setcarddelivered.php b/inside/setcarddelivered.php
new file mode 100644
index 0000000..e1754f2
--- /dev/null
+++ b/inside/setcarddelivered.php
@@ -0,0 +1,15 @@
+');
+
+require_once "includes.php";
+
+$userid = $_GET["userid"];
+
+$user = new User($userid);
+$user->setCardDelivered(1);
+?>
+
+ cardno; ?>
+ lastSticker; ?>
+
diff --git a/inside/setcardproduced.php b/inside/setcardproduced.php
new file mode 100644
index 0000000..f71b895
--- /dev/null
+++ b/inside/setcardproduced.php
@@ -0,0 +1,18 @@
+');
+
+require_once "includes.php";
+
+$userid = $_GET["userid"];
+
+$user = new User($userid);
+$user->setCardProduced(1);
+$user->updateLastSticker(date("Y", strtotime($user->getExpiryDate($user->cardno))));
+$user->sendCardProducedNotifyMail();
+
+?>
+
+ cardno; ?>
+ lastSticker; ?>
+