]> git.mxchange.org Git - mailer.git/blobdiff - inc/modules/member/what-unconfirmed.php
Complete rewrite of and , wrapper functions added, see bug #101
[mailer.git] / inc / modules / member / what-unconfirmed.php
index adf2c160e9da8626977d8abc50d766e7476d2554..88249052ccb9097b3fe3806ca102f6fd732439fa 100644 (file)
  ************************************************************************/
 
 // Some security stuff...
-if (ereg(basename(__FILE__), $_SERVER['PHP_SELF'])) {
+if (!defined('__SECURITY')) {
        $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
        require($INC);
-} elseif (!IS_LOGGED_IN()) {
+} elseif (!IS_MEMBER()) {
        LOAD_URL("modules.php?module=index");
-} elseif (!EXT_IS_ACTIVE("mailid"))) {
+} elseif ((!EXT_IS_ACTIVE("mailid")) && (!IS_ADMIN())) {
        LOAD_URL("modules.php?module=login");
 }
 
 // Add description as navigation point
-ADD_DESCR("member", basename(__FILE__));
+ADD_DESCR("member", __FILE__);
+
+// Shall we display a mail?
+if ((REQUEST_ISSET_GET(('bonusid'))) && (EXT_IS_ACTIVE("bonus"))) {
+       // Display bonus mail by loading it's full data
+       $result_data = SQL_QUERY_ESC("SELECT id, subject, timestamp, cat_id, points, text, is_notify, data_type, time, url
+FROM `{!_MYSQL_PREFIX!}_bonus`
+WHERE id=%s LIMIT 1",
+               array(bigintval(REQUEST_GET('bonusid'))), __FILE__, __LINE__);
+
+       // Load data
+       $content = SQL_FETCHARRAY($result_data);
+
+       // "Translate some data
+       $content['subject']   = COMPILE_CODE($content['subject']);
+       $content['text']      = COMPILE_CODE($content['text']);
+       $content['timestamp'] = MAKE_DATETIME($content['timestamp'], "2");
+       $content['category']  = GET_CATEGORY($content['cat_id']);
+       $content['points']    = TRANSLATE_COMMA($content['points']);
+       $content['is_notify'] = TRANSLATE_YESNO($content['is_notify']);
+       $content['sender']    = _ADMIN_SHORT;
+       $content['time']      = CREATE_FANCY_TIME($content['time']);
+       $content['uid']       = $GLOBALS['userid'];
+
+       // Get timestamp from insert
+       $content['user_status'] = sprintf(MEMBER_MAIL_BONUS_CONFIRMED_ON,
+               MAKE_DATETIME(USER_STATS_GET_TIMESTAMP("bonusid", $content['id']), "2")
+       );
+
+       // Display it depending on mail (data) type
+       LOAD_TEMPLATE("member_mail_bonus_".strtolower($content['data_type']), false, $content);
+
+       // Free result
+       SQL_FREERESULT($result_data);
+} elseif (REQUEST_ISSET_GET(('mailid'))) {
+       // Display regular member mail by loading its full data
+       $result_data = SQL_QUERY_ESC("SELECT s.id, s.subject, p.text, s.timestamp_ordered AS `timestamp`, s.cat_id, pay.price AS points, p.sender, pay.time, p.data_type
+FROM `{!_MYSQL_PREFIX!}_user_stats` AS s
+LEFT JOIN `{!_MYSQL_PREFIX!}_pool` AS p
+ON s.pool_id=p.id
+LEFT JOIN `{!_MYSQL_PREFIX!}_payments` AS pay
+ON p.payment_id=pay.id
+WHERE s.id=%s LIMIT 1",
+               array(bigintval(REQUEST_GET('mailid'))), __FILE__, __LINE__);
+
+       // Load data
+       $content = SQL_FETCHARRAY($result_data);
+
+       // "Translate some data
+       $content['subject']   = COMPILE_CODE($content['subject']);
+       $content['text']      = COMPILE_CODE($content['text']);
+       $content['timestamp'] = MAKE_DATETIME($content['timestamp'], "2");
+       $content['category']  = GET_CATEGORY($content['cat_id']);
+       $content['points']    = TRANSLATE_COMMA($content['points']);
+       $content['time']      = CREATE_FANCY_TIME($content['time']);
+       $content['uid']       = $GLOBALS['userid'];
+
+       // Get timestamp from insert
+       $content['user_status'] = sprintf(MEMBER_MAIL_NORMAL_CONFIRMED_ON,
+               MAKE_DATETIME(USER_STATS_GET_TIMESTAMP("mailid", $content['id']), "2")
+       );
+
+       // Display it depending on mail (data) type
+       LOAD_TEMPLATE("member_mail_normal_".strtolower($content['data_type']), false, $content);
+
+       // Free result
+       SQL_FREERESULT($result_data);
+}
 
 if (EXT_IS_ACTIVE("bonus")) {
        // Load bonus ID
-       $result = SQL_QUERY_ESC("SELECT stats_id, bonus_id, link_type FROM "._MYSQL_PREFIX."_user_links WHERE userid=%s ORDER BY bonus_id DESC",
-        array($GLOBALS['userid']), __FILE__, __LINE__);
+       $result = SQL_QUERY_ESC("SELECT stats_id, bonus_id, link_type FROM `{!_MYSQL_PREFIX!}_user_links` WHERE userid=%s ORDER BY bonus_id DESC, stats_id DESC",
+               array($GLOBALS['userid']), __FILE__, __LINE__);
 } else {
        // Don't load bonus ID
-       $result = SQL_QUERY_ESC("SELECT stats_id, stats_id, link_type FROM "._MYSQL_PREFIX."_user_links WHERE userid=%s ORDER BY stats_id DESC",
-        array($GLOBALS['userid']), __FILE__, __LINE__);
+       $result = SQL_QUERY_ESC("SELECT stats_id, stats_id, link_type FROM `{!_MYSQL_PREFIX!}_user_links` WHERE userid=%s ORDER BY stats_id DESC",
+               array($GLOBALS['userid']), __FILE__, __LINE__);
 }
 
-if (SQL_NUMROWS($result) > 0)
-{
+// Mails left for confirmation?
+if (SQL_NUMROWS($result) > 0) {
        // Please confirm these mails!
-       $sum = "0"; $SW = 2; $OUT = "";
-       while (list($id, $id2, $type) = SQL_FETCHROW($result))
-       {
+       $sum = 0; $SW = 2; $OUT = "";
+       while (list($id, $id2, $type) = SQL_FETCHROW($result)) {
                // Load data from stats table...
-               $cat = "";
+               $cat = ""; $result_data = false;
                switch ($type)
                {
                case "NORMAL":
-                       $result_data = SQL_QUERY_ESC("SELECT subject, subject, timestamp_ordered, cat_id, payment_id, pool_id FROM "._MYSQL_PREFIX."_user_stats WHERE id=%s LIMIT 1",
-                        array(bigintval($id)), __FILE__, __LINE__);
+                       $result_data = SQL_QUERY_ESC("SELECT s.subject, s.timestamp_ordered, s.cat_id, s.payment_id, p.sender
+FROM `{!_MYSQL_PREFIX!}_user_stats` AS s
+LEFT JOIN `{!_MYSQL_PREFIX!}_pool` AS p
+ON s.pool_id=p.id
+WHERE s.id=%s
+LIMIT 1",
+                               array(bigintval($id)), __FILE__, __LINE__);
                        $type = "mailid"; $DATA = $id; $PROBLEM = NORMAL_MAIL_PROBLEM;
                        break;
 
                case "BONUS":
-                       $result_data = SQL_QUERY_ESC("SELECT subject, text, timestamp, cat_id, points, id FROM "._MYSQL_PREFIX."_bonus WHERE id=%s LIMIT 1",
+                       $result_data = SQL_QUERY_ESC("SELECT subject, timestamp, cat_id, points, 0 FROM `{!_MYSQL_PREFIX!}_bonus` WHERE id=%s LIMIT 1",
                         array(bigintval($id2)), __FILE__, __LINE__);
                        $type = "bonusid"; $DATA = $id2; $PROBLEM = BONUS_MAIL_PROBLEM;
                        break;
+
+               default: // Unknown type detected!
+                       DEBUG_LOG(__FILE__, __LINE__, sprintf("Unknown mail type %s detected.", $type));
+                       break;
                }
 
-               if (SQL_NUMROWS($result_data) == 1)
-               {
+               // Data found to this mail?
+               if ((SQL_NUMROWS($result_data) == 1) && (($type == "mailid") || ($type == "bonusid"))) {
                        // Mail was found!
-                       list($subject, $text, $timestamp, $cat, $pay, $pool) = SQL_FETCHROW($result_data);
-                       SQL_FREERESULT($result_data);
-                       if ($type == "NORMAL")
-                       {
-                               $pay = GET_PAY_POINTS($pay, "payment");
-                               $result_text = SQL_QUERY_ESC("SELECT text FROM "._MYSQL_PREFIX."_pool WHERE id=%s LIMIT 1",
-                                array(bigintval($pool)), __FILE__, __LINE__);
-                               list($text) = SQL_FETCHROW($result_text);
-                               SQL_FREERESULT($result_text);
+                       list($subject, $timestamp, $cat, $pay, $sender) = SQL_FETCHROW($result_data);
+
+                       // Subject line found?
+                       if (empty($subject)) {
+                               // No subject line!
+                               $subject = DEFAULT_SUBJECT_LINE;
+                       } else {
+                               // Compile it
+                               $subject = COMPILE_CODE($subject);
+                       }
+
+                       // Prepare sender id
+                       if (($sender > 0) && ($type == "mailid")) {
+                               // Sender id
+                               $sender = bigintval($sender);
+                       } elseif ($type == "bonusid") {
+                               // Is admin
+                               $sender = _ADMIN_SHORT;
+                       } else {
+                               // Deleted
+                               $sender = EMAIL_STATUS_DELETED;
                        }
-                       if (empty($subject)) $subject = DEFAULT_SUBJECT_LINE;
-                       if (empty($text))    $text    = "---";
-                       $subject = COMPILE_CODE($subject);
 
                        // Prepare data for template
                        $content = array(
-                               'sw'     => $SW,
-                               'uid'    => $GLOBALS['userid'],
-                               'data'   => $DATA,
-                               'type'   => $type,
-                               'subj'   => $subject,
-                               'text'   => COMPILE_CODE($text),
-                               'stamp'  => MAKE_DATETIME($timestamp, "0"),
-                               'cat'    => GET_CATEGORY($cat),
-                               'points' => TRANSLATE_COMMA($pay),
+                               'sw'      => $SW,
+                               'uid'     => $GLOBALS['userid'],
+                               'data'    => bigintval($DATA),
+                               'type'    => $type,
+                               'subject' => $subject,
+                               'sender'  => $sender,
+                               'stamp'   => MAKE_DATETIME($timestamp, "2"),
+                               'cat'     => GET_CATEGORY($cat),
+                               'points'  => TRANSLATE_COMMA($pay),
                        );
 
-                       // Load row template and count points
-                       $OUT .= LOAD_TEMPLATE("member_unconfirmed_row", true, $content);
+                       // Load row template
+                       if (getConfig('show_points_unconfirmed') == "Y") {
+                               $OUT .= LOAD_TEMPLATE("member_unconfirmed_row", true, $content);
+                       } else {
+                               $OUT .= LOAD_TEMPLATE("member_unconfirmed_row_nopoints", true, $content);
+                       }
+
+                       // Count points
                        $sum += $pay;
-               }
-                else
-               {
+               } else {
                        // Prepare data for template
                        $content = array(
                                'sw'    => $SW,
@@ -120,11 +208,20 @@ if (SQL_NUMROWS($result) > 0)
                                'probl' => $PROBLEM,
                        );
 
-                       // Problem with mail detected
-                       $OUT .= LOAD_TEMPLATE("member_unconfirmed_404", true, $content);
+                       // Display points or not?
+                       if (getConfig('show_points_unconfirmed') == "Y") {
+                               $OUT .= LOAD_TEMPLATE("member_unconfirmed_404", true, $content);
+                       } else {
+                               $OUT .= LOAD_TEMPLATE("member_unconfirmed_404_nopoints", true, $content);
+                       }
                }
+
+               // Free result
+               SQL_FREERESULT($result_data);
+
+               // Switch color
                $SW = 3 - $SW;
-       }
+       } // END - while
 
        // Free memory
        SQL_FREERESULT($result);
@@ -136,12 +233,14 @@ if (SQL_NUMROWS($result) > 0)
        define('__UNCONFIRMED_ROWS', $OUT);
 
        // Load main template
-       LOAD_TEMPLATE("member_unconfirmed_table");
-}
- else
-{
+       if (getConfig('show_points_unconfirmed') == "Y") {
+               LOAD_TEMPLATE("member_unconfirmed_table");
+       } else {
+               LOAD_TEMPLATE("member_unconfirmed_table_nopoints");
+       }
+} else {
        // No mails left to confirm... :)
-       LOAD_TEMPLATE("admin_settings_saved", false, MEMBER_NO_MAILS_TO_CONFIRM);
+       LOAD_TEMPLATE("admin_settings_saved", false, getMessage('MEMBER_NO_MAILS_TO_CONFIRM'));
 }
 
 //