X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Flibs%2Fsurfbar_functions.php;h=898b2a5d64e841e1b6bc906de4a7a2bb87f8682d;hp=6f8449488bb0878f2c7c26879e9f963cc1307006;hb=b17c72e5a671033c7079e43f28a43537e9f16ccf;hpb=a05706f3f5f5e6ae26c2114d2fd3ede01d5fe093 diff --git a/inc/libs/surfbar_functions.php b/inc/libs/surfbar_functions.php index 6f8449488b..898b2a5d64 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, $costs, $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, $costs, $paymentId, "CONFIRMED", "unlock"); } // Looks up by an URL function SURFBAR_LOOKUP_BY_URL ($url) { @@ -76,7 +76,7 @@ function SURFBAR_GET_URL_DATA ($searchTerm, $column="id", $order="id", $sort="AS } // END - if // Look up the record - $result = SQL_QUERY_ESC("SELECT id, userid, url, reward, views_total, status, registered, last_locked, lock_reason + $result = SQL_QUERY_ESC("SELECT id, userid, url, reward, costs, views_total, status, registered, last_locked, lock_reason FROM "._MYSQL_PREFIX."_surfbar_urls WHERE %s='%s' ORDER BY %s %s", @@ -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, $costs, $status="PENDING", $addMode="reg") { global $_CONFIG; // Make sure by the user registered URLs are always pending @@ -115,13 +115,20 @@ function SURFBAR_REGISTER_URL ($url, $uid, $reward, $status="PENDING", $addMode= 'url' => $url, 'frametester' => FRAMETESTER($url), 'uid' => $uid, - 'reward' => TRANSLATE_COMMA($reward), - 'status' => SURFBAR_TRANSLATE_STATUS($status) + 'reward' => $reward, + 'costs' => $costs, + 'payment_id' => $paymentId, + 'status' => $status ); // Insert the URL into database $content['insert_id'] = SURFBAR_INSERT_URL_BY_ARRAY($content); + // Translate status, reward and costs + $content['status'] = SURFBAR_TRANSLATE_STATUS($content['status']); + $content['reward'] = TRANSLATE_COMMA($content['reward']); + $content['costs'] = TRANSLATE_COMMA($content['costs']); + // If in reg-mode we notify admin if (($addMode == "reg") || ($_CONFIG['surfbar_notify_admin_unlock'] == "Y")) { // Notify admin even when he as unlocked an email @@ -137,11 +144,13 @@ 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, costs, payment_id, status) VALUES(%s, '%s', %s, %s, %s, '%s')", array( bigintval($urlData['uid']), - bigintval($urlData['url']), + $urlData['url'], (float)$urlData['reward'], + (float)$urlData['costs'], + bigintval($urlData['payment_id']), $urlData['status'] ), __FILE__, __LINE__ ); @@ -197,5 +206,406 @@ 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, call this function +// before you call SURFBAR_CHECK_RELOAD_LOCK(). +function SURFBAR_CHECK_RELOAD_FULL() { + global $SURFBAR_CACHE, $_CONFIG; + + // 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']; + + // 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_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 + + // 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! + //* DEBUG: */ echo __FUNCTION__.":userLocks=".SURFBAR_GET_DATA('user_locks').",total={$total}
\n"; + $isFull = ((SURFBAR_GET_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_CACHE; + + // 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_CACHE['salt'] = sha1(GEN_PASS(255)); + } else { + // Use this as salt! + $SURFBAR_CACHE['salt'] = $salt; + } + //* DEBUG: */ echo __FUNCTION__.":".SURFBAR_GET_SALT()."*
\n"; + + // ... and now the validation code + $valCode = GEN_RANDOM_CODE($_CONFIG['code_length'], sha1(SURFBAR_GET_SALT().":".$id), $GLOBALS['userid']); + //* DEBUG: */ echo __FUNCTION__.":valCode={$valCode}
\n"; + } // END - while + + // Hash it with md5() and salt it with the random string + $hashedCode = generateHash(md5($valCode), SURFBAR_GET_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_CACHE; + + // 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 __FUNCTION__.":---".$code."---
\n---".$check."---
\n"; + //* DEBUG: */ echo __FUNCTION__.":+++".$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) { + //* DEBUG: */ print "LOCK!
\n"; + //* DEBUG: */ return; + // 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__); + + // Remove the salt from database + SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_surfbar_salts WHERE url_id=%s AND userid=%s LIMIT 1", + array(bigintval($id), $GLOBALS['userid']), __FILE__, __LINE__); +} +// Pay points to the user and remove it from the sender +function SURFBAR_PAY_POINTS ($id) { + global $SURFBAR_CACHE, $_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_GET_DATA('reward')); + + // Remove it from the URL owner + SUB_POINTS($SURFBAR_CACHE['userid'], SURFBAR_GET_DATA('costs')); +} +// Update the salt for validation +function SURFBAR_UPDATE_SALT() { + // Update views_total + SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_surfbar_urls SET views_total=views_total+1 WHERE id=%s LIMIT 1", + array(SURFBAR_GET_ID()), __FILE__, __LINE__); + + // Simply store the salt from cache away in database... + SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_surfbar_salts SET last_salt='%s' WHERE url_id=%s AND userid=%s LIMIT 1", + array(SURFBAR_GET_SALT(), SURFBAR_GET_ID(), $GLOBALS['userid']), __FILE__, __LINE__); + + // Was that okay? + if (SQL_AFFECTEDROWS() == 0) { + // Insert missing entry! + SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_surfbar_salts (url_id,userid,last_salt) VALUES(%s, %s, '%s')", + array(SURFBAR_GET_ID(), $GLOBALS['userid'], SURFBAR_GET_SALT()), __FILE__, __LINE__); + } // END - if + + // Return if the update was okay + return (SQL_AFFECTEDROWS() == 1); +} +// Check if the reload lock is active for given id +function SURFBAR_CHECK_RELOAD_LOCK ($id) { + //* DEBUG: */ echo __FUNCTION__.":id={$id}
\n"; + // Ask the database + $result = SQL_QUERY_ESC("SELECT COUNT(id) AS cnt +FROM "._MYSQL_PREFIX."_surfbar_locks +WHERE userid=%s AND url_id=%s AND (UNIX_TIMESTAMP() - ".SURFBAR_GET_DATA('surf_lock').") < UNIX_TIMESTAMP(last_surfed) +ORDER BY last_surfed ASC +LIMIT 1", + array($GLOBALS['userid'], bigintval($id)), __FILE__, __LINE__ + ); + + // Fetch counter + list($cnt) = SQL_FETCHROW($result); + + // Free result + SQL_FREERESULT($result); + + // Return check + //* DEBUG: */ echo __FUNCTION__.":cnt={$cnt},".SURFBAR_GET_DATA('surf_lock')."
\n"; + return ($cnt == 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_CACHE, $_CONFIG; + + // Default is no id! + $nextId = 0; $randNum = 0; + + // Is the ID set? + if ($id == 0) { + // Set max random factor to total URLs minus 1 + $maxRand = SURFBAR_GET_TOTAL_URLS() - 1; + + // If more than one URL can be called generate the random number! + if ($maxRand > 1) { + // Generate random number + $randNum = mt_rand(0, $maxRand); + } // END - if + + // Get all id from locks within the timestamp + $result = SQL_QUERY_ESC("SELECT id, url_id, UNIX_TIMESTAMP(last_surfed) +FROM + "._MYSQL_PREFIX."_surfbar_locks +WHERE + userid=%s +ORDER BY + id ASC", array($GLOBALS['userid']), + __FILE__, __LINE__); + + // Load all entries + $IDs = array(); $USE = array(); + $ignored = array(); + while (list($id, $url, $last) = SQL_FETCHROW($result)) { + //* DEBUG: */ echo __FUNCTION__.": next - id={$id},url={$url},last={$last}
\n"; + // Skip entries that are too old + if (($last < (time() - SURFBAR_GET_DATA('surf_lock'))) && (!in_array($url, $ignored))) { + //* DEBUG: */ echo __FUNCTION__.": okay - id={$id},url={$url},last={$last}
\n"; + // Add only if missing or bigger + if ((!isset($IDs[$url])) || ($IDs[$url] <= $last)) { + // Add this ID + //* DEBUG: */ echo __FUNCTION__.": ADD - id={$id},url={$url},last={$last}
\n"; + $IDs[$url] = $last; + $USE[$url] = $id; + } // END - if + } else { + // Ignore these old entries! + //* DEBUG: */ echo __FUNCTION__.": ignore - id={$id},url={$url},last={$last}
\n"; + $ignored[] = $url; + unset($IDs[$url]); + unset($USE[$url]); + } + } // END - if + + // Free result + SQL_FREERESULT($result); + + // Shall we add some ids? + $ADD = ""; + if (count($USE) > 0) { + $ADD = " AND l.id IN (".implode(",", $USE).")"; + } // END - if + + // And query the database + //* DEBUG: */ echo __FUNCTION__.":randNum={$randNum},maxRand={$maxRand},surfLock=".SURFBAR_GET_DATA('surf_lock')."
\n"; + $result = SQL_QUERY_ESC("SELECT sbu.id, sbu.userid, sbu.url, sbs.last_salt, sbu.reward, sbu.costs, sbu.views_total, p.time, UNIX_TIMESTAMP(l.last_surfed) AS last_surfed +FROM "._MYSQL_PREFIX."_surfbar_urls AS sbu +LEFT JOIN "._MYSQL_PREFIX."_payments AS p +ON sbu.payment_id=p.id +LEFT JOIN "._MYSQL_PREFIX."_surfbar_salts AS sbs +ON sbu.id=sbs.url_id +LEFT JOIN "._MYSQL_PREFIX."_surfbar_locks AS l +ON sbu.id=l.url_id +WHERE sbu.userid != %s AND sbu.status='CONFIRMED'".$ADD." +GROUP BY sbu.id +ORDER BY l.last_surfed ASC, sbu.id ASC +LIMIT %s,1", + array($GLOBALS['userid'], $randNum), __FILE__, __LINE__ + ); + /* + while($content = SQL_FETCHARRAY($result)) { + echo "
".print_r($content, true)."
"; + } + die(); + */ + } else { + // Get data from specified id number + $result = SQL_QUERY_ESC("SELECT sbu.id, sbu.userid, sbu.url, sbs.last_salt, sbu.reward, sbu.costs, sbu.views_total, p.time, UNIX_TIMESTAMP(l.last_surfed) AS last_surfed +FROM "._MYSQL_PREFIX."_surfbar_urls AS sbu +LEFT JOIN "._MYSQL_PREFIX."_payments AS p +ON sbu.payment_id=p.id +LEFT JOIN "._MYSQL_PREFIX."_surfbar_salts AS sbs +ON sbu.id=sbs.url_id +LEFT JOIN "._MYSQL_PREFIX."_surfbar_locks AS l +ON sbu.id=l.url_id +WHERE sbu.userid != %s AND sbu.status='CONFIRMED' AND sbu.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 __FUNCTION__.":count(".count($SURFBAR_CACHE).") - BEFORE
\n"; + $SURFBAR_CACHE = merge_array($SURFBAR_CACHE, SQL_FETCHARRAY($result)); + //* DEBUG: */ echo __FUNCTION__.":count(".count($SURFBAR_CACHE).") - AFTER
\n"; + + // Is the time there? + if (is_null($SURFBAR_CACHE['time'])) { + // Then repair it wit the static! + //* DEBUG: */ echo __FUNCTION__.": time - STATIC!
\n"; + $SURFBAR_CACHE['time'] = $_CONFIG['surfbar_static_time']; + } // END - if + + // Is the last salt there? + if (is_null($SURFBAR_CACHE['last_salt'])) { + // Then repair it wit the static! + //* DEBUG: */ echo __FUNCTION__.": last_salt - FIXED!
\n"; + $SURFBAR_CACHE['last_salt'] = ""; + } // END - if + + // Fix missing last_surfed + if ((!isset($SURFBAR_CACHE['last_surfed'])) || (is_null($SURFBAR_CACHE['last_surfed']))) { + // Fix it here + //* DEBUG: */ echo __FUNCTION__.": last_surfed - FIXED!
\n"; + $SURFBAR_CACHE['last_surfed'] = "0"; + } // END - if + + // Are we in static mode? + if ($_CONFIG['surfbar_pay_model'] == "STATIC") { + // Then use static reward/costs! + $SURFBAR_CACHE['reward'] = $_CONFIG['surfbar_static_reward']; + $SURFBAR_CACHE['costs'] = $_CONFIG['surfbar_static_costs']; + } else { + // Calculate dynamic reward/costs and add it + $SURFBAR_CACHE['reward'] += SURFBAR_CALCULATE_DYNAMIC_REWARD_ADD(); + $SURFBAR_CACHE['costs'] += SURFBAR_CALCULATE_DYNAMIC_COSTS_ADD(); + } + + // Now get the id + $nextId = SURFBAR_GET_ID(); + } // END - if + + // Free result + SQL_FREERESULT($result); + + // Return result + //* DEBUG: */ echo __FUNCTION__.":nextId={$nextId}
\n"; + return $nextId; +} +// ---------------------------------------------------------------------------- +// PLEASE DO NOT ADD ANY OTHER FUNCTIONS BELOW THIS LINE ELSE THEY "WRAP" THE +// $SURFBAR_CACHE ARRAY! +// ---------------------------------------------------------------------------- +// Private getter for data elements +function SURFBAR_GET_DATA ($element) { + global $SURFBAR_CACHE; + + // Default is null + $data = null; + + // Is the entry there? + if (isset($SURFBAR_CACHE[$element])) { + // Then take it + $data = $SURFBAR_CACHE[$element]; + } else { // END - if + print("
");
+		print_r($SURFBAR_CACHE);
+		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 costs from cache +function SURFBAR_GET_COSTS () { + // Get data element and return its contents + return SURFBAR_GET_DATA('costs'); +} +// Getter for URL from cache +function SURFBAR_GET_URL () { + // Get data element and return its contents + return SURFBAR_GET_DATA('url'); +} +// Getter for salt from cache +function SURFBAR_GET_SALT () { + // Get data element and return its contents + return SURFBAR_GET_DATA('salt'); +} +// Getter for id from cache +function SURFBAR_GET_ID () { + // Get data element and return its contents + return SURFBAR_GET_DATA('id'); +} +// 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'); +} // ?>