Ejemplo n.º 1
0
 public static function init()
 {
     Once::exec(__FILE__, function () {
         //Список операций выполняющихся при любом запросе со спецсимволом в адресе [-~!] и при запросах без файлов
         //или при яном вызове в скрипте Router::init();
         //Собирается конфиг .infra.json из корня проекта
         //Теперь при первом обащении к классу расширения будет собираться его конфиг .infra.json из папки расширения
         Config::init();
         //Анализируется папка vendor Находятся все производители поддерживающие конфигурационные файлы .infra.json
         //Некий производитель angelcharly попадёт в список поиска, если у него есть библиотека с файлом .infra.json
         //Эту обработку можно убрать если производители прописаны вручную в config.path.search проекта
         //Без этой обработке, например, переопределения в кореновм .infra.json для расширения weather
         //не применятся к Weather::$conf и неinfrajs расширения будет работать со значениями по умолчанию
         //.infra.json в самих неinfrajs расширениях также не будет прочитан,
         //но значения конфига по умолчанию и так указаны в переменной класса, вроде Weather::$conf по этому не скажется на работе
         //В общем заполняем config.path.search путями до установленных расширений
         Search::init();
         //Автоматическая установка расширений
         //Cоздаются папка cache и для расширения mem создаётся папка cache/mem, если их нет
         //Наличие этих папок, например, обязательно для Search, который кэширует свою работу
         //Во время обновления запускаются тесты
         Update::init();
         //По дате авторизации админа выход и если браузер прислал информацию что у него есть кэш
         //Заголовок Cache-control:no-store в расширении Nostore::on() запретит создавать кэш, если станет ясно, что modfeied не нужен
         Access::modified();
         //Заголовки по умолчанию для Cache-Controll
         Nostore::init();
         //Вспомогательные заголовки с информацией о правах пользователя test debug admin
         Access::headers();
     });
 }
Ejemplo n.º 2
0
 public static function exec()
 {
     if (!Update::$is) {
         Config::add('update', function ($name, $value, $conf) {
             if (!Update::$is) {
                 return;
             }
             Path::req('-' . $name . '/' . $value);
         });
     }
     Update::$is = true;
     //Пр появлении нового Config::get будет проверяться свойство update
     //Но нужно установить то что уже было установлено
     $conf = Config::$conf;
     foreach ($conf as $name => $v) {
         Update::update($name);
     }
     //И вообще всё установить нужно что ещё не установлено
     Config::get();
 }
Ejemplo n.º 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, 'Обновление сейчас не идёт');
Ejemplo n.º 4
0
<?php

use infrajs\load\Load;
use infrajs\access\Access;
use infrajs\event\Event;
use infrajs\config\Config;
use infrajs\update\Update;
$conf = Config::get('tester');
if ($conf['updatetest']) {
    Update::exec();
    //Это отодвинет update testerа в конец очереди
    $ans = Load::loadJSON('-tester/?type=auto');
    if (!$ans || !$ans['result']) {
        error_log('TESTER: There are errors in the tests /-tester/?type=errors ' . $ans['msg']);
        //if (Access::debug()) die('TESTER: There are errors in the tests <a href="/-tester/?type=errors">errors</a> <b>'.$ans['msg'].'</b>');
    } else {
        echo '<div class="well">С обновлением выполнено <a href="/-tester/">тестирование</a>, ошибок не обнаружено</div>';
    }
}