Debug comment removed
[mailer.git] / inc / libs / surfbar_functions.php
index b4364a6a49675a517a35558cf8c4bb57573cdea4..8d1df27d7976eb349f7ebb97ba80f830f9342d22 100644 (file)
@@ -222,9 +222,10 @@ function SURFBAR_DETERMINE_TEMPLATE_NAME() {
        // Return result
        return $templateName;
 }
-// Check if the "reload lock" of the current user is full
+// 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_DATA, $_CONFIG;
+       global $SURFBAR_CACHE, $_CONFIG;
 
        // Default is full!
        $isFull = true;
@@ -232,7 +233,7 @@ function SURFBAR_CHECK_RELOAD_FULL() {
        // 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'];
+               $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
@@ -242,12 +243,12 @@ LIMIT 1",
                );
 
                // Fetch row
-               list($SURFBAR_DATA['user_locks']) = SQL_FETCHROW($result);
+               list($SURFBAR_CACHE['user_locks']) = SQL_FETCHROW($result);
 
                // Is it null?
-               if (is_null($SURFBAR_DATA['user_locks'])) {
+               if (is_null($SURFBAR_CACHE['user_locks'])) {
                        // Then fix it to zero!
-                       $SURFBAR_DATA['user_locks'] = 0;
+                       $SURFBAR_CACHE['user_locks'] = 0;
                } // END - if
 
                // Free result
@@ -257,7 +258,8 @@ LIMIT 1",
                $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));
+               //* DEBUG: */ echo __FUNCTION__.":userLocks=".SURFBAR_GET_DATA('user_locks').",total={$total}<br />\n";
+               $isFull = ((SURFBAR_GET_DATA('user_locks') == $total) && ($total > 0));
        } else {
                // Dynamic model...
                die("DYNAMIC not yet implemented!");
@@ -286,7 +288,7 @@ WHERE userid != %d AND status='%s'",
 }
 // Generate a validation code for the given id number
 function SURFBAR_GENERATE_VALIDATION_CODE ($id, $salt="") {
-       global $_CONFIG, $SURFBAR_DATA;
+       global $_CONFIG, $SURFBAR_CACHE;
 
        // Generate a code until the length matches
        $valCode = "";
@@ -294,27 +296,27 @@ function SURFBAR_GENERATE_VALIDATION_CODE ($id, $salt="") {
                // Is the salt set?
                if (empty($salt)) {
                        // Generate random hashed string
-                       $SURFBAR_DATA['salt'] = sha1(GEN_PASS(255));
+                       $SURFBAR_CACHE['salt'] = sha1(GEN_PASS(255));
                } else {
                        // Use this as salt!
-                       $SURFBAR_DATA['salt'] = $salt;
+                       $SURFBAR_CACHE['salt'] = $salt;
                }
-               //* DEBUG: */ echo "*".$SURFBAR_DATA['salt']."*<br />\n";
+               //* DEBUG: */ echo __FUNCTION__.":".SURFBAR_GET_SALT()."*<br />\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}<br />\n";
+               $valCode = GEN_RANDOM_CODE($_CONFIG['code_length'], sha1(SURFBAR_GET_SALT().":".$id), $GLOBALS['userid']);
+               //* DEBUG: */ echo __FUNCTION__.":valCode={$valCode}<br />\n";
        } // END - while
 
        // Hash it with md5() and salt it with the random string
-       $hashedCode = generateHash(md5($valCode), SURFBAR_GET_DATA('salt'));
+       $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_DATA;
+       global $SURFBAR_CACHE;
 
        // Secure id number
        $id = bigintval($id);
@@ -323,19 +325,25 @@ function SURFBAR_CHECK_VALIDATION_CODE ($id, $check, $salt) {
        $code = SURFBAR_GENERATE_VALIDATION_CODE($id, $salt);
 
        // Return result of checking hashes and salts
-       //* DEBUG: */ echo "--- ".$code."<br />\n--- ".$check."<br />\n";
-       //* DEBUG: */ echo "+++ ".$salt."<br />\n+++ ".SURFBAR_GET_DATA('last_salt')."<br />\n";
+       //* DEBUG: */ echo __FUNCTION__.":---".$code."---<br />\n---".$check."---<br />\n";
+       //* DEBUG: */ echo __FUNCTION__.":+++".$salt."+++<br />\n+++".SURFBAR_GET_DATA('last_salt')."+++<br />\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!<br />\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_DATA, $_CONFIG;
+       global $SURFBAR_CACHE, $_CONFIG;
 
        // Re-configure ref-system to surfbar levels
        $_CONFIG['db_percents'] = "percent";
@@ -345,54 +353,95 @@ function SURFBAR_PAY_POINTS ($id) {
        ADD_POINTS_REFSYSTEM($GLOBALS['userid'], SURFBAR_GET_DATA('reward'));
 
        // Remove it from the URL owner
-       SUB_POINTS($SURFBAR_DATA['userid'], SURFBAR_GET_DATA('costs'));
+       SUB_POINTS($SURFBAR_CACHE['userid'], SURFBAR_GET_DATA('costs'));
 }
 // Update the salt for validation
 function SURFBAR_UPDATE_SALT() {
-       global $SURFBAR_DATA;
+       // 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_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__);
+       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}<br />\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')."<br />\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_DATA, $_CONFIG;
+       global $SURFBAR_CACHE, $_CONFIG;
 
        // Default is no id!
-       $nextId = 0;
+       $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;
 
-               // Generate random number
-               $randNum = mt_rand(0, $maxRand);
+               // 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
 
                // And query the database
-               $result = SQL_QUERY_ESC("SELECT sb.id, sb.userid, sb.url, sb.last_salt, sb.reward, sb.costs, sb.views_total, p.time, UNIX_TIMESTAMP(l.last_surfed) AS last_surfed
-FROM "._MYSQL_PREFIX."_surfbar_urls AS sb
+               //* DEBUG: */ echo __FUNCTION__.":randNum={$randNum},maxRand={$maxRand}<br />\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 sb.payment_id=p.id
+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 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",
+ON sbu.id=l.url_id
+WHERE sbu.userid != %s AND sbu.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 ASC, sbu.id ASC
+LIMIT %s,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.costs, sb.views_total, p.time
-FROM "._MYSQL_PREFIX."_surfbar_urls AS sb
+               $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 sb.payment_id=p.id
-WHERE sb.userid != %s AND sb.status='CONFIRMED' AND sb.id=%s
+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__
                );
@@ -401,62 +450,71 @@ LIMIT 1",
        // Is there an id number?
        if (SQL_NUMROWS($result) == 1) {
                // Load/cache data
-               //* DEBUG: */ echo "*".count($SURFBAR_DATA)."*<br />\n";
-               $SURFBAR_DATA = merge_array($SURFBAR_DATA, SQL_FETCHARRAY($result));
-               //* DEBUG: */ echo "*".count($SURFBAR_DATA)."*<br />\n";
+               //* DEBUG: */ echo __FUNCTION__.":".count($SURFBAR_CACHE)."*<br />\n";
+               $SURFBAR_CACHE = merge_array($SURFBAR_CACHE, SQL_FETCHARRAY($result));
+               //* DEBUG: */ echo __FUNCTION__.":".count($SURFBAR_CACHE)."*<br />\n";
 
                // Is the time there?
-               if (is_null($SURFBAR_DATA['time'])) {
+               if (is_null($SURFBAR_CACHE['time'])) {
+                       // Then repair it wit the static!
+                       //* DEBUG: */ echo __FUNCTION__.": time - STATIC!<br />\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!
-                       $SURFBAR_DATA['time'] = $_CONFIG['surfbar_static_time'];
+                       //* DEBUG: */ echo __FUNCTION__.": last_salt - FIXED!<br />\n";
+                       $SURFBAR_CACHE['last_salt'] = "";
                } // END - if
 
                // Fix missing last_surfed
-               if ((!isset($SURFBAR_DATA['last_surfed'])) || (is_null($SURFBAR_DATA['last_surfed']))) {
+               if ((!isset($SURFBAR_CACHE['last_surfed'])) || (is_null($SURFBAR_CACHE['last_surfed']))) {
                        // Fix it here
-                       $SURFBAR_DATA['last_surfed'] = "0";
+                       //* DEBUG: */ echo __FUNCTION__.": last_surfed - FIXED!<br />\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_DATA['reward'] = $_CONFIG['surfbar_static_reward'];
-                       $SURFBAR_DATA['costs']  = $_CONFIG['surfbar_static_costs'];
+                       $SURFBAR_CACHE['reward'] = $_CONFIG['surfbar_static_reward'];
+                       $SURFBAR_CACHE['costs']  = $_CONFIG['surfbar_static_costs'];
                } else {
                        // Calculate dynamic reward/costs and add it
-                       $SURFBAR_DATA['reward'] += SURFBAR_CALCULATE_DYNAMIC_REWARD_ADD();
-                       $SURFBAR_DATA['costs']  += SURFBAR_CALCULATE_DYNAMIC_COSTS_ADD();
+                       $SURFBAR_CACHE['reward'] += SURFBAR_CALCULATE_DYNAMIC_REWARD_ADD();
+                       $SURFBAR_CACHE['costs']  += SURFBAR_CALCULATE_DYNAMIC_COSTS_ADD();
                }
 
                // Now get the id
-               $nextId = SURFBAR_GET_DATA('id');
+               $nextId = SURFBAR_GET_ID();
        } // END - if
 
        // Free result
        SQL_FREERESULT($result);
 
        // Return result
-       //* DEBUG: */ echo "nextId={$nextId}<br />\n";
+       //* DEBUG: */ echo __FUNCTION__.":nextId={$nextId}<br />\n";
        return $nextId;
 }
 // ----------------------------------------------------------------------------
 // PLEASE DO NOT ADD ANY OTHER FUNCTIONS BELOW THIS LINE ELSE THEY "WRAP" THE
-// $SURFBAR_DATA ARRAY!
+// $SURFBAR_CACHE ARRAY!
 // ----------------------------------------------------------------------------
 // Private getter for data elements
 function SURFBAR_GET_DATA ($element) {
-       global $SURFBAR_DATA;
+       global $SURFBAR_CACHE;
 
        // Default is null
        $data = null;
 
        // Is the entry there?
-       if (isset($SURFBAR_DATA[$element])) {
+       if (isset($SURFBAR_CACHE[$element])) {
                // Then take it
-               $data = $SURFBAR_DATA[$element];
+               $data = $SURFBAR_CACHE[$element];
        } else { // END - if
                print("<pre>");
-               print_r($SURFBAR_DATA);
+               print_r($SURFBAR_CACHE);
                debug_print_backtrace();
                die("</pre>");
        }
@@ -479,6 +537,16 @@ 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