]> git.mxchange.org Git - mailer.git/blobdiff - inc/functions.php
All, except security block, include()/require() rewritten to own LOAD_INC()/LOAD_INC_...
[mailer.git] / inc / functions.php
index d293cc048aa7b2118497949cfa206ec0970357f7..f071322d043c171fd85417d3dd4f23f0885ee8b3 100644 (file)
@@ -40,7 +40,7 @@ if (!defined('__SECURITY')) {
 // Check if our config file is writeable or not
 function IS_INC_WRITEABLE($inc) {
        // Generate FQFN
-       $fqfn = sprintf("%sinc/%s.php", PATH, $inc);
+       $fqfn = sprintf("%sinc/%s.php", constant('PATH'), $inc);
 
        // Abort by simple test
        if ((FILE_READABLE($fqfn)) && (!is_writeable($fqfn))) {
@@ -238,7 +238,7 @@ function LOAD_TEMPLATE ($template, $return=false, $content=array()) {
        // @DEPRECATED Try to rewrite the if() condition
        if ($template == "member_support_form") {
                // Support request of a member
-               $result = SQL_QUERY_ESC("SELECT userid, gender, surname, family, email FROM `{!MYSQL_PREFIX!}_user_data` WHERE userid=%s LIMIT 1",
+               $result = SQL_QUERY_ESC("SELECT userid, gender, surname, family, email FROM `{!_MYSQL_PREFIX!}_user_data` WHERE userid=%s LIMIT 1",
                        array($GLOBALS['userid']), __FILE__, __LINE__);
 
                // Is content an array?
@@ -265,7 +265,7 @@ function LOAD_TEMPLATE ($template, $return=false, $content=array()) {
        $date_time = MAKE_DATETIME(time(), "1");
 
        // Base directory
-       $BASE = sprintf("%stemplates/%s/html/", PATH, GET_LANGUAGE());
+       $BASE = sprintf("%stemplates/%s/html/", constant('PATH'), GET_LANGUAGE());
        $MODE = "";
 
        // Check for admin/guest/member templates
@@ -392,7 +392,7 @@ function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML = "N", $FROM = "") {
                        return;
                } else {
                        // Load email address
-                       $result_email = SQL_QUERY_ESC("SELECT email FROM `{!MYSQL_PREFIX!}_user_data` WHERE userid=%s LIMIT 1", array(bigintval($TO)), __FILE__, __LINE__);
+                       $result_email = SQL_QUERY_ESC("SELECT email FROM `{!_MYSQL_PREFIX!}_user_data` WHERE userid=%s LIMIT 1", array(bigintval($TO)), __FILE__, __LINE__);
                        //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):numRows=".SQL_NUMROWS($result_email)."<br />\n";
 
                        // Does the user exist?
@@ -401,7 +401,7 @@ function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML = "N", $FROM = "") {
                                list($TO) = SQL_FETCHROW($result_email);
                        } else {
                                // Set webmaster
-                               $TO = WEBMASTER;
+                               $TO = constant('WEBMASTER');
                        }
 
                        // Free result
@@ -409,7 +409,7 @@ function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML = "N", $FROM = "") {
                }
        } elseif ("$TO" == "0") {
                // Is the webmaster!
-               $TO = WEBMASTER;
+               $TO = constant('WEBMASTER');
        }
        //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):TO={$TO}<br />\n";
 
@@ -476,12 +476,12 @@ function SEND_RAW_EMAIL ($to, $subject, $msg, $from) {
        // Shall we use PHPMailer class or legacy mode?
        if (CHECK_PHPMAILER_USAGE()) {
                // Use PHPMailer class with SMTP enabled
-               require_once(PATH."inc/phpmailer/class.phpmailer.php");
-               require_once(PATH."inc/phpmailer/class.smtp.php");
+               LOAD_INC_ONCE("inc/phpmailer/class.phpmailer.php");
+               LOAD_INC_ONCE("inc/phpmailer/class.smtp.php");
 
                // get new instance
                $mail = new PHPMailer();
-               $mail->PluginDir  = sprintf("%sinc/phpmailer/", PATH);
+               $mail->PluginDir  = sprintf("%sinc/phpmailer/", constant('PATH'));
 
                $mail->IsSMTP();
                $mail->SMTPAuth   = true;
@@ -490,7 +490,7 @@ function SEND_RAW_EMAIL ($to, $subject, $msg, $from) {
                $mail->Username   = SMTP_USER;
                $mail->Password   = SMTP_PASSWORD;
                if (empty($from)) {
-                       $mail->From = WEBMASTER;
+                       $mail->From = constant('WEBMASTER');
                } else {
                        $mail->From = $from;
                }
@@ -666,7 +666,7 @@ function SELECTION_COUNT($array) {
 }
 //
 function IMG_CODE ($code, $type, $DATA, $uid) {
-       return "<IMG border=\"0\" alt=\"Code\" src=\"".URL."/mailid_top.php?uid=".$uid."&amp;".$type."=".$DATA."&amp;mode=img&amp;code=".$code."\">";
+       return "<IMG border=\"0\" alt=\"Code\" src=\"{!URL!}/mailid_top.php?uid=".$uid."&amp;".$type."=".$DATA."&amp;mode=img&amp;code=".$code."\">";
 }
 //
 function TRANSLATE_STATUS($status) {
@@ -701,7 +701,7 @@ function GET_LANGUAGE() {
        global $cacheArray;
 
        // Set default return value to default language from config
-       $ret = DEFAULT_LANG;
+       $ret = constant('DEFAULT_LANG');
 
        // Init variable
        $lang = "";
@@ -724,7 +724,7 @@ function GET_LANGUAGE() {
                $ret = get_session('mx_lang');
 
                // Fixes a warning before the session has the mx_lang constant
-               if (empty($ret)) $ret = DEFAULT_LANG;
+               if (empty($ret)) $ret = constant('DEFAULT_LANG');
        }
 
        // Cache entry
@@ -752,7 +752,7 @@ function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") {
        $nick = "---";
 
        // Keept for backward-compatiblity (please replace these variables against our new {!CONST!} syntax!)
-       // No longer used: $MAIN_TITLE = MAIN_TITLE; $URL = URL; $WEBMASTER = WEBMASTER;
+       // No longer used: $MAIN_TITLE = MAIN_TITLE; $URL = constant('URL'); $WEBMASTER = constant('WEBMASTER');
 
        // Prepare IP number and User Agent
        $REMOTE_ADDR     = GET_REMOTE_ADDR();
@@ -771,7 +771,7 @@ function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") {
        } // END - if
 
        // Neutral email address is default
-       $email = WEBMASTER;
+       $email = constant('WEBMASTER');
 
        // Expiration in a nice output format
        if (getConfig('auto_purge') == 0) {
@@ -795,12 +795,12 @@ function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") {
                if (EXT_IS_ACTIVE("nickname")) {
                        //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):NICKNAME!<br />\n";
                        // Load nickname
-                       $result = SQL_QUERY_ESC("SELECT surname, family, gender, email, nickname FROM `{!MYSQL_PREFIX!}_user_data` WHERE userid=%s LIMIT 1",
+                       $result = SQL_QUERY_ESC("SELECT surname, family, gender, email, nickname FROM `{!_MYSQL_PREFIX!}_user_data` WHERE userid=%s LIMIT 1",
                                array(bigintval($UID)), __FILE__, __LINE__);
                } else {
                        //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):NO-NICK!<br />\n";
                        /// Load normal data
-                       $result = SQL_QUERY_ESC("SELECT surname, family, gender, email FROM `{!MYSQL_PREFIX!}_user_data` WHERE userid=%s LIMIT 1",
+                       $result = SQL_QUERY_ESC("SELECT surname, family, gender, email FROM `{!_MYSQL_PREFIX!}_user_data` WHERE userid=%s LIMIT 1",
                                array(bigintval($UID)), __FILE__, __LINE__);
                }
 
@@ -823,7 +823,7 @@ function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") {
        $DATA['email'] = $email;
 
        // Base directory
-       $BASE = sprintf("%stemplates/%s/emails/", PATH, GET_LANGUAGE());
+       $BASE = sprintf("%stemplates/%s/emails/", constant('PATH'), GET_LANGUAGE());
 
        // Check for admin/guest/member templates
        if (strpos($template, "admin_") > -1) {
@@ -950,9 +950,9 @@ function LOAD_URL($URL, $addUrlData=true) {
                header ("Location: ".str_replace("&amp;", "&", $URL));
        } else {
                // Output error message
-               require(PATH."inc/header.php");
+               LOAD_INC("inc/header.php");
                LOAD_TEMPLATE("redirect_url", false, str_replace("&amp;", "&", $URL));
-               require(PATH."inc/footer.php");
+               LOAD_INC("inc/footer.php");
        }
        exit();
 }
@@ -1315,11 +1315,11 @@ function GENERATE_IMAGE($img_code, $header=true) {
                return;
        } elseif (!$header) {
                // Return in an HTML code code
-               return "<IMG src=\"".URL."/img.php?code=".$img_code."\">\n";
+               return "<IMG src=\"{!URL!}/img.php?code=".$img_code."\">\n";
        }
 
        // Load image
-       $img = sprintf("%s/theme/%s/images/code_bg.%s", PATH, GET_CURR_THEME(), getConfig('img_type'));
+       $img = sprintf("%s/theme/%s/images/code_bg.%s", constant('PATH'), GET_CURR_THEME(), getConfig('img_type'));
        if (FILE_READABLE($img)) {
                // Switch image type
                switch (getConfig('img_type'))
@@ -1592,16 +1592,16 @@ function SEND_ADMIN_EMAILS_PRO($subj, $template, $content, $UID) {
        } // END - if
 
        // Check which admin shall receive this mail
-       $result = SQL_QUERY_ESC("SELECT DISTINCT admin_id FROM `{!MYSQL_PREFIX!}_admins_mails` WHERE mail_template='%s' ORDER BY admin_id",
+       $result = SQL_QUERY_ESC("SELECT DISTINCT admin_id FROM `{!_MYSQL_PREFIX!}_admins_mails` WHERE mail_template='%s' ORDER BY admin_id",
                array($template), __FILE__, __LINE__);
        if (SQL_NUMROWS($result) == 0) {
                // Create new entry (to all admins)
-               SQL_QUERY_ESC("INSERT INTO `{!MYSQL_PREFIX!}_admins_mails` (admin_id, mail_template) VALUES (0, '%s')",
+               SQL_QUERY_ESC("INSERT INTO `{!_MYSQL_PREFIX!}_admins_mails` (admin_id, mail_template) VALUES (0, '%s')",
                        array($template), __FILE__, __LINE__);
        } else {
                // Load admin IDs...
                $aids = array();
-               while(list($aid) = SQL_FETCHROW($result)) {
+               while (list($aid) = SQL_FETCHROW($result)) {
                        $aids[] = $aid;
                }
 
@@ -1616,10 +1616,10 @@ function SEND_ADMIN_EMAILS_PRO($subj, $template, $content, $UID) {
                        return;
                } elseif ($aid == "0") {
                        // Select all email adresses
-                       $result = SQL_QUERY("SELECT email FROM `{!MYSQL_PREFIX!}_admins` ORDER BY id", __FILE__, __LINE__);
+                       $result = SQL_QUERY("SELECT email FROM `{!_MYSQL_PREFIX!}_admins` ORDER BY `id`", __FILE__, __LINE__);
                } else {
                        // If Admin-ID is not "to-all" select
-                       $result = SQL_QUERY_ESC("SELECT email FROM `{!MYSQL_PREFIX!}_admins` WHERE id IN (%s) ORDER BY id", array($aid), __FILE__, __LINE__);
+                       $result = SQL_QUERY_ESC("SELECT email FROM `{!_MYSQL_PREFIX!}_admins` WHERE id IN (%s) ORDER BY `id`", array($aid), __FILE__, __LINE__);
                }
        }
 
@@ -1673,7 +1673,7 @@ function ADD_EMAIL_NAV($PAGES, $offset, $show_form, $colspan, $return=false) {
                        $NAV .= "<strong>-";
                } else {
                        // Open anchor tag and add base URL
-                       $NAV .= "<a href=\"".URL."/modules.php?module=admin&amp;what=".$GLOBALS['what']."&amp;page=".$page."&amp;offset=".$offset;
+                       $NAV .= "<a href=\"{!URL!}/modules.php?module=admin&amp;what=".$GLOBALS['what']."&amp;page=".$page."&amp;offset=".$offset;
 
                        // Add userid when we shall show all mails from a single member
                        if ((isset($_GET['u_id'])) && (bigintval($_GET['u_id']) > 0)) $NAV .= "&amp;u_id=".bigintval($_GET['u_id']);
@@ -2240,13 +2240,13 @@ function FIX_DELETED_COOKIES ($cookies) {
 // Output error messages in a fasioned way and die...
 function mxchange_die ($msg) {
        // Load header
-       require_once(PATH."inc/header.php");
+       LOAD_INC_ONCE("inc/header.php");
 
        // Load the message template
        LOAD_TEMPLATE("admin_settings_saved", false, $msg);
 
        // Load footer
-       require(PATH."inc/footer.php");
+       LOAD_INC("inc/footer.php");
 
        // Exit explicitly
        exit;
@@ -2639,13 +2639,13 @@ function REBUILD_CACHE ($cache, $inc="") {
                // Include file given?
                if (!empty($inc)) {
                        // Construct FQFN
-                       $fqfn = sprintf("%sinc/loader/load_cache-%s.php", PATH, $inc);
+                       $INC = sprintf("inc/loader/load_cache-%s.php", $inc);
 
                        // Is the include there?
-                       if (FILE_READABLE($fqfn)) {
+                       if (FILE_READABLE($INC)) {
                                // And rebuild it from scratch
                                //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>): inc={$inc} - LOADED!<br />\n";
-                               require($fqfn);
+                               LOAD_INC($INC);
                        } else {
                                // Include not found!
                                DEBUG_LOG(__FUNCTION__, __LINE__, "Include {$inc} not found. cache={$cache}");
@@ -2775,10 +2775,10 @@ function ADD_NEW_BONUS_MAIL ($data, $mode="", $output=true) {
                );
 
                // Mail inserted into bonus pool
-               if ($output) LOAD_TEMPLATE("admin_settings_saved", false, ADMIN_BONUS_SEND);
+               if ($output) LOAD_TEMPLATE("admin_settings_saved", false, getMessage('ADMIN_BONUS_SEND'));
        } elseif ($output) {
                // More entered than can be reached!
-               LOAD_TEMPLATE("admin_settings_saved", false, ADMIN_MORE_SELECTED);
+               LOAD_TEMPLATE("admin_settings_saved", false, getMessage('ADMIN_MORE_SELECTED'));
        } else {
                // Debug log
                DEBUG_LOG(__FUNCTION__, __LINE__, " cat={$data['cat']},receiver={$data['receiver']},data=".base64_encode(serialize($data))." More selected, than available!");
@@ -2872,10 +2872,13 @@ function getMessage ($messageId) {
        $return = "!".$messageId."!";
 
        // Is the language string found?
-       if (isset($GLOBALS['msg'][$messageId])) {
-               // Language array element found
+       if (isset($GLOBALS['msg'][strtolower($messageId)])) {
+               // Language array element found in small_letters
                $return = $GLOBALS['msg'][$messageId];
-       } elseif (defined($messageId)) {
+       } elseif (isset($GLOBALS['msg'][strtoupper($messageId)])) {
+               // @DEPRECATED Language array element found in BIG_LETTERS
+               $return = $GLOBALS['msg'][$messageId];
+       } elseif (defined(strtoupper($messageId))) {
                // @DEPRECATED Deprecated constant found
                $return = constant($messageId);
        } else {
@@ -2912,13 +2915,13 @@ function GET_CURR_THEME() {
                } // END - if
        } elseif ((!isBooleanConstantAndTrue('mxchange_installed')) && ((isBooleanConstantAndTrue('mxchange_installing')) || ($CSS == true)) && ((!empty($_GET['theme'])) || (!empty($_POST['theme'])))) {
                // Prepare FQFN for checking
-               $theme = sprintf("%stheme/%s/theme.php", PATH, SQL_ESCAPE($_GET['theme']));
+               $theme = sprintf("%stheme/%s/theme.php", constant('PATH'), SQL_ESCAPE($_GET['theme']));
 
                // Installation mode active
                if ((!empty($_GET['theme'])) && (FILE_READABLE($theme))) {
                        // Set cookie from URL data
                        set_session('mxchange_theme', SQL_ESCAPE($_GET['theme']));
-               } elseif (FILE_READABLE(sprintf("%stheme/%s/theme.php", PATH, SQL_ESCAPE($_POST['theme'])))) {
+               } elseif (FILE_READABLE(sprintf("%stheme/%s/theme.php", constant('PATH'), SQL_ESCAPE($_POST['theme'])))) {
                        // Set cookie from posted data
                        set_session('mxchange_theme', SQL_ESCAPE($_POST['theme']));
                }
@@ -2931,7 +2934,7 @@ function GET_CURR_THEME() {
        }
 
        // Add (maybe) found theme.php file to inclusion list
-       $theme = sprintf("%stheme/%s/theme.php", PATH, SQL_ESCAPE($ret));
+       $theme = sprintf("%stheme/%s/theme.php", constant('PATH'), SQL_ESCAPE($ret));
 
        // Try to load the requested include file
        if (FILE_READABLE($theme)) $INC_POOL[] = $theme;
@@ -2962,7 +2965,7 @@ function THEME_GET_ID ($name) {
                incrementConfigEntry('cache_hits');
        } elseif (GET_EXT_VERSION("cache") != "0.1.8") {
                // Check if current theme is already imported or not
-               $result = SQL_QUERY_ESC("SELECT id FROM `{!MYSQL_PREFIX!}_themes` WHERE theme_path='%s' LIMIT 1",
+               $result = SQL_QUERY_ESC("SELECT id FROM `{!_MYSQL_PREFIX!}_themes` WHERE theme_path='%s' LIMIT 1",
                        array($name), __FILE__, __LINE__);
 
                // Entry found?
@@ -3066,7 +3069,7 @@ function getActualVersion ($type = 0) {
        $new = false;
 
        // FQFN of revision file
-       $FQFN = sprintf("%sinc/cache/.revision", PATH);
+       $FQFN = sprintf("%sinc/cache/.revision", constant('PATH'));
 
        // Check for revision file
        if (!FILE_READABLE($FQFN)) {
@@ -3102,6 +3105,48 @@ function getActualVersion ($type = 0) {
                return trim($akt_vers[$type]);
        }
 }
+
+// Loads an include file and logs any missing files for debug purposes
+function LOAD_INC ($INC) {
+       // Get constant path
+       $PATH = constant('PATH');
+
+       // Use the include file name directly
+       // @TODO Try to find all locations where an FQFN is given to these two
+       // @TODO functions and avoid it.
+       $FQFN = $INC;
+
+       // Check if PATH is in $INC
+       if (substr($INC, 0, $PATH) != $PATH) {
+               // Add it. This is why we need a trailing slash in config.php
+               $FQFN = $PATH . $INC;
+       } // END - if
+
+       // Is the include file there?
+       if (!FILE_READABLE($FQFN)) {
+               // Not there so log it
+               DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Include file %s not found.", basename($INC)));
+               return false;
+       } // END - if
+
+       // Try to load it
+       require($FQFN);
+}
+
+// Loads an include file once
+function LOAD_INC_ONCE ($INC) {
+       global $cacheArray;
+
+       // Is it not loaded?
+       if (!isset($cacheArray['load_once'][$INC])) {
+               // Then try to load it
+               LOAD_INC($INC);
+
+               // And mark it as loaded
+               $cacheArray['load_once'][$INC] = true;
+       } // END - if
+}
+
 //////////////////////////////////////////////////
 // AUTOMATICALLY RE-GENERATED MISSING FUNCTIONS //
 //////////////////////////////////////////////////