Exemplo n.º 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;
 }
Exemplo n.º 2
0
 public static function isParent(&$layer, &$parent)
 {
     while ($layer) {
         if (Each::isEqual($parent, $layer)) {
             return true;
         }
         $layer =& $layer['parent'];
     }
     return false;
 }
Exemplo n.º 3
0
 public static function update($name)
 {
     $conf = Config::get($name);
     Each::exec($conf['dependencies'], function &($name) {
         $r = null;
         Update::update($name);
         return $r;
     });
     if (!empty($conf['update'])) {
         Path::req('-' . $name . '/' . $conf['update']);
     }
 }
Exemplo n.º 4
0
 public static function check(&$layer)
 {
     if (!isset($layer['css'])) {
         return;
     }
     if (static::$ready[$css]) {
         return;
     }
     Each::fora($layer['css'], function ($css) use(&$layer) {
         Css::$ready[$css] = true;
         $code = Load::loadTEXT($css);
         View::html('<style>' . $code . '</style>', $layer['div']);
         $r = null;
         return $r;
     });
 }
Exemplo n.º 5
0
 public static function getExpires()
 {
     $conf = static::$conf;
     $time = time() + $conf["max-age-stat"];
     Each::exec($conf["expires-year"], function &($dm) use(&$time) {
         $r = null;
         $p = explode('.', $dm);
         $year = date('Y');
         $day = (int) $p[0];
         $month = (int) $p[1];
         $t = mktime(0, 0, 0, $month, $day, $year);
         if ($t < time()) {
             return $r;
         }
         if ($t < $time) {
             $time = $t;
         }
         return $r;
     });
     Each::exec($conf["expires-month"], function &($dm) use(&$time) {
         $r = null;
         $year = date('Y');
         $day = $dm;
         $n = date('d');
         $month = date('n');
         if ($day < $n) {
             $month += 1;
         }
         $t = mktime(0, 0, 0, $month, $day, $year);
         if ($t < $time) {
             $time = $t;
         }
         return $r;
     });
     Each::exec($conf["expires-str"], function &($dm) use(&$time) {
         $r = null;
         $t = strtotime($dm);
         if ($t < time()) {
             return $r;
         }
         if ($t < $time) {
             $time = $t;
         }
         return $r;
     });
     return $time;
 }
Exemplo n.º 6
0
 public static function checkExt(&$layer, &$external)
 {
     if (!$external) {
         return;
     }
     unset($layer['external']);
     Each::fora($external, function &(&$exter) use(&$layer) {
         if (is_string($exter)) {
             $external =& Load::loadJSON($exter);
         } else {
             $external = $exter;
         }
         if ($external) {
             foreach ($external as $i => &$v) {
                 external::merge($layer, $external, $i);
             }
         }
         $r = null;
         return $r;
     });
 }
Exemplo n.º 7
0
    if (empty($conf[$name]['tester'])) {
        continue;
    }
    $list[$name] = [];
    Each::exec($conf[$name]['tester'], function &($tsrc) use(&$list, $name, $c) {
        $r = null;
        $tsrc = Path::theme('-' . $name . '/' . $tsrc);
        if (!$tsrc) {
            echo '<pre>';
            print_r($c);
            throw new \Exception('Tester. Некорректно указан путь до теста.');
        }
        if (Path::isDir($tsrc)) {
            $files = scandir($tsrc);
            foreach ($files as $file) {
                if ($file[0] == '.') {
                    continue;
                }
                if (!is_file($tsrc . $file)) {
                    continue;
                }
                $list[$name][] = Path::pretty($tsrc . $file);
            }
        } else {
            $list[$name][] = Path::pretty($tsrc);
        }
        return $r;
    });
}
$data = array('list' => array());
$errors = array();
foreach ($list as $name => $files) {
Exemplo n.º 8
0
 private static function pubclean($part)
 {
     if (empty($part['pub'])) {
         return null;
     }
     $newpart = array();
     Each::exec($part['pub'], function &($pub) use(&$newpart, &$part) {
         $r = null;
         if (!isset($part[$pub])) {
             return $r;
         }
         $newpart[$pub] = $part[$pub];
         return $r;
     });
     return $newpart;
 }
Exemplo n.º 9
0
 public function testEach()
 {
     /**
      * Проверка на ассоциативный массив.
      * Метод возвращает true только в том случае, если массив ассоциативный.
      */
     $elements = ['9' => '42', 8, 4, 5, 3];
     $res = Each::isAssoc($elements);
     $this->assertTrue($res);
     $elements = 10;
     $res = Each::isAssoc($elements);
     $this->assertTrue(null === $res);
     $elements = [9, 8, 4, 5, 3];
     $res = Each::isAssoc($elements);
     $this->assertTrue(false === $res);
     /**
      * Проверка на число.
      * Если передано число в текстовом формате, то метод должен отработать
      * с этим аргументом как с числом.
      */
     $el = '';
     $res = Each::isInt($el);
     $this->assertTrue(false === $res);
     $el = 12;
     $res = Each::isInt($el);
     $this->assertTrue(true === $res);
     $el = '12';
     $res = Each::isInt($el);
     $this->assertTrue(true === $res);
     $el = '12 ';
     $res = Each::isInt($el);
     $this->assertTrue(false === $res);
     /**
      * Проверка ссылок друг на друга.
      * Метод возвращает true, когда две переменные являются ссылками друг на друга.
      */
     $a = 1;
     $b = 1;
     $res = Each::isEqual($a, $b);
     $this->assertTrue(false === $res);
     $a = 1;
     $b = $a;
     $res = Each::isEqual($a, $b);
     $this->assertTrue(false === $res);
     $a = 1;
     $b =& $a;
     $res = Each::isEqual($a, $b);
     $this->assertTrue(true === $res);
     /**
      * Проверяем, количество вызовов и на какой элемент попадаем при определенном количестве вызовов.
      * Для индексного массива количество итераций анонимной функции должно равняться количеству элементов в массиве.
      * Если в индексном массиве находится вложенный индексный массив, то анонимная функция должна вызываться и
      * для каждого индекса вложенного массива.
      * Если методу передан простой элемент или ассоциативный массив, вызов анонимной функции
      * должен произойти только один раз.
      */
     $counter = 0;
     $el = ['oduvanio', 'mail'];
     Each::exec($el, function &() use(&$counter) {
         $r = null;
         $counter++;
         return $r;
     });
     $this->assertTrue(2 === $counter);
     $counter = 0;
     $el = [2, [4, 6], 5];
     Each::exec($el, function ($b) use(&$counter) {
         $counter++;
         if ($counter === 3) {
             $this->assertTrue(6 === $b);
         }
     });
     $this->assertTrue(4 === $counter);
     $counter = 0;
     $el = 1;
     Each::exec($el, function () use(&$counter) {
         $counter++;
     });
     $this->assertTrue(1 === $counter);
     $el = 'test';
     Each::exec($el, function () use(&$counter) {
         $counter++;
     });
     $this->assertTrue(2 === $counter);
     $el = ['name' => 'oduvanio', 'email' => 'mail'];
     Each::exec($el, function () use(&$counter) {
         $counter++;
     });
     $this->assertTrue(3 === $counter);
 }
Exemplo n.º 10
0
use infrajs\each\Each;
Event::handler('Infrajs.oninit', function () {
    Run::runAddKeys('subs');
    //if (!class_exists('External')) return;
    //External::add('subs', 'divs');
}, 'subs:external,div');
Event::handler('layer.oncheck', function (&$layer) {
    if (@(!$layer['parent'])) {
        return;
    }
    if (@$layer['parent']['subs']) {
        //forx бежим по свойствам объекта, как по массивам. Массивы могут быть вложенные
        //var_dump($layer['parent']['subs']);
        $key = Each::forx($layer['parent']['subs'], function (&$l, $key) use(&$layer) {
            //Такую пробежку у родителя сразу для всех детей делать не нельзя, так как external у детей ещё не сделан.
            if (Each::isEqual($layer, $l)) {
                return $key;
            }
            //Ага, текущей слой описан у родителя в subs. Любой return останавливает цикл и возвращает иначе key был бы undefined.
        });
        if ($key) {
            //Так так теперь предопределяем свойства
            //div не круче external.(но в external div не указывается) в  tpl и tplroot не круче
            $layer['div'] = $key;
            $layer['sub'] = true;
        }
    }
    if (@$layer['sub']) {
        //if(@!$layer['div'])$layer['div']=$key;
        if (@(!$layer['tpl'])) {
            $layer['tpl'] = $layer['parent']['tpl'];
Exemplo n.º 11
0
    if ($el == 4) {
        return new Fix('del');
    }
    //пробовал передавать не new infra_Fix, а просто infra_Fix массив удалялся полностью, ну или просто функция неправильно срабатывала.
});
if ($res !== null) {
    return Ans::err($ans, 'Странный результат');
}
if ($count3 != $len) {
    return Ans::err($ans, 'Неожиданное количество выполненией');
}
if ($ar3[3] == 4) {
    return Ans::err($ans, 'Не работает удаление');
}
//Протестировать back
$ar = array(1, 2, 3, 4, 5, 6);
$count = 0;
$res = Each::forr($ar, function ($el) use(&$count) {
    return new Fix('del', false);
}, true);
if (isset($ar[5])) {
    return Ans::err($ans, 'Не работает back');
}
$ar = array(1, 2, 3, 4, 5, 6);
$res = Each::forr($ar, function ($el) {
    return $el;
}, true);
if ($res != 6) {
    return Ans::err($ans, 'Не работает back');
}
return Ans::ret($ans, 'Всё ок');
Exemplo n.º 12
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') {
Exemplo n.º 13
0
    }
    Each::fora($layer['child'], function &(&$l) use(&$name) {
        $r = null;
        Crumb::set($l, 'crumb', $name);
        return $r;
    });
}, 'crumb');
Event::handler('Layer.oninit', function (&$layer) {
    if (empty($layer['childs'])) {
        return;
    }
    foreach ($layer['childs'] as $key => &$v) {
        Each::exec($v, function &(&$l) use($key) {
            $r = null;
            if (!empty($l['crumb'])) {
                return $r;
            }
            Crumb::set($l, 'crumb', $key);
            return $r;
        });
    }
}, 'crumb');
Event::handler('Layer.ischeck', function ($layer) {
    if (empty($layer['parent'])) {
        return;
    }
    if (!Event::fire('Layer.ischeck', $layer['parent'])) {
        return false;
    }
}, 'layer');
Event::handler('Layer.ischeck', function (&$layer) {
    if (!$layer['crumb']->is) {
Exemplo n.º 14
0
 public static function loadCSS(&$js, $name)
 {
     $c = Config::get($name);
     if (empty($c['css'])) {
         return;
     }
     if (!empty($c['off'])) {
         return;
     }
     if (!empty($c['dependencies'])) {
         Each::exec($c['dependencies'], function &($name) use(&$js) {
             Collect::loadCSS($js, $name);
             $r = null;
             return $r;
         });
     }
     if (!empty(Collect::$cssed[$name])) {
         return;
     }
     Collect::$cssed[$name] = true;
     $root = !empty($c['-collect']) && $c['-collect'] == 'root';
     Each::exec($c['css'], function &($path) use($name, &$js, $root) {
         $r = null;
         if ($root) {
             $src = $path;
         } else {
             $src = '-' . $name . '/' . $path;
         }
         $js .= "\n\n" . '/*load css ' . $src . "*/\r\n";
         if (!Path::theme($src)) {
             echo '<pre>';
             throw new \Exception('Не найден файл ' . $src);
         }
         $js .= Load::loadTEXT('-csspath/?src=' . $src);
         return $r;
     });
 }
Exemplo n.º 15
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');
Exemplo n.º 16
0
//if($arr!=false)return Ans::err($ans,'функция infra_isAssoc вернула неверный результат, переданный массив является индексным');
//Проверить, являются ли переданые переменные ссылкой друг на друга
$a = 15;
// создаем переменную a
$b = $a;
// записываем копию переменной a в переменную b
$equal = Each::isEqual($a, $b);
if ($equal !== false) {
    return Ans::err($ans, 'Функция infra_isEqual работает неверно $b не является ссылкой на $a');
}
$b =& $a;
// делаем b ссылкой на a
$equal = Each::isEqual($a, $b);
if ($equal !== true) {
    return Ans::err($ans, 'Функция infra_isEqual работает неверно $b является ссылкой на $a');
}
$a = array(1, 2, 4, 7);
// интересно получается, так как раннее мы $b=&$a то уже здесь, даже если присваивать массивы этим переменным, то всё равно при изменении $b всё записывается в $a
$b = array(1, 2, 4, 11);
$equal = Each::isEqual($a, $b);
if ($equal !== true) {
    return Ans::err($ans, 'Функция infra_isEqual работает неверно $b является ссылкой на $a');
}
$b = array(1, 2, 4, 15);
$c = array(1, 2, 4, 11);
//print_r($a);
$equal = Each::isEqual($b, $c);
if ($equal !== false) {
    return Ans::err($ans, 'Функция infra_isEqual работает не правильно, массив $с не является ссылкой на $b');
}
return Ans::ret($ans, 'Всё ок');
Exemplo n.º 17
0
 public static function checkinit(&$layer)
 {
     if (empty($layer['envs'])) {
         return;
     }
     Each::forx($layer['envs'], function (&$l, $env) {
         //Из-за забегания вперёд external не применился а в external могут быть вложенные слои
         $l['env'] = $env;
         $l['envtochild'] = true;
     });
 }
Exemplo n.º 18
0
 //$ans['orignews']=$news;
 if ($news) {
     $ans['news'] = $news;
     Each::fora($ans['news'], function &(&$n) use($list, &$ans) {
         $n['value'] = Load::json_decode($n['value'], true);
         $n['name'] = Sequence::right($n['name']);
         $r = Each::exec($list, function &($item) use(&$n, &$ans) {
             //Устанавливаемое значение ищим в новости
             $r = null;
             //найдено совпадение новости с устанавливаемым значением.. новость удаляем
             $a = Sequence::contain($item['name'], $n['name']);
             if ($a || $a == array()) {
                 $r = true;
                 return $r;
                 //news Длиннее... и часть новости изменена в устанавливаемом значение
             }
             $ans['a'] = $a;
             //Новость ищим в устанавливаемом значение
             $right = Sequence::contain($n['name'], $item['name']);
             if ($right) {
                 $n['value'] = Sequence::set($n['value'], $right, $item['value']);
                 //Новость осталась но она включает устанавливаемые данные
             }
             return $r;
         });
         if ($r) {
             $del = new Fix('del');
             return $del;
         }
         $r = null;
         return $r;
Exemplo n.º 19
0
 public static function numbers($page, $pages, $plen = 11)
 {
     //$plen=11;//Только нечётные и больше 6 - количество показываемых циферок
     /*
     		$pages=10
     		$plen=6
     
     		(1)2345-10
     		1(2)345-10
     		12(3)45-10
     		123(4)5-10
     		1-4(5)6-10
     		1-5(6)7-10
     		1-6(7)8910
     		1-67(8)910
     		1-678(9)10
     		1-6789(10)
     
     		$lside=$plen/2+1=4//Последняя цифра после которой появляется переход слева
     		$rside=$pages-$lside-1=6//Первая цифра после которой справа появляется переход
     		$islspace=$page>$lside//нужна ли пустая вставка слева
     		$isrspace=$page<$rside
     		$nums=$plen/2-2;//Количество цифр показываемых сбоку от текущей когда есть $islspace далее текущая
     */
     if ($pages <= $plen) {
         $ar = array_fill(0, $pages + 1, 1);
         $ar = array_keys($ar);
         array_shift($ar);
     } else {
         $plen = $plen - 1;
         $lside = $plen / 2 + 1;
         //Последняя цифра после которой появляется переход слева
         $rside = $pages - $lside - 1;
         //Первая цифра после которой справа появляется переход
         $islspace = $page > $lside;
         $isrspace = $page < $rside + 2;
         $ar = array(1);
         if ($isrspace && !$islspace) {
             for ($i = 0; $i < $plen - 2; $i++) {
                 $ar[] = $i + 2;
             }
             $ar[] = 0;
             $ar[] = $pages;
         } else {
             if (!$isrspace && $islspace) {
                 $ar[] = 0;
                 for ($i = 0; $i < $plen - 1; $i++) {
                     $ar[] = $pages - $plen / 2 + $i - 3;
                 }
             } else {
                 if ($isrspace && $islspace) {
                     $nums = $plen / 2 - 2;
                     //Количество цифр показываемых сбоку от текущей когда есть $islspace далее текущая
                     $ar[] = 0;
                     for ($i = 0; $i < $nums * 2 + 1; $i++) {
                         $ar[] = $page - $plen / 2 + $i + 2;
                     }
                     $ar[] = 0;
                     $ar[] = $pages;
                 }
             }
         }
     }
     Each::exec($ar, function &(&$num) use($page) {
         $n = $num;
         $num = array('num' => $n, 'title' => $n);
         if (!$num['num']) {
             $num['empty'] = true;
             $num['num'] = '';
             $num['title'] = '&nbsp;';
         }
         if ($n == $page) {
             $num['active'] = true;
         }
         $r = null;
         return $r;
     });
     if (sizeof($ar) < 2) {
         return false;
     }
     $prev = array('num' => $page - 1, 'title' => '&laquo;');
     if ($page <= 1) {
         $prev['empty'] = true;
     }
     array_unshift($ar, $prev);
     $next = array('num' => $page + 1, 'title' => '&raquo;');
     if ($page >= $pages) {
         $next['empty'] = true;
     }
     array_push($ar, $next);
     return $ar;
 }
}
if ($obj->parent !== $parent) {
    return Ans::err($ans, 'Некорректно определён parent');
}
Crumb::change('test/hi');
$obj = Crumb::getInstance('test');
if (!$obj->is) {
    return Ans::err($ans, 'Не применилась крошка на втором уровне');
}
$root = Crumb::getInstance();
Crumb::change('');
$crumb = Crumb::getInstance('');
$f = $crumb->query;
Crumb::change('test');
$s =& Crumb::getInstance('some');
$s2 =& Crumb::getInstance('some');
$r = Each::isEqual($s, $s2);
$s = Crumb::$childs;
$r2 = Each::isEqual($s[''], Crumb::getInstance());
$r = $r && $r2;
$crumb = Crumb::getInstance('test');
$crumb2 = Crumb::getInstance('test2');
if (!($f == null && $r && !is_null($crumb->value) && is_null($crumb2->value))) {
    return Ans::err($ans, 'Изменения крошек');
}
Crumb::change('test/test');
$inst = Crumb::getInstance('test/test/test');
Crumb::change($query);
Layer::$start_id = 1;
Layer::$ids = array();
return Ans::ret($ans);
Exemplo n.º 21
0
 public static function writeNews($list, $session_id)
 {
     if (!$list) {
         return;
     }
     $db =& Db::pdo();
     global $infra_session_lasttime;
     $isphp = !!$infra_session_lasttime;
     $sql = 'insert into `ses_records`(`session_id`, `name`, `value`, `time`) VALUES(?,?,?,FROM_UNIXTIME(?))';
     $stmt = $db->prepare($sql);
     $sql = 'delete from `ses_records` where `session_id`=? and `name`=? and `time`<=FROM_UNIXTIME(?)';
     $delstmt = $db->prepare($sql);
     Each::exec($list, function &($rec) use($isphp, &$delstmt, &$stmt, $session_id) {
         $r = null;
         if (!$isphp && $rec['name'][0] == 'safe') {
             return $r;
         }
         $name = Sequence::short($rec['name']);
         $delstmt->execute(array($session_id, $name, $rec['time']));
         $stmt->execute(array($session_id, $name, Load::json_encode($rec['value']), $rec['time']));
         if (!$isphp && !$name) {
             //Сохранится safe
             Session::clear();
         }
         return $r;
     });
 }
Exemplo n.º 22
0
	$test.='b';
},'',$obj);
$r=Event::fire('test.ontest', $obj);
if($test!='ab'||!$r) return Ans::err($ans,'Событие с объектом '.$test);
*/
$obj1 = array('id' => 1);
$obj2 = array('id' => 2);
$obj3 = array('id' => 3);
Event::$classes['layer'] = function ($obj) {
    return $obj['id'];
};
$test = '';
Event::handler('layer.ontest', function (&$obj) use(&$test, &$obj2) {
    $test .= $obj['id'];
    if ($obj['id'] == $obj2['id']) {
        if (!Each::isEqual($obj, $obj2)) {
            return;
        }
    }
    if ($obj['id'] === 1) {
        return false;
    }
    $test .= $obj['id'];
});
$r = Event::fire('layer.ontest', $obj2);
if (!$r) {
    return Ans::err($ans, 'Событие анализирую объект возвращает true');
}
$r = Event::fire('layer.ontest', $obj1);
if ($r) {
    return Ans::err($ans, 'Событие анализирую объект возвращает false');
Exemplo n.º 23
0
 public static function addFiles($root, &$pos, $dir = false)
 {
     $props = array('producer', 'article');
     if (!isset($pos['images'])) {
         $pos['images'] = array();
     }
     if (!isset($pos['texts'])) {
         $pos['texts'] = array();
     }
     if (!isset($pos['files'])) {
         $pos['files'] = array();
     }
     if (!$dir) {
         $dir = array();
         $pth = Path::resolve($root);
         if (Each::forr($props, function &($name) use(&$dir, &$pos) {
             $rname = Sequence::right($name);
             $val = Sequence::get($pos, $rname);
             if (!$val) {
                 return true;
             }
             $dir[] = $val;
             $r = null;
             return $r;
         })) {
             return;
         }
         if ($dir) {
             $dir = implode('/', $dir) . '/';
             $dir = $pth . $dir;
         } else {
             $dir = $pth;
         }
     } else {
         $dir = $root . $dir;
     }
     $dir = Path::theme($dir);
     if (!$dir) {
         return false;
     }
     if (is_dir($dir)) {
         $paths = glob($dir . '*');
     } elseif (is_file($dir)) {
         $paths = array($dir);
         $p = Load::srcInfo($dir);
         $dir = $p['folder'];
     }
     Each::forr($paths, function &($p) use(&$pos, $dir) {
         $d = explode('/', $p);
         $name = array_pop($d);
         $n = mb_strtolower($name);
         $fd = Load::nameInfo($n);
         $ext = $fd['ext'];
         //if(!$ext)return;
         if (!is_file($dir . $name)) {
             return;
         }
         //$name=preg_replace('/\.\w{0,4}$/','',$name);
         /*$p=pathinfo($p);
         		$name=$p['basename'];
         		$ext=strtolower($p['extension']);*/
         if ($name[0] == '.') {
             return;
         }
         $dir = Path::pretty($dir);
         $name = Path::toutf($dir . $name);
         $im = array('png', 'gif', 'jpg');
         $te = array('html', 'tpl', 'mht', 'docx');
         if (in_array($ext, $im)) {
             $pos['images'][] = $name;
         } else {
             if (in_array($ext, $te)) {
                 $pos['texts'][] = $name;
             } else {
                 if ($ext != 'db') {
                     $pos['files'][] = $name;
                 }
             }
         }
         $r = null;
         return $r;
     });
     $pos['images'] = array_unique($pos['images']);
     $pos['texts'] = array_unique($pos['texts']);
     $pos['files'] = array_unique($pos['files']);
 }
Exemplo n.º 24
0
 private function rksort(&$data)
 {
     ksort($data);
     foreach ($data as &$v) {
         if (!is_array($v)) {
             continue;
         }
         if (Each::isAssoc($v) === true) {
             self::rksort($v);
         }
         //else sort($v);
     }
 }
Exemplo n.º 25
0
 public static function _getHtml(&$layer)
 {
     //Вызывается как для основных так и для подслойв tpls frame. Расширяется в tpltpl.prop.js
     if (@$layer['data'] || @$layer['json'] || @$layer['tpls'] || @$layer['tplroot']) {
         $tpls = Template::make($layer['tpl']);
         //С кэшем перепарсивания
         Template::includes($tpls);
         $repls = array();
         //- подшаблоны для замены, Важно, что оригинальный распаршеный шаблон не изменяется
         Each::fora($layer['tplsm'], function &($tm) use(&$repls) {
             //mix tpl
             $t = Template::make($tm);
             //С кэшем перепарсивания
             array_push($repls, $t);
             //for(var i in t)repls[i]=t[i];//Нельзя подменять в оригинальном шаблоне, который в других местах может использоваться без подмен
             //^ из-за этого обработчики указанные в tplsm срабатывают постоянно, так как нельзя поставить отметку о том что обработчик сохранён
             $r = null;
             return $r;
         });
         $layer['data'] =& self::getData($layer);
         //подменили строку data на объект data
         $alltpls = array(&$repls, &$tpls);
         $html = Template::exec($alltpls, $layer, @$layer['tplroot'], @$layer['dataroot']);
     } else {
         $tpl = self::getTpl($layer);
         $html = $tpl;
     }
     if (!$html) {
         $html = '';
     }
     return $html;
 }