Replace existing membership activation code, ++

- Small style fixes
- Remove some links to legacy webshop
- Text updates on membership purchase
- Fix card number display on users
This commit is contained in:
nikolark committed 2015-08-09 15:35:12 +02:00
1 parent 7170728177
commit 58f64eb200
7 files changed
+164 -112

No files matched your search

+5 -3
View File
@@ -431,15 +431,17 @@ h1 {
}
h2,h3,h4,h5,h6 {
font-family: Georgia, serif;
font-style: italic;
font-family: Helvetica,Arial,sans-serif;
font-weight: bold;
/*font-style: italic;*/
}
h1,h2,h3,h4,h5,h6,
.entry-title a {
clear:none;
/*color:#b8e2ed;*/
color:#9dcbdb;
/*color:#9dcbdb;*/
color: #ee812e;
margin-bottom:0.5em;
text-decoration:none;
line-height:1;
+2 -1
View File
@@ -248,7 +248,8 @@ class ActionParser {
break;
case 'register-membership' :
$this->_registerMembership();
//$this->_registerMembership();
$GLOBALS['extraScriptParams']['page'] = "register-membership";
break;
case 'register-membership-payex' :
+48 -89
View File
@@ -627,24 +627,16 @@ class Page {
?>
<?php if (membershipExpired(getCurrentUser())){?>
<h3>Medlemskapet ditt er utgått!</h3>
<p>Om du har kjøpt medlemskap i en av barene på huset må du <a href="index.php?page=renew-membership">aktivere medlemskapet ditt med aktiveringsnummer og aktiveringskode</a>!</p>
<?php if (checkAuth("view-register-membership-payex")) ?><p>Du kan også <a href="index.php?page=register-membership">kjøpe medlemskap med VISA-kort</a>.</p> <?php ; ?>
<p>Om du har kjøpt medlemskap i en av barene på Chateau Neuf må du <a href="/sms/register.php">aktivere medlemskapet ditt med kortnummer og telefonnummer</a>.</p>
<?php } ?>
<div class="often-used-links">
<h3>Hva vil du gjøre?</h3>
<h3>Hva vil du gjøre?</h3>
<div class="list-group">
<a class="list-item" href="index.php?page=display-webshop">Besøke nettbutikken</a>
<?php
if (checkAuth('view-display-division-requests')){ ?>
<a class="list-item" href="index.php?page=display-division-requests">Godkjenn aktivforespørseler</a>
<?php } ?>
<a class="list-item" href="index.php?page=display-jobs">Se på ledige stillinger</a>
(<?php print getUnreadCount('job', 'expires'); ?> nye ikke utgåtte)
<!--<li><a href="index.php?page=display-events-calendar">Se på aktivitetskalenderen</a>
(<?php print getUnreadCount('event', 'time'); ?> nye kommende)</li>-->
<a class="list-item" href="index.php?page=display-documents">Lese dokumenter</a>
<a class="list-item" href="index.php?page=display-divisions">Finne kontaktinfo til en forening</a>
<a class="list-item" href="index.php?page=display-current-user">Oppdatere min brukerinformasjon</a>
<ul>
<li><a class="list-item" href="index.php?page=display-documents">Lese dokumenter</a></li>
<li><a class="list-item" href="index.php?page=display-divisions">Finne kontaktinfo til en forening</a></li>
<li><a class="list-item" href="index.php?page=display-current-user">Oppdatere min brukerinformasjon</a></li>
</ul>
</div>
</div>
<?php }
@@ -2800,103 +2792,70 @@ Om dere lager en facebook side til arrangementet, ikke glem &aring; putte inn le
public
function _registerMembership(){
?>
<h3>Har du allerede kjøpt midlertidig medlemskap i en av barene på Studentersamfundet?</h3>
<p>Du skal isåfall ha mottatt et aktiveringsnummer og aktiveringspassord.</p>
<h3>Har du allerede kjøpt medlemskap og fått medlemskort i en av barene på Chateau Neuf?</h3>
<p>Bruk ditt kortnummeret og telefonnummer til å <a href="https://inside.studentersamfundet.no/sms/register.php">registere medlemskapet på din bruker her</a>.</p>
<h3>Ønsker du å kjøpe nytt medlemskap eller fornye ditt medlemskap?</h3>
<p>Les mer om hvordan du kan <a href="https://studentersamfundet.no/bli-medlem/">kjøpe nytt medlemskap her</a>.</p>
<?php
$title = "registrér medlemskap";
//$title = "Registrer medlemskap";
$enctype = NULL;
$method = "post";
$action = "index.php?action=register-membership";
$fields = Array();
//$enctype = NULL;
//$method = "post";
//$action = "index.php?action=register-membership";
//$fields = Array();
$fields[] = Array("label" => "id", "type" => "hidden",
"attributes" => Array("name" => "userid", "size" => 12, "maxlength" => 10,
"value" => getCurrentUser()));
$fields[] = Array("label" => "aktiveringsnummer", "type" => "text",
"attributes" => Array("name" => "cardno", "size" => 12, "maxlength" => 10));
$fields[] = Array("label" => "aktiveringspassord", "type" => "text",
"attributes" => Array("name" => "verificationCode", "size" => 12, "maxlength" => 20));
$form = new Form($title, $enctype, $method, $action, $fields);
$form->display();
//$fields[] = Array("label" => "id", "type" => "hidden",
// "attributes" => Array("name" => "userid", "size" => 12, "maxlength" => 10,
// "value" => getCurrentUser()));
//$fields[] = Array("label" => "Kortnummer/Kode", "type" => "text",
// "attributes" => Array("name" => "card_number", "size" => 12, "maxlength" => 10));
//$form = new Form($title, $enctype, $method, $action, $fields);
//$form->display();
if(time() < 1315612799):
?>
<style type="text/css">
#lol
{
margin:10px 0px;
}
#lol:after
{
content:".";
clear:both;
height:0px;
display:block;
visibility:hidden;
}
#lol .half
{
width:45%;
float:left;
}
</style>
<div id="lol">
<div class="half">
<h3>Ny i DNS?</h3>
<p>Har du lyst til å være med å vår egen lille fadderhelg 9.-11. september? Bli kjent med Det Norske Studentersamfund og vi som holder til der! Se <a href="http://studentersamfundet.no/nyidns.php">ny i dns!</a></p>
</div>
<div class="half">
<h3>Bli aktiv!</h3>
<p>Syns du noe av det vi holder på med er spennende? Lyst til å booke band eller lære å mikse drinker? Bli med oss som aktiv i en av de mange foreningene på huset, du får garantert minner for livet og nye venner! Se <a href="http://studentersamfundet.no/bliaktiv.php">bli aktiv!</a></p>
</div>
</div>
<?php endif;
if (checkAuth("view-register-membership-payex")) {
/* if (checkAuth("view-register-membership-payex")) {
?>
<br />
<h3>Vil du betale med VISA-kort?</h3>
<?php
$product = new Product(1);
$product->display();
}
}*/
}
public
function _renewMembership(){
$title = "aktiver medlemskap";
?>
<h3>Har du allerede kjøpt medlemskap og fått medlemskort i en av barene på Chateau Neuf?</h3>
<p>Bruk ditt kortnummeret og telefonnummer til å <a href="https://inside.studentersamfundet.no/sms/register.php">registere medlemskapet på din bruker her</a>.</p>
<h3>Ønsker du å kjøpe nytt medlemskap eller fornye ditt medlemskap?</h3>
<p>Les mer om hvordan du kan <a href="https://studentersamfundet.no/bli-medlem/">kjøpe nytt medlemskap her</a>.</p>
<?php
//$title = "aktiver medlemskap";
$enctype = NULL;
$method = "post";
$action = "index.php?action=renew-membership";
$fields = Array();
//$enctype = NULL;
//$method = "post";
//$action = "index.php?action=renew-membership";
//$fields = Array();
$fields[] = Array("label" => "id", "type" => "hidden",
"attributes" => Array("name" => "userid", "size" => 12, "maxlength" => 10,
"value" => getCurrentUser()));
$fields[] = Array("label" => "aktiveringsnummer", "type" => "text",
"attributes" => Array("name" => "cardno", "size" => 12, "maxlength" => 10,
"comment" => "Bruk aktiveringsnummeret på arket du fikk da du kjøpte medlemskapet ditt."));
$fields[] = Array("label" => "aktiveringskode", "type" => "text",
"attributes" => Array("name" => "verificationCode", "size" => 12, "maxlength" => 20));
$form = new Form($title, $enctype, $method, $action, $fields);
$form->display();
if (checkAuth("view-register-membership-payex")) {
//$fields[] = Array("label" => "id", "type" => "hidden",
// "attributes" => Array("name" => "userid", "size" => 12, "maxlength" => 10,
// "value" => getCurrentUser()));
//$fields[] = Array("label" => "aktiveringsnummer", "type" => "text",
// "attributes" => Array("name" => "cardno", "size" => 12, "maxlength" => 10,
// "comment" => "Bruk aktiveringsnummeret på arket du fikk da du kjøpte medlemskapet ditt."));
//$fields[] = Array("label" => "aktiveringskode", "type" => "text",
// "attributes" => Array("name" => "verificationCode", "size" => 12, "maxlength" => 20));
//$form = new Form($title, $enctype, $method, $action, $fields);
//$form->display();
/*if (checkAuth("view-register-membership-payex")) {
?>
<br />
<h3>Vil du betale med VISA-kort?</h3>
<?php
$product = new Product(1);
$product->display();
}
}*/
}
+5 -2
View File
@@ -123,7 +123,7 @@ class User {
//Retrieve data from backend for display or other actions
if ($data = $this->_retrieveData()) {
$this->username = stripcslashes($data['ldap_username']);
$this->cardno = $data['cardno'];
$this->cardno = $data['card_number']; // Note: NOT cardno (legacy)
$this->expires = $data['expires'];
$this->division_id_request = $data['division_id_request'];
$this->lastSticker = $data['lastSticker'];
@@ -363,7 +363,10 @@ class User {
}
public function _retrieveData() {
$sql = "SELECT u.*, up.number AS phonenumber " . "FROM din_user u LEFT JOIN din_userphonenumber up " . "ON u.id = up.user_id " . "WHERE u.id = $this->id";
$sql = "SELECT u.*, up.number AS phonenumber,c.card_number FROM din_user AS u ".
"LEFT JOIN din_userphonenumber AS up ON u.id = up.user_id ".
"LEFT JOIN din_card AS c ON u.id = c.user_id AND c.is_active=1 ".
"WHERE u.id = $this->id";
$result = & $this->conn->query($sql);
if (DB :: isError($result) != true) {
if ($row = & $result->fetchRow(DB_FETCHMODE_ASSOC)) {
+6 -3
View File
@@ -98,13 +98,16 @@ function getCurrentUser() {
function getUseridFromCardno($cardno) {
$conn = db_connect();
$sql = sprintf("SELECT id FROM din_user u " . "WHERE cardno = %s ", $cardno);
$sql = sprintf("SELECT user_id FROM din_card WHERE card_number=%s", $cardno);
$result = & $conn->query($sql);
if ($result->numRows() == 0) {
return false;
}
else {
$row = & $result->fetchRow(DB_FETCHMODE_ORDERED);
if( $row[0] == NULL) {
return false;
}
return $row[0];
}
}
@@ -1073,11 +1076,11 @@ function displayLogin() {
<a href="https://brukerinfo.neuf.no/accounts/password/reset">Glemt passord eller brukernavn?</a>
</p>
<h3>Ny bruker?</h3>
<p>Hvis du aldri har vært medlem før, kan du <a href="index.php?page=register-user">registrere deg</a>.</p>
<p>Hvis du aldri har vært medlem før kan du lese om hvordan du <a href="https://studentersamfundet.no/bli-medlem/">kjøper medlemskap her</a>.<br><em>Du kan også <a href="index.php?page=register-user">registrere en bruker</a></em>.</p>
<h3>Har du spørsmål om medlemskapet ditt?</h3>
<p>
Send epost til <a href="mailto:medlemskap@studentersamfundet.no">medlemskap@studentersamfundet.no</a>. Oppgi medlemskortnummer og en kort beskrivelse av hva som ikke virker, så skal vi hjelpe deg så fort vi kan.
Send epost til <a href="mailto:medlemskap@studentersamfundet.no">medlemskap@studentersamfundet.no</a>. Oppgi telefonnummer og en kort beskrivelse av hva som ikke virker, så skal vi hjelpe deg så fort vi kan.
</p>
<p>
Andre spørsmål? Kontakt oss på <a href="mailto:support@studentersamfundet.no">support@studentersamfundet.no</a>.
+31 -7
View File
@@ -1,5 +1,6 @@
<?php
/* SMS purchase activation form
session_start();
/* SMS/card purchase activation form
*
*/
set_include_path("../includes/");
@@ -23,13 +24,26 @@ if(DB :: isError($conn)) {
}
$conn->setFetchMode(DB_FETCHMODE_ASSOC);
// empty default form values
/* Logged into inside? */
$logged_in_user_id = $_SESSION['valid-user'];
$user = NULL;
if($logged_in_user_id !== NULL) {
try {
$user = get_user($logged_in_user_id);
} catch(InsideDatabaseException $e) {
echo $e->getMessage();
error_log($e->getMessage());
die();
}
}
$firstname = "";
$lastname = "";
$email = "";
// default form values: empty or existing user
$firstname = $user !== NULL ? $user['firstname'] : "";
$lastname = $user !== NULL ? $user['lastname'] : "";
$email = $user !== NULL ? $user['email'] : "";
$activation_code = "";
$phone = "";
$phone = $user !== NULL ? $user['number'] : "";
$validation_errors = "";
if( isset($_GET['n']) ) {
@@ -49,7 +63,7 @@ if( isset($_POST['submit']) ) {
} catch(ValidationException $e) {
$validation_errors = $e->getMessage();
/* Refill form values*/
/* Refill form values */
$phone = $_POST['phone'];
$activation_code = $_POST['activation_code'];
$firstname = $_POST['firstname'];
@@ -59,6 +73,15 @@ if( isset($_POST['submit']) ) {
if($data !== NULL) {
try {
// persist
if($logged_in_user_id !== NULL) {
/* update expiry, log event, add cardnumber */
update_membership_expiry($data['user_id'], $data['purchased']);
update_card_with_user($data['phone'], $data['activation_code'], $data['user_id']);
log_userupdate($data['user_id'], "Kortnummer ".$data['activation_code']." knyttet til bruker.");
redirect("/snapporder/activate_confirmed.php");
die();
}
$user_id = save_sms_form($data);
$user = get_user($user_id);
@@ -94,6 +117,7 @@ if( isset($_POST['submit']) ) {
echo "<span class=\"error hidden\"></span>";
} ?>
<form method="post">
<input id="id_user_id" type="hidden" name="user_id" value="<?php echo $logged_in_user_id; ?>" />
<div class="activation-form">
<!-- Profile -->
<div class="form-row">
+67 -7
View File
@@ -24,7 +24,7 @@ if( !function_exists('hash_ldap_password') ) {
function update_card_with_user($phone, $activation_code, $user_id) {
global $conn;
$sql = "UPDATE din_card SET user_id=$user_id,owner_phone_number=NULL WHERE owner_phone_number=$phone AND card_number=$activation_code";
$sql = "UPDATE din_card SET user_id=$user_id,owner_phone_number=NULL WHERE owner_phone_number='$phone' AND card_number=$activation_code";
$res = $conn->query($sql);
if( DB::isError($res) ) {
throw new InsideDatabaseException($res->getMessage().". DEBUG: ".$res->getDebugInfo());
@@ -105,6 +105,22 @@ function add_user($data, $source) {
return $user_id;
}
function __get_cards($value) {
if($value === "") {
return array();
}
$u_cs = array();
$u_cards = explode(",", $value);
foreach ($u_cards as $c) {
list($card_number, $card_is_active) = explode(";", $c);
$u_cs[] = array(
'card_number' => $card_number,
'is_active' => $card_is_active
);
}
return $u_cs;
}
/* Get user object with group ids and membership status */
function get_user($user_id) {
global $conn;
@@ -115,10 +131,15 @@ function get_user($user_id) {
* - a date >= NOW(): Valid membership
* - NULL: Lifelong membership
*/
$cols = array('id', 'firstname', 'lastname', 'email', 'expires', 'cardno', 'registration_status', 'birthdate', 'membership_trial');
$cols = array('users.id', 'firstname', 'lastname', 'email', 'expires', 'registration_status', 'birthdate', 'membership_trial', 'up.number');
$sql_cards = "GROUP_CONCAT(DISTINCT c.card_number,';',c.is_active SEPARATOR ',') AS cards";
$sql_group_ids = "GROUP_CONCAT(group_id) AS group_ids";
$sql_is_member = "expires > NOW() OR expires IS NULL AS is_member";
$sql = "SELECT ".implode($cols, ",").",$sql_group_ids,$sql_is_member FROM din_user AS users LEFT JOIN din_usergrouprelationship AS ug ON users.id=ug.user_id WHERE users.id=$user_id GROUP BY users.id";
$sql = "SELECT ".implode($cols, ",").",$sql_group_ids,$sql_is_member,$sql_cards FROM din_user AS users
LEFT JOIN din_usergrouprelationship AS ug ON users.id=ug.user_id
LEFT JOIN din_card AS c ON c.user_id=users.id
LEFT JOIN din_userphonenumber AS up ON up.user_id=users.id
WHERE users.id=$user_id GROUP BY users.id";
$res = $conn->query($sql);
if( DB::isError($res) ) {
throw new InsideDatabaseException($res->getMessage().". DEBUG: ".$res->getDebugInfo());
@@ -145,6 +166,10 @@ function get_user($user_id) {
$user['membership_status'] = 1;
}
}
/* Cards */
$user['cards'] = __get_cards($user['cards']);
/* Clean up user object */
unset($user['is_member']);
unset($user['group_ids']);
@@ -555,14 +580,25 @@ function validate_activation_form($data) {
}
function validate_sms_form($data) {
// phonenumber
// phonenumber and user
$phone = clean_phonenumber($data['phone']);
if( !valid_phonenumber($phone) ) {
throw new ValidationException("Ugyldig telefonnummer: ".$data['phone']);
}
if( getUseridFromPhone($phone) !== false ) {
throw new ValidationException("Telefonnummeret ".$data['phone']." er allerede registrert i bruk.");
$logged_in_user_id = isset($data['user_id']) && $data['user_id'] !== "" && is_numeric($data['user_id']);
if( $logged_in_user_id && get_user($data['user_id']) === false ) {
throw new ValidationException("Ugyldig bruker angitt: ".$data['user_id']);
}
$user_id_by_phone = getUseridFromPhone($phone);
if( $user_id_by_phone !== false && $logged_in_user_id && $data['user_id'] !== $user_id_by_phone ) {
$login_msg = "Hvis nummeret tilhører deg, <a href=\"https://inside.studentersamfundet.no\">logg inn her</a> først, før du returnerer til og fullfører skjemaet.";
throw new ValidationException("Telefonnummeret ".$data['phone']." er allerede registrert i bruk. $login_msg");
}
if( $user_id_by_phone !== false && !$logged_in_user_id ) {
$login_msg = "Hvis nummeret tilhører deg, <a href=\"https://inside.studentersamfundet.no\">logg inn her</a> først, før du returnerer til og fullfører skjemaet.";
throw new ValidationException("Telefonnummeret ".$data['phone']." er allerede registrert i bruk. $login_msg");
}
/* TODO: dont allow card activation twice and user id with existing membership and card */
$data['phone'] = $phone;
@@ -574,6 +610,11 @@ function validate_sms_form($data) {
$data['purchased'] = clean_timestamp($purchased);
$data['source'] = $source;
if($logged_in_user_id) {
/* Existing user */
return $data;
}
/* firstname and lastname */
if( strlen($data['firstname']) < 2 ) {
throw new ValidationException("Fornavn må være 2 tegn eller lengre: ".$data['firstname']);
@@ -696,6 +737,25 @@ function get_purchase_date_and_source($phone, $activation_code) {
return array($timestamp, $source);
}
function update_membership_expiry($user_id, $purchased=NULL) {
global $conn;
assert($user_id !== NULL);
/* Membership expiry */
/* One year from today (default) */
if( $purchased == NULL ) {
$purchased = date_create();
}
/* ...or one year from specified date */
$expires = date_format(date_modify($purchased, "+1 year"), "Y-m-d");
$res = $conn->autoExecute("din_user", array('expires' => $expires), DB_AUTOQUERY_UPDATE, "id=$user_id");
if( DB::isError($res) ) {
new InsideDatabaseException($res->getMessage().". DEBUG: ".$res->getDebugInfo());
}
}
/* The purpose of this email is:
* - to store the registration_url in the users inbox
@@ -751,4 +811,4 @@ function send_confirmation_email($data, $user) {
$message .= "</body></html>";
@mail($sendto, $subject, $message, $headers);
}
}