We handle birthdate
This commit is contained in:
1 parent
a5fe074b5d
commit
a19c433c4c
5 files changed
+48
-9
No files matched your search
@@ -114,6 +114,9 @@ if( isset($_POST['submit']) ) {
|
||||
<div class="form-row">
|
||||
<label for="id_password">Passord:</label><input id="id_password" type="password" name="password" placeholder="Passord" value="<?php echo $password; ?>"/>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<label for="id_birthdate_day">Fødselsdato:</label><?php date_picker("id_birthdate"); ?>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<label for="id_place_of_study">Studiested:</label><?php institutions(); ?>
|
||||
</div>
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
* "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
|
||||
* }
|
||||
*
|
||||
@@ -64,7 +63,7 @@ if($data === NULL) {
|
||||
}
|
||||
|
||||
/* Validate supplied data */
|
||||
$required_keys = array('firstname', 'lastname', 'phone', 'email', 'birthdate');
|
||||
$required_keys = array('firstname', 'lastname', 'phone', 'email');
|
||||
$valid_keys = $required_keys;
|
||||
$valid_keys[] = + 'purchased';
|
||||
|
||||
@@ -129,12 +128,6 @@ 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']) ) {
|
||||
|
||||
@@ -1 +1 @@
|
||||
/*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;}body{margin:0;}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block;}audio,canvas,progress,video{display:inline-block;vertical-align:baseline;}audio:not([controls]){display:none;height:0;}[hidden],template{display:none;}a{background:transparent;}a:active,a:hover{outline:0;}abbr[title]{border-bottom:1px dotted;}b,strong{font-weight:bold;}dfn{font-style:italic;}h1{font-size:2em;margin:0.67em 0;}mark{background:#ff0;color:#000;}small{font-size:80%;}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sup{top:-0.5em;}sub{bottom:-0.25em;}img{border:0;}svg:not(:root){overflow:hidden;}figure{margin:1em 40px;}hr{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;height:0;}pre{overflow:auto;}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em;}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;}button{overflow:visible;}button,select{text-transform:none;}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;}button[disabled],html input[disabled]{cursor:default;}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}input{line-height:normal;}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto;}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em;}legend{border:0;padding:0;}textarea{overflow:auto;}optgroup{font-weight:bold;}table{border-collapse:collapse;border-spacing:0;}td,th{padding:0;}meta.foundation-version{font-family:"/5.2.3/";}meta.foundation-mq-small{font-family:"/only screen/";width:0em;}meta.foundation-mq-medium{font-family:"/only screen and (min-width:40.063em)/";width:40.063em;}meta.foundation-mq-large{font-family:"/only screen and (min-width:64.063em)/";width:64.063em;}meta.foundation-mq-xlarge{font-family:"/only screen and (min-width:90.063em)/";width:90.063em;}meta.foundation-mq-xxlarge{font-family:"/only screen and (min-width:120.063em)/";width:120.063em;}meta.foundation-data-attribute-namespace{font-family:false;}html,body{height:100%;}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}html,body{font-size:100%;}body{background:#fff;color:#222;padding:0;margin:0;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;font-weight:normal;font-style:normal;line-height:1;position:relative;cursor:default;}a:hover{cursor:pointer;}img{max-width:100%;height:auto;}img{-ms-interpolation-mode:bicubic;}#map_canvas img,#map_canvas embed,#map_canvas object,.map_canvas img,.map_canvas embed,.map_canvas object{max-width:none !important;}.left{float:left !important;}.right{float:right !important;}.clearfix:before,.clearfix:after{content:" ";display:table;}.clearfix:after{clear:both;}.hide{display:none;}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}img{display:inline-block;vertical-align:middle;}textarea{height:auto;min-height:50px;}select{width:100%;}.row{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5rem;}.row:before,.row:after{content:" ";display:table;}.row:after{clear:both;}.row.collapse>.column,.row.collapse>.columns{padding-left:0;padding-right:0;}.row.collapse .row{margin-left:0;margin-right:0;}.row .row{width:auto;margin-left:-0.9375rem;margin-right:-0.9375rem;margin-top:0;margin-bottom:0;max-width:none;}.row .row:before,.row .row:after{content:" ";display:table;}.row .row:after{clear:both;}.row .row.collapse{width:auto;margin:0;max-width:none;}.row .row.collapse:before,.row .row.collapse:after{content:" ";display:table;}.row .row.collapse:after{clear:both;}.column,.columns{padding-left:0.9375rem;padding-right:0.9375rem;width:100%;float:left;}@media only screen{.small-push-0{position:relative;left:0%;right:auto;}.small-pull-0{position:relative;right:0%;left:auto;}.small-push-1{position:relative;left:8.3333333333%;right:auto;}.small-pull-1{position:relative;right:8.3333333333%;left:auto;}.small-push-2{position:relative;left:16.6666666667%;right:auto;}.small-pull-2{position:relative;right:16.6666666667%;left:auto;}.small-push-3{position:relative;left:25%;right:auto;}.small-pull-3{position:relative;right:25%;left:auto;}.small-push-4{position:relative;left:33.3333333333%;right:auto;}.small-pull-4{position:relative;right:33.3333333333%;left:auto;}.small-push-5{positLine truncated
|
||||
/*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;}body{margin:0;}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block;}audio,canvas,progress,video{display:inline-block;vertical-align:baseline;}audio:not([controls]){display:none;height:0;}[hidden],template{display:none;}a{background:transparent;}a:active,a:hover{outline:0;}abbr[title]{border-bottom:1px dotted;}b,strong{font-weight:bold;}dfn{font-style:italic;}h1{font-size:2em;margin:0.67em 0;}mark{background:#ff0;color:#000;}small{font-size:80%;}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sup{top:-0.5em;}sub{bottom:-0.25em;}img{border:0;}svg:not(:root){overflow:hidden;}figure{margin:1em 40px;}hr{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;height:0;}pre{overflow:auto;}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em;}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;}button{overflow:visible;}button,select{text-transform:none;}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;}button[disabled],html input[disabled]{cursor:default;}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}input{line-height:normal;}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto;}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em;}legend{border:0;padding:0;}textarea{overflow:auto;}optgroup{font-weight:bold;}table{border-collapse:collapse;border-spacing:0;}td,th{padding:0;}meta.foundation-version{font-family:"/5.2.3/";}meta.foundation-mq-small{font-family:"/only screen/";width:0em;}meta.foundation-mq-medium{font-family:"/only screen and (min-width:40.063em)/";width:40.063em;}meta.foundation-mq-large{font-family:"/only screen and (min-width:64.063em)/";width:64.063em;}meta.foundation-mq-xlarge{font-family:"/only screen and (min-width:90.063em)/";width:90.063em;}meta.foundation-mq-xxlarge{font-family:"/only screen and (min-width:120.063em)/";width:120.063em;}meta.foundation-data-attribute-namespace{font-family:false;}html,body{height:100%;}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}html,body{font-size:100%;}body{background:#fff;color:#222;padding:0;margin:0;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;font-weight:normal;font-style:normal;line-height:1;position:relative;cursor:default;}a:hover{cursor:pointer;}img{max-width:100%;height:auto;}img{-ms-interpolation-mode:bicubic;}#map_canvas img,#map_canvas embed,#map_canvas object,.map_canvas img,.map_canvas embed,.map_canvas object{max-width:none !important;}.left{float:left !important;}.right{float:right !important;}.clearfix:before,.clearfix:after{content:" ";display:table;}.clearfix:after{clear:both;}.hide{display:none;}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}img{display:inline-block;vertical-align:middle;}textarea{height:auto;min-height:50px;}select{width:100%;}.row{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5rem;}.row:before,.row:after{content:" ";display:table;}.row:after{clear:both;}.row.collapse>.column,.row.collapse>.columns{padding-left:0;padding-right:0;}.row.collapse .row{margin-left:0;margin-right:0;}.row .row{width:auto;margin-left:-0.9375rem;margin-right:-0.9375rem;margin-top:0;margin-bottom:0;max-width:none;}.row .row:before,.row .row:after{content:" ";display:table;}.row .row:after{clear:both;}.row .row.collapse{width:auto;margin:0;max-width:none;}.row .row.collapse:before,.row .row.collapse:after{content:" ";display:table;}.row .row.collapse:after{clear:both;}.column,.columns{padding-left:0.9375rem;padding-right:0.9375rem;width:100%;float:left;}@media only screen{.small-push-0{position:relative;left:0%;right:auto;}.small-pull-0{position:relative;right:0%;left:auto;}.small-push-1{position:relative;left:8.3333333333%;right:auto;}.small-pull-1{position:relative;right:8.3333333333%;left:auto;}.small-push-2{position:relative;left:16.6666666667%;right:auto;}.small-pull-2{position:relative;right:16.6666666667%;left:auto;}.small-push-3{position:relative;left:25%;right:auto;}.small-pull-3{position:relative;right:25%;left:auto;}.small-push-4{position:relative;left:33.3333333333%;right:auto;}.small-pull-4{position:relative;right:33.3333333333%;left:auto;}.small-push-5{positLine truncated
|
||||
@@ -313,10 +313,16 @@ function mailchimp_subscribe($data, $list_id, $api_key) {
|
||||
function update_user($data) {
|
||||
global $conn;
|
||||
|
||||
$birthdate_sql = "";
|
||||
if( strlen($data['birthdate']) > 0) {
|
||||
$birthdate_sql = "birthdate=" .$conn->quoteSmart($data['birthdate']).",";
|
||||
}
|
||||
|
||||
// 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']);
|
||||
@@ -352,6 +358,30 @@ function valid_date($date) {
|
||||
}
|
||||
return $date;
|
||||
}
|
||||
function validate_birthdate($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
|
||||
}
|
||||
|
||||
// try parsing
|
||||
$date = implode('-', $values);
|
||||
if(!clean_date($date)) {
|
||||
return false;
|
||||
}
|
||||
return $date;
|
||||
}
|
||||
|
||||
function validate_activation_form($data) {
|
||||
|
||||
@@ -376,6 +406,13 @@ function validate_activation_form($data) {
|
||||
throw new ValidationException("Passordet kan ikke inneholde enkel- eller dobbelfnutt eller bakslask.");
|
||||
}
|
||||
|
||||
// birthdate (optional)
|
||||
$valid_date = validate_birthdate($data);
|
||||
if( $valid_date === false ) {
|
||||
throw new ValidationException("Ugyldig fødselsdato");
|
||||
}
|
||||
$data['birthdate'] = $valid_date; // Note: could be: ""
|
||||
|
||||
// place of study (optional)
|
||||
if( !is_numeric($data['place_of_study']) ) {
|
||||
throw new ValidationException("Ugyldig studiested");
|
||||
|
||||
@@ -111,6 +111,12 @@ body {
|
||||
height: $row-height;
|
||||
outline: 0;
|
||||
margin: 0;
|
||||
|
||||
&[name=day],
|
||||
&[name=month],
|
||||
&[name=year] {
|
||||
width: 23.333333333333%;
|
||||
}
|
||||
}
|
||||
label[for=id_newsletter] {
|
||||
border-bottom: 0;
|
||||
|
||||
Reference in new issue
Block a user