Skip to content

Instantly share code, notes, and snippets.

@buganini
Created December 17, 2013 12:13
Show Gist options
  • Save buganini/8004020 to your computer and use it in GitHub Desktop.
Save buganini/8004020 to your computer and use it in GitHub Desktop.
CodeIgniter Lang Redefinition Detection
diff --git a/libs/CodeIgniter_2.1.1/system/core/Lang.php b/libs/CodeIgniter_2.1.1/system/core/Lang.php
index 5ac6718..b0fa450 100755
--- a/libs/CodeIgniter_2.1.1/system/core/Lang.php
+++ b/libs/CodeIgniter_2.1.1/system/core/Lang.php
@@ -15,6 +15,16 @@
// ------------------------------------------------------------------------
+class nodup extends ArrayObject {
+ public function offsetSet($i, $v) {
+ if(parent::offsetExists($i)){
+ error_log("Lang key redefined: {$i}");
+ }
+ parent::offsetSet($i, $v);
+ }
+}
+
+
/**
* Language Class
*
@@ -31,7 +41,8 @@ class CI_Lang {
*
* @var array
*/
- var $language = array();
+ var $language;
+
/**
* List of loaded language files
*
@@ -47,6 +58,7 @@ class CI_Lang {
function __construct()
{
log_message('debug', "Language Class Initialized");
+ $this->language = new nodup;
}
// --------------------------------------------------------------------
@@ -86,6 +98,8 @@ class CI_Lang {
$idiom = ($deft_lang == '') ? 'english' : $deft_lang;
}
+ $lang = new nodup;
+
// Determine where the language file is and load it
if ($alt_path != '' && file_exists($alt_path.'language/'.$idiom.'/'.$langfile))
{
@@ -124,7 +138,10 @@ class CI_Lang {
}
$this->is_loaded[] = $langfile;
- $this->language = array_merge($this->language, $lang);
+ foreach($lang as $k => $v)
+ {
+ $this->language[$k] = $v;
+ }
unset($lang);
log_message('debug', 'Language file loaded: language/'.$idiom.'/'.$langfile);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment