Surfbar continued (unfinished) and some updates:
[mailer.git] / inc / libs / surfbar_functions.php
index 9d4ebe630d6364392ee9a29fa149bec768c43c9a..dcf0902e2ab86ce6d2b0a8dc8b8250428e9bb196 100644 (file)
@@ -58,12 +58,8 @@ function SURFBAR_ADMIN_ADD_URL ($url) {
                return false;
        }
 
-       // Do we have fixed or dynamic payment model?
-       $reward = SURFBAR_DETERMINE_REWARD();
-       $costs  = SURFBAR_DETERMINE_COSTS();
-
        // Register the new URL
-       return SURFBAR_REGISTER_URL($url, "0", $reward, $costs, "0", "CONFIRMED", "unlock");
+       return SURFBAR_REGISTER_URL($url, "0", "0", "ACTIVE", "unlock");
 }
 // Admin function for unlocking URLs
 function SURFBAR_ADMIN_UNLOCK_URL_IDS ($IDs) {
@@ -85,7 +81,33 @@ function SURFBAR_ADMIN_UNLOCK_URL_IDS ($IDs) {
        // Update the status for all ids
        foreach ($IDs as $id => $dummy) {
                // Test all ids through (ignores failed)
-               $done = (($done) && (SURFBAR_CHANGE_STATUS($id, "PENDING", "CONFIRMED")));
+               $done = (($done) && (SURFBAR_CHANGE_STATUS($id, "PENDING", "ACTIVE")));
+       } // END - if
+
+       // Return total status
+       return $done;
+}
+// Admin function for rejecting URLs
+function SURFBAR_ADMIN_REJECT_URL_IDS ($IDs) {
+       // Is this an admin or invalid array?
+       if (!IS_ADMIN()) {
+               // Not admin or invalid IDs array
+               return false;
+       } elseif (!is_array($IDs)) {
+               // No array
+               return false;
+       } elseif (count($IDs) == 0) {
+               // Empty array
+               return false;
+       }
+
+       // Set to true to make AND expression valid if first URL got unlocked
+       $done = true;
+
+       // Update the status for all ids
+       foreach ($IDs as $id => $dummy) {
+               // Test all ids through (ignores failed)
+               $done = (($done) && (SURFBAR_CHANGE_STATUS($id, "PENDING", "REJECTED")));
        } // END - if
 
        // Return total status
@@ -115,12 +137,8 @@ function SURFBAR_MEMBER_ADD_URL ($url) {
                return false;
        }
 
-       // Do we have fixed or dynamic payment model?
-       $reward = SURFBAR_DETERMINE_REWARD();
-       $costs  = SURFBAR_DETERMINE_COSTS();
-
        // Register the new URL
-       return SURFBAR_REGISTER_URL($url, $GLOBALS['userid'], $reward, $costs);
+       return SURFBAR_REGISTER_URL($url, $GLOBALS['userid']);
 }
 // Create list of actions depending on status for the user
 function SURFBAR_MEMBER_ACTIONS ($urlId, $status) {
@@ -161,13 +179,83 @@ function SURFBAR_MEMBER_ACTIONS ($urlId, $status) {
 }
 // Do the member form request
 function SURFBAR_MEMBER_DO_FORM ($formData, $URLs) {
+       global $SURFBAR_CACHE;
+
+       // By default no action is performed
+       $performed = false;
+
        // Is this a member?
        if (!IS_MEMBER()) {
                // No member!
                return false;
+       } elseif ((!isset($formData['id'])) || (!isset($formData['action']))) {
+               // Important form elements are missing!
+               return false;
+       } elseif (!isset($URLs[$formData['id']])) {
+               // ID not found in cache
+               return false;
+       } elseif (!SURFBAR_VALIDATE_MEMBER_ACTION_STATUS($formData['action'], $URLs[$formData['id']]['status'])) {
+               // Action not allowed for current URL status
+               return false;
+       }
+
+       // Create the function name for selected action
+       $functionName = sprintf("SURFBAR_MEMBER_%s_ACTION", strtoupper(SQL_ESCAPE($formData['action'])));
+
+       // Is the function there?
+       if (function_exists($functionName)) {
+               // Add new status
+               $URLs[$formData['id']]['new_status'] = $SURFBAR_CACHE['new_status'];
+
+               // Extract URL data for call-back
+               $urlData = array($URLs[$formData['id']]);
+
+               // Action found so execute it
+               $performed = call_user_func_array($functionName, $urlData);
+       } else {
+               // Log invalid request
+               DEBUG_LOG(__FUNCTION__.": action={$formData['action']},id={$formData['id']},function={$functionName}");
+       }
+
+       // Return status
+       return $performed;
+}
+// Validate if the requested action can be performed on current URL status
+function SURFBAR_VALIDATE_MEMBER_ACTION_STATUS ($action, $status) {
+       global $SURFBAR_CACHE;
+
+       // Search for the requested action/status combination in database
+       $result = SQL_QUERY_ESC("SELECT new_status FROM "._MYSQL_PREFIX."_surfbar_actions WHERE action='%s' AND status='%s' LIMIT 1",
+               array($action, $status), __FILE__, __LINE__);
+
+       // Is the entry there?
+       $isValid = (SQL_NUMROWS($result) == 1);
+
+       // Fetch the new status if found
+       if ($isValid) {
+               list($SURFBAR_CACHE['new_status']) = SQL_FETCHROW($result);
        } // END - if
 
-       /* DEBUG: */ die("<pre>".print_r($formData, true)."</pre><pre>".print_r($URLs, true)."</pre>");
+       // Free result
+       SQL_FREERESULT($result);
+
+       // Return status
+       return $isValid;
+}
+//
+// -----------------------------------------------------------------------------
+//                               Member actions
+// -----------------------------------------------------------------------------
+//
+// Retreat an URL
+function SURFBAR_MEMBER_RETREAT_ACTION ($urlData) {
+       // Create the data array for next function call
+       $data = array(
+               $urlData['id'] => $urlData
+       );
+
+       // Simply change the status here
+       return SURFBAR_CHANGE_STATUS ($urlData['id'], $urlData['status'], $urlData['new_status'], $data);
 }
 //
 // -----------------------------------------------------------------------------
@@ -202,7 +290,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, costs, views_total, status, registered, last_locked, lock_reason
+       $result = SQL_QUERY_ESC("SELECT id, userid, url, views_total, status, registered, last_locked, lock_reason
 FROM "._MYSQL_PREFIX."_surfbar_urls
 WHERE %s='%s'
 ORDER BY %s %s
@@ -231,7 +319,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, $costs, $paymentId=0, $status="PENDING", $addMode="reg") {
+function SURFBAR_REGISTER_URL ($url, $uid, $paymentId=0, $status="PENDING", $addMode="reg") {
        global $_CONFIG;
 
        // Make sure by the user registered URLs are always pending
@@ -242,8 +330,6 @@ function SURFBAR_REGISTER_URL ($url, $uid, $reward, $costs, $paymentId=0, $statu
                'url'         => $url,
                'frametester' => FRAMETESTER($url),
                'uid'         => $uid,
-               'reward'      => $reward,
-               'costs'       => $costs,
                'status'      => $status
        );
 
@@ -252,8 +338,6 @@ function SURFBAR_REGISTER_URL ($url, $uid, $reward, $costs, $paymentId=0, $statu
 
        // 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")) {
@@ -276,12 +360,10 @@ function SURFBAR_INSERT_URL_BY_ARRAY ($urlData) {
        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')",
+       SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_surfbar_urls (userid, url, status) VALUES(%s, '%s', '%s')",
                array(
                        $uid,
                        $urlData['url'],
-                       (float)$urlData['reward'],
-                       (float)$urlData['costs'],
                        $urlData['status']
                ), __FILE__, __LINE__
        );
@@ -294,11 +376,14 @@ function SURFBAR_NOTIFY_ADMIN ($messageType, $content) {
        // Prepare template name
        $templateName = sprintf("admin_surfbar_%s", $messageType);
 
+       // Set default subject if following eval() wents wrong
+       $subject = ADMIN_SURFBAR_NOTIFY_DEFAULT_SUBJECT;
+
        // Prepare subject
        $eval = sprintf("\$subject = ADMIN_SURFBAR_NOTIFY_%s_SUBJECT;",
                strtoupper($messageType)
        );
-       eval($eval);
+       @eval($eval);
 
        // Send the notification out
        return SEND_ADMIN_NOTIFICATION($subject, $templateName, $content, $content['uid']);
@@ -313,11 +398,14 @@ function SURFBAR_NOTIFY_USER ($messageType, $content) {
        // Prepare template name
        $templateName = sprintf("member_surfbar_%s", $messageType);
 
+       // Set default subject if following eval() wents wrong
+       $subject = MEMBER_SURFBAR_NOTIFY_DEFAULT_SUBJECT;
+
        // Prepare subject
        $eval = sprintf("\$subject = MEMBER_SURFBAR_NOTIFY_%s_SUBJECT;",
                strtoupper($messageType)
        );
-       eval($eval);
+       @eval($eval);
 
        // Load template
        $mailText = LOAD_EMAIL_TEMPLATE($templateName, $content);
@@ -343,7 +431,7 @@ function SURFBAR_TRANSLATE_STATUS ($status) {
        return $statusTranslated;
 }
 // Determine reward
-function SURFBAR_DETERMINE_REWARD () {
+function SURFBAR_DETERMINE_REWARD ($onlyMin=false) {
        global $_CONFIG;
 
        // Static values are default
@@ -352,23 +440,18 @@ function SURFBAR_DETERMINE_REWARD () {
        // Do we have static or dynamic?
        if ($_CONFIG['surfbar_pay_model'] == "DYNAMIC") {
                // "Calculate" dynamic reward
-               $reward += SURFBAR_CALCULATE_DYNAMIC_ADD();
+               if ($onlyMin) {
+                       $reward += SURFBAR_CALCULATE_DYNAMIC_MIN_VALUE();
+               } else {
+                       $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 () {
+function SURFBAR_DETERMINE_COSTS ($onlyMin=false) {
        global $_CONFIG;
 
        // Static costs is default
@@ -377,12 +460,25 @@ function SURFBAR_DETERMINE_COSTS () {
        // Do we have static or dynamic?
        if ($_CONFIG['surfbar_pay_model'] == "DYNAMIC") {
                // "Calculate" dynamic costs
-               $costs += SURFBAR_CALCULATE_DYNAMIC_ADD();
+               if ($onlyMin) {
+                       $costs += SURFBAR_CALCULATE_DYNAMIC_MIN_VALUE();
+               } else {
+                       $costs += SURFBAR_CALCULATE_DYNAMIC_ADD();
+               }
        } // END - if
 
        // Return costs
        return $costs;
 }
+// "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 right template name
 function SURFBAR_DETERMINE_TEMPLATE_NAME() {
        // Default is the frameset
@@ -446,8 +542,8 @@ LIMIT 1",
        // 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", $excludeUserId="") {
+// Get total amount of URLs of given status for current user or of ACTIVE URLs by default
+function SURFBAR_GET_TOTAL_URLS ($status="ACTIVE", $excludeUserId="") {
        // Determine depleted user account
        $UIDs = SURFBAR_DETERMINE_DEPLETED_USERIDS();
 
@@ -694,14 +790,14 @@ function SURFBAR_DETERMINE_DEPLETED_USERIDS() {
 
                // Get all userid except logged in one
                $result = SQL_QUERY_ESC("SELECT userid FROM "._MYSQL_PREFIX."_surfbar_urls
-WHERE userid NOT IN (%s,0) AND status='CONFIRMED'
+WHERE userid NOT IN (%s,0) AND status='ACTIVE'
 GROUP BY userid
 ORDER BY userid ASC",
                        array($GLOBALS['userid']), __FILE__, __LINE__);
        } else {
                // Get all userid
                $result = SQL_QUERY_ESC("SELECT userid FROM "._MYSQL_PREFIX."_surfbar_urls
-WHERE status='CONFIRMED'
+WHERE status='ACTIVE'
 GROUP BY userid
 ORDER BY userid ASC", __FILE__, __LINE__);
        }
@@ -766,9 +862,13 @@ function SURFBAR_DETERMINE_WAIT_TIME () {
        return $time;
 }
 // Changes the status of an URL from given to other
-function SURFBAR_CHANGE_STATUS ($urlId, $prevStatus, $newStatus) {
-       // Get URL data for status comparison
-       $data = SURFBAR_GET_URL_DATA($urlId);
+function SURFBAR_CHANGE_STATUS ($urlId, $prevStatus, $newStatus, $data=array()) {
+       global $_CONFIG;
+
+       // Get URL data for status comparison if missing
+       if (count($data) == 0) {
+               $data = SURFBAR_GET_URL_DATA($urlId);
+       } // END - if
 
        // Is the status like prevStatus is saying?
        if ($data[$urlId]['status'] != $prevStatus) {
@@ -776,9 +876,12 @@ function SURFBAR_CHANGE_STATUS ($urlId, $prevStatus, $newStatus) {
                return false;
        } // END - if
 
+
        // Update the status now
-       SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_surfbar_urls SET status='%s' WHERE id=%s LIMIT 1",
-               array($newStatus, bigintval($urlId)), __FILE__, __LINE__);
+       // ---------------------- Commented out for debugging member actions! -----------------------
+       //SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_surfbar_urls SET status='%s' WHERE id=%s LIMIT 1",
+       //      array($newStatus, bigintval($urlId)), __FILE__, __LINE__);
+       // ---------------------- Commented out for debugging member actions! -----------------------
 
        // Was that fine?
        if (SQL_AFFECTEDROWS() != 1) {
@@ -789,8 +892,8 @@ function SURFBAR_CHANGE_STATUS ($urlId, $prevStatus, $newStatus) {
        // Prepare content for notification routines
        $data[$urlId]['uid']         = $data[$urlId]['userid'];
        $data[$urlId]['frametester'] = FRAMETESTER($data[$urlId]['url']);
-       $data[$urlId]['reward']      = TRANSLATE_COMMA($data[$urlId]['reward']);
-       $data[$urlId]['costs']       = TRANSLATE_COMMA($data[$urlId]['costs']);
+       $data[$urlId]['reward']      = TRANSLATE_COMMA($_CONFIG['surfbar_static_reward']);
+       $data[$urlId]['costs']       = TRANSLATE_COMMA($_CONFIG['surfbar_static_costs']);
        $data[$urlId]['status']      = SURFBAR_TRANSLATE_STATUS($newStatus);
        $data[$urlId]['registered']  = MAKE_DATETIME($data[$urlId]['registered'], "2");
        $newStatus = strtolower($newStatus);
@@ -824,10 +927,10 @@ function SURFBAR_CALCULATE_DYNAMIC_MIN_VALUE () {
        $addon += abs(log($onlineUsers / $totalUsers + 1) * $percent * $totalUsers);
 
        // Get total URLs
-       $totalUrls = SURFBAR_GET_TOTAL_URLS("CONFIRMED", "0");
+       $totalUrls = SURFBAR_GET_TOTAL_URLS("ACTIVE", "0");
 
        // Get user's total URLs
-       $userUrls = SURFBAR_GET_TOTAL_USER_URLS(0, "CONFIRMED");
+       $userUrls = SURFBAR_GET_TOTAL_USER_URLS(0, "ACTIVE");
 
        // Calculate addon
        if ($totalUrls > 0) {
@@ -859,7 +962,7 @@ function SURFBAR_CALCULATE_DYNAMIC_MAX_VALUE () {
        $addon += abs($max * $percent * $totalUsers);
 
        // Get total URLs
-       $totalUrls = SURFBAR_GET_TOTAL_URLS("CONFIRMED", "0");
+       $totalUrls = SURFBAR_GET_TOTAL_URLS("ACTIVE", "0");
 
        // Calculate addon
        $addon += abs($max * $percent * $totalUrls);
@@ -946,7 +1049,7 @@ 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 NOT IN (".implode(",", $UIDs).") AND sbu.status='CONFIRMED'".$ADD."
+WHERE sbu.userid NOT IN (".implode(",", $UIDs).") AND sbu.status='ACTIVE'".$ADD."
 GROUP BY sbu.id", __FILE__, __LINE__);
 
        // Log last query
@@ -967,7 +1070,7 @@ function SURFBAR_GET_USER_URLS () {
        $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
+       $result = SQL_QUERY_ESC("SELECT u.id, u.userid, 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 AND u.status != 'DELETED'
 ORDER BY u.id ASC",
@@ -1059,7 +1162,7 @@ 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 NOT IN (".implode(",", $UIDs).") AND sbu.status='CONFIRMED'".$ADD."
+WHERE sbu.userid NOT IN (".implode(",", $UIDs).") AND sbu.status='ACTIVE'".$ADD."
 GROUP BY sbu.id
 ORDER BY l.last_surfed ASC, sbu.id ASC
 LIMIT %s,1",
@@ -1073,7 +1176,7 @@ 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
+WHERE sbu.userid != %s AND sbu.status='ACTIVE' AND sbu.id=%s
 LIMIT 1",
                        array($GLOBALS['userid'], bigintval($urlId)), __FILE__, __LINE__
                );