]> git.mxchange.org Git - mailer.git/blobdiff - inc/extensions.php
Improvements to task extension
[mailer.git] / inc / extensions.php
index abad4d77ae24e30a68f3b0ad22cfe66616d0ced0..711a3d163966b7e40f4f43ed01e9d723bec4b04a 100644 (file)
@@ -165,8 +165,14 @@ function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false)
 
                                        // Is there still an SQL query?
                                        if (!empty($sql)) {
-                                               // Run SQL command
-                                               $result = SQL_QUERY($sql, __FILE__, __LINE__, false);
+                                               // Do we have an "ALTER TABLE" command?
+                                               if (substr(strtolower($sql), 0, 11) == "alter table") {
+                                                       // Analyse the alteration command
+                                                       SQL_ALTER_TABLE($sql, __FILE__, __LINE__);
+                                               } else {
+                                                       // Run regular SQL command
+                                                       $result = SQL_QUERY($sql, __FILE__, __LINE__, false);
+                                               }
                                        } // END - if
                                } // END - foreach
 
@@ -192,8 +198,7 @@ function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false)
                                 array($ext_name, $EXT_LANG_PREFIX, $EXT_ALWAYS_ACTIVE, $EXT_VERSION), __FILE__, __LINE__);
 
                                // Update task management
-                               $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_task_system SET status='SOLVED' WHERE id=%d LIMIT 1",
-                                array(bigintval($id)), __FILE__, __LINE__);
+                               ADMIN_SOLVE_TASK($id);
 
                                // In normal mode return a true on success
                                $ret = true; unset($SQLs);
@@ -216,7 +221,7 @@ function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false)
                }
        } elseif (($id > 0) && (!empty($ext_name))) {
                // Remove task from system when id and extension's name is valid
-               $result = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_task_system WHERE id=%d AND status='NEW' LIMIT 1",
+               $result = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_task_system WHERE id=%s AND status='NEW' LIMIT 1",
                 array(bigintval($id)), __FILE__, __LINE__);
        }
 
@@ -255,15 +260,21 @@ function EXTENSION_RUN_SQLS($id, $EXT_LOAD_MODE) {
 
                        // Is there still an SQL query?
                        if (!empty($sql)) {
-                               // Run SQL command
-                               $result = SQL_QUERY($sql, __FILE__, __LINE__, false);
+                               // Do we have an "ALTER TABLE" command?
+                               if (substr(strtolower($sql), 0, 11) == "alter table") {
+                                       // Analyse the alteration command
+                                       SQL_ALTER_TABLE($sql, __FILE__, __LINE__);
+                               } else {
+                                       // Run regular SQL command
+                                       $result = SQL_QUERY($sql, __FILE__, __LINE__, false);
+                               }
                        } // END - if
                } // END - foreach
 
                // Removal mode?
                if ($EXT_LOAD_MODE == "remove") {
                        // Delete this extension (remember to remove it from your server *before* you click on welcome!
-                       $result = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_extensions WHERE id=%d LIMIT 1",
+                       $result = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_extensions WHERE id=%s LIMIT 1",
                         array($id), __FILE__, __LINE__);
                } // END - if
 
@@ -431,8 +442,14 @@ function EXTENSION_UPDATE($file, $ext, $EXT_VER, $dry_run=false)
                                        $sql = trim($sql);
                                        if (!empty($sql))
                                        {
-                                               // Run SQL command...
-                                               $result = SQL_QUERY($sql, __FILE__, __LINE__, false);
+                                               // Do we have an "ALTER TABLE" command?
+                                               if (substr(strtolower($sql), 0, 11) == "alter table") {
+                                                       // Analyse the alteration command
+                                                       SQL_ALTER_TABLE($sql, __FILE__, __LINE__);
+                                               } else {
+                                                       // Run regular SQL command
+                                                       $result = SQL_QUERY($sql, __FILE__, __LINE__, false);
+                                               }
                                        }
                                }
                        } elseif (GET_EXT_VERSION("sql_patches") == "") {
@@ -449,11 +466,10 @@ function EXTENSION_UPDATE($file, $ext, $EXT_VER, $dry_run=false)
                        // Create task
                        $result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_task_system WHERE subject='%s' LIMIT 1",
                         array($ext_subj), __FILE__, __LINE__);
-                       if (SQL_NUMROWS($result) == 0)
-                       {
+                       if (SQL_NUMROWS($result) == 0) {
                                // Task not created so it's a brand-new extension which we need to register and create a task for!
                                $result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_task_system (assigned_admin, userid, status, task_type, subject, text, task_created) VALUES ('%s', '0', 'NEW', 'EXTENSION_UPDATE', '%s', '%s', UNIX_TIMESTAMP())",
-                                array(GET_ADMIN_ID(SQL_ESCAPE(get_session('admin_login'))), $ext_subj, addslashes($NOTES)), __FILE__, __LINE__);
+                                array(GET_ADMIN_ID(get_session('admin_login')), $ext_subj, addslashes($NOTES)), __FILE__, __LINE__);
                        }
 
                        // Free memory
@@ -464,32 +480,27 @@ function EXTENSION_UPDATE($file, $ext, $EXT_VER, $dry_run=false)
                         array($EXT_VERSION, $ext), __FILE__, __LINE__);
 
                        // Update cache
-                       if (EXT_IS_ACTIVE("cache"))
-                       {
+                       if (EXT_IS_ACTIVE("cache")) {
                                if ($cacheInstance->cache_file("extensions", true) == true) $cacheInstance->cache_destroy();
                                if ($cacheInstance->cache_file("config", true) == true)     $cacheInstance->cache_destroy();
                                if ($cacheInstance->cache_file("mod_reg", true) == true)    $cacheInstance->cache_destroy();
-                       }
+                       } // END - if
 
                        // Remove array
                        unset($SQLs);
-               }
-                else
-               {
+               } else {
                        // In "dry-run" mode return array with SQL commands
                        return $SQLs;
                }
        }
 }
 //
-function EXTENSION_VERBOSE_TABLE($SQLs, $title=ADMIN_SQLS_EXECUTED_ON_REMOVAL, $dashed="", $switch=false, $WIDTH="480")
-{
+function EXTENSION_VERBOSE_TABLE($SQLs, $title = ADMIN_SQLS_EXECUTED_ON_REMOVAL, $dashed = "", $switch = false, $WIDTH = "480") {
        global $_CONFIG;
 
        $S = false; $SW = 2; $i = 1;
        $OUT = "";
-       if ((is_array($SQLs)) && (GET_EXT_VERSION("sql_patches")) && ($_CONFIG['verbose_sql'] == "Y"))
-       {
+       if ((is_array($SQLs)) && (GET_EXT_VERSION("sql_patches")) && ($_CONFIG['verbose_sql'] == "Y")) {
                $OUT  = "<DIV align=\"center\">
 <TABLE border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"".$WIDTH."\" align=\"center\"".$dashed.">
 <TR>
@@ -497,11 +508,9 @@ function EXTENSION_VERBOSE_TABLE($SQLs, $title=ADMIN_SQLS_EXECUTED_ON_REMOVAL, $
     <STRONG>".$title.":</STRONG>
   </TD>
 </TR>\n";
-               foreach ($SQLs as $idx=>$sql)
-               {
+               foreach ($SQLs as $idx => $sql) {
                        $sql = trim($sql);
-                       if (!empty($sql))
-                       {
+                       if (!empty($sql)) {
                                $S = true;
                                $OUT .= "<TR>
   <TD class=\"switch_sw".(3 - $SW)." bottom2\" style=\"padding-left: 2px\" width=\"30\">".$i.".</TD>
@@ -515,8 +524,7 @@ function EXTENSION_VERBOSE_TABLE($SQLs, $title=ADMIN_SQLS_EXECUTED_ON_REMOVAL, $
                }
        }
 
-       if ((!$S) && (GET_EXT_VERSION("sql_patches")) && ($_CONFIG['verbose_sql'] == "Y"))
-       {
+       if ((!$S) && (GET_EXT_VERSION("sql_patches")) && ($_CONFIG['verbose_sql'] == "Y")) {
                // No addional SQL commands to run
                $OUT .= "<TR>
   <TD colspan=\"2\" align=\"center\" class=\"switch_sw2 bottom2\" height=\"24\">
@@ -530,52 +538,48 @@ function EXTENSION_VERBOSE_TABLE($SQLs, $title=ADMIN_SQLS_EXECUTED_ON_REMOVAL, $
                $OUT .= "</TABLE>
 </DIV>\n";
        }
+
+       // Return output
        return $OUT;
 }
-//
-function GET_EXT_NAME($id)
-{
+// Get extension name from id
+function GET_EXT_NAME ($id) {
        $ret = "";
        global $cacheArray, $_CONFIG;
-       if (!empty($cacheArray['extensions']['ext_id'][$id]))
-       {
+       if (!empty($cacheArray['extensions']['ext_name'][$id])) {
                // Load from cache
-               $ret = $cacheArray['extensions']['ext_id'][$id];
+               $ret = $cacheArray['extensions']['ext_name'][$id];
 
                // Count cache hits
                $_CONFIG['cache_hits']++;
-       }
-        else
-       {
+       } elseif (!EXT_IS_ACTIVE("cache")) {
                // Load from database
-               $result = SQL_QUERY_ESC("SELECT ext_name FROM "._MYSQL_PREFIX."_extensions WHERE id=%d LIMIT 1",
+               $result = SQL_QUERY_ESC("SELECT ext_name FROM "._MYSQL_PREFIX."_extensions WHERE id=%s LIMIT 1",
                 array(bigintval($id)), __FILE__, __LINE__);
                list($ret) = SQL_FETCHROW($result);
                SQL_FREERESULT($result);
        }
        return $ret;
 }
-//
-function GET_EXT_ID($name)
-{
-       $ret = "0";
+// Get extension id from name
+function GET_EXT_ID($name) {
+       $ret = 0;
        global $cacheArray, $_CONFIG;
-       if ((isset($cacheArray['extensions']['ext_id'])) && (is_array($cacheArray['extensions']['ext_id'])))
-       {
+       if (isset($cacheArray['extensions']['ext_id'][$name])) {
                // Load from cache
-               $ret = array_search($name, $cacheArray['extensions']['ext_id']);
+               $ret = $cacheArray['extensions']['ext_id'][$name];
 
                // Count cache hits
                $_CONFIG['cache_hits']++;
-       }
-        else
-       {
+       } elseif (!EXT_IS_ACTIVE("cache")) {
                // Load from database
                $result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_extensions WHERE ext_name='%s' LIMIT 1",
                 array($name), __FILE__, __LINE__);
                list($ret) = SQL_FETCHROW($result);
                SQL_FREERESULT($result);
        }
+
+       // Return value
        return $ret;
 }
 //