X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Flibs%2Fsurfbar_functions.php;h=e235ce19cbab6d757e6c18abaa248044bef81720;hp=a715e8148639c7a61ea698aad275df06229ef702;hb=78dc19b40041f126eede57575484c684d5fd0ddb;hpb=ae80e170b5d25a4782af90a7c3d81fbb176fa293 diff --git a/inc/libs/surfbar_functions.php b/inc/libs/surfbar_functions.php index a715e81486..e235ce19cb 100644 --- a/inc/libs/surfbar_functions.php +++ b/inc/libs/surfbar_functions.php @@ -32,7 +32,7 @@ ************************************************************************/ // Some security stuff... -if (ereg(basename(__FILE__), $_SERVER['PHP_SELF'])) { +if (!defined('__SECURITY')) { $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php"; require($INC); } @@ -53,7 +53,7 @@ function SURFBAR_ADMIN_ADD_URL ($url) { } elseif (SURFBAR_LOOKUP_BY_URL($url, "0")) { // URL already found in surfbar! return false; - } elseif (!SURFBAR_IF_USER_BOOK_MORE_URLS("0")) { + } elseif (!SURFBAR_IF_USER_BOOK_MORE_URLS()) { // No more allowed! return false; } @@ -110,7 +110,7 @@ function SURFBAR_MEMBER_ADD_URL ($url) { } elseif (SURFBAR_LOOKUP_BY_URL($url, $GLOBALS['userid'])) { // URL already found in surfbar! return false; - } elseif (!SURFBAR_IF_USER_BOOK_MORE_URLS()) { + } elseif (!SURFBAR_IF_USER_BOOK_MORE_URLS($GLOBALS['userid'])) { // No more allowed! return false; } @@ -225,7 +225,7 @@ function SURFBAR_INSERT_URL_BY_ARRAY ($urlData) { $uid = bigintval($urlData['uid']); // Is the id set? - if (empty($uid)) $uid = "0"; + if (empty($uid)) $uid = 0; // Just run the insert query for now SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_surfbar_urls (userid, url, reward, costs, status) VALUES('%s', '%s', %s, %s, '%s')", @@ -298,29 +298,39 @@ function SURFBAR_TRANSLATE_STATUS ($status) { function SURFBAR_DETERMINE_REWARD () { global $_CONFIG; + // Static values are default + $reward = $_CONFIG['surfbar_static_reward']; + // Do we have static or dynamic? - if ($_CONFIG['surfbar_pay_model'] == "STATIC") { - // Static model, so choose static values - $reward = $_CONFIG['surfbar_static_reward']; - } else { - // Dynamic model, so calculate values - die("DYNAMIC payment model not yet supported!"); - } + if ($_CONFIG['surfbar_pay_model'] == "DYNAMIC") { + // "Calculate" dynamic reward + $reward += SURFBAR_CALCULATE_DYNAMIC_ADD(); + } // END - if // Return reward return $reward; } +// "Calculate" dynamic add +function SURFBAR_CALCULATE_DYNAMIC_ADD () { + // Get min/max values + $min = SURFBAR_CALCULATE_DYNAMIC_MIN_VALUE(); + $max = SURFBAR_CALCULATE_DYNAMIC_MAX_VALUE(); + + // "Calculate" dynamic part and return it + return mt_rand($min, $max); +} // Determine costs function SURFBAR_DETERMINE_COSTS () { global $_CONFIG; + // Static costs is default + $costs = $_CONFIG['surfbar_static_costs']; + // Do we have static or dynamic? - if ($_CONFIG['surfbar_pay_model'] == "STATIC") { - $costs = $_CONFIG['surfbar_static_costs']; - } else { - // Dynamic model, so calculate values - die("DYNAMIC payment model not yet supported!"); - } + if ($_CONFIG['surfbar_pay_model'] == "DYNAMIC") { + // "Calculate" dynamic costs + $costs += SURFBAR_CALCULATE_DYNAMIC_ADD(); + } // END - if // Return costs return $costs; @@ -349,50 +359,56 @@ function SURFBAR_CHECK_RELOAD_FULL() { // Default is full! $isFull = true; - // Do we have static or dynamic mode? - if ($_CONFIG['surfbar_pay_model'] == "STATIC") { - // Cache static reload lock - $SURFBAR_CACHE['surf_lock'] = $_CONFIG['surfbar_static_lock']; - //DEBUG_LOG(__FUNCTION__.":Fixed surf lock is ".$_CONFIG['surfbar_static_lock'].""); + // Cache static reload lock + $SURFBAR_CACHE['surf_lock'] = $_CONFIG['surfbar_static_lock']; + //DEBUG_LOG(__FUNCTION__.":Fixed surf lock is ".$_CONFIG['surfbar_static_lock'].""); + + // Do we have dynamic model? + if ($_CONFIG['surfbar_pay_model'] == "DYNAMIC") { + // "Calculate" dynamic lock + $SURFBAR_CACHE['surf_lock'] += SURFBAR_CALCULATE_DYNAMIC_ADD(); + } // END - if - // Ask the database - $result = SQL_QUERY_ESC("SELECT COUNT(id) AS cnt FROM "._MYSQL_PREFIX."_surfbar_locks + // Ask the database + $result = SQL_QUERY_ESC("SELECT COUNT(id) AS cnt FROM "._MYSQL_PREFIX."_surfbar_locks WHERE userid=%s AND (UNIX_TIMESTAMP() - ".SURFBAR_GET_DATA('surf_lock').") < UNIX_TIMESTAMP(last_surfed) LIMIT 1", - array($GLOBALS['userid']), __FILE__, __LINE__ - ); + array($GLOBALS['userid']), __FILE__, __LINE__ + ); - // Fetch row - list($SURFBAR_CACHE['user_locks']) = SQL_FETCHROW($result); + // Fetch row + list($SURFBAR_CACHE['user_locks']) = SQL_FETCHROW($result); - // Is it null? - if (is_null($SURFBAR_CACHE['user_locks'])) { - // Then fix it to zero! - $SURFBAR_CACHE['user_locks'] = 0; - } // END - if + // Is it null? + if (is_null($SURFBAR_CACHE['user_locks'])) { + // Then fix it to zero! + $SURFBAR_CACHE['user_locks'] = 0; + } // END - if - // Free result - SQL_FREERESULT($result); + // Free result + SQL_FREERESULT($result); - // Get total URLs - $total = SURFBAR_GET_TOTAL_URLS(); + // Get total URLs + $total = SURFBAR_GET_TOTAL_URLS(); - // Do we have some URLs in lock? Admins can always surf on own URLs! - //DEBUG_LOG(__FUNCTION__.":userLocks=".SURFBAR_GET_DATA('user_locks').",total={$total}"); - $isFull = ((SURFBAR_GET_DATA('user_locks') == $total) && ($total > 0)); - } else { - // Dynamic model... - die("DYNAMIC not yet implemented!"); - } + // Do we have some URLs in lock? Admins can always surf on own URLs! + //DEBUG_LOG(__FUNCTION__.":userLocks=".SURFBAR_GET_DATA('user_locks').",total={$total}"); + $isFull = ((SURFBAR_GET_DATA('user_locks') == $total) && ($total > 0)); // Return result return $isFull; } // Get total amount of URLs of given status for current user or of CONFIRMED URLs by default -function SURFBAR_GET_TOTAL_URLS ($status="CONFIRMED") { +function SURFBAR_GET_TOTAL_URLS ($status="CONFIRMED", $excludeUserId="") { // Determine depleted user account $UIDs = SURFBAR_DETERMINE_DEPLETED_USERIDS(); + // Is the exlude userid set? + if ($excludeUserId !== "") { + // Then add it + $UIDs[] = $excludeUserId; + } // END - if + // Get amount from database $result = SQL_QUERY_ESC("SELECT COUNT(id) AS cnt FROM "._MYSQL_PREFIX."_surfbar_urls @@ -413,11 +429,11 @@ WHERE userid NOT IN (".implode(",", $UIDs).") AND status='%s'", function SURFBAR_IF_USER_BOOK_MORE_URLS ($uid=0) { global $_CONFIG; - // Simply check it out - return (SURFBAR_GET_TOTAL_USER_URLS($uid) < $_CONFIG['surfbar_max_order']); + // Is this admin and userid is zero or does the user has some URLs left to book? + return ((($uid == 0) && (IS_ADMIN())) || (SURFBAR_GET_TOTAL_USER_URLS($uid) < $_CONFIG['surfbar_max_order'])); } // Get total amount of URLs of given status for current user -function SURFBAR_GET_TOTAL_USER_URLS ($uid=0) { +function SURFBAR_GET_TOTAL_USER_URLS ($uid=0, $status="") { global $_CONFIG; // Is the user 0 and user is logged in? @@ -429,10 +445,18 @@ function SURFBAR_GET_TOTAL_USER_URLS ($uid=0) { return ($_CONFIG['surfbar_max_order'] + 1); } + // Default is all URLs + $ADD = ""; + + // Is the status set? + if (!empty($status)) { + $ADD = sprintf(" AND status='%s'", $status); + } // END - if + // Get amount from database $result = SQL_QUERY_ESC("SELECT COUNT(id) AS cnt FROM "._MYSQL_PREFIX."_surfbar_urls -WHERE userid=%s +WHERE userid=%s".$ADD." LIMIT %s", array($uid, $_CONFIG['surfbar_max_order']), __FILE__, __LINE__ ); @@ -450,9 +474,18 @@ LIMIT %s", function SURFBAR_GENERATE_VALIDATION_CODE ($id, $salt="") { global $_CONFIG, $SURFBAR_CACHE; + // @TODO Invalid salt should be refused + $SURFBAR_CACHE['salt'] = "INVALID"; + + // Get code length from config + $length = $_CONFIG['code_length']; + + // Fix length to 10 + if ($length == 0) $length = 10; + // Generate a code until the length matches $valCode = ""; - while (strlen($valCode) != $_CONFIG['code_length']) { + while (strlen($valCode) != $length) { // Is the salt set? if (empty($salt)) { // Generate random hashed string @@ -465,7 +498,7 @@ function SURFBAR_GENERATE_VALIDATION_CODE ($id, $salt="") { } // ... and now the validation code - $valCode = GEN_RANDOM_CODE($_CONFIG['code_length'], sha1(SURFBAR_GET_SALT().":".$id), $GLOBALS['userid']); + $valCode = GEN_RANDOM_CODE($length, sha1(SURFBAR_GET_SALT().":".$id), $GLOBALS['userid']); //DEBUG_LOG(__FUNCTION__.":valCode={$valCode}"); } // END - while @@ -662,17 +695,14 @@ GROUP BY userid", function SURFBAR_DETERMINE_WAIT_TIME () { global $_CONFIG; - // Init time - $time = 0; + // Static time is default + $time = $_CONFIG['surfbar_static_time']; // Which payment model do we have? - if ($_CONFIG['surfbar_pay_model'] == "STATIC") { - // Static model - $time = $_CONFIG['surfbar_static_time']; - } else { - // Dynamic - die("DYNAMIC payment model not yet finished!"); - } + if ($_CONFIG['surfbar_pay_model'] == "DYNAMIC") { + // "Calculate" dynamic time + $time += SURFBAR_CALCULATE_DYNAMIC_ADD(); + } // END - if // Return value return $time; @@ -716,6 +746,85 @@ function SURFBAR_CHANGE_STATUS ($id, $prevStatus, $newStatus) { // All done! return true; } +// Calculate minimum value for dynamic payment model +function SURFBAR_CALCULATE_DYNAMIC_MIN_VALUE () { + global $_CONFIG; + + // Addon is zero by default + $addon = 0; + + // Percentage part + $percent = abs(log($_CONFIG['surfbar_dynamic_percent'] / 100 + 1)); + + // Get total users + $totalUsers = GET_TOTAL_DATA("CONFIRMED", "user_data", "userid", "status", true); + + // Get online users + $onlineUsers = SURFBAR_DETERMINE_TOTAL_ONLINE(); + + // Calculate addon + $addon += abs(log($onlineUsers / $totalUsers + 1) * $percent * $totalUsers); + + // Get total URLs + $totalUrls = SURFBAR_GET_TOTAL_URLS("CONFIRMED", "0"); + + // Get user's total URLs + $userUrls = SURFBAR_GET_TOTAL_USER_URLS(0, "CONFIRMED"); + + // Calculate addon + if ($totalUrls > 0) { + $addon += abs(log($userUrls / $totalUrls + 1) * $percent * $totalUrls); + } else { + $addon += abs(log($userUrls / 1 + 1) * $percent * $totalUrls); + } + + // Return addon + return $addon; +} +// Calculate maximum value for dynamic payment model +function SURFBAR_CALCULATE_DYNAMIC_MAX_VALUE () { + global $_CONFIG; + + // Addon is zero by default + $addon = 0; + + // Maximum value + $max = log(2); + + // Percentage part + $percent = abs(log($_CONFIG['surfbar_dynamic_percent'] / 100 + 1)); + + // Get total users + $totalUsers = GET_TOTAL_DATA("CONFIRMED", "user_data", "userid", "status", true); + + // Calculate addon + $addon += abs($max * $percent * $totalUsers); + + // Get total URLs + $totalUrls = SURFBAR_GET_TOTAL_URLS("CONFIRMED", "0"); + + // Calculate addon + $addon += abs($max * $percent * $totalUrls); + + // Return addon + return $addon; +} +// Calculate dynamic lock +function SURFBAR_CALCULATE_DYNAMIC_LOCK () { + global $_CONFIG; + + // Default lock is 30 seconds + $addon = 30; + + // Get online users + $onlineUsers = SURFBAR_DETERMINE_TOTAL_ONLINE(); + + // Calculate lock + $addon = abs(log($onlineUsers / $addon + 1)); + + // Return value + return $addon; +} // "Getter" for lock ids array function SURFBAR_GET_LOCK_IDS () { // Prepare some arrays @@ -783,7 +892,7 @@ WHERE sbu.userid NOT IN (".implode(",", $UIDs).") AND sbu.status='CONFIRMED'".$A GROUP BY sbu.id", __FILE__, __LINE__); // Log last query - //DEBUG_LOG(__FUNCTION__.":lastQuery=".$_CONFIG['db_last_query']."|numRows=".SQL_NUMROWS($result)."|Affected=".SQL_AFFECTEDROWS($result).""); + //DEBUG_LOG(__FUNCTION__.":lastQuery=".$_CONFIG['db_last_query']."|numRows=".SQL_NUMROWS($result)."|Affected=".SQL_AFFECTEDROWS().""); // Fetch max rand $maxRand = SQL_NUMROWS($result); @@ -794,6 +903,33 @@ GROUP BY sbu.id", __FILE__, __LINE__); // Return value return $maxRand; } +// Load all URLs of the current user and return it as an array +function SURFBAR_GET_USER_URLS () { + // Init array + $URLs = array(); + + // Begin the query + $result = SQL_QUERY_ESC("SELECT u.id, u.url, u.views_total, u.status, UNIX_TIMESTAMP(u.registered) AS registered, UNIX_TIMESTAMP(u.last_locked) AS last_locked, u.lock_reason AS lock_reason +FROM "._MYSQL_PREFIX."_surfbar_urls AS u +WHERE u.userid=%s +ORDER BY u.id ASC", + array($GLOBALS['userid']), __FILE__, __LINE__); + + // Are there entries? + if (SQL_NUMROWS($result) > 0) { + // Load all rows + while ($row = SQL_FETCHARRAY($result)) { + // Add the row + $URLs[$row['id']] = $row; + } // END - while + } // END - if + + // Free result + SQL_FREERESULT($result); + + // Return the array + return $URLs; +} // Determine next id for surfbar or get data for given id, always call this before you call other // getters below this function!!! function SURFBAR_DETERMINE_NEXT_ID ($id = 0) { @@ -863,7 +999,7 @@ LIMIT 1", } // Is there an id number? - //DEBUG_LOG(__FUNCTION__.":lastQuery=".$_CONFIG['db_last_query']."|numRows=".SQL_NUMROWS($result)."|Affected=".SQL_AFFECTEDROWS($result).""); + //DEBUG_LOG(__FUNCTION__.":lastQuery=".$_CONFIG['db_last_query']."|numRows=".SQL_NUMROWS($result)."|Affected=".SQL_AFFECTEDROWS().""); if (SQL_NUMROWS($result) == 1) { // Load/cache data //DEBUG_LOG(__FUNCTION__.":count(".count($SURFBAR_CACHE).") - BEFORE"); @@ -884,7 +1020,7 @@ LIMIT 1", if ((!isset($SURFBAR_CACHE['last_surfed'])) || (is_null($SURFBAR_CACHE['last_surfed']))) { // Fix it here //DEBUG_LOG(__FUNCTION__.":last_surfed - FIXED!"); - $SURFBAR_CACHE['last_surfed'] = "0"; + $SURFBAR_CACHE['last_surfed'] = 0; } // END - if // Get base/fixed reward and costs @@ -895,8 +1031,8 @@ LIMIT 1", // Only in dynamic model add the dynamic bonus! if ($_CONFIG['surfbar_pay_model'] == "DYNAMIC") { // Calculate dynamic reward/costs and add it - $SURFBAR_CACHE['reward'] += SURFBAR_CALCULATE_DYNAMIC_REWARD_ADD(); - $SURFBAR_CACHE['costs'] += SURFBAR_CALCULATE_DYNAMIC_COSTS_ADD(); + $SURFBAR_CACHE['reward'] += SURFBAR_CALCULATE_DYNAMIC_ADD(); + $SURFBAR_CACHE['costs'] += SURFBAR_CALCULATE_DYNAMIC_ADD(); //DEBUG_LOG(__FUNCTION__.":DYNAMIC+ - reward=".SURFBAR_GET_REWARD()."|costs=".SURFBAR_GET_COSTS().""); } // END - if