X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Flibs%2Fsurfbar_functions.php;h=5af00ce901b202e82a00851e5442f14a18ba9695;hp=8cd6082367ad4998b136abddcd4e26ef568095f1;hb=43885129ac24cee5545a8a5ad51e90aa182fdf46;hpb=7d563ebac402d78ee8f5cdf9b0a15eff19c5ff7c diff --git a/inc/libs/surfbar_functions.php b/inc/libs/surfbar_functions.php index 8cd6082367..5af00ce901 100644 --- a/inc/libs/surfbar_functions.php +++ b/inc/libs/surfbar_functions.php @@ -38,7 +38,7 @@ if (ereg(basename(__FILE__), $_SERVER['PHP_SELF'])) { } // Admin has added an URL with given user id -function SURFBAR_ADMIN_ADD_URL ($url, $uid, $reward) { +function SURFBAR_ADMIN_ADD_URL ($url, $uid, $reward, $paymentId) { // Is this really an admin? if (!IS_ADMIN()) { // Then leave here @@ -52,7 +52,7 @@ function SURFBAR_ADMIN_ADD_URL ($url, $uid, $reward) { } // END - if // Register the new URL - return SURFBAR_REGISTER_URL($url, $uid, $reward, "CONFIRMED", "unlock"); + return SURFBAR_REGISTER_URL($url, $uid, $reward, $paymentId, "CONFIRMED", "unlock"); } // Looks up by an URL function SURFBAR_LOOKUP_BY_URL ($url) { @@ -104,7 +104,7 @@ ORDER BY %s %s", return $lastUrlData; } // Registers an URL with the surfbar. You should have called SURFBAR_LOOKUP_BY_URL() first! -function SURFBAR_REGISTER_URL ($url, $uid, $reward, $status="PENDING", $addMode="reg") { +function SURFBAR_REGISTER_URL ($url, $uid, $reward, $paymentId, $status="PENDING", $addMode="reg") { global $_CONFIG; // Make sure by the user registered URLs are always pending @@ -116,6 +116,7 @@ function SURFBAR_REGISTER_URL ($url, $uid, $reward, $status="PENDING", $addMode= 'frametester' => FRAMETESTER($url), 'uid' => $uid, 'reward' => $reward, + 'payment_id' => $paymentId, 'status' => $status ); @@ -141,11 +142,12 @@ function SURFBAR_REGISTER_URL ($url, $uid, $reward, $status="PENDING", $addMode= // Inserts an url by given data array and return the insert id function SURFBAR_INSERT_URL_BY_ARRAY ($urlData) { // Just run the insert query for now - SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_surfbar_urls (userid, url, reward, status) VALUES(%s, '%s', %s, '%s')", + SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_surfbar_urls (userid, url, reward, payment_id, status) VALUES(%s, '%s', %s, %s, '%s')", array( bigintval($urlData['uid']), - bigintval($urlData['url']), + $urlData['url'], (float)$urlData['reward'], + bigintval($urlData['payment_id']), $urlData['status'] ), __FILE__, __LINE__ ); @@ -201,5 +203,281 @@ function SURFBAR_TRANSLATE_STATUS ($status) { // Return result return $statusTranslated; } +// Determine right template name +function SURFBAR_DETERMINE_TEMPLATE_NAME() { + // Default is the frameset + $templateName = "surfbar_frameset"; + + // Any frame set? ;-) + if (isset($_GET['frame'])) { + // Use the frame as a template name part... ;-) + $templateName = sprintf("surfbar_frame_%s", + SQL_ESCAPE($_GET['frame']) + ); + } // END - if + + // Return result + return $templateName; +} +// Check if the "reload lock" of the current user is full +function SURFBAR_CHECK_RELOAD_FULL() { + global $SURFBAR_DATA, $_CONFIG; + + // Default is full! + $isFull = true; + + // Do we have static or dynamic mode? + if ($_CONFIG['surfbar_pay_model'] == "STATIC") { + // Cache static reload lock + $SURFBAR_DATA['surf_lock'] = $_CONFIG['surfbar_static_lock']; + + // 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__ + ); + + // Fetch row + list($SURFBAR_DATA['user_locks']) = SQL_FETCHROW($result); + + // Is it null? + if (is_null($SURFBAR_DATA['user_locks'])) { + // Then fix it to zero! + $SURFBAR_DATA['user_locks'] = 0; + } // END - if + + // Free result + SQL_FREERESULT($result); + + // Get total URLs + $total = SURFBAR_GET_TOTAL_URLS(); + + // Do we have some URLs in lock? Admins can always surf on own URLs! + $isFull = (($SURFBAR_DATA['user_locks'] == $total) && ($total > 0)); + } else { + // Dynamic model... + die("DYNAMIC not yet implemented!"); + } + + // 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") { + // Get amount from database + $result = SQL_QUERY_ESC("SELECT COUNT(id) AS cnt +FROM "._MYSQL_PREFIX."_surfbar_urls +WHERE userid != %d AND status='%s'", + array($GLOBALS['userid'], $status), __FILE__, __LINE__ + ); + + // Fetch row + list($cnt) = SQL_FETCHROW($result); + + // Free result + SQL_FREERESULT($result); + + // Return result + return $cnt; +} +// Generate a validation code for the given id number +function SURFBAR_GENERATE_VALIDATION_CODE ($id, $salt="") { + global $_CONFIG, $SURFBAR_DATA; + + // Generate a code until the length matches + $valCode = ""; + while (strlen($valCode) != $_CONFIG['code_length']) { + // Is the salt set? + if (empty($salt)) { + // Generate random hashed string + $SURFBAR_DATA['salt'] = sha1(GEN_PASS(255)); + } else { + // Use this as salt! + $SURFBAR_DATA['salt'] = $salt; + } + //* DEBUG: */ echo "*".$SURFBAR_DATA['salt']."*
\n"; + + // ... and now the validation code + $valCode = GEN_RANDOM_CODE($_CONFIG['code_length'], sha1(SURFBAR_GET_DATA('salt').":".$id), $GLOBALS['userid']); + //* DEBUG: */ echo "valCode={$valCode}
\n"; + } // END - while + + // Hash it with md5() and salt it with the random string + $hashedCode = generateHash(md5($valCode), SURFBAR_GET_DATA('salt')); + + // Finally encrypt it PGP-like and return it + return generatePassString($hashedCode); +} +// Check validation code +function SURFBAR_CHECK_VALIDATION_CODE ($id, $check, $salt) { + global $SURFBAR_DATA; + + // Secure id number + $id = bigintval($id); + + // Now generate the code again + $code = SURFBAR_GENERATE_VALIDATION_CODE($id, $salt); + + // Return result of checking hashes and salts + //* DEBUG: */ echo "--- ".$code."
\n--- ".$check."
\n"; + //* DEBUG: */ echo "+++ ".$salt."
\n+++ ".SURFBAR_GET_DATA('last_salt')."
\n"; + return (($code == $check) && ($salt == SURFBAR_GET_DATA('last_salt'))); +} +// Lockdown the userid/id combination (reload lock) +function SURFBAR_LOCKDOWN_ID ($id) { + // Just add it to the database + SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_surfbar_locks (userid, url_id) VALUES(%s, %s)", + array($GLOBALS['userid'], bigintval($id)), __FILE__, __LINE__); +} +// Pay points to the user and remove it from the sender +function SURFBAR_PAY_POINTS ($id) { + global $SURFBAR_DATA, $_CONFIG; + + // Re-configure ref-system to surfbar levels + $_CONFIG['db_percents'] = "percent"; + $_CONFIG['db_table'] = "surfbar_reflevels"; + + // Book it to the user + ADD_POINTS_REFSYSTEM($GLOBALS['userid'], $SURFBAR_DATA['reward']); + + // Remove it from the URL owner + SUB_POINTS($SURFBAR_DATA['userid'], $SURFBAR_DATA['reward']); +} +// Update the salt for validation +function SURFBAR_UPDATE_SALT() { + global $SURFBAR_DATA; + + // Simply store the salt from cache away in database... + SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_surfbar_urls SET last_salt='%s', views_total=views_total+1 WHERE id=%s LIMIT 1", + array(SURFBAR_GET_DATA('salt'), SURFBAR_GET_DATA('id')), __FILE__, __LINE__); + + // Return if the update was okay + return (SQL_AFFECTEDROWS() == 1); +} +// Determine next id for surfbar view, always call this before you call other +// getters below this function!!! +function SURFBAR_GET_NEXT_ID ($id = 0) { + global $SURFBAR_DATA, $_CONFIG; + + // Default is no id! + $nextId = 0; + + // Is the ID set? + if ($id == 0) { + // Set max random factor to total URLs minus 1 + $maxRand = SURFBAR_GET_TOTAL_URLS() - 1; + + // Generate random number + $randNum = mt_rand(0, $maxRand); + + // And query the database + $result = SQL_QUERY_ESC("SELECT sb.id, sb.userid, sb.url, sb.last_salt, sb.reward, sb.views_total, p.time, UNIX_TIMESTAMP(l.last_surfed) AS last_surfed +FROM "._MYSQL_PREFIX."_surfbar_urls AS sb +LEFT JOIN "._MYSQL_PREFIX."_payments AS p +ON sb.payment_id=p.id +LEFT JOIN "._MYSQL_PREFIX."_surfbar_locks AS l +ON sb.id=l.url_id +WHERE sb.userid != %d AND sb.status='CONFIRMED' AND (l.last_surfed IS NULL OR (UNIX_TIMESTAMP() - ".SURFBAR_GET_DATA('surf_lock').") >= UNIX_TIMESTAMP(l.last_surfed)) +ORDER BY l.last_surfed DESC, sb.last_salt ASC, sb.id ASC +LIMIT %d,1", + array($GLOBALS['userid'], $randNum), __FILE__, __LINE__ + ); + } else { + // Get data from specified id number + $result = SQL_QUERY_ESC("SELECT sb.id, sb.userid, sb.url, sb.last_salt, sb.reward, sb.views_total, p.time +FROM "._MYSQL_PREFIX."_surfbar_urls AS sb +LEFT JOIN "._MYSQL_PREFIX."_payments AS p +ON sb.payment_id=p.id +WHERE sb.userid != %s AND sb.status='CONFIRMED' AND sb.id=%s +LIMIT 1", + array($GLOBALS['userid'], bigintval($id)), __FILE__, __LINE__ + ); + } + + // Is there an id number? + if (SQL_NUMROWS($result) == 1) { + // Load/cache data + //* DEBUG: */ echo "*".count($SURFBAR_DATA)."*
\n"; + $SURFBAR_DATA = merge_array($SURFBAR_DATA, SQL_FETCHARRAY($result)); + //* DEBUG: */ echo "*".count($SURFBAR_DATA)."*
\n"; + + // Is the time there? + if (is_null($SURFBAR_DATA['time'])) { + // Then repair it wit the static! + $SURFBAR_DATA['time'] = $_CONFIG['surfbar_static_time']; + } // END - if + + // Fix missing last_surfed + if ((!isset($SURFBAR_DATA['last_surfed'])) || (is_null($SURFBAR_DATA['last_surfed']))) { + // Fix it here + $SURFBAR_DATA['last_surfed'] = "0"; + } // END - if + + // Are we in static mode? + if ($_CONFIG['surfbar_pay_model'] == "STATIC") { + // Then use static reward! + $SURFBAR_DATA['reward'] = $_CONFIG['surfbar_static_reward']; + } else { + // Calculate dynamic reward and add it + $SURFBAR_DATA['reward'] += SURFBAR_CALCULATE_DYNAMIC_REWARD_ADD(); + } + + // Now get the id + $nextId = SURFBAR_GET_DATA('id'); + } // END - if + + // Free result + SQL_FREERESULT($result); + + // Return result + //* DEBUG: */ echo "nextId={$nextId}
\n"; + return $nextId; +} +// ---------------------------------------------------------------------------- +// PLEASE DO NOT ADD ANY OTHER FUNCTIONS BELOW THIS LINE ELSE THEY "WRAP" THE +// $SURFBAR_DATA ARRAY! +// ---------------------------------------------------------------------------- +// Private getter for data elements +function SURFBAR_GET_DATA ($element) { + global $SURFBAR_DATA; + + // Default is null + $data = null; + + // Is the entry there? + if (isset($SURFBAR_DATA[$element])) { + // Then take it + $data = $SURFBAR_DATA[$element]; + } else { // END - if + print("
");
+		print_r($SURFBAR_DATA);
+		debug_print_backtrace();
+		die("
"); + } + + // Return result + return $data; +} +// Getter for reward from cache +function SURFBAR_GET_REWARD () { + // Get data element and return its contents + return SURFBAR_GET_DATA('reward'); +} +// Getter for URL from cache +function SURFBAR_GET_URL () { + // Get data element and return its contents + return SURFBAR_GET_DATA('url'); +} +// Getter for user reload locks +function SURFBAR_GET_USER_RELOAD_LOCK () { + // Get data element and return its contents + return SURFBAR_GET_DATA('user_locks'); +} +// Getter for reload time +function SURFBAR_GET_RELOAD_TIME () { + // Get data element and return its contents + return SURFBAR_GET_DATA('time'); +} // ?>