diff --git a/snapporder/activate.php b/snapporder/activate.php
index dff0210..2b4863f 100644
--- a/snapporder/activate.php
+++ b/snapporder/activate.php
@@ -121,7 +121,6 @@ if( isset($_POST['submit']) ) {
-
/> Nyheter og kommende arrangementer på Studentersamfundet
diff --git a/snapporder/api/query.php b/snapporder/api/query.php
index e3e03eb..b10ce0b 100644
--- a/snapporder/api/query.php
+++ b/snapporder/api/query.php
@@ -17,6 +17,7 @@
* "firstname": "Jon",
* "lastname": "Hansen",
* "email": "jon@uio.no",
+ * "birthdate": "1985-03-01",
* "registration_status": "partial" // "partial" means show link
* "registration_url": "/snapporder/register_partial.php?userid=4331&token=lol"
* }
diff --git a/snapporder/api/register.php b/snapporder/api/register.php
index 009cc3c..656c743 100644
--- a/snapporder/api/register.php
+++ b/snapporder/api/register.php
@@ -10,6 +10,7 @@
* "firstname": "Jon",
* "lastname": "Hansen",
* "email": "jon@uio.no",
+ * "birthdate": "1985-03-01" // format: ISO-8601 date
* "purchased": "2004-02-12" // optional, format: ISO-8601 date
* }
*
@@ -23,6 +24,7 @@
* "firstname": "Jon",
* "lastname": "Hansen",
* "email": "jon@uio.no",
+ * "birthdate": "1985-03-01",
* "registration_status": "partial" // "partial" means show link
* "registration_url": "/snapporder/register_partial.php?userid=4331&token=lol"
* }
@@ -62,7 +64,7 @@ if($data === NULL) {
}
/* Validate supplied data */
-$required_keys = array('firstname', 'lastname', 'phone', 'email');
+$required_keys = array('firstname', 'lastname', 'phone', 'email', 'birthdate');
$valid_keys = $required_keys;
$valid_keys[] = + 'purchased';
@@ -127,6 +129,12 @@ if( strlen($data['lastname']) < 2) {
echo json_encode(array('error' => 'Too short lastname: '.$data['lastname']));
die();
}
+/* validate birthdate */
+if( !valid_date($data['birthdate']) ) {
+ set_response_code(400);
+ echo json_encode(array('error' => 'Could not parse birthdate: \''.$data['birthdate'].'\''));
+ die();
+}
/* Validate optional purchase_date */
if( isset($data['purchased']) ) {
diff --git a/snapporder/lib/functions.php b/snapporder/lib/functions.php
index 8a2aaf8..1f6f1cf 100644
--- a/snapporder/lib/functions.php
+++ b/snapporder/lib/functions.php
@@ -78,7 +78,7 @@ function get_user($user_id) {
* - a date >= NOW(): Valid membership
* - NULL: Lifelong membership
*/
- $cols = array('id', 'firstname', 'lastname', 'email', 'expires', 'cardno', 'registration_status');
+ $cols = array('id', 'firstname', 'lastname', 'email', 'expires', 'cardno', 'registration_status', 'birthdate');
$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";
@@ -115,6 +115,9 @@ function get_user($user_id) {
unset($user['group_ids']);
$user['memberid'] = $user['id']; // rename
unset($user['id']);
+ if($user['birthdate'] == "0000-00-00") {
+ unset($user['birthdate']);
+ }
return $user;
}
@@ -310,15 +313,10 @@ function mailchimp_subscribe($data, $list_id, $api_key) {
function update_user($data) {
global $conn;
- $birthdate_sql = "";
- if( strlen($data['date_of_birth']) > 0) {
- $birthdate_sql = "birthdate=" .$conn->quoteSmart($data['date_of_birth']).",";
- }
// user: update existing user, activation_status="full", form data
$sql = "UPDATE din_user SET ";
$sql .= "username=" .$conn->quoteSmart($data['username']).",";
$sql .= "password=PASSWORD(" .$conn->quoteSmart($data['password'])."),";
- $sql .= $birthdate_sql;
$sql .= "placeOfStudy=" .$conn->quoteSmart($data['place_of_study']).",";
$sql .= "registration_status='full'";
$sql .= " WHERE id = " . $conn->quoteSmart($data['userid']);
@@ -347,25 +345,8 @@ function update_user_groups($data) {
return true;
}
-function validate_date_of_birth($data, $optional=true) {
- $keys = array('year', 'month','day');
- $values = array();
-
- foreach( $keys as $key) {
- // If started filling out date of birth
- if(strlen($data[$key]) !== 0) {
- $optional = false;
- }
- // year
- $values[] = $data[$key];
- }
-
- if($optional) {
- return ""; // skip
- }
-
+function valid_date($date) {
// try parsing
- $date = implode('-', $values);
if(!clean_date($date)) {
return false;
}
@@ -395,13 +376,6 @@ function validate_activation_form($data) {
throw new ValidationException("Passordet kan ikke inneholde enkel- eller dobbelfnutt eller bakslask.");
}
- // birthdate (optional)
- $valid_date = validate_date_of_birth($data);
- if( $valid_date === false ) {
- throw new ValidationException("Ugyldig fødselsdato");
- }
- $data['date_of_birth'] = $valid_date; // Note: could be: ""
-
// place of study (optional)
if( !is_numeric($data['place_of_study']) ) {
throw new ValidationException("Ugyldig studiested");
diff --git a/snapporder/tests/testuser.json b/snapporder/tests/testuser.json
index 7b115be..db3b02a 100644
--- a/snapporder/tests/testuser.json
+++ b/snapporder/tests/testuser.json
@@ -1,6 +1,7 @@
{
"firstname": "Test",
"lastname": "Testesen",
- "email": "aaaadadfz@aaa222asd333a44zz.com",
- "phone": "+4745115788"
+ "email": "aaaadadfz@aaa422asd333a44zz.com",
+ "birthdate": "1985-02-05",
+ "phone": "+4745115784"
}