public static function apply() { //Поиск совпадения адреса с файлом //Редирект также кэшируется в modified, когда обращение к статике, по правилам Nostore Path::init(); //Контроллер... должен быть файл в корне index.json //Если сайт не использует контроллер то до этого места доходим только, когда 404 и лишний запуск не существенен //Либо следующая строчка обеспечивает формирование всего html если контроллер используется. $query = substr(urldecode($_SERVER['REQUEST_URI']), 1); $ch = substr($query, 0, 1); if (!in_array($ch, ['~', '!', '-'])) { Controller::init(); } $conf = Config::get('router'); Path::req($conf['404']); }
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(); }
<?php namespace infrajs\controller; use infrajs\path\Path; use infrajs\event\Event; use infrajs\template\Template; /** * div, divs, divtpl * **/ Path::req('*controller/infra.php'); Event::handler('oninit', function () { Run::runAddKeys('divs'); External::add('divs', function (&$now, $ext) { //Если уже есть пропускаем if (!$now) { $now = array(); } foreach ($ext as $i => $v) { if (isset($now[$i])) { continue; } $now[$i] = array(); Each::fora($ext[$i], function (&$l) use(&$now, $i) { array_push($now[$i], array('external' => $l)); }); } return $now; }); }, 'div:layer');
<?php namespace infrajs\autoedit; use infrajs\load\Load; use infrajs\path\Path; use infrajs\ans\Ans; use infrajs\config\Config; use infrajs\infra\Infra; use infrajs\each\Each; use infrajs\access\Access; if (!is_file('vendor/autoload.php')) { chdir('../../../'); require_once 'vendor/autoload.php'; } Path::req('-autoedit/admin.inc.php'); $type = Path::toutf(@$_REQUEST['type']); $id = Path::toutf(@$_REQUEST['id']); $submit = (bool) @$_REQUEST['submit']; $RTEABLE = array('tpl', 'html', 'htm', ''); $CORABLE = array('json', 'tpl', 'html', 'htm', 'txt', 'js', 'css', ''); $ans = array('id' => $id, 'type' => $type, 'msg' => ''); if (in_array($type, array('admin'))) { if (!$submit) { $ans['admin'] = Access::admin(); } else { $ans['admin'] = Access::admin(array(@$_REQUEST['login'], @$_REQUEST['pass'])); if (!$ans['admin']) { if (isset($_REQUEST['login'])) { return Ans::err($ans, 'Неправильный пароль!'); } else {
public static function accept($name, $v) { $conf =& Config::$conf; if (!empty($v['dependencies'])) { //Должны быть добавлены в conf ДО $name /** * Используется для порядка загрузки javascript * **/ Each::exec($v['dependencies'], function &($s) use($name) { Config::get($s); $r = null; return $r; }); } if (empty($conf[$name])) { $conf[$name] = array(); } if (!is_array($v)) { return; } foreach ($v as $kk => $vv) { if (isset($conf[$name][$kk])) { continue; } //То что уже есть в конфиге круче вновь прибывшего $conf[$name][$kk] = $vv; } foreach (self::$list as $prop => $callback) { if (!empty($conf[$name][$prop])) { $callback($name, $conf[$name][$prop], $conf[$name]); } } if (!empty($conf[$name]['require']) && empty($conf[$name]['off'])) { Each::exec($conf[$name]['require'], function &($s) use($name) { Path::req('-' . $name . '/' . $s); $r = null; return $r; }); } }
<?php namespace infrajs\rubrics; use infrajs\load\Load; use infrajs\path\Path; use infrajs\doc\Docx; use infrajs\doc\Mht; use infrajs\cache\Cache; use infrajs\template\Template; Path::req('-rubrics/rubrics.inc.php'); class Rubrics { public static $conf = array("404" => "Статья на сайте не найдена.", "main" => "pages", "link" => "Перейти на главную страницу", "list" => array("pages" => array("title" => "Информация", "type" => "info"), "blog" => array("title" => "Блог", "type" => "list"), "files" => array("title" => "Файлы", "type" => "files"), "events" => array("title" => "События", "type" => "list"))); public static function search($type, $id) { if (!isset(Rubrics::$conf['list'][$type])) { return false; } $exts = array('docx', 'mht', 'tpl', 'html', 'txt', 'php'); $files = rub_list('~' . $type . '/', 0, 0, $exts); if (isset($files[$id])) { $files[$id]['idfinded'] = true; //Найдено по id return $files[$id]; } foreach ($files as $d) { if (mb_strtolower($d['name']) == mb_strtolower($id)) { return $d; } }
<?php namespace infrajs\infra; use infrajs\path\Path; if (!is_file('vendor/autoload.php')) { chdir('../../../'); } /** * require_once('vendor/autoload.php'); вынесено из условия, чтобы файл можно было перенести * из infrajs/path в корень проекта и он бы работал. * В корне проекта по положению файла autoload.php нельзя определть был ли он подключён или нет. **/ require_once 'vendor/autoload.php'; /*header_register_callback(function(){ $code=http_response_code(); if($code!=200){ echo $code; } }); */ Path::$conf['sefurl'] = true; Config::init(); Path::req('-infra/index.php');
<?php namespace infrajs\catalog; use infrajs\excel\Xlsx; use infrajs\path\Path; use infrajs\load\Load; use infrajs\each\Each; use infrajs\cache\Cache; use infrajs\access\Access; use infrajs\sequence\Sequence; Path::req('-catalog/Extend.php'); class Catalog { public static $conf = array("pub" => array("dir", "title"), "dir" => "~catalog/", "cache" => array("~catalog/"), "title" => "Каталог", "md" => array(), "filename" => "Производитель", "columns" => array(), "filteroneitem" => true, "filtershowhard" => array(), "filters" => array("producer" => array("posid" => "producer", "posname" => "Производитель", "title" => "Производитель", "separator" => false), "cost" => array("posid" => "Цена", "posname" => "Цена", "title" => "Цена", "separator" => false))); public static $md = array("count" => 10, "reverse" => false, "sort" => false, "producer" => array(), "group" => array(), "search" => false, "more" => array(), "cost" => array()); public static function init() { return self::cache('cat_init', function () { $conf = Catalog::$conf; $columns = array_merge(array("Наименование", "Файлы", "Артикул", "Производитель", "Цена", "Описание", "Скрыть фильтры в полном описании"), $conf['columns']); $data =& Xlsx::init($conf['dir'], array('more' => true, 'Имя файла' => $conf['filename'], 'Известные колонки' => $columns)); //Xlsx::runGroups($data, function (&$gr) { // $gr['data']=array_reverse($gr['data']); // Возвращает массив с элементами в обратном порядке //}); Extend::init($data); return $data; }); } public static function getProducer(&$producer) {