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
<?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);
Ejemplo n.º 3
0
 public static function checkFS()
 {
     $search = Cache::exec(array('composer.lock'), __FILE__ . 'init', function () {
         $search = array();
         $ex = array_merge(array(Path::$conf['cache'], Path::$conf['data']), Path::$conf['search']);
         Search::scan('', function ($src, $level) use(&$search, $ex) {
             if (in_array($src, $ex)) {
                 return true;
             }
             //вглубь не идём
             if ($level < 2) {
                 return;
             }
             if ($level > 5) {
                 return true;
             }
             if (!is_file($src . '.infra.json')) {
                 return;
             }
             $r = explode('/', $src);
             array_pop($r);
             array_pop($r);
             $search[] = implode('/', $r) . '/';
             return false;
             //вглубь не идём и в соседние папки тоже
         });
         return $search;
     });
     Path::$conf['search'] = array_values(array_unique(array_merge(Path::$conf['search'], $search)));
     if (Config::$all) {
         //Если все конфиги были уже обраны, нужно заного пробежаться по найденным
         for ($i = 0; $i < sizeof($search); $i++) {
             $tsrc = $search[$i];
             if (!is_dir($tsrc)) {
                 continue;
             }
             $files = scandir($tsrc);
             foreach ($files as $file) {
                 if ($file[0] == '.') {
                     continue;
                 }
                 if (!is_dir($tsrc . $file)) {
                     continue;
                 }
                 Config::load($tsrc . $file . '/.infra.json', $file);
             }
         }
     }
     /*$comp = Load::loadJSON('composer.json');
     		if ($comp && !empty($comp['require'])) {	
     			foreach ($comp['require'] as $n => $v) {
     				$r = explode('/', $n);
     				
     				if (sizeof($r) != 2) continue;
     				$path = 'vendor/'.$r[0].'/';
     				if (!in_array($path, Path::$conf['search'])){
     					Path::$conf['search'][] = $path;
     				}
     			}
     		}*/
 }