X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Flibs%2Fwernis_functions.php;h=67d20182b2d45c1b70c71ca3d875e5f4de9af805;hp=50f39751be16d9225486c209725ed1029fc77f10;hb=da04bff3283a30a238b25429b007ff538c00df7f;hpb=f1d0a68ef017ce2e658e8e681b8dba79b8f1b4df diff --git a/inc/libs/wernis_functions.php b/inc/libs/wernis_functions.php index 50f39751be..67d20182b2 100644 --- a/inc/libs/wernis_functions.php +++ b/inc/libs/wernis_functions.php @@ -551,12 +551,11 @@ function doWernisFinishUserRegistration ($challenge, $challengeResponse, $status * update it and ignore result from function because the update * will always run. */ - updateWernisRegistrationStatusByKey('api_redirect_challenge', $challenge, 'ACCEPTED'); + updateWernisRegistrationDataByKey('api_auth_status', 'api_redirect_challenge', $challenge, 'ACCEPTED'); } // END - if // Now call "get.php" - // @TODO Hard-coded value (anrede, etc.) - $response = executeWernisApiGet($rows[0], 'data', 'anrede|vorname|name|strasse|plz|ort|birth_day|birth_month|birth_year|email'); + $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)) { @@ -571,15 +570,53 @@ function doWernisFinishUserRegistration ($challenge, $challengeResponse, $status /* * Do some checks on the decoded string, it should be a - * serialized array with 10 entries (see above + * serialized array with 11 entries (see above * executeWernisApiGet() call). */ - assert(substr($decodedData, 0, 6) == 'a:10:{'); + assert(substr($decodedData, 0, 6) == 'a:11:{'); assert(substr($decodedData, -1, 1) == '}'); // The array seems to be fine, unserialize it $userData = unserialize($decodedData); - die(__FUNCTION__.'
'.print_r($userData, TRUE).'
'); + + // 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 + + // "Map" all + $mappedData[$to] = convertEmptyToNull($userData[$from]); + } // END - foreach + + // Both arrays must have same size + assert(count($userData) == count($mappedData)); + + // Now add userid and registration provider from WDS66 + $mappedData['wernis_userid'] = bigintval($rows[0]['wernis_userid']); + $mappedData['registration_provider'] = 'wernis'; + + die(__FUNCTION__ . '
'.print_r($mappedData, TRUE).'
'); } else { // Something bad happened displayMessage($response['message']); @@ -591,21 +628,22 @@ function doWernisFinishUserRegistration ($challenge, $challengeResponse, $status } // Updates auth status by given key/value pair -function updateWernisRegistrationStatusByKey ($key, $value, $newStatus) { +function updateWernisRegistrationDataByKey ($updatedColumn, $key, $oldValue, $newValue) { // Run the update sqlQueryEscaped("UPDATE `{?_MYSQL_PREFIX?}_wernis_regs` SET - `api_auth_status`='%s' + `%s`='%s' WHERE `%s`='%s' AND - `api_auth_status` != '%s' + `%s` != '%s' LIMIT 1", array( - $newStatus, + $updatedColumn, + $newValue, $key, - $value, - $newStatus + $updatedColumn, + $oldValue ), __FUNCTION__, __LINE__ ); @@ -692,9 +730,6 @@ function doWernisAuthPending ($args) { $challenge ), __FUNCTION__, __LINE__ ); - - // Should be inserted - assert(sqlAffectedRows() == 1); } else { // Update challenge sqlQueryEscaped("UPDATE @@ -712,11 +747,11 @@ LIMIT 1", bigintval($args['wernis_userid']) ), __FUNCTION__, __LINE__ ); - - // Should always be updated - assert(sqlAffectedRows() == 1); } + // Should always update/insert + assert(sqlAffectedRows() == 1); + // Redirect to WDS66 module=auth ... redirectToUrl(getWernisBaseUrl() . '/modules.php?module=auth&auth_key=' . $args['auth_key'] . '&params=' . urlencode(base64_encode('&module=' . getModule() . '&what=' . getWhat())) . '&challenge=' . $challenge); } @@ -729,7 +764,6 @@ function doWernisAuthAccepted ($args) { // auth_key and wernis_userid must be set assert(isset($args['auth_key'])); assert(isset($args['wernis_userid'])); - die(__FUNCTION__ . '
'.print_r($args, TRUE).'
'); }