/** * Fuse array content * * @param array $array1 * @param array $array2 * @return void */ function rabbit_array_merge(array $array1, array $array2) { foreach ($array2 as $k => $v) { if (gettype($v) == 'array' && array_keys($v) !== range(0, count($v) - 1)) { if (!isset($array1[$k]) || gettype($array1[$k]) != 'array') { $array1[$k] = array(); } $array1[$k] = rabbit_array_merge($array1[$k], $v); continue; } $array1[$k] = $v; } return $array1; }
/** * Prepare config data * * @param mixed $config * @return array */ public function prepare_config($config) { //load helper $this->ci->load->helper('rabbit'); //check for YML config if (gettype($config) == 'string') { $config = $this->configLoad($config); } //build configuration stack $configStack = array(); array_push($configStack, $config); $parsing = $config; while (isset($parsing['extends'])) { $c = gettype($parsing['extends']) == 'string' ? $this->configLoad($parsing['extends']) : $parsing['extends']; array_push($configStack, $c); $parsing = $c; } //merge configurations $final = $this->ci->config->item('rabbit-default-settings'); while (count($configStack) > 0) { $final = rabbit_array_merge($final, array_pop($configStack)); } //return data return $final; }