public function testAns() { /** * Ans::ans([array $ans]) - Используется для вывода данных в формате json. */ $data = ob_get_contents(); $this->assertTrue(Ans::ans('test') === '"test"'); }
/** * в автозапуск инициализацию вынести нельзя так как нет причин обращаться к Nostore а автозапуск * привязан к обращение к классу **/ public static function init() { $conf = Nostore::$conf; $action = Ans::GET('-nostore', 'string'); if ($action === 'true') { return Nostore::on(); } if ($conf['public']) { //Значения по умолчанию выставляются Nostore::pub(); //Администраторы вкурсе кэша } else { Nostore::off(); //Администраторы не знают как отключать кэш в браузере или для удобства } }
public static function init() { Once::exec(__FILE__ . 'init', function () { $action = Ans::GET('-update'); Config::init(); $path = Path::$conf; if ($action) { Access::test(true); if (!Update::$is) { Path::fullrmdir($path['cache']); Update::exec(); } } if ($path['fs'] && !Update::$is) { if (!is_dir($path['cache'])) { Access::$conf['test'] = true; Update::exec(); } if (Access::isTest()) { if (is_file($path['data'] . 'update')) { unlink($path['data'] . 'update'); Access::$conf['test'] = true; if (!Update::$is) { Path::fullrmdir($path['cache']); Update::exec(); } } } } if (Update::$is) { if (is_file($path['data'] . 'update')) { unlink($path['data'] . 'update'); } } }); }
$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, 'Ссылки работают, ну или ведут себя предстказуемо.');
} } $res['src'] = $finfo['src']; $res['name'] = $finfo['file']; //имя тестируемого файла if (!$res['result']) { $errors[] = $name . ' ' . $res['name'] . ' ' . $res['msg']; } if ($type == 'errors') { if (!$res['result']) { $data['list'][$name][] = $res; } } else { $data['list'][$name][] = $res; } } } /*if ($type=='errors' && !sizeof($data['list'])) { header('Location: '.View::getPath().'-tester/'); exit; }*/ if ($type == 'auto') { $ans['result'] = !$errors; if (!$ans['result']) { $ans['msg'] = implode(', ', $errors) . '.'; } return Ans::ans($ans); } $data['type'] = $type; $html = Template::parse('-tester/index.tpl', $data); echo $html;
<?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);
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\access\Access; use infrajs\ans\Ans; use infrajs\nostore\Nostore; $action = Ans::GET('-access'); if ($action == 'false') { if (Access::isTest()) { Access::$conf['test'] = true; } else { Access::$conf['test'] = false; } //Повышать права нельзя, если я не тестер, то нетестером и останусь!!! Access::$conf['debug'] = false; Access::$conf['admin'] = false; Nostore::on(); } else { if ($action == 'true') { Access::test(true); Access::adminSetTime(); Nostore::on(); //Страница с таким параметром не кэшируется в браузере и её можно всегда спокойно вызывать //Устанавливает будто админ только что заходил... это мягко обновит кэши шаблонов и проверит изменения файлов } }
} $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>");
<?php use infrajs\ans\Ans; use infrajs\layer\seojson\Seojson; $src = $_SERVER['QUERY_STRING']; $seo = Seojson::load($src); return Ans::ans($seo);
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, 'сервер доступен');
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"; } }
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);
<?php use infrajs\access\Access; use infrajs\ans\Ans; use infrajs\config\Config; use infrajs\router\Router; if (!is_file('vendor/autoload.php')) { chdir('../../../'); require_once 'vendor/autoload.php'; Router::init(); } Access::debug(true); $plugin = Ans::GET('plugin', 'string', null); $conf = Config::get($plugin); echo '<h1>Конфиг ' . $plugin . '</h1><pre>'; print_r($conf);
<?php namespace infrajs\infra; use infrajs\access\Access; use infrajs\event\Event; use infrajs\ans\Ans; use infrajs\path\Path; use infrajs\sequence\Sequence; use infrajs\load\Load; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; } $ans['title'] = 'Временная зона по умолчанию'; $msg = date_default_timezone_get(); return Ans::ret($ans, $msg);
<?php 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['reCAPTCHA']) { $date = date('d.m.Y'); $js = Cache::exec(array(), __FILE__, function ($date) { return file_get_contents('https://www.google.com/recaptcha/api.js?onload=grecaptchaOnload&render=explicit&hl=ru'); }, array($date)); $js .= 'window.grecaptchaOnload=function(){ Event.fire("reCAPTCHA") };'; } else { $js = '/* reCAPTCHA отключена */'; } return Ans::js($js);
<?php namespace infrajs\layer\subs; use infrajs\ans\Ans; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; } return Ans::ret();
<?php namespace infrajs\infra; use infrajs\access\Access; use infrajs\event\Event; use infrajs\ans\Ans; use infrajs\template\Template; use infrajs\path\Path; use infrajs\sequence\Sequence; use infrajs\load\Load; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; } $ans = array('title' => 'Тест 0 элемента в массиве. Известная проблема.', 'class' => 'bg-warning'); $tpl = '{root:}{0:test}{test:}{title}'; $data = array(array('title' => 'good')); $html = Template::parse(array($tpl), $data, 'root'); echo $html; $ans['class'] = 'bg-warning'; if ($html != 'good') { return Ans::ret($ans, '0 элемент принят за false как будто его нет'); } return Ans::ret($ans, 'Теcт пройдены. Получился ожидаемый результат поле распарсивания шаблона.');
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, 'Работает две генерации');
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\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);
<?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, 'Данные есть, теремок должен работать');
<?php use infrajs\nostore\Nostore; use infrajs\ans\Ans; if (!is_file('vendor/autoload.php')) { chdir('../../../'); require_once 'vendor/autoload.php'; } Nostore::pubStat(); $text = file_get_contents('https://mc.yandex.ru/metrika/watch.js'); return Ans::js($text);
<?php use infrajs\path\Path; use infrajs\access\Access; use infrajs\template\Template; use infrajs\load\Load; use infrajs\ans\Ans; use Michelf\Markdown; if (!is_file('vendor/autoload.php')) { chdir('../../../'); require_once 'vendor/autoload.php'; } $src = Ans::GET('src'); $src = Path::theme($src); if (!$src) { $src = 'vendor/infrajs/mdreader/README.md'; } $map = Access::cache('mdreader', function () { $map = array('vendors' => array()); $dir = 'vendor/'; array_map(function ($file) use(&$map, $dir) { if ($file == '.') { $dir = ''; $file = '.'; $vendor = $_SERVER['HTTP_HOST']; } else { if ($file[0] == '.') { return; } else { $vendor = Path::toutf($file); }
<?php namespace infrajs\update; use infrajs\ans\Ans; if (!is_file('vendor/autoload.php')) { chdir('../../../'); require_once 'vendor/autoload.php'; } Update::init(); $ans = array(); if (Update::$is) { return Ans::ret($ans, 'Сейчас идёт обновление'); } return Ans::ret($ans, 'Обновление сейчас не идёт');
<?php use infrajs\access\Access; use infrajs\config\Config; use infrajs\ans\Ans; use infrajs\mem\Mem; use infrajs\path\Path; use infrajs\router\Router; if (!is_file('vendor/autoload.php')) { chdir('../../../'); require_once 'vendor/autoload.php'; Router::init(); } Access::test(true); Mem::flush(); Path::fullrmdir('!', true); $ans = array(); Ans::ret($ans, 'Cache cleared Mem::flush, Path::fulrmdir');
} $result = $file; }, scandir(Path::theme($folder))); if (!$result) { return false; } return Path::theme($folder . $result); }, array($fdata['path']), isset($_GET['re'])); $ans = array('src' => $isrc); if (!$src) { if (!Load::isphp()) { header('HTTP/1.0 404 Not Found'); } return; } $fdata = Load::srcInfo($src); if (in_array($fdata['ext'], array('docx'))) { $txt = Docx::get($src); return Ans::txt($txt); } if (in_array($fdata['ext'], array('mht'))) { $txt = Mht::get($src); return Ans::txt($txt); } if (in_array($fdata['ext'], array('tpl', 'html', 'htm', 'php'))) { $txt = Load::loadTEXT($src); return Ans::txt($txt); } if (!Load::isphp()) { header('HTTP/1.0 400 Bad Request'); }
<?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\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');
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!');