]> git.mxchange.org Git - mailer.git/blobdiff - inc/libs/admins_functions.php
Return a value ... :)
[mailer.git] / inc / libs / admins_functions.php
index 5338cbdf59333665da0afb574cc7feb454e4c198..15f781889d7a8200bde175ae1a342b2735776c67 100644 (file)
@@ -17,7 +17,7 @@
  * -------------------------------------------------------------------- *
  * Copyright (c) 2003 - 2009 by Roland Haeder                           *
  * Copyright (c) 2009 - 2011 by Mailer Developer Team                   *
- * For more information visit: http://www.mxchange.org                  *
+ * For more information visit: http://mxchange.org                      *
  *                                                                      *
  * This program is free software; you can redistribute it and/or modify *
  * it under the terms of the GNU General Public License as published by *
@@ -138,7 +138,7 @@ function isAdminsAllowedByAcl ($action, $what) {
 // Create email link to admins's account
 function generateAdminEmailLink ($email, $mod = 'admin') {
        // Is it an email?
-       if (strpos(str_replace('{AT}', '@', $email), '@') !== false) {
+       if (isInString('@', $email)) {
                // Create email link
                $result = SQL_QUERY_ESC("SELECT `id`
 FROM
@@ -153,15 +153,18 @@ LIMIT 1",
                        // Load userid
                        list($adminId) = SQL_FETCHROW($result);
 
-                       // Rewrite email address to contact link
-                       $email = '{%url=modules.php?module=' . $mod . '&what=admins_contct&admin=' . bigintval($adminId) . '%}';
+                       // Call this function again
+                       $email = generateAdminEmailLink($adminId, $mod);
                } // END - if
 
                // Free memory
                SQL_FREERESULT($result);
-       } elseif ((is_int($email)) && ($email > 0)) {
+       } elseif (isValidUserId($email)) {
                // Direct id given
-               $email = '{%url=modules.php?module=' . $mod . '&what=admins_contct&admin=' . bigintval($email) . '%}';
+               $email = '{%url=modules.php?module=' . $mod . '&what=admins_contct&id=' . bigintval($email) . '%}';
+       } else {
+               // This is strange and needs fixing
+               debug_report_bug(__FUNCTION__, __LINE__, 'email[' . gettype($email) . ']=' . $email . ',mod=' . $mod . ' - This should not happen.');
        }
 
        // Return rewritten (?) email address
@@ -198,7 +201,7 @@ function adminsChangeAdminAccount ($postData, $element = '', $displayMessage = t
 
                                // Save password when set
                                if (!empty($postData['pass1'][$id])) {
-                                       $add = sprintf(", `password`='%s'", SQL_ESCAPE($hash));
+                                       $add = sprintf(",`password`='%s'", SQL_ESCAPE($hash));
                                } // END - if
 
                                // Get admin's id
@@ -243,7 +246,7 @@ LIMIT 1",
                                        array(
                                                $login,
                                                $postData['email'][$id],
-                                               $postData['mode'][$id],
+                                               $postData['access_mode'][$id],
                                                $postData['la_mode'][$id],
                                                $id
                                        ), __FUNCTION__, __LINE__);
@@ -274,28 +277,7 @@ LIMIT 1",
                        }
                } else {
                        // Update whole array
-                       $SQL = 'UPDATE `{?_MYSQL_PREFIX?}_admins` SET ';
-                       foreach ($postData as $entry => $value) {
-                               // Skip login/id entry
-                               if (in_array($entry, array('login', 'id'))) {
-                                       continue;
-                               } // END - if
-
-                               // Do we have a non-string (e.g. number, NULL, NOW() or back-tick at the beginning?
-                               if (is_null($value[$id])) {
-                                       // NULL detected
-                                       $SQL .= '`' . $entry . '`=NULL, ';
-                               } elseif ((bigintval($value[$id], true, false) === $value[$id]) || ($value[$id] == 'NOW()') || (substr($value[$id], 0, 1) == '`'))  {
-                                       // No need for ticks (')
-                                       $SQL .= '`' . $entry . '`=' . $value[$id] . ', ';
-                               } else {
-                                       // Strings need ticks (') around them
-                                       $SQL .= '`' . $entry . "`='" . SQL_ESCAPE($value[$id]) . "', ";
-                               }
-                       } // END - foreach
-
-                       // Remove last 2 chars and finish query
-                       $SQL = substr($SQL, 0, -2) . ' WHERE `id`=%s LIMIT 1';
+                       $SQL = getUpdateSqlFromArray($postData, 'admins', 'id', '%s', array('login', 'id'), $id);
 
                        // Run it
                        SQL_QUERY_ESC($SQL, array(bigintval($id)), __FUNCTION__, __LINE__);
@@ -311,11 +293,10 @@ LIMIT 1",
                }
        } // END - foreach
 
-       // Display message
-       if (!empty($message)) {
-               if ($displayMessage === true) {
-                       displayMessage($message);
-               } // END - if
+       // Display message if not empty and allowed
+       if ((!empty($message)) && ($displayMessage === true)) {
+               // Display it
+               displayMessage($message);
        } // END - if
 
        // Remove cache file
@@ -337,35 +318,66 @@ function adminsEditAdminAccount ($postData) {
                $id = bigintval($id);
 
                // Get the admin's data
-               $result = SQL_QUERY_ESC("SELECT `login`,`email`,`default_acl` AS mode, `la_mode` FROM `{?_MYSQL_PREFIX?}_admins` WHERE `id`=%s LIMIT 1",
+               $result = SQL_QUERY_ESC("SELECT `login`,`email` FROM `{?_MYSQL_PREFIX?}_admins` WHERE `id`=%s LIMIT 1",
                        array($id), __FUNCTION__, __LINE__);
                if ((SQL_NUMROWS($result) == 1) && ($selected == 1)) {
                        // Entry found
                        $content = SQL_FETCHARRAY($result);
-                       SQL_FREERESULT($result);
 
                        // Prepare some more data for the template
                        $content['id'] = $id;
 
                        // Shall we allow changing default ACL?
                        if ($currMode == 'allow') {
-                               // Allow chaning it
-                               $content['mode']    = generateOptionList('/ARRAY/', array('allow', 'deny'), array('{--ADMIN_ADMINS_ACCESS_MODE_ALLOW--}', '{--ADMIN_ADMINS_ACCESS_MODE_DENY--}'), $content['mode']);
+                               // Allow changing it
+                               $content['access_mode'] = '{%pipe,generateAdminAccessModeSelectionBox=' . $id . '%}';
                        } else {
                                // Don't allow it
-                               $content['mode'] = ' ';
+                               $content['access_mode'] = ' ';
                        }
-                       $content['la_mode'] = generateOptionList('/ARRAY/', array('global', 'OLD', 'NEW'), array('{--ADMIN_ADMINS_LA_MODE_GLOBAL--}', '{--ADMIN_ADMINS_LA_MODE_OLD--}', '{--ADMIN_ADMINS_LA_MODE_NEW--}'), $content['la_mode']);
 
                        // Load row template and switch color
                        $OUT .= loadTemplate('admin_edit_admins_row', true, $content);
                } // END - if
+
+               // Free result
+               SQL_FREERESULT($result);
        } // END - foreach
 
        // Load template
        loadTemplate('admin_edit_admins', false, $OUT);
 }
 
+// Generate access mode selection box for given admin id
+function generateAdminAccessModeSelectionBox ($adminId = NULL) {
+       // Start the selection box
+       $OUT = '<select name="access_mode[' . $adminId . ']" size="1" class="form_select">';
+
+       // Add option list
+       $OUT .= generateOptionList('/ARRAY/', array('allow', 'deny'), array('{--ADMIN_ADMINS_ACCESS_MODE_ALLOW--}', '{--ADMIN_ADMINS_ACCESS_MODE_DENY--}'), getAdminDefaultAcl($adminId));
+
+       // Finish it
+       $OUT .= '</select>';
+
+       // Return content
+       return $OUT;
+}
+
+// Generate menu mode selection box for given admin it
+function generateAdminMenuModeSelectionBox ($adminId = NULL) {
+       // Start the selection box
+       $OUT = '<select name="la_mode[{%pipe,convertNullToZero=' . convertZeroToNull($adminId) . '%}]" size="1" class="form_select">';
+
+       // Add option list
+       $OUT .= generateOptionList('/ARRAY/', array('global', 'OLD', 'NEW'), array('{--ADMIN_ADMINS_LA_MODE_GLOBAL--}', '{--ADMIN_ADMINS_LA_MODE_OLD--}', '{--ADMIN_ADMINS_LA_MODE_NEW--}'), getAdminMenuMode($adminId));
+
+       // Finish it
+       $OUT .= '</select>';
+
+       // Return content
+       return $OUT;
+}
+
 // Delete given admin accounts
 function adminsDeleteAdminAccount ($postData) {
        // Check if this account is the last one which cannot be deleted...
@@ -377,15 +389,15 @@ function adminsDeleteAdminAccount ($postData) {
                        $id = bigintval($id);
 
                        // Get the admin's data
-                       $result = SQL_QUERY_ESC("SELECT `login`,`email`,`default_acl` AS `mode`,`la_mode` FROM `{?_MYSQL_PREFIX?}_admins` WHERE `id`=%s LIMIT 1",
+                       $result = SQL_QUERY_ESC("SELECT `login`,`email`,`default_acl` AS `access_mode`,`la_mode` FROM `{?_MYSQL_PREFIX?}_admins` WHERE `id`=%s LIMIT 1",
                                array($id), __FUNCTION__, __LINE__);
 
                        // Do we have an entry?
                        if (SQL_NUMROWS($result) == 1) {
                                // Entry found, so load data
                                $content = SQL_FETCHARRAY($result);
-                               $content['mode']    = '{--ADMIN_ADMINS_ACCESS_MODE_' . strtoupper($content['mode'])    . '--}';
-                               $content['la_mode'] = '{--ADMIN_ADMINS_LA_MODE_' . strtoupper($content['la_mode']) . '--}';
+                               $content['access_mode'] = '{--ADMIN_ADMINS_ACCESS_MODE_' . strtoupper($content['access_mode'])    . '--}';
+                               $content['la_mode']     = '{--ADMIN_ADMINS_LA_MODE_' . strtoupper($content['la_mode']) . '--}';
 
                                // Prepare some more data
                                $content['id'] = $id;
@@ -433,12 +445,21 @@ function adminsRemoveAdminAccount ($postData) {
 // List all admin accounts
 function adminsListAdminAccounts() {
        // Select all admin accounts
-       $result = SQL_QUERY('SELECT `id`,`login`,`email`,`default_acl` AS mode, `la_mode` FROM `{?_MYSQL_PREFIX?}_admins` ORDER BY `login` ASC', __FUNCTION__, __LINE__);
+       $result = SQL_QUERY('SELECT
+       `id`,
+       `login`,
+       `email`,
+       `default_acl` AS `access_mode`,
+       `la_mode`
+FROM
+       `{?_MYSQL_PREFIX?}_admins`
+ORDER BY
+       `login` ASC', __FUNCTION__, __LINE__);
        $OUT = '';
        while ($content = SQL_FETCHARRAY($result)) {
                // Compile some variables
-               $content['mode']    = '{--ADMIN_ADMINS_ACCESS_MODE_' . strtoupper($content['mode'])    . '--}';
-               $content['la_mode'] = '{--ADMIN_ADMINS_LA_MODE_' . strtoupper($content['la_mode']) . '--}';
+               $content['access_mode'] = '{--ADMIN_ADMINS_ACCESS_MODE_' . strtoupper($content['access_mode'])    . '--}';
+               $content['la_mode']     = '{--ADMIN_ADMINS_LA_MODE_' . strtoupper($content['la_mode']) . '--}';
 
                // Load row template and switch color
                $OUT .= loadTemplate('admin_list_admins_row', true, $content);