templates/de/html/guest/guest_top10_row_login.tpl svneol=native#text/plain
templates/de/html/guest/guest_top10_row_refs.tpl svneol=native#text/plain
templates/de/html/guest/guest_wernis_news.tpl svneol=native#text/plain
+templates/de/html/guest/guest_wernis_registration_form.tpl svneol=native#text/plain
templates/de/html/impressum.tpl svneol=native#text/plain
templates/de/html/index.tpl svneol=native#text/plain
templates/de/html/index_forward.tpl svneol=native#text/plain
} // END - if
// Version of this extension
-setThisExtensionVersion('0.0.7');
+setThisExtensionVersion('0.0.8');
// Version history array (add more with , '0.0.1' and so on)
-setExtensionVersionHistory(array('0.0.0', '0.0.1', '0.0.2', '0.0.3', '0.0.4', '0.0.5', '0.0.6', '0.0.7'));
+setExtensionVersionHistory(array('0.0.0', '0.0.1', '0.0.2', '0.0.3', '0.0.4', '0.0.5', '0.0.6', '0.0.7', '0.0.8'));
switch (getExtensionMode()) {
case 'setup': // Do stuff when installation is running
case 'remove': // Do stuff when removing extension
// SQL commands to run
addDropTableSql('user_wernis');
+ addDropTableSql('wernis_regs');
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `action`='wernis'");
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='wernis' LIMIT 1");
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_guest_menu` WHERE `what`='wernis_portal' LIMIT 1");
// Update notes
setExtensionUpdateNotes("Anmeldung ürber WDS66 API angefangen: Filter registriert.");
break;
+
+ case '0.0.8': // SQL queries for v0.0.8
+ addConfigAddSql('wernis_base_url', "VARCHAR(255) NOT NULL DEFAULT 'http://www.wds66.com'");
+
+ // SQL commands to run
+ addDropTableSql('wernis_regs');
+ addCreateTableSql('wernis_regs', "
+`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
+`local_userid` BIGINT(20) UNSIGNED NULL DEFAULT NULL,
+`wernis_userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
+`api_auth_status` VARCHAR(255) NOT NULL DEFAULT 'UNKNOWN',
+`api_auth_key` VARCHAR(255) NOT NULL DEFAULT 'INVALID',
+`api_redirect_challenge` VARCHAR(255) NOT NULL DEFAULT 'INVALID',
+`record_inserted` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+PRIMARY KEY (`id`),
+INDEX (`wernis_userid`)",
+ 'Registrations (also pending) over WDS66 API');
+
+ // Update notes (these will be set as task text!)
+ setExtensionUpdateNotes("Basis-URL für alle Scripte (Referral-Link, auth.php-Umleitung usw. nicht aber API) und Tabelle für API-Aufrufe von auth.php hinzugefügt.");
+ break;
} // END - switch
// [EOF]
// Is WDS66 user registration selected?
if (((isGetRequestElementSet('provider')) && (getRequestElement('provider') == 'wernis')) || ((!isGetRequestElementSet('provider')) && (getDefaultRegistrationProvider() == 'wernis'))) {
// Run it
+ doDisplayWernisUserRegistrationForm();
// Interrupt filter chain
interruptFilterChain();
// Three different ways to debug...
//* DEBUG: */ reportBug(__FUNCTION__, __LINE__, 'URL=' . $url);
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'URL=' . $url);
- //* DEBUG: */ die($url);
+ /* DEBUG: */ die($url);
// We should not sent a redirect if headers are already sent
if (!headers_sent()) {
$hex .= padLeftZero(dechex(ord(substr($hash, $i, 1))), 2);
} // END - if
+ // Make sure 'length modulo 2' = 0
+ assert((strlen($hex) % 2) == 0);
+
// Return it
return $hex;
}
$content = readFromFile($FQFN);
// Remove some unwanted chars
- $content = str_replace(chr(13), '', $content);
- $content = str_replace(PHP_EOL . PHP_EOL, PHP_EOL, $content);
+ $content = str_replace(array(chr(13), PHP_EOL . PHP_EOL), array('', PHP_EOL), $content);
// Return the content
return $content;
// Member strings
'MEMBER_ORDER_ALLOWED_RECEIVE' => "Sie können heute noch <span class=\"data\">%s</span> von <span class=\"data\">%s</span> Mailbuchungen aufgeben.",
'MEMBER_ORDER_ALLOWED_MAX' => "Sie können solange Mailbuchungen aufgeben, bis alle Mitglieder nicht mehr empfangsbereit sind.",
- 'MEMBER_ORDER_ALLOWED_UNKNOWN' => "Fehler in Konfiguration erkannt! cfg=<span class=\"data\">{?order_max_full?}</span> Bitte den Administrator benachrichtigen.",
+ 'MEMBER_ORDER_ALLOWED_UNKNOWN' => "Fehler in Konfiguration erkannt. cfg=<span class=\"data\">{?order_max_full?}</span> Bitte den Administrator benachrichtigen.",
'MEMBER_ORDER_MAX_ALLOWED' => "Maximale Mailbuchungen",
'MEMBER_ORDER_ALLOWED_EXHAUSTED' => "Sie können keine weiteren Mails mehr versenden, oder stellen Sie bitte den Empfang höher ein.",
'MEMBER_ENTER_INVALID_URL' => "Ungültige URL eingegeben.",
'ADMIN_CONFIG_WERNIS_API_URL' => "Basis-URL der API-Skripte",
'ADMIN_CONFIG_WERNIS_REFID' => "Ihre Referral-Id bei WDS66-Portal (= Ihr Username!)",
'ADMIN_CONFIG_WERNIS_WPASS' => "Wernis-Passwort (nicht Account-Passwort!)",
- 'ADMIN_CONFIG_WERNIS_NOTICE' => "[<a href=\"http://www.wds66.com/ref.php?refid=10437\" target=\"_blank\">Hier</a>] können Sie schon für <strong>einmalig kostenlos</strong> <strong>25.000 Abfragen</strong> ein API-Account beantragen (dazu ist ein <strong>kostenloses</strong> Wernis-Account dennoch nötig!) Geben Sie immer Ihren Usernamen von WDS66-Hauptaccount ein und überprüfen Sie diesen mehrmals! Er wird zum Überweisen von und nach WDS66-Wernis-Portal benötigt. Die Betreibergebühren und Umrechnungsfaktoren sind für den Betrieb Ihres {?mt_word2?} komplett in Wernis ausgelegt, diese müssen Sie also noch anpassen, wenn Sie z.B. Punkte haben und in Wernis auszahlen lassen wollen. Sollten Sie sowohl einen feste als auch eine prozentuale Betreibergebühr eingestellt haben, gilt die prozentuale.",
+ 'ADMIN_CONFIG_WERNIS_NOTICE' => "[<a href=\"{?wernis_base_url?}/ref.php?refid=10437\" target=\"_blank\">Hier</a>] können Sie schon für <strong>einmalig kostenlos</strong> <strong>25.000 Abfragen</strong> ein API-Account beantragen (dazu ist ein <strong>kostenloses</strong> Wernis-Account dennoch nötig!) Geben Sie immer Ihren Usernamen von WDS66-Hauptaccount ein und überprüfen Sie diesen mehrmals! Er wird zum Überweisen von und nach WDS66-Wernis-Portal benötigt. Die Betreibergebühren und Umrechnungsfaktoren sind für den Betrieb Ihres {?mt_word2?} komplett in Wernis ausgelegt, diese müssen Sie also noch anpassen, wenn Sie z.B. Punkte haben und in Wernis auszahlen lassen wollen. Sollten Sie sowohl einen feste als auch eine prozentuale Betreibergebühr eingestellt haben, gilt die prozentuale.",
'ADMIN_WERNIS_NO_TRANSFERS' => "Derzeit keine Wernis transferiert.",
'ADMIN_WERNIS_WDS66_ACCOUNT' => "Account bei WDS66-Portal",
'ADMIN_WERNIS_TRANSFERED' => "Wernis transferiert",
'WERNIS_API_REQUEST_ERROR' => "Abfragefehler: <span class=\"data\">%s</span>",
'WERNIS_API_REQUEST_PROBLEM' => "Abfrageproblem: Status=<span class=\"data\">%s</span>, Rückmeldung=<span class=\"data\">%s</span>",
'WERNIS_API_REQUEST_FAILED' => "Unbekannter Fehler <span class=\"data\">%s</span> von API erhalten! Bitte im [<a href=\"http://bugs.mxchange.org\" target=\"_blank\" title=\"Direktlink zum Bug-Tracker\">Bug-Tracker posten</a>], den Fehlercode nennen und wie es dazu gekommen ist.",
- 'WERNIS_API_REQUEST_FAILED_AUTH' => "Authorisierung an API fehlgeschlagen! Bitte API-Id und Key überprüfen. [<a href=\"http://www.wds66.com/modules.php?module=export\" target=\"_blank\" title=\"Direkt zum WDS66-Exportaccount\">Hier</a>] direkt zum Export-Account. Sie benötigen Ihren Usernamen und Passwort.",
+ 'WERNIS_API_REQUEST_FAILED_AUTH' => "Authorisierung an API fehlgeschlagen! Bitte API-Id und Key überprüfen. [<a href=\"{?wernis_base_url?}/modules.php?module=export\" target=\"_blank\" title=\"Direkt zum WDS66-Exportaccount\">Hier</a>] direkt zum Export-Account. Sie benötigen Ihren Usernamen und Passwort.",
'WERNIS_API_REQUEST_FAILED_USER' => "Useraccount nicht gefunden oder Wernis-Passwort ist ungültig.",
'WERNIS_API_REQUEST_FAILED_OWN' => "Überweisung an eigenes Account nicht möglich.",
'WERNIS_API_REQUEST_FAILED_AMOUNT' => "Konto weist nicht genügend Deckung auf.",
'MEMBER_WERNIS_PAYOUT_MIN_POINTS' => "Mindestens auszuzahlendes Wernis-Guthaben",
'MEMBER_WERNIS_PAYOUT_SUBMIT' => "Auszahlung durchführen",
'MEMBER_WERNIS_PAYOUT_NOTICE' => "Ihr Wernis-Passwort wird bei {?MAIN_TITLE?} nicht gespeichert. Bitte bei Wernis-Betrag nur gerade Beträge eingeben! Überprüfen Sie vor dem Absenden Ihren WDS66-Usernamen.",
- 'MEMBER_WERNIS_WDS66_ID' => "Username bei WDS66-Portal: [<a href=\"http://www.wds66.com/modules.php?module=wpass\" target=\"_blank\">Vergessen?</a>]",
- 'MEMBER_WERNIS_WDS66_PASSWORD' => "Wernis-Passwort (nicht Accountpasswort!): [<a href=\"http://www.wds66.com/modules.php?module=wpass\" target=\"_blank\">Vergessen?</a>]",
+ 'MEMBER_WERNIS_WDS66_ID' => "Username bei WDS66-Portal: [<a href=\"{?wernis_base_url?}/modules.php?module=wpass\" target=\"_blank\">Vergessen?</a>]",
+ 'MEMBER_WERNIS_WDS66_PASSWORD' => "Wernis-Passwort (nicht Accountpasswort): [<a href=\"{?wernis_base_url?}/modules.php?module=wpass\" target=\"_blank\">Vergessen?</a>]",
'MEMBER_WERNIS_WDS66_AMOUNT' => "Zu überweisenden Betrag eingeben:",
- 'MEMBER_WERNIS_MODE_INVALID' => "Ungültiger Modus <span class=\"data\">%s</span> erkannt! Bitte links im Menü fortfahren.",
+ 'MEMBER_WERNIS_MODE_INVALID' => "Ungültiger Modus <span class=\"data\">%s</span> erkannt. Bitte links im Menü fortfahren.",
'MEMBER_WERNIS_EMPTY_USERNAME' => "Sie haben Ihren WDS66-Usernamen nicht eingegeben.",
'MEMBER_WERNIS_EMPTY_PASSWORD' => "Sieh haben kein Wernis-Passwort eingegeben.",
'MEMBER_WERNIS_EMPTY_AMOUNT' => "Sie haben keine zu überweisende Betrag angegeben.",
'MEMBER_WERNIS_INVALID_AMOUNT' => "Bitte nur Zahlen für den zu überweisenden Betrag eingeben.",
'MEMBER_WERNIS_WITHDRAW_AMOUNT_SMALLER_MIN' => "Bitte geben Sie mindestens <span class=\"data\">{OPEN_TEMPLATE}config,translateComma=wernis_min_withdraw{CLOSE_TEMPLATE}</span> Wernis für die Einzahlung an.",
'MEMBER_WERNIS_PAYOUT_AMOUNT_SMALLER_MIN' => "Bitte geben Sie mindestens <span class=\"data\">{OPEN_TEMPLATE}config,translateComma=wernis_min_payout{CLOSE_TEMPLATE}</span> Wernis für die Auszahlung an.",
- 'MEMBER_WERNIS_WITHDRAW_FAILED' => "Die Einzahlung hat nicht geklappt! Rückmeldung für den Support: <span class=\"data\">{OPEN_TEMPLATE}pipe,GET_WERNIS_ERROR_MESSAGE{CLOSE_TEMPLATE}</span>.",
+ 'MEMBER_WERNIS_WITHDRAW_FAILED' => "Die Einzahlung hat nicht geklappt! Rückmeldung für den Support: <span class=\"data\">{OPEN_TEMPLATE}pipe,getWernisErrorMessage{CLOSE_TEMPLATE}</span>.",
'MEMBER_WERNIS_WITHDRAW_DONE' => "Einzahlung auf Ihr {?MAIN_TITLE?} Konto erfolgreich abgeschlossen. :-)",
- 'MEMBER_WERNIS_PAYOUT_FAILED' => "Die Auszahlung hat nicht geklappt! Rückmeldung für den Support: <span class=\"data\">{OPEN_TEMPLATE}pipe,GET_WERNIS_ERROR_MESSAGE{CLOSE_TEMPLATE}</span>.",
+ 'MEMBER_WERNIS_PAYOUT_FAILED' => "Die Auszahlung hat nicht geklappt! Rückmeldung für den Support: <span class=\"data\">{OPEN_TEMPLATE}pipe,getWernisErrorMessage{CLOSE_TEMPLATE}</span>.",
'MEMBER_WERNIS_PAYOUT_DONE' => "Auszahlung auf WDS66-Hauptaccount erfolgreich abgeschlossen. :-)",
'MEMBER_WERNIS_PAYOUT_POINTS_DEPLETED' => "Sie können nicht <span class=\"data\">%s</span> Wernis auszahlen, da Sie nur <span class=\"data\">%s</span> übrig haben.",
'MEMBER_WERNIS_STATUS' => "Überweisungsart",
'MEMBER_WERNIS_MODE_PAYOUT' => "Wernis auszahlen",
'MEMBER_WERNIS_LIST_WERNIS' => "Überweisungsliste von/an WDS66-Hauptaccount",
+ // Guest messages - registration
+ 'GUEST_WERNIS_REGISTRATION_TITLE' => "Anmelung mit WDS66",
+ 'GUEST_WERNIS_REGISTRATION_LEGEND' => "Bitte geben Sie Ihre WDS66 Mitgliedsnummer und das Wernis-Passwort ein:",
+ 'GUEST_ENTER_WERNIS_ID' => "Ihre WDS66 Mitgliedsnummer:",
+ 'GUEST_ENTER_WERNIS_PASSWORD' => "Ihr Wernis-Passwort:",
+ 'GUEST_WERNIS_REGISTRATION_SUBMIT' => "Mit WDS66 anmelden",
+ 'GUEST_WERNIS_REGISTRATION_NOTICE' => "Bitte verwenden Sie Ihr Wernis-Passwort zur Anmeldung, Ihr Accountpasswort wird hier nicht funktionieren, da dieses zum Anmelden an WDS66 gedacht ist.",
+ 'GUEST_WERNIS_SIGNUP_NOTICE' => "Sie haben noch keinen WDS66-Account? <a rel=\"external\" target=\"_blank\" href=\"{?wernis_base_url?}/ref.php?refid={?wernis_refid?}\">Hier geht es zur kostenlosen Anmeldung.",
+ 'GUEST_WERNIS_RESTORE_PASSWORD_NOTICE' => "Sie haben kein Wernis-Passwort oder haben es vergessen? <a rel=\"external\" target=\"_blank\" href=\"{?wernis_base_url?}/modules.php?module=wpass\">Hier ein neues einstellen.",
+ 'GUEST_WERNIS_REGISTRATION_ID_NOT_SET' => "Bitte geben Sie Ihre Wernis-Id ein. Tipp: Mit dieser Id-Nummer melden Sie sich auch bei WDS66 an.",
+ 'GUEST_WERNIS_REGISTRATION_PASSWORD_NOT_SET' => "Bitte geben Sie Ihr Wernis-Passwort ein. Tipp: Dies ist <strong>nicht</strong> Ihr Account-Passwort.",
+ 'GUEST_WERNIS_REGISTRATION_INVALID_CHALLENGE_RESPONSE' => "Es ist beim Anmeldeversuch ein Fehler unterlaufen: Falsche Challenge-Response",
+
// Points accounts - subject
'POINTS_SUBJECT_WERNIS_WITHDRAW' => "Einzahlung vom WDS66-Account",
} // END - if
// Sets a status message and code
-function WERNIS_STATUS_MESSAGE ($message, $status) {
+function setWernisStatusMessage ($message, $status) {
$GLOBALS['wernis_data']['message'] = $message;
$GLOBALS['wernis_data']['status'] = $status;
}
// Get the status message
-function GET_WERNIS_ERROR_MESSAGE () {
+function getWernisErrorMessage () {
if (isset($GLOBALS['wernis_data']['message'])) {
// Use raw message
return $GLOBALS['wernis_data']['message'];
}
// Get the status code
-function GET_WERNIS_ERROR_CODE () {
+function getWernisErrorCode () {
if (isset($GLOBALS['wernis_data']['status'])) {
// Use raw message
return $GLOBALS['wernis_data']['status'];
}
// Sends out a request to the API and returns it's result
-function WERNIS_SEND_REQUEST ($scriptName, $requestData = array()) {
+function sendWernisApiRequest ($scriptName, $requestData = array()) {
// Is the requestData an array?
if (!is_array($requestData)) {
// Then abort here!
}
// Tests the function by calling balance.php on the API
-function WERNIS_TEST_API () {
+function doAdminTestWernisApi () {
// Only as admin
assert(isAdmin());
);
// Return the result from the lower functions
- $return = WERNIS_SEND_REQUEST('balance.php', $requestData);
+ $return = sendWernisApiRequest('balance.php', $requestData);
// Did it went smoothly?
if ($return['status'] == 'OK') {
$result = TRUE;
} else {
// Status failure text
- WERNIS_STATUS_MESSAGE($return['message'], $return['status']);
+ setWernisStatusMessage($return['message'], $return['status']);
}
// Return result
}
// Widthdraw this amount
-function WERNIS_EXECUTE_WITHDRAW ($wdsId, $userMd5, $amount) {
+function executeWernisWithdraw ($wdsId, $userMd5, $amount) {
// Is the sponsor extension installed?
if (!isWernisWithdrawActive()) {
if (!isExtensionActive('sponsor')) {
);
// Return the result from the lower functions
- $return = WERNIS_SEND_REQUEST('book.php', $requestData);
+ $return = sendWernisApiRequest('book.php', $requestData);
if ($return['status'] == 'OK') {
// All fine!
$result = TRUE;
// Log the transfer
- WERNIS_LOG_TRANSFER($wdsId, $amount, 'WITHDRAW');
+ logWernisTransfer($wdsId, $amount, 'WITHDRAW');
} else {
// Status failure text
- WERNIS_STATUS_MESSAGE($return['message'], $return['status']);
+ setWernisStatusMessage($return['message'], $return['status']);
// Log the transfer
- WERNIS_LOG_TRANSFER($wdsId, $amount, 'FAILED', $return['message'], $return['status']);
+ logWernisTransfer($wdsId, $amount, 'FAILED', $return['message'], $return['status']);
}
// Return result
return $result;
}
-
// Payout this amount
-function WERNIS_EXECUTE_PAYOUT ($wdsId, $amount) {
+function executeWernisPayout ($wdsId, $amount) {
// Default is failed attempt
$result = FALSE;
);
// Return the result from the lower functions
- $return = WERNIS_SEND_REQUEST('book.php', $requestData);
+ $return = sendWernisApiRequest('book.php', $requestData);
if ($return['status'] == 'OK') {
// All fine!
$result = TRUE;
// Log the transfer
- WERNIS_LOG_TRANSFER($wdsId, $amount, 'PAYOUT');
+ logWernisTransfer($wdsId, $amount, 'PAYOUT');
} else {
// Status failure text
- WERNIS_STATUS_MESSAGE($return['message'], $return['status']);
+ setWernisStatusMessage($return['message'], $return['status']);
// Log the transfer
- WERNIS_LOG_TRANSFER($wdsId, $amount, 'FAILED', $return['message'], $return['status']);
+ logWernisTransfer($wdsId, $amount, 'FAILED', $return['message'], $return['status']);
}
// Return result
return $result;
}
+// Execute auth.php request
+function executeWernisAuth ($wernisId, $wernisPassword) {
+ // Prepare request data
+ $requestData = array(
+ 't_uid' => bigintval($wernisId),
+ 't_md5' => hashSha256($wernisPassword),
+ );
+
+ // Call auth.php
+ $return = sendWernisApiRequest('auth.php', $requestData);
+
+ // Return full array
+ return $return;
+}
+
// Translate the status IN/OUT
function translateWernisTransferStatus ($status) {
// Default status is unknown
}
// Log the transfer
-function WERNIS_LOG_TRANSFER ($wdsId, $amount, $type = 'FAILED', $message = '', $status = '') {
+function logWernisTransfer ($wdsId, $amount, $type = 'FAILED', $message = '', $status = '') {
// Register this wernis movement
sqlQueryEscaped("INSERT INTO `{?_MYSQL_PREFIX?}_user_wernis` (`userid`, `wernis_account`, `wernis_amount`, `wernis_timestamp`, `wernis_type`, `wernis_api_message`, `wernis_api_status`) VALUES (%s, %s, %s, UNIX_TIMESTAMP(), '%s', '%s', '%s')",
array(
), __FUNCTION__, __LINE__);
}
-// Take fees and factor
-function WERNIS_TAKE_FEE ($points, $mode) {
+// Calulcate fees and factor
+function calculateWernisFee ($points, $mode) {
// Payout or withdraw are allowed modes!
//* DEBUG: */ debugOutput('mode=' . $mode . ',points=' . $points);
if (!in_array($mode, array('payout', 'withdraw'))) {
}
// Add withdraw fees and factor
-function WERNIS_ADD_WITHDRAW_FEE ($points) {
+// @TODO Unused?
+function calulcateWernisWithdrawFee ($points) {
// Is there a percentage or fixed fee?
if (getWernisWithdrawFeePercent() > 0) {
// Percentage fee
return $points;
}
+// Displays registration form for WDS66 registration
+function doDisplayWernisUserRegistrationForm () {
+ // Is the form sent?
+ if (isFormSent('register')) {
+ // Is wernis_id set?
+ if (!isPostRequestElementSet('wernis_id')) {
+ // Id not set
+ displayMessage('{--GUEST_WERNIS_REGISTRATION_ID_NOT_SET--}');
+ } elseif (!isPostRequestElementSet('wernis_password')) {
+ // Password not set
+ displayMessage('{--GUEST_WERNIS_REGISTRATION_PASSWORD_NOT_SET--}');
+ } else {
+ // So far, all fine, then let's do the call-back on auth.php ...
+ $response = executeWernisAuth(postRequestElement('wernis_id'), postRequestElement('wernis_password'));
+
+ // Was the status okay?
+ if ((isset($response['status'])) && ($response['status'] == 'OK') && (!empty($response['response']))) {
+ // All fine, then analyze response
+ $args = convertApiResponseToArray($response['response'], '&', '=');
+
+ // Is status set?
+ assert(isset($args['auth_status']));
+
+ // Add WDS66 userid
+ $args['wernis_userid'] = postRequestElement('wernis_id');
+
+ // "Detect" auth status
+ $callbackFunction = 'doWernisAuth' . capitalizeUnderscoreString($args['auth_status']);
+
+ // Is the call-back there?
+ if (!is_callable($callbackFunction, FALSE, $callableName)) {
+ // Not there, could be bad. :(
+ reportBug(__FUNCTION__, __LINE__, 'Unsupported auth_status=' . $args['auth_status'] . ',args()=' . count($args) . ',callbackFunction=' . $callbackFunction . ' detected.');
+ } // END - if
+
+ // Then call it
+ $status = call_user_func($callbackFunction, $args);
+ die(__FUNCTION__ . ': status[' . gettype($status) . ']=' . $status);
+ } else {
+ // Something bad happened
+ displayMessage($response['message']);
+ }
+ }
+ } // END - if
+
+ // Is the form not sent? (E.g. missing form fields)
+ if ((isGetRequestElementSet('status')) && (isGetRequestElementSet('challenge')) && (isGetRequestElementSet('__challenge_response'))) {
+ // Redirect from modules.php?module=auth, so validate challenge response ...
+ // 1) Get first 24 characters = salt
+ $salt = substr(getRequestElement('__challenge_response'), 0, 24);
+
+ // 2) Generate hash again
+ $response = $salt . hashSha256($salt . getWernisApiMd5() . getRequestElement('challenge'));
+
+ // Is the response valid?
+ if ($response != getRequestElement('__challenge_response')) {
+ // Not valid
+ displayMessage('{--GUEST_WERNIS_REGISTRATION_INVALID_CHALLENGE_RESPONSE--}');
+ return;
+ } // END - if
+
+ /*
+ * Now, that the challenge-response is the same, the challenge itself
+ * is also the same. So get.php can be called.
+ */
+ die('!ojk');
+ } elseif (!isFormSent('register')) {
+ // Form not send, so load form template
+ loadTemplate('guest_wernis_registration_form');
+ } // END - if
+}
+
+//-----------------------------------------------------------------------------
+// Auth status callback functions
+//-----------------------------------------------------------------------------
+
+// Handler for auth_status=PENDING
+function doWernisAuthPending ($args) {
+ // auth_key must be set
+ assert(isset($args['auth_key']));
+
+ // Generate a challenge that will be added to the URL
+ $challenge = hashSha256(generatePassword(128));
+
+ // Search entry in database by auth_key
+ if (countSumTotalData($args['auth_key'], 'wernis_regs', 'id', 'api_auth_key', TRUE) == 0) {
+ // "Register" this call
+ sqlQueryEscaped("INSERT INTO `{?_MYSQL_PREFIX?}_wernis_regs` (
+ `wernis_userid`,
+ `api_auth_status`,
+ `api_auth_key`,
+ `api_redirect_challenge`
+) VALUES (
+ %s,
+ 'PENDING',
+ '%s',
+ '%s'
+)",
+ array(
+ bigintval($args['wernis_userid']),
+ $args['auth_key'],
+ $challenge
+ ), __FUNCTION__, __LINE__
+ );
+
+ // Should be inserted
+ assert(sqlAffectedRows() == 1);
+ } else {
+ // Update challenge
+ sqlQueryEscaped("UPDATE
+ `{?_MYSQL_PREFIX?}_wernis_regs`
+SET
+ `api_redirect_challenge`='%s'
+WHERE
+ `api_auth_key`='%s' AND
+ `wernis_userid`=%s
+ `api_auth_status`='PENDING'
+LIMIT 1",
+ array(
+ $challenge,
+ $args['auth_key'],
+ bigintval($args['wernis_userid'])
+ ), __FUNCTION__, __LINE__
+ );
+
+ // Should always be updated
+ 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);
+}
+
//-----------------------------------------------------------------------------
// Wrapper functions
//-----------------------------------------------------------------------------
return $GLOBALS[__FUNCTION__];
}
+// Wrapper function for 'wernis_base_url'
+function getWernisBaseUrl () {
+ // Is there cache?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Get config entry
+ $GLOBALS[__FUNCTION__] = getConfig('wernis_base_url');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
+}
+
// [EOF]
?>
// Add description as navigation point
addYouAreHereLink('admin', __FILE__);
+// Form sent?
if (isFormSent('save_config')) {
- // Hash the password and remove clear-text
- setPostRequestElement('wernis_pass_md5', hashSha256(postRequestElement('wernis_pass')));
+ // Is wernis_pass set?
+ if (isPostRequestElementSet('wernis_pass')) {
+ // Hash the password and remove clear-text
+ setPostRequestElement('wernis_pass_md5', hashSha256(postRequestElement('wernis_pass')));
- // First merge temporarily the new API data into the current config
- mergeConfig(postRequestArray());
+ // First merge temporarily the new API data into the current config
+ mergeConfig(postRequestArray());
- // Let's test the API first (hold your horses here, cowboy! Thank you. :) )
- if (WERNIS_TEST_API()) {
- // Revert german commata
- foreach (array('payout_factor', 'withdraw_factor', 'payout_fee_percent', 'withdraw_fee_percent') as $revert) {
- setPostRequestElement('wernis_' . $revert, postRequestElement('wernis_' . $revert));
- } // END - if
+ // Let's test the API first (hold your horses here, cowboy! Thank you. :) )
+ if (doAdminTestWernisApi()) {
+ // Revert german commata
+ foreach (array('payout_factor', 'withdraw_factor', 'payout_fee_percent', 'withdraw_fee_percent') as $revert) {
+ setPostRequestElement('wernis_' . $revert, postRequestElement('wernis_' . $revert));
+ } // END - if
+ // Remove clear password
+ unsetPostRequestElement('wernis_pass');
+
+ // Save settings
+ adminSaveSettingsFromPostData();
+ } else {
+ // Failed to test the API!
+ displayMessage(getWernisErrorMessage());
+ }
+ } else {
// Remove clear password
unsetPostRequestElement('wernis_pass');
- // Save settings
+ // Save it, anyway
adminSaveSettingsFromPostData();
- } else {
- // Failed to test the API!
- displayMessage(GET_WERNIS_ERROR_MESSAGE());
}
-} else {
+} else {
// Load template
loadTemplate('admin_config_wernis');
}
$rdf->set_Options(
array(
'textinput' => 'hidden',
- 'sitelink' => 'http://www.wds66.com',
+ 'sitelink' => getWernisBaseUrl(),
'refid' => getWernisRefid(),
'reflink' => '/ref.php?refid=',
)
} // END - if
} // END - if
-$rdf->parse_RDF('http://www.wds66.com/rss.xml');
+$rdf->parse_RDF(getWernisBaseUrl() . '/rss.xml');
// Load template
loadTemplate('guest_wernis_news', FALSE, $rdf->finish(TRUE));
$points = getTotalPoints(getMemberId()) - getPointsRegister();
// Is there a percentage or fixed fee?
- $points = WERNIS_TAKE_FEE($points, 'payout');
+ $points = calculateWernisFee($points, 'payout');
// Is this enougth for a payout?
if ($points < getConfig('wernis_min_payout')) {
displayMessage('{--MEMBER_WERNIS_WITHDRAW_AMOUNT_SMALLER_MIN--}');
} else {
// All is fine here so do the withdraw
- $success = WERNIS_EXECUTE_WITHDRAW(postRequestElement('wernis_userid'), hashSha256(postRequestElement('wds66_password')), postRequestElement('amount'));
+ $success = executeWernisWithdraw(postRequestElement('wernis_userid'), hashSha256(postRequestElement('wds66_password')), postRequestElement('amount'));
if ($success === TRUE) {
// Add it to this amount
initReferralSystem();
// All done!
displayMessage('{--MEMBER_WERNIS_WITHDRAW_DONE--}');
return;
- } elseif ((GET_WERNIS_ERROR_CODE() == 'user_failed') || (GET_WERNIS_ERROR_CODE() == 'own_failed') || (GET_WERNIS_ERROR_CODE() == 'amount_failed')) {
+ } elseif ((getWernisErrorCode() == 'user_failed') || (getWernisErrorCode() == 'own_failed') || (getWernisErrorCode() == 'amount_failed')) {
// Wrong login data
- displayMessage(GET_WERNIS_ERROR_MESSAGE());
+ displayMessage(getWernisErrorMessage());
} else {
// Something went wrong
displayMessage('{--MEMBER_WERNIS_WITHDRAW_FAILED--}');
displayMessage(sprintf(getMessage('MEMBER_WERNIS_PAYOUT_POINTS_DEPLETED'), bigintval(postRequestElement('amount')), bigintval($points)));
} else {
// All is fine here so do the withdraw
- $success = WERNIS_EXECUTE_PAYOUT(postRequestElement('wernis_userid'), postRequestElement('amount'));
+ $success = executeWernisPayout(postRequestElement('wernis_userid'), postRequestElement('amount'));
if ($success === TRUE) {
// Sub points and ignore return status
subtractPoints('wernis_payout', getMemberId(), postRequestElement('amount'));
// All done!
displayMessage('{--MEMBER_WERNIS_PAYOUT_DONE--}');
return;
- } elseif ((GET_WERNIS_ERROR_CODE() == 'user_failed') || (GET_WERNIS_ERROR_CODE() == 'own_failed') || (GET_WERNIS_ERROR_CODE() == 'amount_failed') || (GET_WERNIS_ERROR_CODE() == 'api_amount_failed')) {
+ } elseif ((getWernisErrorCode() == 'user_failed') || (getWernisErrorCode() == 'own_failed') || (getWernisErrorCode() == 'amount_failed') || (getWernisErrorCode() == 'api_amount_failed')) {
// Wrong login data
- displayMessage(GET_WERNIS_ERROR_MESSAGE());
+ displayMessage(getWernisErrorMessage());
} else {
// Something went wrong
displayMessage('{--MEMBER_WERNIS_PAYOUT_FAILED--}');
return $GLOBALS[__FUNCTION__][$subject];
}
+// Converts an API response to an associative array
+function convertApiResponseToArray ($responseString, $keyDelimiter, $valueDelimiter) {
+ // Explode for key delimiter
+ $keys = explode($keyDelimiter, $responseString);
+
+ // Init returned array and "walk" through all entries
+ $returned = array();
+ foreach ($keys as $keyValue) {
+ // Explode it
+ $parts = explode($valueDelimiter, $keyValue);
+
+ // Count must be 2
+ assert(count($parts) == 2);
+
+ // Then add both: 0=key, 1=value
+ $returned[sqlEscapeString($parts[0])] = sqlEscapeString($parts[1]);
+ } // END - if
+
+ // Return finished array
+ return $returned;
+}
+
// [EOF]
?>
<input type="text" class="form_field" name="wernis_api_url" value="{?wernis_api_url?}" size="25" maxlength="255" />
</td>
</tr>
+ <tr>
+ <td align="right">
+ {--ADMIN_CONFIG_WERNIS_BASE_URL--}
+ </td>
+ <td>
+ <input type="text" class="form_field" name="wernis_base_url" value="{?wernis_base_url?}" size="25" maxlength="255" />
+ </td>
+ </tr>
<tr>
<td align="right">
{--ADMIN_CONFIG_WERNIS_REFID--}
<div align="center">
{%form,formMethodPost=modules.php?module=index&what=confirm%}
<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
- <tr>
- <td align="center" colspan="2" class="table_header bottom">
- <strong>{--GUEST_REQUEST_CONFIRM_LINK_TITLE--}</strong>
- </td>
- </tr>
- <tr>
- <td align="center" colspan="2">
- {--GUEST_CONFIRM_LINK_NOTICE--}
- </td>
- </tr>
- <tr>
- <td class="bottom" align="right">{--GUEST_ENTER_EMAIL--}:</td>
- <td class="bottom">
- <input type="text" class="form_field" name="email" size="30" maxlength="255" />
- </td>
- </tr>
- <tr>
- <td align="center" colspan="2" class="table_footer">
- <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" class="form_submit" name="ok" value="{--GUEST_REQUEST_CONFIRM_LINK--}" />
- </td>
- </tr>
+<tr>
+ <td align="center" colspan="2" class="table_header bottom">
+ <strong>{--GUEST_REQUEST_CONFIRM_LINK_TITLE--}</strong>
+ </td>
+</tr>
+
+<tr>
+ <td align="center" colspan="2">
+ {--GUEST_CONFIRM_LINK_NOTICE--}
+ </td>
+</tr>
+
+<tr>
+ <td class="bottom" align="right">{--GUEST_ENTER_EMAIL--}:</td>
+ <td class="bottom">
+ <input type="text" class="form_field" name="email" size="30" maxlength="255" />
+ </td>
+</tr>
+
+<tr>
+ <td align="center" colspan="2" class="table_footer">
+ <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
+ <input type="submit" class="form_submit" name="ok" value="{--GUEST_REQUEST_CONFIRM_LINK--}" />
+ </td>
+</tr>
</table>
{%form_close%}
</div>
<div align="center">
-<table border="0" cellspacing="0" cellpadding="0" class="table dashed" width="310">
+<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
<tr>
<td align="center" class="table_header bottom" colspan="2">
<strong>{--GUEST_TOPTEN_STATS--}</strong>
</td>
</tr>
+
$content[rows]
+
<tr>
<td align="center" class="table_footer" colspan="2">
<a href="{%url=modules.php?module=index&what=stats&do=$content[lmode]%}">$content[ltitle]</a>
<div align="center">
-<table border="0" cellspacing="0" cellpadding="0" width="90%"
- class="table dashed">
+<table border="0" cellspacing="0" cellpadding="0" width="90%" class="table dashed">
<tr>
<td colspan="5" class="table_header bottom">
<strong>{--GUEST_TOP10_LOGINS_TITLE--}</strong>
--- /dev/null
+<div class="para">
+<div align="center">
+ {%form,formMethodPost=modules.php?module=index&what=register&provider=wernis%}
+ <div class="table dashed">
+ <div class="table_header bottom">
+ {--GUEST_WERNIS_REGISTRATION_TITLE--}
+ </div>
+
+ <fieldset id="wernis_registration_fields">
+ <legend>{--GUEST_WERNIS_REGISTRATION_LEGEND--}</legend>
+
+ <div class="guest_input" align="left">
+ <label for="wernis_id">{--GUEST_ENTER_WERNIS_ID--}</label>
+ <input type="text" class="form_field" id="base_path" name="wernis_id" size="10" maxlength="20" />
+ </div>
+
+ <div class="clear"></div>
+
+ <div class="guest_input" align="left">
+ <label for="wernis_password">{--GUEST_ENTER_WERNIS_PASSWORD--}</label>
+ <input type="password" class="form_field" id="base_path" name="wernis_password" size="10" maxlength="255" />
+ </div>
+
+ <div class="clear"></div>
+ </fieldset>
+
+ <div class="table_footer top">
+ <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
+ <input type="submit" class="form_submit" name="register" value="{--GUEST_WERNIS_REGISTRATION_SUBMIT--}" />
+ </div>
+ </div>
+ {%form_close%}
+
+ <div class="notice">
+ {--GUEST_WERNIS_REGISTRATION_NOTICE--}
+ </div>
+</div>
+</div>
+
+<div class="para" align="left">
+ <ul>
+ <li>{--GUEST_WERNIS_SIGNUP_NOTICE--}</li>
+ <li>{--GUEST_WERNIS_RESTORE_PASSWORD_NOTICE--}</li>
+ </ul>
+</div>