Exemple #1
0
<?php

namespace infrajs\infra;

use infrajs\access\Access;
use infrajs\event\Event;
use infrajs\ans\Ans;
use infrajs\load\Load;
if (!is_file('vendor/autoload.php')) {
    chdir('../../../../');
    require_once 'vendor/autoload.php';
}
$ans = array();
$ans['title'] = 'Тест на декодирование JSON';
$source = '""';
$data = Load::json_decode($source);
if ($data !== '') {
    return Ans::err($ans, 'Не может декодировать');
}
return Ans::ret($ans, 'Декодировано');
Exemple #2
0
        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, 'Всё ок');
Exemple #3
0
<?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, 'Обновление сейчас не идёт');
Exemple #4
0
<?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);
$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, 'Ссылки работают, ну или ведут себя предстказуемо.');
Exemple #6
0
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);
Exemple #7
0
<?php

namespace infrajs\mem;

use infrajs\ans\Ans;
if (!is_file('vendor/autoload.php')) {
    chdir('../../../../');
}
require_once 'vendor/autoload.php';
$ans = array();
$ans['title'] = 'Проверка кэша';
$conf = Mem::$conf;
if ($conf['type'] != 'fs') {
    $ans['class'] = "bg-warning";
    return Ans::ret($ans, 'Mem не настроен на файловую систему');
}
Mem::set('test', true);
$val = Mem::get('test');
if (!$val) {
    return Ans::err($ans, 'Неудалось восстановить значение. Требуется F5');
}
return Ans::ret($ans, 'Кэш работает');
Exemple #8
0
<?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. Папки не создаются.');
}
Exemple #9
0
<?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 = array('title' => 'Проверка функции strtolower');
$s1 = 'Кирилица utf8';
$s2 = 'кирилица utf8';
if (mb_strtolower($s1) != $s2) {
    return Ans::err($ans, 'mb_strtolower не работает ');
}
return Ans::ret($ans, 'infra strtolower работает');
Exemple #10
0
$ans['title'] = 'Тест на значение отладки debug и test';
$conf = Config::get('access');
if (Access::debug() && !is_string($conf['debug']) && !is_array($conf['debug'])) {
    $ans['class'] = 'bg-warning';
    return Ans::ret($ans, 'Значение config.infra.debug = true');
}
if (Access::test() && !is_string($conf['test']) && !is_array($conf['test'])) {
    $ans['class'] = 'bg-warning';
    return Ans::ret($ans, 'Значение config.infra.test = true');
}
$debug = $conf['debug'];
if ($debug) {
    if (!is_array($debug)) {
        $debug = array($debug);
    }
    $key = array_search('::1', $debug);
    if ($key !== false) {
        array_splice($debug, $key, 1);
    }
    $key = array_search('127.0.0.1', $debug);
    if ($key !== false) {
        array_splice($debug, $key, 1);
    }
    if ($debug) {
        return Ans::err($ans, 'debug позволяет увидеть логин пароль админа. debug не должен содержать левые Ip адреса. Не должен быть указан на продакшине. config.infra.debug=' . $conf['debug']);
    }
} else {
    //debug вообще запрещён всё ок
}
return Ans::ret($ans, 'Безопасные infra.debug:' . $conf['debug'] . ' и infra.test:' . $conf['test']);
Exemple #11
0
<?php

use infrajs\ans\Ans;
if (!is_file('vendor/autoload.php')) {
    chdir('../../../');
    require_once 'vendor/autoload.php';
}
$ans = array();
$ans['title'] = 'Check GD extension';
if (!function_exists('imagecreatetruecolor')) {
    return Ans::err($ans, 'GD required');
}
return Ans::ret($ans, 'ok');
Exemple #12
0
if (empty($_REQUEST['email'])) {
    return Ans::err($ans, $conf['msg']);
}
if (strlen($_REQUEST['email']) > 1000) {
    return Ans::err($ans, 'Слишком много данных. ' . $conf['msg']);
}
$email = strip_tags($_REQUEST['email']);
$email = trim($email);
$email = Path::encode($email);
$agent = $_SERVER['HTTP_USER_AGENT'];
$ip = $_SERVER['REMOTE_ADDR'];
session_start();
if (empty($_SESSION['submit_time'])) {
    $_SESSION['submit_time'] = 0;
}
if (time() - $_SESSION['submit_time'] < 60) {
    return Ans::err($ans, 'Письмо уже отправлено! Новое сообщение можно будет отправить через 1 минуту!');
}
$_SESSION['submit_time'] = time();
$data = array('email' => $email, 'agent' => $agent, 'ip' => $ip, 'host' => $_SERVER['HTTP_HOST']);
$body = Template::parse('-subscribe/subscribe.mail.tpl', $data);
Mail::toAdmin('Запрос ' . $data['host'] . ' ' . $email, 'noreplay@' . $data['host'], $body);
$src = Path::resolve('~.subscribe.json');
$subs = Load::loadJSON($src);
if (!$subs) {
    $subs = array();
}
$subs[$email] = date('d.m.Y');
file_put_contents($src, Load::json_encode($subs));
return Ans::ret($ans, 'Ваша заявка принята');
Exemple #13
0
if (!$conf['db']) {
    $ans['class'] = 'bg-warning';
    return Ans::ret($ans, 'db.conf.db=false Нет разрешения на использование базы данных');
}
$db =& Db::pdo();
if (!$db) {
    return Ans::err($ans, 'Не удалось соединиться с базой данных');
}
$val = Session::get('test');
$conf = Config::get();
if (!$conf['session']['sync']) {
    $ans['class'] = 'bg-warning';
    return Ans::ret($ans, 'Сессия не синхронизируется с сервером session.sync:false');
}
if (!class_exists('PDO')) {
    return Ans::err($ans, 'class PDO is required');
}
$db =& Db::pdo();
if (!$db) {
    return Ans::err($ans, 'ERROR нет базы данных');
}
$val = Session::get('test');
$val = (int) $val + 1;
Session::set('test', $val);
$d = Session::get();
$ans['test'] = $d['test'];
if ($d['test'] > 1) {
    return Ans::ret($ans, 'PASS');
} else {
    return Ans::err($ans, 'ERROR нажмите 1 раз F5');
}
Exemple #14
0
<?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, 'Данные есть, теремок должен работать');
Exemple #15
0
<?php

use infrajs\access\Access;
use infrajs\event\Event;
use infrajs\ans\Ans;
use infrajs\load\Load;
use infrajs\each\Each;
use infrajs\config\Config;
if (!is_file('vendor/autoload.php')) {
    chdir('../../../../');
    require_once 'vendor/autoload.php';
}
$ans = array('title' => 'Тест на совпадение названия указанного файла и его путь');
$file = Load::nameInfo('*1 file@23.txt');
$src = Load::srcInfo('*1 file@23.txt');
if ($file['id'] != 23 && $src['src'] != '*1 file@23.txt') {
    return Ans::err($ans, 'Такого файла не существует или не правидьно указан путь');
}
return Ans::ret($ans, 'Путь указан правильно, файл найден');
Exemple #16
0
<?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');
Exemple #17
0
<?php

namespace infrajs\infra;

use infrajs\access\Access;
use infrajs\event\Event;
use infrajs\ans\Ans;
use infrajs\template\Template;
use infrajs\path\Path;
if (!is_file('vendor/autoload.php')) {
    chdir('../../../../');
    require_once 'vendor/autoload.php';
}
/*
	Пустой шаблон также содержи подшаблон root, ошибка что возвращается слово root
*/
$ans = array('title' => 'Проверка что пустой шаблон не возвращает слово root');
$ans['res'] = Template::parse(array(''), true);
if ($ans['res'] !== '') {
    return Ans::err($ans, 'Непройден тест 1 {res}');
}
$ans['res'] = Template::parse(array(''));
if ($ans['res'] !== '') {
    return Ans::err($ans, 'Непройден тест 2 {res}');
}
return Ans::ret($ans, 'Все теcты пройдены');
Exemple #18
0
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!');
Exemple #19
0
    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!');
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, 'Работает две генерации');
Exemple #21
0
<?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т пройдены. Получился ожидаемый результат поле распарсивания шаблона.');
Exemple #22
0
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, 'сервер доступен');
Exemple #23
0
<?php

namespace infrajs\layer\subs;

use infrajs\ans\Ans;
if (!is_file('vendor/autoload.php')) {
    chdir('../../../../');
    require_once 'vendor/autoload.php';
}
return Ans::ret();
Exemple #24
0
}
$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>");
Exemple #25
0
<?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\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');
Exemple #27
0
use infrajs\access\Access;
use infrajs\ans\Ans;
if (!is_file('vendor/autoload.php')) {
    chdir('../../../');
    require_once 'vendor/autoload.php';
}
$ans = array();
$ans['title'] = 'Общая проверка';
Access::test(true);
$res = Load::loadJSON('-autoedit/autoedit.php?type=editfile&id=~.infra.json');
if (Access::admin()) {
    if (!$res['result'] || !$res['isfile']) {
        return Ans::err($ans, 'Неудалось получить информацию о файле .infra.json');
    }
} else {
    if (!$res || $res['result']) {
        return Ans::err($ans, 'Неудалось обратиться за файлом .infra.json');
    }
}
$res = Load::loadJSON('-autoedit/autoedit.php?type=editfolder&id=~');
if (Access::admin()) {
    if (!$res['result'] || !sizeof($res['list'])) {
        return Ans::err($ans, 'Неудалось прочитать папку');
    }
} else {
    if (!$res || $res['result']) {
        return Ans::err($ans, 'Неудалось обратиться к папке');
    }
}
return Ans::ret($ans, 'Вроде ок, прочитали папку, посмотрели файл');