Пример #1
0
 public static function &exec(&$layers, $callback, &$parent = null)
 {
     $props =& static::$props;
     $r =& Each::exec($layers, function &(&$layer) use(&$parent, $callback, $props) {
         $r =& $callback($layer, $parent);
         if (!is_null($r)) {
             return $r;
         }
         $r =& Each::foro($layer, function &(&$val, $name) use(&$layer, $callback, $props) {
             $r = null;
             if (isset($props['list'][$name])) {
                 $r =& Run::exec($val, $callback, $layer);
                 if (!is_null($r)) {
                     return $r;
                 }
             } else {
                 if (isset($props['keys'][$name])) {
                     $r =& Each::foro($val, function &(&$v, $i) use(&$layer, $callback) {
                         return Run::exec($v, $callback, $layer);
                     });
                     if (!is_null($r)) {
                         return $r;
                     }
                 }
             }
             return $r;
         });
         return $r;
     });
     return $r;
 }
Пример #2
0
    $src = str_replace('..', '-', $src);
    if (strlen($src) > 100) {
        $src = md5($src);
    }
    $src = $dir . 'seo-' . $src . '.json';
    if (!$submit) {
        $seo = Load::loadJSON($src);
        $ans['seo'] = $seo;
    } else {
        $dir = autoedit_createPath($dir);
        $seo = $_POST['seo'];
        $def = $_POST['def'];
        $keys = array();
        Each::foro($seo, function ($val, $key) use(&$seo, &$def, &$keys) {
            if ($seo[$key] == $def[$key]) {
                return;
            }
            $keys[$key] = $val;
        });
        if (sizeof($keys) == 0) {
            $r = unlink($src);
        } else {
            $keys['page'] = $id;
            $keys['time'] = time();
            $r = file_put_contents($src, Load::json_encode($keys));
        }
        if ($r) {
            return Ans::ret($ans, 'SEO-данные сохранены');
        }
        return Ans::err($ans, 'Ошибка. SEO-данные не сохранены');
    }
} elseif ($type === 'corfile') {
Пример #3
0
function xls_processGroupFilter(&$data)
{
    $all = array();
    xls_runGroups($data, function &(&$gr) use(&$all) {
        $title = mb_strtolower($gr['title']);
        //echo $title.'<br>';
        if (!isset($all[$title])) {
            $all[$title] = array('orig' => &$gr, 'list' => array());
        } else {
            //Ну вот и нашли повторение
            $all[$title]['list'][] =& $gr;
            //xls_merge($all[$title],$gr);
            //у некой прошлой группы появляются новые childs.. но мы всё ещё бежим по какому-то его childs и новые добавленные будут проигнорированны
            //return new Fix('del');
        }
        $r = null;
        return $r;
    });
    Each::foro($all, function &(&$des) {
        Each::forr($des['list'], function &(&$gr) use($des) {
            xls_merge($des['orig'], $gr);
            Each::forr($gr['parent']['childs'], function &(&$g) use(&$gr) {
                if (Each::isEqual($g, $gr)) {
                    $r = new Fix('del', true);
                    return $r;
                }
                $r = null;
                return $r;
            });
            $r = null;
            return $r;
        });
        $r = null;
        return $r;
    });
    /*//$cat=$data['childs'][0];
    	$cat=$data;
    	unset($cat['parent']);
    	Each::forr($cat['childs'],function(&$g){
    		//if(!is_string($g['parent']))
    		$g['parent']=&$g['parent']['title'];
    		//unset($g['parent']);
    		$g['childs']=sizeof($g['childs']);
    		$g['data']=sizeof($g['data']);
    	});
    	echo '<pre>';
    	print_r($cat);
    	exit;
    	/*
    	xls_runGroups($data,function(&$gr,$i,&$group){//Удаляем пустые группы
    		if(!$group) return;//Кроме верхней группы
    		if(!sizeof($gr['childs'])&&!sizeof($gr['data'])){
    			array_splice($group,$i,1);
    		}
    	},array(),true);
    	*/
}
Пример #4
0
}
//obj back ret
$ar = array('a' => 111, 'b' => 222, 'c' => 333, 'e' => 444);
$count = 0;
Each::foro($ar, function ($v, $key) use(&$count) {
    ++$count;
    if ($key == 'b') {
        return new Fix('del', true);
    }
}, true);
if ($count == 3 && sizeof($ar) == 3 && !isset($ar['b'])) {
} else {
    $result = false;
}
//obj ret
$ar = array('a' => 111, 'b' => 222, 'c' => 333, 'e' => 444);
$count = 0;
Each::foro($ar, function ($v, $key) use(&$count) {
    ++$count;
    if ($key == 'b') {
        return new Fix('del', true);
    }
});
if ($count == 2 && sizeof($ar) == 3 && !isset($ar['b'])) {
} else {
    $result = false;
}
if (!$result) {
    return Ans::err($ans, 'err');
}
return Ans::ret($ans, 'ret');