Default refid is always fallback now, or 0 if sql_patches is absend
[mailer.git] / mailid_top.php
index 9a6c54cc648eed1f1d77c439864d6377b0d984ef..3457613e5a37e2b6888e7e75e3a08c702c5ee3cf 100644 (file)
  * MA  02110-1301  USA                                                  *
  ************************************************************************/
 
-// Load security stuff here (Oh, I hope this is not unsecure? Am I paranoia??? ;-) )
+// Load security stuff here
 require('inc/libs/security_functions.php');
 
-// Init "action" and "what"
-$GLOBALS['what'] = '';
-$GLOBALS['action'] = '';
+// Init start time
+$GLOBALS['startTime'] = microtime(true);
 
 // Tell everyone we are in this module
 $GLOBALS['module'] = 'mailid';
 $GLOBALS['output_mode'] = 0;
 
 // Load the required file(s)
-require('inc/config.php');
-
-if (isInstalled()) {
-       // Is the extension active
-       REDIRECT_ON_UNINSTALLED_EXTENSION('mailid');
-
-       // Secure all data
-       $url_uid = 0; $url_bid = 0; $url_mid = 0; $code = 0; $mode = '';
-       if (REQUEST_ISSET_GET('uid'))     $url_uid = bigintval(REQUEST_GET('uid'));
-       if (REQUEST_ISSET_GET('mailid'))  $url_mid = bigintval(REQUEST_GET('mailid'));
-       if (REQUEST_ISSET_GET('bonusid')) $url_bid = bigintval(REQUEST_GET('bonusid'));
-       if (REQUEST_ISSET_GET('code'))    $code    = bigintval(REQUEST_GET('code'));
-       if (REQUEST_ISSET_GET('mode'))    $mode    = REQUEST_GET('mode');
-
-       // 01        1        12            2    2            21    1                   22     10
-       if (($url_uid) > 0 && (($url_mid > 0) || ($url_bid > 0)) && (getTotalFatalErrors() == 0)) {
-               // No image? Then output header
-               if ($mode != 'img') LOAD_INC_ONCE('inc/header.php');
-
-               // Maybe he wants to confirm an email?
-               if ($url_mid > 0) {
-                       $result = SQL_QUERY_ESC("SELECT id, link_type FROM `{!_MYSQL_PREFIX!}_user_links` WHERE stats_id=%s AND userid=%s LIMIT 1",
-                        array($url_mid, $url_uid), __FILE__, __LINE__);
-                       $type = 'mailid'; $urlId = $url_mid;
-               } elseif ($url_bid > 0) {
-                       $result = SQL_QUERY_ESC("SELECT id, link_type FROM `{!_MYSQL_PREFIX!}_user_links` WHERE bonus_id=%s AND userid=%s LIMIT 1",
-                        array($url_bid, $url_uid), __FILE__, __LINE__);
-                       $type = 'bonusid'; $urlId = $url_bid;
-               }
+require('inc/config-global.php');
 
-               if (SQL_NUMROWS($result) == 1) {
-                       // Is the stats ID valid?
-                       list($lid, $ltype) = SQL_FETCHROW($result);
-                       SQL_FREERESULT($result);
-                       switch ($ltype)
-                       {
+if (!isInstalled()) {
+       // You have to install first!
+       redirectToUrl('install.php');
+} // END - if
+
+// Is the extension active
+redirectOnUninstalledExtension('mailid');
+
+// Secure all data
+$url_uid = 0; $url_bid = 0; $url_mid = 0; $code = 0; $mode = '';
+if (REQUEST_ISSET_GET('uid'))     $url_uid = bigintval(REQUEST_GET('uid'));
+if (REQUEST_ISSET_GET('mailid'))  $url_mid = bigintval(REQUEST_GET('mailid'));
+if (REQUEST_ISSET_GET('bonusid')) $url_bid = bigintval(REQUEST_GET('bonusid'));
+if (REQUEST_ISSET_GET('code'))    $code    = bigintval(REQUEST_GET('code'));
+if (REQUEST_ISSET_GET('mode'))    $mode    = REQUEST_GET('mode');
+
+// 01        1        12            2    2            21    1                   22     10
+if (($url_uid) > 0 && (($url_mid > 0) || ($url_bid > 0)) && (getTotalFatalErrors() == 0)) {
+       // No image? Then output header
+       if ($mode != 'img') loadIncludeOnce('inc/header.php');
+
+       // Maybe he wants to confirm an email?
+       if ($url_mid > 0) {
+               $result = SQL_QUERY_ESC("SELECT `id`, `link_type` FROM `{!_MYSQL_PREFIX!}_user_links` WHERE `stats_id`=%s AND `userid`=%s LIMIT 1",
+               array($url_mid, $url_uid), __FILE__, __LINE__);
+               $type = 'mailid'; $urlId = $url_mid;
+       } elseif ($url_bid > 0) {
+               $result = SQL_QUERY_ESC("SELECT `id`, link_type` FROM `{!_MYSQL_PREFIX!}_user_links` WHERE `bonus_id`=%s AND `userid`=%s LIMIT 1",
+                       array($url_bid, $url_uid), __FILE__, __LINE__);
+               $type = 'bonusid'; $urlId = $url_bid;
+       }
+
+       if (SQL_NUMROWS($result) == 1) {
+               // Is the stats ID valid?
+               list($lid, $ltype) = SQL_FETCHROW($result);
+               SQL_FREERESULT($result);
+
+               // @TODO Rewrite this to a filter
+               switch ($ltype) {
                        case 'NORMAL':
-                               $result_mailid = SQL_QUERY_ESC("SELECT pool_id, userid, id FROM `{!_MYSQL_PREFIX!}_user_stats` WHERE id=%s LIMIT 1",
-                                       array($url_mid), __FILE__, __LINE__);
+                               $result_mailid = SQL_QUERY_ESC("SELECT `pool_id`, `userid`, `id` FROM `{!_MYSQL_PREFIX!}_user_stats` WHERE `id`=%s LIMIT 1",
+                               array($url_mid), __FILE__, __LINE__);
                                break;
 
                        case 'BONUS':
-                               $result_mailid = SQL_QUERY_ESC("SELECT id, id, is_notify FROM `{!_MYSQL_PREFIX!}_bonus` WHERE id=%s LIMIT 1",
-                                       array($url_bid), __FILE__, __LINE__);
+                               $result_mailid = SQL_QUERY_ESC("SELECT `id, `id`, `is_notify` FROM `{!_MYSQL_PREFIX!}_bonus` WHERE `id`=%s LIMIT 1",
+                               array($url_bid), __FILE__, __LINE__);
                                break;
-                       }
 
-                       // Entry found?
-                       if (SQL_NUMROWS($result_mailid) == 1) {
-                               // Load data
-                               list($pool, $sender, $notify) = SQL_FETCHROW($result_mailid);
+                       default: // Unknown type
+                               debug_report_bug('Unknown mail type ' . $ltype . ' detected.');
+                               break;
+               }
 
-                               // Correct notification switch in non-bonus mails
-                               if (($notify != 'Y') && ($notify != 'N')) $notify = 'N';
+               // Entry found?
+               if (SQL_NUMROWS($result_mailid) == 1) {
+                       // Load data
+                       list($pool, $sender, $notify) = SQL_FETCHROW($result_mailid);
 
-                               // Free some memory
-                               SQL_FREERESULT($result_mailid);
+                       // Correct notification switch in non-bonus mails
+                       if (($notify != 'Y') && ($notify != 'N')) $notify = 'N';
 
-                               // Set sender to 0 when we have a bonus mail
-                               if ($ltype == 'BONUS') $sender = 0;
+                       // Free some memory
+                       SQL_FREERESULT($result_mailid);
 
-                               // Is the user's ID unlocked?
-                               $result = SQL_QUERY_ESC("SELECT status, gender, surname, family, ref_payout FROM `{!_MYSQL_PREFIX!}_user_data` WHERE userid=%s LIMIT 1",
-                                       array($url_uid), __FILE__, __LINE__);
-                               if (SQL_NUMROWS($result) == 1) {
-                                       // Load data
-                                       list($status, $gender, $sname, $fname, $ref_pay) = SQL_FETCHROW($result);
+                       // Set sender to 0 when we have a bonus mail
+                       if ($ltype == 'BONUS') $sender = 0;
 
-                                       // Free some memory
-                                       SQL_FREERESULT($result);
+                       // Is the user's ID unlocked?
+                       $result = SQL_QUERY_ESC("SELECT status, gender, surname, family, ref_payout FROM `{!_MYSQL_PREFIX!}_user_data` WHERE `userid`=%s LIMIT 1",
+                       array($url_uid), __FILE__, __LINE__);
+                       if (SQL_NUMROWS($result) == 1) {
+                               // Load data
+                               list($status, $gender, $sname, $fname, $ref_pay) = SQL_FETCHROW($result);
+
+                               // Free some memory
+                               SQL_FREERESULT($result);
 
-                                       if ($status == 'CONFIRMED') {
-                                               // Update last activity
-                                               SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_user_data` SET last_online=UNIX_TIMESTAMP(), `last_module`='mailid_top' WHERE userid=%s LIMIT 1",
-                                                       array($url_uid), __FILE__, __LINE__);
+                               if ($status == 'CONFIRMED') {
+                                       // Update last activity
+                                       SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_user_data` SET last_online=UNIX_TIMESTAMP(), `last_module`='mailid_top' WHERE `userid`=%s LIMIT 1",
+                                       array($url_uid), __FILE__, __LINE__);
 
-                                               // User has confirmed his account so we can procede...
-                                               switch ($ltype)
-                                               {
+                                       // User has confirmed his account so we can procede...
+                                       // @TODO Rewrite this to a filter
+                                       switch ($ltype)
+                                       {
                                                case 'NORMAL':
                                                        $result = SQL_QUERY_ESC("SELECT payment_id FROM `{!_MYSQL_PREFIX!}_user_stats` WHERE pool_id=%s LIMIT 1",
-                                                               array(bigintval($pool)), __FILE__, __LINE__);
+                                                       array(bigintval($pool)), __FILE__, __LINE__);
 
                                                        // Entry found?
                                                        if (SQL_NUMROWS($result) == 1) {
                                                                list($pay) = SQL_FETCHROW($result);
-                                                               $time      = GET_PAY_POINTS($pay, 'time');
-                                                               $payment   = GET_PAY_POINTS($pay, 'payment');
+                                                               $time      = getPaymentPoints($pay, 'time');
+                                                               $payment   = getPaymentPoints($pay, 'payment');
                                                                $isValid   = true;
                                                        } // END - if
 
@@ -144,83 +153,94 @@ if (isInstalled()) {
                                                        break;
 
                                                case 'BONUS':
-                                                       $result = SQL_QUERY_ESC("SELECT time, points FROM `{!_MYSQL_PREFIX!}_bonus` WHERE id=%s LIMIT 1",
-                                                               array(bigintval($pool)), __FILE__, __LINE__);
+                                                       $result = SQL_QUERY_ESC("SELECT time, points FROM `{!_MYSQL_PREFIX!}_bonus` WHERE `id`=%s LIMIT 1",
+                                                       array(bigintval($pool)), __FILE__, __LINE__);
 
                                                        // Entry found?
                                                        if (SQL_NUMROWS($result) == 1) {
                                                                list($time, $payment) = SQL_FETCHROW($result);
                                                                $isValid = true;
-                                                       }
+                                                       } // END - if
 
                                                        // Free memory...
                                                        SQL_FREERESULT($result);
                                                        break;
-                                               }
 
-                                               // Is this entry valid?
-                                               if ($isValid) {
-                                                       if (($time == '0') && ($payment > 0)) $time = '1';
-                                                       if (($time > 0) && ($payment > 0)) {
-                                                               if (!empty($code)) {
-                                                                       // Generate code
-                                                                       $img_code = generateRandomCodde(getConfig('code_length'), $code, $url_uid, $urlId);
-                                                               } // END - if
+                                               default: // Unknown type
+                                                       debug_report_bug('Unknown mail type ' . $ltype . ' detected.');
+                                                       break;
+                                       }
+
+                                       // Is this entry valid?
+                                       if ($isValid) {
+                                               if (($time == '0') && ($payment > 0)) $time = '1';
+                                               if (($time > 0) && ($payment > 0)) {
+                                                       if (!empty($code)) {
+                                                               // Generate code
+                                                               $img_code = generateRandomCode(getConfig('code_length'), $code, $url_uid, $urlId);
+                                                       } // END - if
 
-                                                               switch ($mode) {
+                                                       // @TODO Rewrite this to a filter
+                                                       switch ($mode) {
                                                                case 'add':
                                                                        // Init stats data
                                                                        $stats_data = 0;
 
                                                                        // Count clicks
+                                                                       // @TODO Rewrite this to a filter
                                                                        switch ($ltype)
                                                                        {
-                                                                       case 'NORMAL':
-                                                                               SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_user_stats` SET clicks=clicks + 1 WHERE id=%s LIMIT 1",
+                                                                               case 'NORMAL':
+                                                                                       SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_user_stats` SET clicks=clicks + 1 WHERE `id`=%s LIMIT 1",
                                                                                        array($url_mid), __FILE__, __LINE__);
 
-                                                                               // Update mediadata as well
-                                                                               if (GET_EXT_VERSION('mediadata') >= '0.0.4') {
-                                                                                       // Update database
-                                                                                       MEDIA_UPDATE_ENTRY(array('total_clicks', 'normal_clicks'), 'add', 1);
-                                                                               }
-                                                                               $stats_data = $url_mid;
-                                                                               break;
+                                                                                       // Update mediadata as well
+                                                                                       if (GET_EXT_VERSION('mediadata') >= '0.0.4') {
+                                                                                               // Update database
+                                                                                               MEDIA_UPDATE_ENTRY(array('total_clicks', 'normal_clicks'), 'add', 1);
+                                                                                       }
+                                                                                       $stats_data = $url_mid;
+                                                                                       break;
 
-                                                                       case 'BONUS':
-                                                                               SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_bonus` SET clicks=clicks + 1 WHERE id=%s LIMIT 1",
+                                                                               case 'BONUS':
+                                                                                       SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_bonus` SET clicks=clicks + 1 WHERE `id`=%s LIMIT 1",
                                                                                        array($url_bid), __FILE__, __LINE__);
 
-                                                                               // Update mediadata as well
-                                                                               if (GET_EXT_VERSION('mediadata') >= '0.0.4') {
-                                                                                       // Update database
-                                                                                       MEDIA_UPDATE_ENTRY(array('total_clicks', 'bonus_clicks'), 'add', 1);
-                                                                               }
-                                                                               $stats_data = $url_bid;
-                                                                               break;
+                                                                                       // Update mediadata as well
+                                                                                       if (GET_EXT_VERSION('mediadata') >= '0.0.4') {
+                                                                                               // Update database
+                                                                                               MEDIA_UPDATE_ENTRY(array('total_clicks', 'bonus_clicks'), 'add', 1);
+                                                                                       }
+                                                                                       $stats_data = $url_bid;
+                                                                                       break;
+
+                                                                               default: // Unknown type
+                                                                                       debug_report_bug('Unknown mail type ' . $ltype . ' detected.');
+                                                                                       break;
                                                                        }
 
                                                                        // Export data into constants for the template
-                                                                       define('_POINTS_VALUE'   , TRANSLATE_COMMA($payment));
+                                                                       // @TODO Rewrite these constants
+                                                                       define('_POINTS_VALUE'   , translateComma($payment));
                                                                        define('_TEMPLATE_BANNER', LOAD_TEMPLATE('mailid_banner', true));
 
                                                                        // Only when user extension = v0.1.2: Update mails-confirmed counter
                                                                        // @TODO Rewrite these blocks to filter
                                                                        if (GET_EXT_VERSION('user') >= '0.1.2') {
                                                                                // Update counter
-                                                                               SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_user_data` SET mails_confirmed=mails_confirmed + 1 WHERE userid=%s LIMIT 1",
-                                                                                       array($url_uid), __FILE__, __LINE__);
+                                                                               SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_user_data` SET mails_confirmed=mails_confirmed + 1 WHERE `userid`=%s LIMIT 1",
+                                                                               array($url_uid), __FILE__, __LINE__);
 
                                                                                // Update random confirmed as well?
                                                                                if (GET_EXT_VERSION('user') >= '0.3.4') {
                                                                                        // Update second counter
-                                                                                       SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_user_data` SET rand_confirmed=rand_confirmed + 1 WHERE userid=%s LIMIT 1",
-                                                                                               array($url_uid), __FILE__, __LINE__);
+                                                                                       SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_user_data` SET rand_confirmed=rand_confirmed + 1 WHERE `userid`=%s LIMIT 1",
+                                                                                       array($url_uid), __FILE__, __LINE__);
                                                                                } // END - if
                                                                        } // END - if
 
                                                                        // Insert stats record
-                                                                       USER_STATS_INSERT_RECORD($url_uid, $type, $stats_data);
+                                                                       insertUserStatsRecord($url_uid, $type, $stats_data);
 
                                                                        // Right code entered?
                                                                        if (bigintval(REQUEST_POST('gfx_check')) == $img_code) {
@@ -236,7 +256,7 @@ if (isInstalled()) {
                                                                                } // END - if
 
                                                                                // Count down ref_payout value
-                                                                               SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_user_data` SET ref_payout=ref_payout-1 WHERE userid=%s AND ref_payout > 0 LIMIT 1",
+                                                                               SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_user_data` SET `ref_payout`=`ref_payout`-1 WHERE `userid`=%s AND `ref_payout` > 0 LIMIT 1",
                                                                                        array($url_uid), __FILE__, __LINE__);
 
                                                                                // Add points
@@ -257,15 +277,15 @@ if (isInstalled()) {
                                                                                                        if ($locked) $template = 'mailid_points_locked2';
                                                                                                        define('_UID_VALUE' , $url_uid);
                                                                                                        define('_TYPE_VALUE', $type);
-                                                                                                       define('_DATA_VALUE', TRANSLATE_COMMA($urlId));
+                                                                                                       define('_DATA_VALUE', translateComma($urlId));
                                                                                                } // END - if
                                                                                        } // END - if
                                                                                } // END - if
 
                                                                                // Load total points
-                                                                               define('__TOTAL_POINTS', TRANSLATE_COMMA(
-                                                                                       GET_TOTAL_DATA($url_uid, 'user_points', 'points') -
-                                                                                       GET_TOTAL_DATA($url_uid, 'user_data', 'used_points'))
+                                                                               define('__TOTAL_POINTS', translateComma(
+                                                                               GET_TOTAL_DATA($url_uid, 'user_points', 'points') -
+                                                                               GET_TOTAL_DATA($url_uid, 'user_data', 'used_points'))
                                                                                );
 
                                                                                // Load template
@@ -273,15 +293,15 @@ if (isInstalled()) {
                                                                        } else {
                                                                                // Wrong image code! So add points to sender's account
                                                                                unset($GLOBALS['ref_level']);
-                                                                               ADD_POINTS_REFSYSTEM('mailid_payback', $sender, $payment, false, 0, false, 'direct');
+                                                                               ADD_POINTS_REFSYSTEM_DIRECT('mailid_payback', $sender, $payment);
 
                                                                                // Load template
                                                                                LOAD_TEMPLATE('mailid_points_failed');
                                                                        }
 
                                                                        // Remove link from table
-                                                                       SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_user_links` WHERE id=%s LIMIT 1",
-                                                                               array(bigintval($lid)), __FILE__, __LINE__);
+                                                                       SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_user_links` WHERE `id`=%s LIMIT 1",
+                                                                       array(bigintval($lid)), __FILE__, __LINE__);
                                                                        break;
 
                                                                case 'img':
@@ -298,7 +318,7 @@ if (isInstalled()) {
                                                                                define('_TEMPLATE_BANNER', LOAD_TEMPLATE('mailid_banner', true));
                                                                                if (getConfig('code_length') > 0) {
                                                                                        // Generate Code
-                                                                                       define('_IMAGE_CODE', IMG_CODE($code, $type, $urlId, $url_uid));
+                                                                                       define('_IMAGE_CODE', generateCaptchaCode($code, $type, $urlId, $url_uid));
                                                                                        $templ = 'mailid_enter_code';
                                                                                } else {
                                                                                        // Disabled code
@@ -325,42 +345,48 @@ if (isInstalled()) {
                                                                        // Load template
                                                                        LOAD_TEMPLATE('mailid_timer');
                                                                        break;
-                                                               } // END - switch
-                                                       } else {
-                                                               LOAD_TEMPLATE('admin_settings_saved', false, "<div class=\"member_failed\">{--MAIL_ALREADY_CONFIRMED--} (6)</div>");
-                                                       }
+
+                                                               default: // Unknown mode
+                                                                       debug_report_bug('Unknown mode ' . $mode . ' detected.');
+                                                                       break;
+                                                       } // END - switch
                                                } else {
-                                                       LOAD_TEMPLATE('admin_settings_saved', false, "<div class=\"member_failed\">{--MAIL_ALREADY_CONFIRMED--} (5)</div>");
+                                                       LOAD_TEMPLATE('admin_settings_saved', false, "<div class=\"member_failed\">{--MAIL_ALREADY_CONFIRMED--} (6)</div>");
+                                                       $mode = 'failed';
                                                }
                                        } else {
-                                               LOAD_TEMPLATE('admin_settings_saved', false, "<div class=\"member_failed\">{--MAIL_ALREADY_CONFIRMED--} (4)</div>");
+                                               LOAD_TEMPLATE('admin_settings_saved', false, "<div class=\"member_failed\">{--MAIL_ALREADY_CONFIRMED--} (5)</div>");
+                                               $mode = 'failed';
                                        }
                                } else {
-                                       SQL_FREERESULT($result);
-                                       LOAD_TEMPLATE('admin_settings_saved', false, "<div class=\"member_failed\">{--MAIL_ALREADY_CONFIRMED--} (3)</div>");
+                                       LOAD_TEMPLATE('admin_settings_saved', false, "<div class=\"member_failed\">{--MAIL_ALREADY_CONFIRMED--} (4)</div>");
+                                       $mode = 'failed';
                                }
                        } else {
                                SQL_FREERESULT($result);
-                               LOAD_TEMPLATE('admin_settings_saved', false, "<div class=\"member_failed\">{--MAIL_ALREADY_CONFIRMED--} (2)</div>");
+                               LOAD_TEMPLATE('admin_settings_saved', false, "<div class=\"member_failed\">{--MAIL_ALREADY_CONFIRMED--} (3)</div>");
+                               $mode = 'failed';
                        }
                } else {
                        SQL_FREERESULT($result);
-                       LOAD_TEMPLATE('admin_settings_saved', false, "<div class=\"member_failed\">{--MAIL_ALREADY_CONFIRMED--} (1)</div>");
+                       LOAD_TEMPLATE('admin_settings_saved', false, "<div class=\"member_failed\">{--MAIL_ALREADY_CONFIRMED--} (2)</div>");
+                       $mode = 'failed';
                }
-
-               // Insert footer if no image
-               if ($mode != 'img') {
-                       // Write footer
-                       LOAD_INC_ONCE('inc/footer.php');
-               } // END - if
+       } else {
+               SQL_FREERESULT($result);
+               LOAD_TEMPLATE('admin_settings_saved', false, "<div class=\"member_failed\">{--MAIL_ALREADY_CONFIRMED--} (1)</div>");
+               $mode = 'failed';
        }
-} elseif ($mode != 'img') {
-       // You have to install first!
-       LOAD_URL('install.php');
+
+       // Insert footer if no image
+       if ($mode != 'img') {
+               // Write footer
+               loadIncludeOnce('inc/footer.php');
+       } // END - if
 }
 
 // Really all done here... ;-)
 shutdown();
 
-//
+// [EOF]
 ?>