/**
 * 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;
}
Exemplo n.º 2
0
 /**
  * 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;
 }