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" }