Fix for wrong SQL statement 'LOW_PRIRITY'
[mailer.git] / inc / loader / load-extension.php
index 0d83fcd4227caddecfad066c952226d02e28d419..ac83a0f81397493d422e4fe9513a096877f58fe6 100644 (file)
@@ -19,7 +19,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 *
 // Some security stuff...
 if (!defined('__SECURITY')) {
        die();
-} // END - if
-
-// Use this code if you don't want to run this cache loader on installation phase
-if (isInstallationPhase()) return;
+} elseif (isInstallationPhase()) {
+       // Use this code if you don't want to run this cache loader on installation phase
+       return;
+}
 
 // Next cached table is the extension
 if (($GLOBALS['cache_instance']->loadCacheFile('extension')) && ($GLOBALS['cache_instance']->extensionVersionMatches('sql_patches'))) {
@@ -59,48 +59,50 @@ if (($GLOBALS['cache_instance']->loadCacheFile('extension')) && ($GLOBALS['cache
                $EXT_NAMES = array();
 
                // Loop through all
-               foreach ($EXT_DUMMY['ext_name'] as $k => $name) {
+               foreach ($EXT_DUMMY['ext_name'] as $k => $ext_name) {
                        // Load CSS file
-                       if ($EXT_DUMMY['ext_css'][$k] == 'Y') addExtensionCssFile($name . '.css');
+                       if ($EXT_DUMMY['ext_css'][$k] == 'Y') {
+                               addExtensionCssFile($ext_name . '.css');
+                       } // END - if
 
                        // Load extension file itself
                        if (($EXT_DUMMY['ext_active'][$k] == 'Y') || ($EXT_DUMMY['ext_keep'][$k] == 'Y')) {
-                               $EXT_POOL[] = $name;
+                               $EXT_POOL[] = $ext_name;
                        } // END - if
 
                        // Version number
-                       $EXT_DUMMY['ext_version'][$name] = $EXT_DUMMY['ext_version'][$k];
+                       $EXT_DUMMY['ext_version'][$ext_name] = $EXT_DUMMY['ext_version'][$k];
                        unset($EXT_DUMMY['ext_version'][$k]);
 
                        // Extension is active
-                       $EXT_DUMMY['ext_active'][$name] = $EXT_DUMMY['ext_active'][$k];
+                       $EXT_DUMMY['ext_active'][$ext_name] = $EXT_DUMMY['ext_active'][$k];
                        unset($EXT_DUMMY['ext_active'][$k]);
 
                        // Ext menu
-                       $EXT_DUMMY['ext_menu'][$name] = $EXT_DUMMY['ext_menu'][$k];
+                       $EXT_DUMMY['ext_menu'][$ext_name] = $EXT_DUMMY['ext_menu'][$k];
                        unset($EXT_DUMMY['ext_menu'][$k]);
 
                        // Language file
-                       $EXT_DUMMY['ext_lang'][$name] = $EXT_DUMMY['ext_lang'][$k];
+                       $EXT_DUMMY['ext_lang'][$ext_name] = $EXT_DUMMY['ext_lang'][$k];
                        unset($EXT_DUMMY['ext_lang'][$k]);
 
                        // Functions file
-                       $EXT_DUMMY['ext_func'][$name] = $EXT_DUMMY['ext_func'][$k];
+                       $EXT_DUMMY['ext_func'][$ext_name] = $EXT_DUMMY['ext_func'][$k];
                        unset($EXT_DUMMY['ext_func'][$k]);
 
                        // Extension id
-                       $EXT_DUMMY['ext_id'][$name] = $EXT_DUMMY['ext_id'][$k];
-                       $id = $EXT_DUMMY['ext_id'][$name];
+                       $EXT_DUMMY['ext_id'][$ext_name] = $EXT_DUMMY['ext_id'][$k];
+                       $id = $EXT_DUMMY['ext_id'][$ext_name];
                        unset($EXT_DUMMY['ext_id'][$k]);
 
                        // Add ext name
-                       $EXT_NAMES[$id] = $name;
+                       $EXT_NAMES[$id] = $ext_name;
 
                        // Add deprecated flag (defaults to 'not deprecated')
-                       $EXT_DUMMY['ext_deprecated'][$name] = 'N';
+                       $EXT_DUMMY['ext_deprecated'][$ext_name] = 'N';
 
                        // Mark it as active extension
-                       $GLOBALS['cache_array']['always_active'][$name] = $EXT_DUMMY['ext_keep'][$k];
+                       $GLOBALS['cache_array']['always_active'][$ext_name] = $EXT_DUMMY['ext_keep'][$k];
                        unset($EXT_DUMMY['ext_keep'][$k]);
 
                        // Remove unneccessary data from memory
@@ -136,40 +138,47 @@ if (($GLOBALS['cache_instance']->loadCacheFile('extension')) && ($GLOBALS['cache
 
        // Add more if sql_patches is recent enougth
        $add = '';
-       if (isExtensionInstalledAndNewer('sql_patches', '0.0.6')) $add = ", `ext_has_css` AS ext_css";
+       if (isExtensionInstalledAndNewer('sql_patches', '0.0.6')) {
+               $add = ',`ext_has_css` AS `ext_css`';
+       } // END - if
+
+       // Query for all extensions
+       $result = SQL_QUERY('SELECT `id` AS `ext_id`,`ext_name`,`ext_active`,`ext_version`' . $add . ' FROM `{?_MYSQL_PREFIX?}_extensions` ORDER BY `ext_name` ASC', __FILE__, __LINE__);
 
-       // Load all modules and their data
-       $result = SQL_QUERY('SELECT `id` AS ext_id, `ext_name`, `ext_active`, `ext_version`'.$add.' FROM `{?_MYSQL_PREFIX?}_extensions` ORDER BY `ext_name` ASC', __FILE__, __LINE__);
+       // Load all entries
        while ($content = SQL_FETCHARRAY($result)) {
                // Load extension
-               loadExtension($content['ext_name'], 'test');
+               if (!loadExtension($content['ext_name'], 'test')) {
+                       // Is the name valid?
+                       if (!isExtensionNameValid($content['ext_name'])) {
+                               // Is not valid name (empty ext-foo.php script)
+                               SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_extensions` WHERE `ext_name`='%s' LIMIT 1",
+                                       array($content['ext_name']), __FILE__, __LINE__);
+                       } else {
+                               // Didn't load so deactivate it
+                               doDeactivateExtension($content['ext_name'], true);
+                       }
+
+                       // ... and skip it
+                       continue;
+               } // END - if
 
                // Get menu entry
-               $content['ext_menu'] = 'N';
-               if (ifModuleHasMenu($content['ext_name'], true)) {
-                       // Extension is a module and has menu... pew!
-                       $content['ext_menu'] = 'Y';
-               } // END - if
+               $content['ext_menu'] = convertBooleanToYesNo(ifModuleHasMenu($content['ext_name'], true));
 
                // Get language entry
-               $content['ext_lang'] = 'N';
-               if (isLanguageIncludeReadable($content['ext_name'])) {
-                       // Readable
-                       $content['ext_lang'] = 'Y';
-               } // END - if
+               $content['ext_lang'] = convertBooleanToYesNo(isLanguageIncludeReadable($content['ext_name']));
 
                // Get function entry
-               $content['ext_func'] = 'N';
-               if (isExtensionFunctionFileReadable($content['ext_name'])) {
-                       // Readable
-                       $content['ext_func'] = 'Y';
-               } // END - if
+               $content['ext_func'] = convertBooleanToYesNo(isExtensionFunctionFileReadable($content['ext_name']));
 
                // Transfer EXT_ALWAYS_ACTIVE flag
-               $content['ext_keep'] = getExtensionAlwaysActive();
+               $content['ext_keep'] = getThisExtensionAlwaysActive();
 
                // Fix missing ext_css
-               if (!isset($content['ext_css'])) $content['ext_css'] = 'N';
+               if (!isset($content['ext_css'])) {
+                       $content['ext_css'] = 'N';
+               } // END - if
 
                // Add row to cache file
                $GLOBALS['cache_instance']->addRow($content);