X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=beg.php;h=59d3572d675a507f0c501e34cd4cf57280a49b9f;hp=c5442dfc4c7eff8710bd28636ab3eb6ec283aeb8;hb=7c15ca79161bf475e958810a5b585bce869a2af9;hpb=58b29a924c48e7c1ce38c435c92e541b53984c56 diff --git a/beg.php b/beg.php index c5442dfc4c..59d3572d67 100644 --- a/beg.php +++ b/beg.php @@ -10,9 +10,14 @@ * -------------------------------------------------------------------- * * Kurzbeschreibung : Bettel-Link fuer Mitglieder * * -------------------------------------------------------------------- * - * * + * $Revision:: $ * + * $Date:: $ * + * $Tag:: 0.2.1-FINAL $ * + * $Author:: $ * + * Needs to be in all Files and every File needs "svn propset * + * svn:keywords Date Revision" (autoprobset!) at least!!!!!! * * -------------------------------------------------------------------- * - * Copyright (c) 2003 - 2008 by Roland Haeder * + * Copyright (c) 2003 - 2009 by Roland Haeder * * For more information visit: http://www.mxchange.org * * * * This program is free software; you can redistribute it and/or modify * @@ -31,193 +36,178 @@ * MA 02110-1301 USA * ************************************************************************/ -// Load security stuff here (Oh, I hope this is not unsecure? Am I paranoia??? ;-) ) -require_once("inc/libs/security_functions.php"); +// Load security stuff here +require('inc/libs/security_functions.php'); -// Init "action" and "what" -global $what, $action, $startTime; +// Init start time $GLOBALS['startTime'] = microtime(true); -$GLOBALS['what'] = ""; $GLOBALS['action'] = ""; // Set module -$GLOBALS['module'] = "beg"; -$GLOBALS['refid'] = 0; -$CSS = -1; -$msg = null; +$GLOBALS['module'] = 'beg'; +$GLOBALS['output_mode'] = -1; +$errorCode = null; // Load the required file(s) -require ("inc/config.php"); - -// Is the script installed? -if (defined('mxchange_installed') && (isBooleanConstantAndTrue('mxchange_installed'))) { - // Check for userid - if (!empty($_GET['uid'])) { - // Init user ID - $uid = 0; - - // Validate if it is not a number - if (bigintval($_GET['uid']) !== "".$_GET['uid']."") { - if (EXT_IS_ACTIVE("nickname")) { - // Maybe we have found a nickname? - $result = SQL_QUERY_ESC("SELECT userid, beg_clicks, ref_payout, status, last_online FROM "._MYSQL_PREFIX."_user_data WHERE nickname='%s' LIMIT 1", - array($_GET['uid']), __FILE__, __LINE__); - } else { - // Nickname entered but nickname is not active - $msg = CODE_EXTENSION_PROBLEM; - $uid = -1; - $result = false; - } - } else { - // Direct userid - $result = SQL_QUERY_ESC("SELECT userid, beg_clicks, ref_payout, status, last_online FROM "._MYSQL_PREFIX."_user_data WHERE userid=%d LIMIT 1", - array(bigintval($_GET['uid'])), __FILE__, __LINE__); - } +require('inc/config-global.php'); - // Check if locked in so don't pay points - $login = false; $status = "failed"; - if (IS_LOGGED_IN()) { - // Logged in user detected! - $login = true; - } +// Set content type +setContentType('text/html'); - // Check if account was found - if ((SQL_NUMROWS($result) == 1) && ($result != false)) { - // Found an ID so we simply set it - list($uid, $clicks, $ref_payout, $status, $last) = SQL_FETCHROW($result); - if ($status == "CONFIRMED") { - // Secure userid - $uid = bigintval($uid); - - // Calculate beg points - srand((double)microtime() * 10000000000 / time()); - - // Multiply configured values with 100000 and divide with 100000 so we can also handle small values - // If we need more number behind the decimal dot then we just need to increase all these three - // numbers matching to the numbers behind the decimal dot. Simple! ;-) - $points = rand(($_CONFIG['beg_points'] * 100000), ($_CONFIG['beg_points_max'] * 100000)) / 100000; - - // Set nickname / userid for the template(s - define('__BEG_UID' , $_GET['uid']); - define('__BEG_CLICKS', ($clicks + 1)); - define('__BEG_BANNER', LOAD_TEMPLATE("beg_banner", true)); - define('__BEG_POINTS', TRANSLATE_COMMA($points)); - } else { - // Other status - $uid = "0"; - } - } +// Is the 'beg' extension active? +redirectOnUninstalledExtension('beg'); - // Free memory - SQL_FREERESULT($result); +// Check for userid +if (isGetRequestElementSet('userid')) { + // Init variables + $points = 0; - if (($uid > 0) && ($_CONFIG['beg_uid'] != $uid)) { - // Update counter - $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_user_data SET beg_clicks=beg_clicks+1 WHERE userid=%d AND status='CONFIRMED' LIMIT 1", - array($uid), __FILE__, __LINE__); - - // Check for last entry for userid w/o IP number - $result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_beg_ips WHERE (timeout > ".(time() - $_CONFIG['beg_timeout'])." OR (timeout > ".(time() - $_CONFIG['beg_uid_timeout'])." AND userid=%d)) AND remote_ip='%s' LIMIT 1", - array($uid, getenv('REMOTE_ADDR')), __FILE__, __LINE__); - if ((SQL_NUMROWS($result) == 0) && ($points > 0) && (!$login)) { - // Free memory - SQL_FREERESULT($result); - - if (!IS_ADMIN()) { - // Remember remote address, userid and timestamp for next click - // but only when there is no admin begging. - // Admins shall be able to test it! - $result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_beg_ips (userid, remote_ip, timeout) VALUES('%s', '%s', UNIX_TIMESTAMP())", - array($uid, getenv('REMOTE_ADDR')), __FILE__, __LINE__); - } + // Don't pay is the default... + $pay = false; - // Set mode depending on how many mails the member has to confirm - $locked = false; - if (($ref_payout > 0) && ($_CONFIG['allow_direct_pay'] == 'N')) $locked = true; + // Validate if it is not a number + if (isNicknameUsed(getRequestElement('userid'))) { + // Is the nickname extension there? + if (isExtensionActive('nickname')) { + // Maybe we have found a nickname? + fetchUserData(getRequestElement('userid'), 'nickname'); + } else { + // Nickname entered but nickname is not active + $errorCode = getCode('EXTENSION_PROBLEM'); + } + } else { + // Direct userid + fetchUserData(getRequestElement('userid')); + } - // Is begging rallye active? - if ($_CONFIG['beg_rallye'] == 'Y') { - // Add points to rallye account - $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_user_data SET beg_points=beg_points+%s WHERE userid=%d LIMIT 1", - array($points, $uid), __FILE__, __LINE__); - } else { - // Add points to account - $DEPTH = 0; - ADD_POINTS_REFSYSTEM($uid, $points, false, "0", $locked, strtolower($_CONFIG['beg_mode'])); - } + // Check if locked in so don't pay points + $status = 'failed'; + + // Check if account was found + if ((isUserDataValid()) && (getUserData('status') == 'CONFIRMED')) { + // Multiply configured values with 100000 and divide with 100000 so we can also handle small values + // If we need more number behind the decimal dot then we just need to increase all these three + // numbers matching to the numbers behind the decimal dot. Simple! ;-) + $points = mt_rand((getConfig('beg_points') * 100000), (getConfig('beg_points_max') * 100000)) / 100000; + + // Set nickname / userid for the template(s + $content['userid'] = getRequestElement('userid'); + $content['clicks'] = (getUserData('beg_clicks') + 1); + $content['banner'] = loadTemplate('beg_banner', true); + $content['points'] = translateComma($points); + } // END - if + + // User id valid and not webmaster's id? + if ((getUserData('userid') > 0) && (getConfig('beg_userid') != getUserData('userid'))) { + // Update counter + SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_user_data` SET `beg_clicks`=`beg_clicks`+1 WHERE `userid`=%s LIMIT 1", + array(getUserData('userid')), __FILE__, __LINE__); + + // Check for last entry for userid w/o IP number + $result = SQL_QUERY_ESC("SELECT `id` FROM `{?_MYSQL_PREFIX?}_beg_ips` WHERE (`timeout` > (UNIX_TIMESTAMP() - {?beg_timeout?}) OR (timeout > (UNIX_TIMESTAMP() - {?beg_userid_timeout?}) AND `userid`=%s)) AND (`remote_ip`='%s' OR `sid`='%s') LIMIT 1", + array(getUserData('userid'), detectRemoteAddr(), session_id()), __FILE__, __LINE__); + + // Entry not found, points set and not logged in? + if (((SQL_NUMROWS($result) == 0) || (isAdmin())) && ($points > 0) && (!isMember()) && (getConfig('beg_pay_mode') == 'NONE')) { + + // Admin is testing? + if (!isAdmin()) { + // Remember remote address, userid and timestamp for next click + // but only when there is no admin begging. + // Admins shall be able to test it! + SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_beg_ips` (`userid`, `remote_ip`,`sid`, `timeout`) VALUES ('%s','%s','%s', UNIX_TIMESTAMP())", + array(getUserData('userid'), detectRemoteAddr(), session_id()), __FILE__, __LINE__); + + // Was is successfull? + $pay (SQL_AFFECTEDROWS() == 1); + } else { + // Is admin! + $pay = true; + } - // Subtract begged points from member account if the admin has selected one - if ($_CONFIG['beg_uid'] > 0) { - // Subtract from this account - $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_user_data SET used_points=used_points+%s WHERE userid=%d LIMIT 1", - array($points, bigintval($_CONFIG['beg_uid'])), __FILE__, __LINE__); - - // Update mediadata as well - if (GET_EXT_VERSION("mediadata") >= "0.0.4") { - // Update database - MEDIA_UPDATE_ENTRY(array("total_points"), "sub", $points); - } + // Pay points? + if ($pay === true) { + // Add points to user or begging rallye account + if (addPointsBeg(getUserData('userid'), $points)) { + // Set 'done' message + $content['message'] = loadTemplate('beg_done', true); + } else { + // Error! + $content['message'] = loadTemplate('beg_failed', true); } - - // Set message - define('__BEG_MSG', LOAD_TEMPLATE("beg_done", true)); - } elseif ($login) { - // Logged in user found! - define('__BEG_MSG', LOAD_TEMPLATE("beg_login", true)); - - // Free memory - SQL_FREERESULT($result); } else { - // Free memory - SQL_FREERESULT($result); - - // Clicked received while reload lock is active - define('__BEG_MSG', LOAD_TEMPLATE("beg_failed", true)); + // Error! + $content['message'] = loadTemplate('beg_failed', true); } + } elseif (isMember()) { + // Logged in user found! + $content['message'] = loadTemplate('beg_login', true); + } elseif (getConfig('beg_pay_mode') != 'NONE') { // Other pay-mode active! + // Prepare content for template + $content = array( + 'clicks' => $content['clicks'], + 'points' => $content['points'], + 'userid' => $content['userid'] + ); + + // Load message template depending on pay-mode + $content['message'] = loadTemplate('beg_pay_mode_'.strtolower(getConfig('beg_pay_mode')), true, $content); + $pay = true; + } else { + // Clicked received while reload lock is active + $content['message'] = loadTemplate('beg_failed', true, $content); + } + + // Free memory + SQL_FREERESULT($result); - // Include header - require_once(PATH."inc/header.php"); + // Include header + loadIncludeOnce('inc/header.php'); - // Load final template - LOAD_TEMPLATE("beg_link"); + // Load final template + loadTemplate('beg_link', false, $content); - // Include footer - require_once(PATH."inc/footer.php"); - } elseif (($status != "CONFIRMED") && ($status != "failed")) { - // Maybe locked/unconfirmed account? - switch ($status) { - case "LOCKED" : $msg = CODE_ID_LOCKED ; break; // Locked account - case "UNCONFIRMED": $msg = CODE_ID_UNCONFIRMED; break; // Unconfirmed account - } - } elseif (($uid == "0") || ($status == "failed")) { - // Inalid or locked account, so let's find out - $result = SQL_QUERY_ESC("SELECT userid FROM "._MYSQL_PREFIX."_user_data WHERE nickname='%s' LIMIT 1", - array($_GET['uid']), __FILE__, __LINE__); - if (SQL_NUMROWS($result) == 1) { - // Locked account - $msg = CODE_ACCOUNT_LOCKED; - } else { - // Invalid nickname! (404) - $msg = CODE_USER_404; - } + // Tracker code enabled? (We don't track users here! + if ((getConfig('beg_pay_mode') != 'NONE') && ($pay === true)) { + // Prepare content for template + // @TODO Opps, what is missing here??? + $content = array( + ); - // Free memory - SQL_FREERESULT($result); - } elseif ($uid == $_CONFIG['beg_uid']) { - // Webmaster's ID cannot beg for points! - $msg = CODE_BEG_SAME_AS_OWN; + // Include config-depending template + loadTemplate('beg_pay_code_'.strtolower(getConfig('beg_pay_mode')), false, $content); + } elseif (($pay === false) && (!isset($content['message']))) { + // Cannot pay! :-( + $content['message'] = loadTemplate('beg_failed', true); } - // Reload to index module - die("-".$msg."-"); - if ((!empty($msg)) && (!empty($msg))) LOAD_URL("modules.php?module=index&msg=".$msg); - } else { - // No userid entered - LOAD_URL("modules.php?module=index"); + // Include footer + loadIncludeOnce('inc/footer.php'); + } elseif ((getUserData('status') != 'CONFIRMED') && (getUserData('status') != 'failed')) { + // Maybe locked/unconfirmed account? + $errorCode = generateErrorCodeFromUserStatus(); + } elseif ((getUserData('userid') == 0) || (getUserData('status') == 'failed')) { + // Inalid or locked account, so let's find out + if (fetchUserData(getRequestElement('userid'), 'nickname')) { + // Locked account + $errorCode = getCode('ACCOUNT_LOCKED'); + } else { + // Invalid nickname! (404) + $errorCode = getCode('USER_404'); + } + } elseif (getUserData('userid') == getConfig('beg_userid')) { + // Webmaster's id cannot beg for points! + $errorCode = getCode('BEG_SAME_AS_OWN'); } + + // Reload to index module + if ((!empty($errorCode)) && (!empty($errorCode))) redirectToUrl('modules.php?module=index&code=' . $errorCode . '&ext=beg'); } else { - // You have to configure first! - LOAD_URL("install.php"); + // No userid entered + redirectToUrl('modules.php?module=index'); } // Really all done here... ;-) +shutdown(); + +// [EOF] ?>