diff --git a/css/style.css b/css/style.css index 71a9bb0..8cf8017 100644 --- a/css/style.css +++ b/css/style.css @@ -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; diff --git a/inside/ActionParser.php b/inside/ActionParser.php index 37fb85a..79d8f78 100644 --- a/inside/ActionParser.php +++ b/inside/ActionParser.php @@ -248,7 +248,8 @@ class ActionParser { break; case 'register-membership' : - $this->_registerMembership(); + //$this->_registerMembership(); + $GLOBALS['extraScriptParams']['page'] = "register-membership"; break; case 'register-membership-payex' : diff --git a/inside/Page.php b/inside/Page.php index 4e39990..a15e5e5 100644 --- a/inside/Page.php +++ b/inside/Page.php @@ -627,24 +627,16 @@ class Page { ?>

Medlemskapet ditt er utgått!

-

Om du har kjøpt medlemskap i en av barene på huset må du aktivere medlemskapet ditt med aktiveringsnummer og aktiveringskode!

-

Du kan også kjøpe medlemskap med VISA-kort.

+

Om du har kjøpt medlemskap i en av barene på Chateau Neuf må du aktivere medlemskapet ditt med kortnummer og telefonnummer.

-

Har du allerede kjøpt midlertidig medlemskap i en av barene på Studentersamfundet?

-

Du skal isåfall ha mottatt et aktiveringsnummer og aktiveringspassord.

- +

Har du allerede kjøpt medlemskap og fått medlemskort i en av barene på Chateau Neuf?

+

Bruk ditt kortnummeret og telefonnummer til å registere medlemskapet på din bruker her.

+

Ønsker du å kjøpe nytt medlemskap eller fornye ditt medlemskap?

+

Les mer om hvordan du kan kjøpe nytt medlemskap her.

"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): - ?> - -
-
-

Ny i DNS?

- -

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 ny i dns!

-
-
-

Bli aktiv!

-

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 bli aktiv!

- -
-
- -

Vil du betale med VISA-kort?

display(); - } + }*/ } public function _renewMembership(){ - $title = "aktiver medlemskap"; + ?> +

Har du allerede kjøpt medlemskap og fått medlemskort i en av barene på Chateau Neuf?

+

Bruk ditt kortnummeret og telefonnummer til å registere medlemskapet på din bruker her.

+

Ønsker du å kjøpe nytt medlemskap eller fornye ditt medlemskap?

+

Les mer om hvordan du kan kjøpe nytt medlemskap her.

+ "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")) { ?>

Vil du betale med VISA-kort?

display(); - } + }*/ } diff --git a/inside/User.php b/inside/User.php index c68bf2d..8547c93 100644 --- a/inside/User.php +++ b/inside/User.php @@ -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)) { diff --git a/inside/functions.php b/inside/functions.php index b5a179b..92d8e52 100644 --- a/inside/functions.php +++ b/inside/functions.php @@ -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() { Glemt passord eller brukernavn?

Ny bruker?

-

Hvis du aldri har vært medlem før, kan du registrere deg.

+

Hvis du aldri har vært medlem før kan du lese om hvordan du kjøper medlemskap her.
Du kan også registrere en bruker.

Har du spørsmål om medlemskapet ditt?

- Send epost til medlemskap@studentersamfundet.no. Oppgi medlemskortnummer og en kort beskrivelse av hva som ikke virker, så skal vi hjelpe deg så fort vi kan. + Send epost til medlemskap@studentersamfundet.no. Oppgi telefonnummer og en kort beskrivelse av hva som ikke virker, så skal vi hjelpe deg så fort vi kan.

Andre spørsmål? Kontakt oss på support@studentersamfundet.no. diff --git a/sms/register.php b/sms/register.php index af15d9e..20a7bc2 100644 --- a/sms/register.php +++ b/sms/register.php @@ -1,5 +1,6 @@ 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 ""; } ?>

+
diff --git a/snapporder/lib/functions.php b/snapporder/lib/functions.php index afc5e17..b33132f 100644 --- a/snapporder/lib/functions.php +++ b/snapporder/lib/functions.php @@ -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, logg inn her 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, logg inn her 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 .= ""; @mail($sendto, $subject, $message, $headers); -} \ No newline at end of file +}