} // END - if
} elseif (!isFormSent('register')) {
// Form not send, so load form template
- loadTemplate('guest_wernis_registration_form');
+ loadTemplate('guest_wernis_registration_rpc_form');
}
}
// Finish user registration with WDS66 API
function doWernisFinishUserRegistration ($challenge, $challengeResponse, $status) {
+ // Check status from GET parameters and stored value
+ if (($status == '1') && (isFormSent('wernis_register'))) {
+ // Form has been sent
+ die(__FUNCTION__ . ':' . __LINE__ . ': Reached!');
+ } elseif ($status == '1') {
+ // Get mapped data based on challenge
+ $return = getWernisMapedDataFromApiByChallenge($challenge, $status);
+
+ // Is the array filled?
+ if ((count($return['mapped_data']) > 0) && (empty($return['message']))) {
+ // Display form
+ loadTemplate('guest_wernis_registration_form', FALSE, $return['mapped_data']);
+ return TRUE;
+ } else {
+ // Something bad happened
+ displayMessage($return['message']);
+ return FALSE;
+ }
+ } else {
+ // Status does not need to be changed
+ die(__FUNCTION__ . ':' . __LINE__ . ': Reached!');
+ }
+}
+
+// "Getter" for mapped data by calling the API and given challenge and status
+function getWernisMapedDataFromApiByChallenge ($challenge, $status) {
// Get stored registration data
$rows = getWernisRegistrationDataByKey('api_redirect_challenge', $challenge);
displayMessage('{--GUEST_WERNIS_REGISTRATION_ZERO_ROWS_FOUND--}');
// Display form
- loadTemplate('guest_wernis_registration_form');
- return FALSE;
+ loadTemplate('guest_wernis_registration_rpc_form');
+ return array();
} // END - if
- // Check status from GET parameters and stored value
- if ($status == '1') {
- // Has the auth status changed?
- if ($rows[0]['api_auth_status'] != 'ACCEPTED') {
- /*
- * The authorization of this application has been accepted, so
- * update it and ignore result from function because the update
- * will always run.
- */
- updateWernisRegistrationDataByKey('api_auth_status', 'api_redirect_challenge', $challenge, 'ACCEPTED');
- } // END - if
+ // Init array
+ $return = array(
+ // Mapped data
+ 'mapped_data' => array(),
+ // Any error message from API
+ 'message' => ''
+ );
- // Now call "get.php"
- $response = executeWernisApiGet($rows[0], 'data', 'anrede|vorname|name|strasse|plz|ort|birth_day|birth_month|birth_year|email|werber');
-
- // Was the status okay?
- if (isHttpResponseStatusOkay($response)) {
- // API returned non-errous response, 'data=' must be found
- assert(substr($response['response'], 0, 5) == 'data=');
-
- // And remove it, this is now BASE64-encoded
- $encodedData = urldecode(substr($response['response'], 5));
-
- // And decode it (all steps separated to later "easily" debug them)
- $decodedData = base64_decode($encodedData);
-
- /*
- * Do some checks on the decoded string, it should be a
- * serialized array with 11 entries (see above
- * executeWernisApiGet() call).
- */
- assert(substr($decodedData, 0, 6) == 'a:11:{');
- assert(substr($decodedData, -1, 1) == '}');
-
- // The array seems to be fine, unserialize it
- $userData = unserialize($decodedData);
-
- // All mappings WDS66->mailer
- $mappings = array(
- 'anrede' => 'gender',
- 'vorname' => 'surname',
- 'name' => 'family',
- 'strasse' => 'street_nr',
- 'plz' => 'zip',
- 'ort' => 'city',
- 'email' => 'email',
- 'birth_day' => 'birth_day',
- 'birth_month' => 'birth_month',
- 'birth_year' => 'birth_year',
- 'werber' => 'wernis_refid'
- );
-
- // Array for mapped data
- $mappedData = array();
-
- // Map all WDS66 entries into mailer entries
- foreach ($mappings as $from => $to) {
- // All must exist
- if (!isset($userData[$from])) {
- // Element $from does not exist
- reportBug(__FUNCTION__, __LINE__, 'Cannot map from=' . $from . ' -> to=' . $to . ': element does not exist.');
- } // END - if
+ // Has the auth status changed?
+ if ($rows[0]['api_auth_status'] != 'ACCEPTED') {
+ /*
+ * The authorization of this application has been accepted, so
+ * update it and ignore result from function because the update
+ * will always run.
+ */
+ updateWernisRegistrationDataByKey('api_auth_status', 'api_redirect_challenge', $challenge, 'ACCEPTED');
+ } // END - if
- // "Map" all
- $mappedData[$to] = convertEmptyToNull($userData[$from]);
- } // END - foreach
+ // Now call "get.php"
+ $response = executeWernisApiGet($rows[0], 'data', 'anrede|vorname|name|strasse|plz|ort|birth_day|birth_month|birth_year|email|werber');
- // Both arrays must have same size
- assert(count($userData) == count($mappedData));
+ // Was the status okay?
+ if (isHttpResponseStatusOkay($response)) {
+ // API returned non-errous response, 'data=' must be found
+ assert(substr($response['response'], 0, 5) == 'data=');
- // Now add userid and registration provider from WDS66
- $mappedData['wernis_userid'] = bigintval($rows[0]['wernis_userid']);
- $mappedData['registration_provider'] = 'wernis';
+ // And remove it, this is now BASE64-encoded
+ $encodedData = urldecode(substr($response['response'], 5));
- die(__FUNCTION__ . '<pre>'.print_r($mappedData, TRUE).'</pre>');
- } else {
- // Something bad happened
- displayMessage($response['message']);
- return FALSE;
- }
+ // And decode it (all steps separated to later "easily" debug them)
+ $decodedData = base64_decode($encodedData);
+
+ /*
+ * Do some checks on the decoded string, it should be a
+ * serialized array with 11 entries (see above
+ * executeWernisApiGet() call).
+ */
+ assert(substr($decodedData, 0, 6) == 'a:11:{');
+ assert(substr($decodedData, -1, 1) == '}');
+
+ // The array seems to be fine, unserialize it
+ $userData = unserialize($decodedData);
+
+ // All mappings WDS66->mailer
+ $mappings = array(
+ 'anrede' => 'gender',
+ 'vorname' => 'surname',
+ 'name' => 'family',
+ 'strasse' => 'street_nr',
+ 'plz' => 'zip',
+ 'ort' => 'city',
+ 'email' => 'email',
+ 'birth_day' => 'birth_day',
+ 'birth_month' => 'birth_month',
+ 'birth_year' => 'birth_year',
+ 'werber' => 'wernis_refid'
+ );
+
+ // Map all WDS66 entries into mailer entries
+ foreach ($mappings as $from => $to) {
+ // All must exist
+ if (!isset($userData[$from])) {
+ // Element $from does not exist
+ reportBug(__FUNCTION__, __LINE__, 'Cannot map from=' . $from . ' -> to=' . $to . ': element does not exist.');
+ } // END - if
+
+ // "Map" all
+ $return['mapped_data'][$to] = convertEmptyToNull($userData[$from]);
+ } // END - foreach
+
+ // Both arrays must have same size
+ assert(count($userData) == count($return['mapped_data']));
+
+ // Now add userid from WDS66
+ $return['mapped_data']['wernis_userid'] = bigintval($rows[0]['wernis_userid']);
} else {
- // Status does not need to be changed
+ // Something bad happened so copy the message
+ $return['message'] = $response['message'];
}
+
+ // Return mapped data array
+ return $return;
}
// Updates auth status by given key/value pair