예제 #1
0
파일: Router.php 프로젝트: infrajs/router
 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']);
 }
예제 #2
0
파일: Update.php 프로젝트: infrajs/update
 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();
 }
예제 #3
0
파일: infra.php 프로젝트: infrajs/layer-div
<?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');
예제 #4
0
<?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 {
예제 #5
0
파일: Config.php 프로젝트: infrajs/config
 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;
         });
     }
 }
예제 #6
0
파일: Rubrics.php 프로젝트: infrajs/rubrics
<?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;
            }
        }
예제 #7
0
파일: indexsef.php 프로젝트: infrajs/infra
<?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');
예제 #8
0
파일: Catalog.php 프로젝트: infrajs/catalog
<?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)
    {