if (sizeof($preview['images']) != 1) { return Ans::err($ans, 'Cant read images test.docx'); } if (mb_strlen($preview['preview']) != 119) { return Ans::err($ans, 'Cant read test.docx preview ' . mb_strlen($preview['preview'])); } $name = 'test.tpl'; $preview = Mht::preview('-test-akiyatkin/resources/' . $name); if (sizeof($preview) != 12) { return Ans::err($ans, 'Cant read preview ' . $name . ' ' . sizeof($preview)); } if (sizeof($preview['links']) != 1) { return Ans::err($ans, 'Cant read links ' . $name . ' ' . sizeof($preview['links'])); } if (sizeof($preview['images']) != 2) { return Ans::err($ans, 'Cant read images ' . $name . ' ' . sizeof($preview['images'])); } if (mb_strlen($preview['preview']) != 521) { return Ans::err($ans, 'Cant read ' . $name . ' preview ' . strlen($preview['preview'])); } $name = 'test.tpl'; $text = Mht::get('-test-akiyatkin/resources/' . $name); if (mb_strlen($text) != 1935) { return Ans::err($ans, 'Cant read ' . $name . ' ' . strlen($text)); } $name = 'test.html'; $text = Mht::get('-test-akiyatkin/resources/' . $name); if (strlen($text) != 1073) { return Ans::err($ans, 'Cant read ' . $name . ' ' . strlen($text)); } return Ans::ret($ans, 'tpl, mht, docx read ok!');
<?php use infrajs\path\Path; use infrajs\ans\Ans; use infrajs\config\search\Search; if (!is_file('vendor/autoload.php')) { chdir('../../../'); require_once 'vendor/autoload.php'; } Search::init(); $ans = array(); $ans['search'] = Path::$conf['search']; if (sizeof(Path::$conf['search']) == 1 && is_dir('vendor/ded/')) { //$ans['class']='bg-warning'; return Ans::err($ans, 'Только одна папка поиска - ' . print_r(Path::$conf['search'], true) . ', такое может быть ещё для пустого проекта. Как минимум должен быть найден vendor/ded c domready'); } return Ans::ret($ans);
<?php namespace infrajs\yml; use infrajs\path\Path; use infrajs\ans\Ans; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; } $ans = []; if (!is_dir('data/')) { return Ans::err($ans, 'Папки data нет'); } if (!is_file('data/yml.xlsx')) { return Ans::err($ans, 'Файла excel нет'); } $src = '~yml.xlsx'; if (!Path::theme($src)) { return Ans::err($ans, 'Файл не найден.' . $src); } return Ans::ret($ans);
$ans = array(); $ans['title'] = 'Проверка ключей событий'; $test = ''; Event::handler('ontestkeys', function () use(&$test) { $test .= 3; }, 'some:test'); Event::handler('ontestkeys', function () use(&$test) { $test .= 1; }, 'test'); Event::handler('ontestkeys', function () use(&$test) { $test .= 2; }, 'test'); Event::fire('ontestkeys'); if ($test != '123') { return Ans::err($ans, 'Группа событий не сработало в нужном порядке ' . $test); } $test = ''; Event::handler('oh.ontestkeys', function () use(&$test) { $test .= 2; }); Event::handler('oh.ontestkeys', function () use(&$test) { $test .= 3; }, 'test'); Event::handler('oh.ontestkeys', function () use(&$test) { $test .= 1; }, 'oh'); Event::fire('oh.ontestkeys'); if ($test != '123') { return Ans::err($ans, 'Имя класса - ключ по умаолчанию ' . $test); } return Ans::ret($ans);
use infrajs\excel\Xlsx; use infrajs\router\Router; use infrajs\ans\Ans; if (!is_file('vendor/autoload.php')) { chdir('../../../'); require_once 'vendor/autoload.php'; Router::init(); //Требуется автоматическая установка } $ans = array(); //Три уровня разбора данных //1 Минимум требований к структуре Excel документа, данные "как есть" $data = Xlsx::parse('vendor/infrajs/excel/test.xlsx'); if (sizeof($data) != 22) { return Ans::err($ans, 'Некорректный результат Xlsx::parse ' . sizeof($data)); } //2 Простая структура - Распознаются заголовки таблицы, описание таблицы, структура групп. Можно применять Xlsx::runPoss и Xlsx::runGroups $data = Xlsx::get('vendor/infrajs/excel/test.xlsx'); if (sizeof($data) != 7) { return Ans::err($ans, 'Некорректный результат Xlsx::get ' . sizeof($data)); } //3 Оптимизировання структура. Обязательна колонка Артикул, объединение групп. Большой список опций вторым аргументом $data = Xlsx::init('vendor/infrajs/excel/test.xlsx'); /*echo count($data); echo '<pre>'; print_r($data); exit;*/ if (sizeof($data['childs']) != 1) { return Ans::err($ans, 'Некорректный результат Xlsx::init ' . sizeof($data)); } return Ans::ret($ans);
namespace infrajs\controller; use infrajs\view\View; use infrajs\ans\Ans; use infrajs\path\Path; use infrajs\config\Config; use infrajs\event\Event; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; } $ans = array(); $ans['title'] = 'Проверка функции Controller::check'; View::html('<div id="oh"></div>', true); Config::get('controller'); //Нужно инициализировать Crumb с Контроллером, crumb может работать самостоятельно. Crumb::init(); $layer = array('tpl' => array('хой<div id="test"></div>'), 'div' => 'oh'); $html = Controller::check($layer); if ($html != '<div id="oh">хой<div id="test"></div></div>') { return Ans::err($ans, 'Ошибка'); } $layer = array('tpl' => array('опа'), 'div' => 'test'); $html = Controller::check($layer); if ($html != '<div id="oh">хой<div id="test">опа</div></div>') { return Ans::err($ans, 'Ошибка ' . $html); } Layer::$start_id = 1; Layer::$ids = array(); View::html('', true); return Ans::ret($ans, 'Работает две генерации');
namespace infrajs\contacts; use infrajs\router\Router; use infrajs\ans\Ans; use infrajs\config\Config; use infrajs\cache\Cache; if (!is_file('vendor/autoload.php')) { chdir('../../../'); //Согласно фактическому расположению файла require_once 'vendor/autoload.php'; Router::init(); } $conf = Config::get('contacts'); if (!$conf['yaCounter']) { $ans['class'] = 'bg-warning'; $yc = 'Не указан счётчик Яндекс.Метрики с целью contacts. Config.contacts.yaCounter'; } else { $yc = 'Яндекс.Метрика указана'; } if ($conf['reCAPTCHA']) { if (empty($conf['reCAPTCHA_secret'])) { return Ans::err($ans, 'Для reCAPTCHA не указан secret.' . $yc); } if (empty($conf['reCAPTCHA_sitekey'])) { return Ans::err($ans, 'Для reCAPTCHA не указан sitekey.' . $yc); } } else { $ans['class'] = 'bg-warning'; return Ans::ret($ans, '<a href="https://www.google.com/recaptcha/intro/index.html">reCAPTCHA</a> отключена.' . $yc); } return Ans::ret($ans, $yc);
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, 'Всё ок');
use infrajs\load\Load; use infrajs\config\Config; use infrajs\access\Access; if (!is_file('vendor/autoload.php')) { chdir('../../../'); require_once 'vendor/autoload.php'; Router::init(); } $ans = array(); $osrc = Ans::GET('src'); if (!$osrc) { return Ans::err($ans, 'Для работы необходимо передать параметр ?src= до папки с иллюстрациями: ' . $osrc); } $src = Path::theme($osrc); if (!$src) { return Ans::err($ans, 'Неправильный путь до папки с иллюстрациями: ' . $osrc); } $list = Access::cache(__FILE__, function ($src) { $list = array(); array_map(function ($file) use(&$list, $src) { if ($file[0] == '.') { return; } $fdata = Load::nameInfo($file); if (!in_array($fdata['ext'], array('jpg', 'jpeg', 'png'))) { return; } $list[] = $src . Path::toutf($file); }, scandir($src)); return $list; }, array($src));
<?php use infrajs\view\View; use infrajs\ans\Ans; use infrajs\load\Load; use infrajs\config\Config; $ans = array(); if (isset($_GET['seo'])) { if (empty($_GET['link'])) { return Ans::err($ans, 'Wrong parameters'); } $link = $_GET['link']; $link = $link . '/find'; $ans['external'] = '-catalog/seo.json'; $ans['canonical'] = View::getPath() . $link; return Ans::ans($ans); } $ans = Load::loadJSON('-catalog/search.php'); $ans['breadcrumbs'] = array(); $conf = Config::get('catalog'); $ans['breadcrumbs'][] = array('href' => '', 'title' => $conf['title']); $menu = Load::loadJSON('-catalog/menu.json'); $ans['breadcrumbs'][] = array('active' => true, 'href' => 'find', 'title' => $menu['find']['title']); $ans['menu'] = $menu; return Ans::ret($ans);
<?php namespace infrajs\autoedit; use infrajs\load\Load; use infrajs\access\Access; use infrajs\ans\Ans; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; } $ans = array('title' => 'Проверка обработчиков каталога - позиция, группа, производители, рубрики и тп.'); $data = Load::loadJSON('-catalog/rubrics.php'); if (!$data) { return Ans::err($ans, 'Ошибка rubrics.php'); } $data = Load::loadJSON('-catalog/producers.php'); if (!$data) { return Ans::err($ans, 'Ошибка producers.php'); } $data = Load::loadJSON('-catalog/stat.php'); if (!$data) { return Ans::err($ans, 'Ошибка stat.php'); } return Ans::ret($ans);
require_once 'vendor/autoload.php'; Router::init(); } $ans = array(); $lim = Ans::GET('lim', 'string', '0,100'); $p = explode(',', $lim); if (sizeof($p) != 2) { return Ans::err($ans, 'Некорректный параметр lim'); } list($start, $count) = $p; $dir = Ans::GET('src', 'string'); if (!$dir) { return Ans::err($ans, 'Укажите обязательный параметр src'); } if (!Path::isNest('~', $dir)) { return Ans::err($ans, 'Указан небезопасный путь src'); } $order = Ans::GET('order', ['descending', 'ascending']); $ans['order'] = $order; $list = Access::cache(__FILE__, function ($dir, $order) { $list = array(); array_map(function ($file) use(&$list, $dir) { if ($file[0] == '.') { return; } $file = Path::toutf($file); if (!Path::theme($dir . $file)) { return; } $fd = Load::nameInfo($file); if (!in_array($fd['ext'], array('jpg', 'png'))) {
chdir('../../../'); //Согласно фактическому расположению файла require_once 'vendor/autoload.php'; } ini_set("display_errors", 1); $from = 'noreplay@' . $_SERVER['HTTP_HOST']; $headers = 'From: ' . $from . "\r\n"; $headers .= "Content-type: text/plain; charset=UTF-8\r\n"; $headers .= 'Reply-To: aky@list.ru' . "\r\n"; //echo 'Нативная проверка<br>'; //$r=mail('*****@*****.**','Проверка с сервера '.$_SERVER['HTTP_HOST'],'Текст проверочного сообщения',$headers); //var_dump($r); //return;//нельзя зачастую лимит стоит сколько писем за раз можно отправлять //echo '<br>Сложная проверка<br>'; $conf = Access::$conf['admin']; $ans = array(); if (!$conf['support']) { return Ans::err($ans, 'У администратора не указан email support'); } $body = Path::theme('-mail/update.tpl'); $body = file_get_contents($body); $body = str_replace(array("{host}", "{date}"), array($_SERVER['HTTP_HOST'], date('j.m.Y')), $body); $subject = 'Выполнено обновление ' . $_SERVER['HTTP_HOST']; $email_from = 'noreplay@' . $_SERVER['HTTP_HOST']; $r = Mail::toSupport($subject, $email_from, $body); if (!$r) { error_log('Не удалось отправить тестовое письмо.'); if (Access::debug() && !Load::isphp()) { echo '<pre>Не удалось отправить <a href="/-mail/update.php">тестовое письмо</a>.</pre>' . "\n"; } }
use infrajs\ans\Ans; use infrajs\load\Load; if (!is_file('vendor/autoload.php')) { chdir('../../../'); require_once 'vendor/autoload.php'; Config::init(); } $ans = array('title' => 'Запуск шаблонизатора'); $tpl = '{infra.config(name).main}'; $data = array('name' => 'rubrics'); $html = Template::parse(array($tpl), $data); if (!$html) { return Ans::err($ans, $tpl . ' возрващает пустую строку ' . $html); } $tpl = '{infra.config(:rubrics).main}'; $data = true; $html = Template::parse(array($tpl), $data); if (!$html) { return Ans::err($ans, $tpl . ' возрващает пустую строку ' . $html); } $conf = Config::get('rubrics'); $tpl = '{list::test}{test:}1{:date}{date:}{~date(:F,~true)}'; $data = Load::loadJSON('-rubrics/?type=' . $conf['main'] . '&list'); if (sizeof($data['list'])) { //Это если есть данные иначе тест этот не проводим $html = Template::parse(array($tpl), $data); if (!$html) { return Ans::err($ans, ' возрващает пустую строку ' . $html); } } return Ans::ret($ans);
namespace infrajs\controller; use infrajs\config\Config; use infrajs\path\Path; use infrajs\view\View; use infrajs\load\Load; use infrajs\ans\Ans; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; } $ans = array(); $ans['title'] = 'check4'; $query = Crumb::$query; Config::get('controller'); View::html('<div id="main1"></div><div id="main2"></div>', true); $layers = Load::loadJSON('-test-akiyatkin/resources/check4.json'); Crumb::change('test'); Controller::check($layers); $html = View::html(); preg_match_all('/x/', $html, $matches); $count = sizeof($matches[0]); $countneed = 2; Crumb::change($query); Layer::$start_id = 1; Layer::$ids = array(); View::html('', true); if ($count != $countneed) { return Ans::err($ans); } return Ans::ret($ans);
<?php use infrajs\load\Load; use infrajs\router\Router; use infrajs\ans\Ans; if (!is_file('vendor/autoload.php')) { chdir('../../../'); require_once 'vendor/autoload.php'; Router::init(); } $ans = array(); $data = Load::loadJSON('-teremok/teremok.php?src=-teremok/images/'); if (!$data || !$data['result']) { return Ans::err($ans, 'Ошибка нет данных'); } return Ans::ret($ans, 'Данные есть, теремок должен работать');
echo 'В файле нет сохранённых данных, файл оригинальный'; } echo '<pre>'; print_r($info); return; } if ($src && (preg_match("/\\/\\./", $src) || mb_substr($src, 0, 1) == '.' && mb_substr($src, 1, 1) != '/')) { header('HTTP/1.1 403 Forbidden'); return Ans::err($ans, 'Путь содержит запрещённые символы'); } if (!$src) { $default = true; $src = Imager::noImage(); if (!$src) { header('HTTP/1.0 404 Not Found'); return Ans::err('Noimage Not found'); } } if ($getorig) { Access::admin(true); } if (!is_null($ignoremark)) { Access::admin(true); } if ($getorig) { Access::admin(true); } $gray = isset($_GET['gray']); $args = array($src, $ignoremark, $mark, $default, $getorig, $w, $h, $crop, $top, $gray); $execute = false; $cachesrc = Imager::$conf['cache'] . 'resize/' . Hash::make($args);
} $link = $_GET['link']; $link = $link . '/producers'; $ans['external'] = '-catalog/seo.json'; $ans['canonical'] = View::getPath() . $link; return Ans::ans($ans); } $fd = Catalog::initMark($ans); if (isset($_GET['lim'])) { $lim = $_GET['lim']; } else { $lim = '0,20'; } $p = explode(',', $lim); if (sizeof($p) != 2) { return Ans::err($ans, 'Is wrong paramter lim'); } $start = (int) $p[0]; $count = (int) $p[1]; $args = array($start, $count); $list = Catalog::cache('producers.php', function ($start, $count) { $ans = array(); $data = Catalog::init(); $prods = array(); Xlsx::runPoss($data, function &(&$pos) use(&$prods) { if (empty($prods[$pos['producer']])) { $prods[$pos['producer']] = 0; } $prods[$pos['producer']]++; $r = null; return $r;
} } 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'); } $r = Event::fire('layer.ontest', $obj3); if (!$r) { return Ans::err($ans, 'Событие анализирую объект возвращает true'); } $r = Event::fire('layer.ontest', $obj1); if ($r) { return Ans::err($ans, 'Кэш. Событие анализирую объект возвращает false'); } $r = Event::fire('layer.ontest', $obj3); if (!$r) { return Ans::err($ans, 'Кэш. Событие анализирую объект возвращает true'); } if ($test != '22133') { return Ans::err($ans, 'События должны кэшироваться ' . $test); } return Ans::ret($ans);
<?php use infrajs\access\Access; use infrajs\event\Event; use infrajs\ans\Ans; use infrajs\path\Path; use infrajs\each\Each; use infrajs\config\Config; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; } $ans = array(); $ans['title'] = 'Проверка наличия папок'; $conf = Config::get(); if ($conf['mem']['type'] == 'fs') { $dirs = Config::get('path'); if (!Path::theme($dirs['cache'])) { return Ans::err($ans, 'Нет папки ' . $dirs['cache']); } if (!Path::theme($dirs['data'])) { return Ans::err($ans, 'Нет папки ' . $dirs['data']); } return Ans::ret($ans, 'Обязательные папки есть'); } else { return Ans::ret($ans, 'Используется memcache. Папки не создаются.'); }
<?php namespace infrajs\mem; use infrajs\mem\Mem; use infrajs\ans\Ans; use infrajs\config\Config; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; } $ans = array(); $ans['title'] = 'Проверка доступности сервера'; $conf = Mem::$conf; if ($conf['type'] != 'mem') { $ans['class'] = "bg-warning"; return Ans::ret($ans, 'memcache не используется config.mem.mem'); } if (!class_exists('Memcache')) { return Ans::err($ans, 'Нет класса Memcache'); } $mem = Mem::memcache(); if (!$mem) { return Ans::err($ans, 'Сервер не доступен'); } Mem::set('test', true); $val = Mem::get('test'); if (!$val) { return Ans::err($ans, 'Неудалось восстановить значение. Требуется F5'); } return Ans::ret($ans, 'сервер доступен');
<?php namespace infrajs\excel; use infrajs\access\Access; use infrajs\ans\Ans; use infrajs\config\Config; Access::test(true); $ans = array(); $data = Xlsx::init('-test-akiyatkin/resources/test.xlsx'); if (!$data) { return Ans::err($ans, 'Cant read test.xlsx'); } $data = Xlsx::init('-test-akiyatkin/resources/test.csv'); if (!$data) { return Ans::err($ans, 'Cant read test.csv'); } if (sizeof($data['childs']) != 1) { return Ans::err($ans, 'Cant read test.csv ' . sizeof($data['childs'])); } $num = ini_get('mbstring.func_overload'); if ($num != 0) { $ans['class'] = 'bg-warning'; return Ans::err($ans, 'mbstring.func_overload should be 0, not ' . $num); } else { $data = Xlsx::get('-test-akiyatkin/resources/test.xls'); if (sizeof($data['childs'][0]['data']) != 30) { return Ans::err($ans, 'Cant read test.xls ' . sizeof($data['childs'][0]['data'])); } } return Ans::ret($ans, 'csv, xls, xlsx read ok!');
} elseif ($type == 'takefile') { if ($submit) { $take = (bool) $_GET['take']; $ans['take'] = $take; $file = autoedit_theme($id); $file = Path::toutf($file); if (!$file) { $ans['noaction'] = true; //Собственно всё осталось как было } else { $takepath = autoedit_takepath($file); if (!$take && is_file($takepath)) { $r = @unlink($takepath); if (!$r) { return Ans::err($ans, 'Неудалось отпустить файл'); } } elseif ($take && !is_file($takepath)) { //Повторно захватывать не будем $save = array('path' => $id, 'date' => time(), 'ip' => $_SERVER['REMOTE_ADDR'], 'browser' => $_SERVER['HTTP_USER_AGENT']); $r = file_put_contents($takepath, Load::json_encode($save)); if (!$r) { return Ans::err('Неудалось захватить файл'); } } else { $ans['noaction'] = true; //Собственно всё осталось как было } } } } return Ans::ret($ans);
$a = 1; $b =& $a; $a = 2; if ($b !== 2) { return Ans::err($ans, 'Амперсанд глючит в простой ситуации'); } function &funcamp(&$t) { return $t; } $c = 5; $newc =& funcamp($c); $c = 6; if ($newc !== 6) { return Ans::err($ans, 'Амперсанд глючит в функции'); } $megac =& call_user_func('funcamp', $c); $c = 7; if ($megac === 7) { return Ans::err($ans, 'Амперсанд в call_user_func вдруг заработал, это очень странно!'); } $funcamp2 = function &(&$arg) { return $arg; }; $d = 5; $superc =& call_user_func_array($funcamp2, array(&$d)); $d = 8; if ($superc == 8) { return Ans::err($ans, 'Амперсанд в call_user_func_array вдруг работает! Это неожиданно!'); } return Ans::ret($ans, 'Ссылки работают, ну или ведут себя предстказуемо.');
$_SESSION['submit_time'] = time(); } $ans['testmail'] = $mdata['testmail']; if ($maildir) { $folder = Path::theme($maildir); $name = Path::tofs(Path::encode($data['name'])); $fname = date('Y F j H-i') . ' ' . $name . ' ' . time(); if ($conf['file'] && $file) { $src = $folder . $fname . '.' . Path::tofs($file['name']); $r = move_uploaded_file($file['tmp_name'], $src); if (!$r) { return Ans::err($ans, 'Неудалось загрузить файл'); } $data['file'] = Path::toutf(Path::pretty($src)); } } $body = Template::parse('-contacts/mail.tpl', $data); if (!$body) { $body = 'Ошибка. Не найден шаблон письма!'; } if ($maildir) { file_put_contents($folder . $fname . '.txt', print_r($body, true) . "\n\n\n\n\n" . print_r($mdata, true)); } if (!isset($mdata['email_from'])) { return Ans::err($ans, 'Ошибка с адресом получателя!'); } $r = Mail::toAdmin($mdata['subject'], $mdata['email_from'], $body, $mdata['testmail']); if (!$r) { return Ans::err($ans, "Неудалось отправить письмо из-за ошибки на сервере!"); } return Ans::ret($ans, "Письмо отправлено!<blockquote>" . $data['text'] . "</blockquote>");
use infrajs\session\Session; use infrajs\sequence\Sequence; use infrajs\router\Router; if (!is_file('vendor/autoload.php')) { chdir(explode('vendor/', __DIR__)[0]); require_once 'vendor/autoload.php'; Router::init(); } $ans = array(); try { $db =& Db::pdo(); } catch (Exception $e) { $db = false; } if (!$db) { return Ans::err($ans, 'Нет соединения с базой данных. Сессия только в браузере.'); } $session_id = View::getCookie('infra_session_id'); $session_pass = View::getCookie('infra_session_pass'); $timelast = isset($_REQUEST['time']) ? (int) $_REQUEST['time'] : View::getCookie('infra_session_time'); if (!$timelast) { $timelast = 0; } $ans['timelast'] = $timelast; $time = time(); //время синхронизации и время записываемых данных, устанавливается в cookie $ans['time'] = $time; $list = Load::json_decode($_POST['list']); Each::exec($list, function &(&$li) use($time) { $li['time'] = $time; //У каждого сета добавляем его момет, что бы он начал попадат в выборку по времени в своём периуде
<?php namespace infrajs\controller; use infrajs\ans\Ans; use infrajs\path\Path; use infrajs\view\View; use infrajs\load\Load; use infrajs\router\Router; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; Router::init(); } $query = Crumb::$href; $ans = array('title' => 'Проверки контроллера'); $composer = Load::loadJSON('-infrajs/composer.json'); $require = $composer['require']; foreach ($require as $path => $ver) { $p = explode('/', $path); $r = Path::reqif('-' . $p[1] . '/infra.php'); } $layer = array('data' => 1, 'tpl' => array('qewr{data}')); Crumb::change(''); $html = Controller::check($layer); if ($html != 'qewr1') { return Ans::err($ans, 'Результат неожиданный ' . $html); } Crumb::change($query); View::html('', true); return Ans::ret($ans);
} 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);
<?php namespace infrajs\controller; use infrajs\controller\Controller; use infrajs\controller\Run; use infrajs\view\View; use infrajs\ans\Ans; use infrajs\path\Path; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; } $ans = array(); $ans['title'] = 'isEqual'; $l = array('tpl' => 'asdf', 'test' => 'bad'); $layers = array(&$l); $msg = 'Maybe good'; $layer =& Run::exec($layers, function &(&$layer) use($msg) { $layer['test'] = $msg; return $layer; }); $l['test'] = 'Good'; if ($l['test'] != $layer['test']) { return Ans::err($ans, 'err'); } return Ans::ret($ans, 'ret');
//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, 'Всё ок');