From: Roland Haeder Date: Tue, 8 Apr 2014 18:47:07 +0000 (+0200) Subject: Introduced getWernisMapedDataFromApiByChallenge() X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=commitdiff_plain;h=18e3de7e5fc69d4d2a9f99e51b9f0ad516250744 Introduced getWernisMapedDataFromApiByChallenge() Signed-off-by: Roland Häder --- diff --git a/inc/libs/wernis_functions.php b/inc/libs/wernis_functions.php index 67d20182b2..90e88a01e7 100644 --- a/inc/libs/wernis_functions.php +++ b/inc/libs/wernis_functions.php @@ -523,12 +523,38 @@ function doDisplayWernisUserRegistrationForm () { } // 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); @@ -538,93 +564,92 @@ function doWernisFinishUserRegistration ($challenge, $challengeResponse, $status 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__ . '
'.print_r($mappedData, TRUE).'
'); - } 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 diff --git a/templates/de/html/guest/guest_wernis_registration_form.tpl b/templates/de/html/guest/guest_wernis_registration_form.tpl deleted file mode 100644 index 74d606aee2..0000000000 --- a/templates/de/html/guest/guest_wernis_registration_form.tpl +++ /dev/null @@ -1,45 +0,0 @@ -
-
- {%form,formMethodPost=modules.php?module=index&what=register&provider=wernis%} -
-
- {--GUEST_WERNIS_REGISTRATION_TITLE--} -
- -
- {--GUEST_WERNIS_REGISTRATION_LEGEND--} - -
- - -
- -
- -
- - -
- -
-
- - -
- {%form_close%} - -
- {--GUEST_WERNIS_REGISTRATION_NOTICE--} -
-
-
- -
-
    -
  • {--GUEST_WERNIS_SIGNUP_NOTICE--}
  • -
  • {--GUEST_WERNIS_RESTORE_PASSWORD_NOTICE--}
  • -
-
diff --git a/templates/de/html/guest/guest_wernis_registration_rpc_form.tpl b/templates/de/html/guest/guest_wernis_registration_rpc_form.tpl new file mode 100644 index 0000000000..74d606aee2 --- /dev/null +++ b/templates/de/html/guest/guest_wernis_registration_rpc_form.tpl @@ -0,0 +1,45 @@ +
+
+ {%form,formMethodPost=modules.php?module=index&what=register&provider=wernis%} +
+
+ {--GUEST_WERNIS_REGISTRATION_TITLE--} +
+ +
+ {--GUEST_WERNIS_REGISTRATION_LEGEND--} + +
+ + +
+ +
+ +
+ + +
+ +
+
+ + +
+ {%form_close%} + +
+ {--GUEST_WERNIS_REGISTRATION_NOTICE--} +
+
+
+ +
+
    +
  • {--GUEST_WERNIS_SIGNUP_NOTICE--}
  • +
  • {--GUEST_WERNIS_RESTORE_PASSWORD_NOTICE--}
  • +
+