Exemple #1
0
 public function testAns()
 {
     /**
      * Ans::ans([array $ans]) - Используется для вывода данных в формате json.
      */
     $data = ob_get_contents();
     $this->assertTrue(Ans::ans('test') === '"test"');
 }
Exemple #2
0
 /**
  * в автозапуск инициализацию вынести нельзя так как нет причин обращаться к 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();
         //Администраторы не знают как отключать кэш в браузере или для удобства
     }
 }
Exemple #3
0
 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, 'Ссылки работают, ну или ведут себя предстказуемо.');
Exemple #5
0
            }
        }
        $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;
Exemple #6
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);
Exemple #7
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!');
Exemple #8
0
<?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();
        //Страница с таким параметром не кэшируется в браузере и её можно всегда спокойно вызывать
        //Устанавливает будто админ только что заходил... это мягко обновит кэши шаблонов и проверит изменения файлов
    }
}
Exemple #9
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 #10
0
<?php

use infrajs\ans\Ans;
use infrajs\layer\seojson\Seojson;
$src = $_SERVER['QUERY_STRING'];
$seo = Seojson::load($src);
return Ans::ans($seo);
Exemple #11
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 #12
0
    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";
    }
}
Exemple #13
0
        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);
Exemple #14
0
<?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);
Exemple #15
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);
Exemple #16
0
<?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);
Exemple #17
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 #18
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т пройдены. Получился ожидаемый результат поле распарсивания шаблона.');
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 #20
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 #21
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 #22
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 #23
0
<?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);
Exemple #24
0
<?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);
            }
Exemple #25
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 #26
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 #27
0
        }
        $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');
}
Exemple #28
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. Папки не создаются.');
}
<?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 #30
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!');