Commits

Matthew Tretter  committed c9881ae

Modified loading sequence to give precedence to app files. App configs are merged with module configs and have higher precedence.

  • Participants
  • Parent commits cf68f4a

Comments (0)

Files changed (2)

File third_party/MX/Config.php

-<?php (defined('BASEPATH')) OR exit('No direct script access allowed');
-
-/**
- * Modular Extensions - HMVC
- *
- * Adapted from the CodeIgniter Core Classes
- * @link	http://codeigniter.com
- *
- * Description:
- * This library extends the CodeIgniter CI_Config class
- * and adds features allowing use of modules and the HMVC design pattern.
- *
- * Install this file as application/third_party/MX/Config.php
- *
- * @copyright	Copyright (c) Wiredesignz 2010-09-09
- * @version 	5.3.4
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- **/
-class MX_Config extends CI_Config 
-{	
-	public function load($file = '', $use_sections = FALSE, $fail_gracefully = FALSE, $_module = NULL) {
-		($file == '') AND $file = 'config';
-
-		if (in_array($file, $this->is_loaded, TRUE))
-			return $this->item($file);
-
-		$_module || $_module = CI::$APP->router->fetch_module();
-		list($path, $file) = Modules::find($file, $_module, 'config/');
-		
-		if ($path === FALSE) {
-			parent::load($file, $use_sections, $fail_gracefully);					
-			return $this->item($file);
-		}  
-		
-		if ($config = Modules::load_file($file, $path, 'config')) {
-			
-			/* reference to the config array */
-			$current_config =& $this->config;
-
-			if ($use_sections === TRUE)	{
-				if (isset($current_config[$file])) {
-					$current_config[$file] = array_merge($current_config[$file], $config);
-				} else {
-					$current_config[$file] = $config;
-				}
-			} else {
-				$current_config = array_merge($current_config, $config);
-			}
-			$this->is_loaded[] = $file;
-			unset($config);
-			return $this->item($file);
-		}
-	}
+<?php (defined('BASEPATH')) OR exit('No direct script access allowed');
+
+/**
+ * Modular Extensions - HMVC
+ *
+ * Adapted from the CodeIgniter Core Classes
+ * @link	http://codeigniter.com
+ *
+ * Description:
+ * This library extends the CodeIgniter CI_Config class
+ * and adds features allowing use of modules and the HMVC design pattern.
+ *
+ * Install this file as application/third_party/MX/Config.php
+ *
+ * @copyright	Copyright (c) Wiredesignz 2010-09-09
+ * @version 	5.3.4
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ **/
+class MX_Config extends CI_Config 
+{	
+	public function load($file = '', $use_sections = FALSE, $fail_gracefully = FALSE, $_module = NULL) {
+		($file == '') AND $file = 'config';
+
+		if (in_array($file, $this->is_loaded, TRUE))
+			return $this->item($file);
+
+		$_module || $_module = CI::$APP->router->fetch_module();
+		list($path, $file) = Modules::find($file, $_module, 'config/');
+		
+		$success = parent::load($file, $use_sections, TRUE);
+		
+		if ($config = Modules::load_file($file, $path, 'config')) {
+			
+			/* reference to the config array */
+			$current_config =& $this->config;
+
+			if ($use_sections === TRUE)	{
+				if (isset($current_config[$file])) {
+					$current_config[$file] = array_merge($config, $current_config[$file]);
+				} else {
+					$current_config[$file] = $config;
+				}
+			} else {
+				$current_config = array_merge($config, $current_config);
+			}
+			$this->is_loaded[] = $file;
+			unset($config);
+		}
+		elseif (!$success && !$fail_gracefully)
+		{
+			show_error('The configuration file '.$file.EXT.' does not exist or does not appear to contain a valid configuration array.');
+		}
+		
+		return $this->item($file);
+	}
 }

File third_party/MX/Modules.php

 			$modules[array_shift($segments)] = ltrim(implode('/', $segments).'/','/');
 		}	
 
+		/* is the file in an application directory? */
+		if ($base == 'views/' || $base == 'models/' || $base == 'plugins/')
+			if (is_file(APPPATH.$base.$path.$file_ext)) return array(APPPATH.$base.$path, $file);
+
 		foreach (Modules::$locations as $location => $offset) {					
 			foreach($modules as $module => $subpath) {
 				$fullpath = $location.$module.'/'.$base.$subpath;
-				if ($base == 'libraries/' && is_file($fullpath.ucfirst($file_ext))) return array($fullpath, ucfirst($file));
+				if ($base == 'libraires/' && is_file($fullpath.ucfirst($file_ext))) return array($fullpath, $file);
 				if (is_file($fullpath.$file_ext)) return array($fullpath, $file);
 			}
 		}
-		
-		/* is the file in an application directory? */
-		if ($base == 'views/' || $base == 'models/' || $base == 'plugins/') {
-			if (is_file(APPPATH.$base.$path.$file_ext)) return array(APPPATH.$base.$path, $file);
+
+		if ($base == 'views/' || $base == 'models/' || $base == 'plugins/')
 			show_error("Unable to locate the file: {$path}{$file_ext}");
-		}
 
 		return array(FALSE, $file);	
 	}