Fixes/rewrites for missing sql_patches and check on admin's default access mode ...
[mailer.git] / inc / mysql-manager.php
index c019248ea03d23b3979f8d096028ef7fb5d29803..db3015241a05653e8326fa33ccd6c73562a577eb 100644 (file)
  * -------------------------------------------------------------------- *
  * Kurzbeschreibung  : Alle MySQL-Relevanten Funktionen                 *
  * -------------------------------------------------------------------- *
- *                                                                      *
+ * $Revision::                                                        $ *
+ * $Date::                                                            $ *
+ * $Tag:: 0.2.1-FINAL                                                 $ *
+ * $Author::                                                          $ *
+ * Needs to be in all Files and every File needs "svn propset           *
+ * svn:keywords Date Revision" (autoprobset!) at least!!!!!!            *
  * -------------------------------------------------------------------- *
  * Copyright (c) 2003 - 2008 by Roland Haeder                           *
  * For more information visit: http://www.mxchange.org                  *
@@ -54,7 +59,7 @@ function ADD_MODULE_TITLE ($mod) {
                        incrementConfigEntry('cache_hits');
                } elseif (!EXT_IS_ACTIVE("cache")) {
                        // Load from database
-                       $result = SQL_QUERY_ESC("SELECT title FROM `{!_MYSQL_PREFIX!}_mod_reg` WHERE module='%s' LIMIT 1",
+                       $result = SQL_QUERY_ESC("SELECT title FROM `{!_MYSQL_PREFIX!}_mod_reg` WHERE `module`='%s' LIMIT 1",
                                array($mod), __FUNCTION__, __LINE__);
                        list($name) = SQL_FETCHROW($result);
                        SQL_FREERESULT($result);
@@ -137,7 +142,7 @@ function checkModulePermissions ($mod) {
                }
        } elseif (!EXT_IS_ACTIVE("cache")) {
                // Check for module in database
-               $result = SQL_QUERY_ESC("SELECT locked, hidden, admin_only, mem_only FROM `{!_MYSQL_PREFIX!}_mod_reg` WHERE module='%s' LIMIT 1",
+               $result = SQL_QUERY_ESC("SELECT locked, hidden, admin_only, mem_only FROM `{!_MYSQL_PREFIX!}_mod_reg` WHERE `module`='%s' LIMIT 1",
                        array($mod_chk), __FUNCTION__, __LINE__);
                if (SQL_NUMROWS($result) == 1) {
                        // Read data
@@ -250,7 +255,7 @@ function ADD_DESCR ($ACC_LVL, $FQFN, $return = false, $output = true) {
                        $modCheck = $GLOBALS['module'];
                        break;
                }
-               $AND = " AND (what='' OR `what` IS NULL)";
+               $AND = " AND (`what`='' OR `what` IS NULL)";
        } elseif (substr($file, 0, 5) == "what-") {
                // This is an admin what file!
                $type = "what";
@@ -357,7 +362,7 @@ function ADD_MENU ($MODE, $act, $wht) {
 
        // is the menu action valid?
        if (!VALIDATE_MENU_ACTION($MODE, $act, $wht, true)) {
-               return getMessage('CODE_MENU_NOT_VALID');
+               return getCode('MENU_NOT_VALID');
        } // END - if
 
        // Non-admin shall not see all menus
@@ -366,7 +371,7 @@ function ADD_MENU ($MODE, $act, $wht) {
        } // END - if
 
        // Load SQL data and add the menu to the output stream...
-       $result_main = SQL_QUERY_ESC("SELECT title, action FROM `{!_MYSQL_PREFIX!}_%s_menu` WHERE (what='' OR `what` IS NULL)".$AND." ORDER BY `sort`",
+       $result_main = SQL_QUERY_ESC("SELECT title, action FROM `{!_MYSQL_PREFIX!}_%s_menu` WHERE (`what`='' OR `what` IS NULL)".$AND." ORDER BY `sort`",
                array($MODE), __FUNCTION__, __LINE__);
        //* DEBUG: */ echo __LINE__."/".$main_cnt."/".$main_action."/".$sub_what.":".$GLOBALS['what']."*<br />\n";
        if (SQL_NUMROWS($result_main) > 0) {
@@ -624,10 +629,10 @@ function IS_MEMBER () {
        FIX_DELETED_COOKIES(array('userid', 'u_hash'));
 
        // Are cookies set?
-       if ((!empty($GLOBALS['userid'])) && (isSessionVariableSet('u_hash'))) {
+       if ((isUserIdSet()) && (isSessionVariableSet('u_hash'))) {
                // Cookies are set with values, but are they valid?
                $result = SQL_QUERY_ESC("SELECT password, status, last_module, last_online FROM `{!_MYSQL_PREFIX!}_user_data` WHERE userid=%s LIMIT 1",
-                       array($GLOBALS['userid']), __FUNCTION__, __LINE__);
+                       array(getUserId()), __FUNCTION__, __LINE__);
                if (SQL_NUMROWS($result) == 1) {
                        // Load data from cookies
                        list($password, $status, $mod, $onl) = SQL_FETCHROW($result);
@@ -687,21 +692,21 @@ function VALIDATE_MENU_ACTION ($MODE, $act, $wht, $UPDATE=false) {
        $ret = false;
 
        // Look in all menus or only unlocked
-       $ADD = "";
-       if ((!IS_ADMIN()) && ($MODE != "admin")) $ADD = " AND `locked`='N'";
+       $add = "";
+       if ((!IS_ADMIN()) && ($MODE != "admin")) $add = " AND `locked`='N'";
 
        //* DEBUG: */ echo __LINE__.":".$MODE."/".$act."/".$wht."*<br />\n";
        if (($MODE != "admin") && ($UPDATE === true)) {
                // Update guest or member menu
-               $sql = SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_%s_menu` SET counter=counter+1 WHERE `action`='%s' AND `what`='%s'".$ADD." LIMIT 1",
+               $sql = SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_%s_menu` SET counter=counter+1 WHERE `action`='%s' AND `what`='%s'".$add." LIMIT 1",
                        array($MODE, $act, $wht), __FUNCTION__, __LINE__, false);
        } elseif (($wht != "overview") && (!empty($wht))) {
                // Other actions
-               $sql = SQL_QUERY_ESC("SELECT id, what FROM `{!_MYSQL_PREFIX!}_%s_menu` WHERE `action`='%s' AND `what`='%s'".$ADD." ORDER BY action DESC LIMIT 1",
+               $sql = SQL_QUERY_ESC("SELECT id, what FROM `{!_MYSQL_PREFIX!}_%s_menu` WHERE `action`='%s' AND `what`='%s'".$add." ORDER BY action DESC LIMIT 1",
                        array($MODE, $act, $wht), __FUNCTION__, __LINE__, false);
        } else {
                // Admin login overview
-               $sql = SQL_QUERY_ESC("SELECT id, what FROM `{!_MYSQL_PREFIX!}_%s_menu` WHERE `action`='%s' AND (what='' OR `what` IS NULL)".$ADD." ORDER BY action DESC LIMIT 1",
+               $sql = SQL_QUERY_ESC("SELECT id, what FROM `{!_MYSQL_PREFIX!}_%s_menu` WHERE `action`='%s' AND (`what`='' OR `what` IS NULL)".$add." ORDER BY action DESC LIMIT 1",
                        array($MODE, $act), __FUNCTION__, __LINE__, false);
        }
 
@@ -756,7 +761,7 @@ function SEND_MODE_MAILS($mod, $modes) {
 
        // Load hash
        $result_main = SQL_QUERY_ESC("SELECT password FROM `{!_MYSQL_PREFIX!}_user_data` WHERE userid=%s AND `status`='CONFIRMED' LIMIT 1",
-               array($GLOBALS['userid']), __FUNCTION__, __LINE__);
+               array(getUserId()), __FUNCTION__, __LINE__);
        if (SQL_NUMROWS($result_main) == 1) {
                // Load hash from database
                list($hashDB) = SQL_FETCHROW($result_main);
@@ -769,7 +774,7 @@ function SEND_MODE_MAILS($mod, $modes) {
                if (($hash == get_session('u_hash')) || (REQUEST_POST('pass1') == REQUEST_POST('pass2'))) {
                        // Load user's data
                        $result = SQL_QUERY_ESC("SELECT gender, surname, family, street_nr, country, zip, city, email FROM `{!_MYSQL_PREFIX!}_user_data` WHERE userid=%s AND password='%s' LIMIT 1",
-                               array($GLOBALS['userid'], $hashDB), __FUNCTION__, __LINE__);
+                               array(getUserId(), $hashDB), __FUNCTION__, __LINE__);
                        if (SQL_NUMROWS($result) == 1) {
                                // Load the data
                                $DATA = SQL_FETCHROW($result);
@@ -813,7 +818,7 @@ function SEND_MODE_MAILS($mod, $modes) {
                                        } // END - if
 
                                        // Load template
-                                       $msg = LOAD_EMAIL_TEMPLATE("member_mydata_notify", $content, $GLOBALS['userid']);
+                                       $msg = LOAD_EMAIL_TEMPLATE("member_mydata_notify", $content, getUserId());
 
                                        if (getConfig('admin_notify') == "Y") {
                                                // The admin needs to be notified about a profile change
@@ -860,7 +865,7 @@ function SEND_MODE_MAILS($mod, $modes) {
        if (empty($content)) {
                if ((!empty($sub_adm)) && (!empty($msg_admin))) {
                        // Send admin mail
-                       SEND_ADMIN_NOTIFICATION($sub_adm, $msg_admin, $content, $GLOBALS['userid']);
+                       SEND_ADMIN_NOTIFICATION($sub_adm, $msg_admin, $content, getUserId());
                } elseif (getConfig('admin_notify') == "Y") {
                        // Cannot send mails to admin!
                        $content = getMessage('CANNOT_SEND_ADMIN_MAILS');
@@ -878,7 +883,7 @@ function SEND_MODE_MAILS($mod, $modes) {
 function countModuleHit($mod) {
        if ($mod != "css") {
                // Do count all other modules but not accesses on CSS file css.php!
-               SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_mod_reg` SET clicks=clicks+1 WHERE module='%s' LIMIT 1",
+               SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_mod_reg` SET clicks=clicks+1 WHERE `module`='%s' LIMIT 1",
                        array($mod), __FUNCTION__, __LINE__);
        } // END - if
 }
@@ -938,7 +943,7 @@ function GET_ACTION ($MODE, &$wht) {
                if (isAdminRegistered()) {
                        // Redirect
                        // @TODO Why does this lead into an endless loop but we still need it???
-                       // Commented out LOAD_URL("admin.php");
+                       // @TODO Commented out LOAD_URL("admin.php");
                } // END - if
        }
 
@@ -1012,31 +1017,33 @@ function GET_PAY_POINTS ($pid, $lookFor = "price") {
        return $ret;
 }
 
-// Remove a receiver's ID from $ARRAY and add a link for him to confirm
-function REMOVE_RECEIVER (&$ARRAY, $key, $uid, $pool_id, $stats_id="", $bonus=false) {
+// Remove a receiver's ID from $receivers and add a link for him to confirm
+function REMOVE_RECEIVER (&$receivers, $key, $uid, $pool_id, $stats_id="", $bonus=false) {
+       // Default is not removed
        $ret = "failed";
-       if ($uid > 0)
-       {
+
+       // Is the userid valid?
+       if ($uid > 0) {
                // Remove entry from array
-               unset($ARRAY[$key]);
+               unset($receivers[$key]);
 
                // Is there already a line for this user available?
-               if ($stats_id > 0)
-               {
+               if ($stats_id > 0) {
                        // Only when we got a real stats ID continue searching for the entry
                        $type = "NORMAL"; $rowName = "stats_id";
                        if ($bonus) { $type = "BONUS"; $rowName = "bonus_id"; }
+
+                       // Try to look the entry up
                        $result = SQL_QUERY_ESC("SELECT id FROM `{!_MYSQL_PREFIX!}_user_links` WHERE %s='%s' AND userid=%s AND link_type='%s' LIMIT 1",
-                        array($rowName, $stats_id, bigintval($uid), $type), __FUNCTION__, __LINE__);
-                       if (SQL_NUMROWS($result) == 0)
-                       {
-                               // No, so we add one!
+                               array($rowName, $stats_id, bigintval($uid), $type), __FUNCTION__, __LINE__);
+
+                       // Was it *not* found?
+                       if (SQL_NUMROWS($result) == 0) {
+                               // So we add one!
                                SQL_QUERY_ESC("INSERT INTO `{!_MYSQL_PREFIX!}_user_links` (%s, userid, link_type) VALUES ('%s','%s','%s')",
-                                array($rowName, $stats_id, bigintval($uid), $type), __FUNCTION__, __LINE__);
+                                       array($rowName, $stats_id, bigintval($uid), $type), __FUNCTION__, __LINE__);
                                $ret = "done";
-                       }
-                        else
-                       {
+                       } else {
                                // Already found
                                $ret = "already";
                        }
@@ -1045,15 +1052,27 @@ function REMOVE_RECEIVER (&$ARRAY, $key, $uid, $pool_id, $stats_id="", $bonus=fa
                        SQL_FREERESULT($result);
                }
        }
+
        // Return status for sending routine
        return $ret;
 }
 
 // Calculate sum (default) or count records of given criteria
-function GET_TOTAL_DATA ($search, $tableName, $lookFor, $whereStatement="userid", $onlyRows=false, $add="") {
+function GET_TOTAL_DATA ($search, $tableName, $lookFor = "id", $whereStatement = "userid", $countRows = false, $add = "") {
        $ret = 0;
        //* DEBUG: */ echo $search."/".$tableName."/".$lookFor."/".$whereStatement."/".$add."<br />\n";
-       if (($onlyRows) || ($lookFor == "userid")) {
+       if ((empty($search)) && ($search != "0")) {
+               // Count or sum whole table?
+               if ($countRows === true) {
+                       // Count whole table
+                       $result = SQL_QUERY_ESC("SELECT COUNT(`%s`) FROM `{!_MYSQL_PREFIX!}_%s`".$add,
+                               array($lookFor, $tableName), __FUNCTION__, __LINE__);
+               } else {
+                       // Sum whole table
+                       $result = SQL_QUERY_ESC("SELECT SUM(`%s`) FROM `{!_MYSQL_PREFIX!}_%s`".$add,
+                               array($lookFor, $tableName), __FUNCTION__, __LINE__);
+               }
+       } elseif (($countRows === true) || ($lookFor == "userid")) {
                // Count rows
                //* DEBUG: */ echo "COUNT!<br />\n";
                $result = SQL_QUERY_ESC("SELECT COUNT(`%s`) FROM `{!_MYSQL_PREFIX!}_%s` WHERE `%s`='%s'".$add,
@@ -1453,7 +1472,11 @@ function GET_ADMIN_DEFAULT_ACL ($aid) {
        // By default an invalid ACL value is returned
        $ret = "***";
 
-       if (isset($GLOBALS['cache_array']['admins']['def_acl'][$aid])) {
+       // Is sql_patches there and was it found in cache?
+       if (!EXT_IS_ACTIVE("sql_patches")) {
+               // Not found, which is bad, so we need to allow all
+               $ret =  "allow";
+       } elseif (isset($GLOBALS['cache_array']['admins']['def_acl'][$aid])) {
                // Use cache
                $ret = $GLOBALS['cache_array']['admins']['def_acl'][$aid];
 
@@ -1523,13 +1546,19 @@ function ADD_OPTION_LINES ($table, $id, $name, $default="", $special="", $where=
 }
 // Activate exchange
 function activateExchange () {
+       // Is the extension 'user' there?
+       if (!EXT_IS_ACTIVE("user")) {
+               // Silently abort here
+               return false;
+       } // END - if
+
        // Check total amount of users
        $totalUsers = GET_TOTAL_DATA("CONFIRMED", "user_data", "userid", "status", true, " AND max_mails > 0");
 
        if ($totalUsers >= getConfig('activate_xchange')) {
                // Activate System
                SET_SQLS(array(
-                       "UPDATE `{!_MYSQL_PREFIX!}_mod_reg` SET `locked`='N', hidden='N', mem_only='Y' WHERE module='order' LIMIT 1",
+                       "UPDATE `{!_MYSQL_PREFIX!}_mod_reg` SET `locked`='N', hidden='N', mem_only='Y' WHERE `module`='order' LIMIT 1",
                        "UPDATE `{!_MYSQL_PREFIX!}_member_menu` SET `visible`='Y', `locked`='N' WHERE `what`='order' OR `what`='unconfirmed' LIMIT 2",
                        "UPDATE `{!_MYSQL_PREFIX!}_config` SET activate_xchange='0' WHERE config=0 LIMIT 1"
                ));
@@ -1985,8 +2014,8 @@ function USER_STATS_GET_TIMESTAMP ($type, $data, $uid = 0) {
        $stamp = 0;
 
        // User id set?
-       if ((isset($GLOBALS['userid'])) && ($uid == 0)) {
-               $uid = $GLOBALS['userid'];
+       if ((isUserIdSet()) && ($uid == 0)) {
+               $uid = getUserId();
        } // END - if
 
        // Is the extension installed and updated?
@@ -2038,16 +2067,16 @@ function USER_STATS_INSERT_RECORD ($uid, $type, $data) {
 function GET_USER_REF_POINTS ($uid, $level) {
        //* DEBUG: */ print "----------------------- <font color=\"#00aa00\">".__FUNCTION__." - ENTRY</font> ------------------------<ul><li>\n";
        // Default is no refs and no nickname
-       $ADD = "";
+       $add = "";
        $refs = array();
 
        // Do we have nickname extension installed?
        if (EXT_IS_ACTIVE("nickname")) {
-               $ADD = ", ud.nickname";
+               $add = ", ud.nickname";
        } // END - if
 
        // Get refs from database
-       $result = SQL_QUERY_ESC("SELECT ur.id, ur.refid, ud.status, ud.last_online, ud.mails_confirmed, ud.emails_received".$ADD."
+       $result = SQL_QUERY_ESC("SELECT ur.id, ur.refid, ud.status, ud.last_online, ud.mails_confirmed, ud.emails_received".$add."
 FROM `{!_MYSQL_PREFIX!}_user_refs` AS ur
 LEFT JOIN `{!_MYSQL_PREFIX!}_user_points` AS up
 ON ur.refid=up.userid AND ur.level=0