Exemplo n.º 1
0
 public static function init()
 {
     $query = urldecode($_SERVER['REQUEST_URI']);
     header('Infrajs-Cache: true');
     $html = Access::cache(__FILE__ . ':init', function ($query) {
         header('Infrajs-Cache: false');
         Config::get();
         $conf = Config::get('controller');
         return Controller::check($conf['index']);
     }, array($query));
     echo $html;
     exit;
 }
Exemplo n.º 2
0
function autoedit_theme($isrc)
{
    $src = Access::cache('autoedit_theme', function ($isrc) {
        $src = Path::theme($isrc);
        if ($src) {
            return $src;
        }
        $fdata = Load::srcInfo($isrc);
        $folder = Path::theme($fdata['folder']);
        if (!Path::theme($folder)) {
            return false;
        }
        array_map(function ($file) use(&$result, $fdata) {
            if ($file[0] == '.') {
                return;
            }
            $file = Path::toutf($file);
            $fd = Load::nameInfo($file);
            if ($fdata['id'] && $fdata['id'] != $fd['id']) {
                return;
            }
            if ($fdata['name'] && $fdata['name'] != $fd['name']) {
                return;
            }
            if ($fdata['ext'] && $fdata['ext'] != $fd['ext']) {
                return;
            } elseif ($result) {
                //Расширение не указано и уже есть результат
                //Исключение.. расширение tpl самое авторитетное
                if ($fd['ext'] != 'tpl') {
                    return;
                }
            }
            $result = $file;
        }, scandir(Path::theme($folder)));
        if (!$result) {
            return false;
        }
        return Path::theme($folder . $result);
    }, array($isrc), isset($_GET['re']));
    return $src;
}
Exemplo n.º 3
0
$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);
            }
        }
        if (!is_dir($dir . $file)) {
            return;
        }
        $dir = $dir . $file . '/';
        if (empty($map['vendors'][$vendor])) {
            $map[$vendor] = array();
        }
        array_map(function ($file) use(&$map, $dir, $vendor) {
            if (!is_dir($dir . $file)) {
                return;
            }
            if ($dir == './') {
                if ($file == '.') {
                    $dir = '';
                    $file = '.';
                    $name = $_SERVER['HTTP_HOST'];
                } else {
                    if ($file[0] == '.') {
                        return;
                    } else {
                        $name = Path::toutf($file);
                    }
                }
                $sysdir = $dir . $file . '/';
                if ($sysdir == './' . Path::$conf['data']) {
                    return;
                }
                if ($sysdir == './' . Path::$conf['cache']) {
                    return;
                }
                if ($sysdir == './vendor/') {
                    return;
                }
            } else {
                if ($file[0] == '.') {
                    return;
                }
                $name = Path::toutf($file);
            }
            $dir = $dir . $file . '/';
            if (empty($map['vendors'][$vendor][$name])) {
                $map['vendors'][$vendor][$name] = array('src' => $dir . 'README.md', 'vendor' => $vendor, 'name' => $name, 'is' => is_file($dir . 'README.md'), 'list' => array());
            }
            array_map(function ($file) use(&$map, $dir, $vendor, $name) {
                if ($file[0] == '.') {
                    return;
                }
                if (!is_file($dir . $file)) {
                    return;
                }
                $ext = Path::getExt($file);
                if ($ext != 'md') {
                    return;
                }
                $res = array('src' => $dir . $file, 'vendor' => $vendor, 'name' => $name, 'file' => $file);
                $map['vendors'][$vendor][$name]['list'][] = $res;
                $map['names'][$dir] =& $map['vendors'][$vendor][$name];
            }, scandir($dir));
        }, scandir($dir));
    }, scandir($dir));
    return $map;
});
Exemplo n.º 4
0
    Router::init();
}
$ans = array();
$osrc = Ans::GET('src');
if (!$osrc) {
    return Ans::err($ans, 'Для работы необходимо передать параметр ?src= до папки с иллюстрациями: ' . $osrc);
}
$src = Path::theme($osrc);
if (!$src) {
    return Ans::err($ans, 'Неправильный путь до папки с иллюстрациями: ' . $osrc);
}
$list = Access::cache(__FILE__, function ($src) {
    $list = array();
    array_map(function ($file) use(&$list, $src) {
        if ($file[0] == '.') {
            return;
        }
        $fdata = Load::nameInfo($file);
        if (!in_array($fdata['ext'], array('jpg', 'jpeg', 'png'))) {
            return;
        }
        $list[] = $src . Path::toutf($file);
    }, scandir($src));
    return $list;
}, array($src));
$conf = Config::get('teremok');
$count = $conf['count'];
$count = Ans::GET('count', 'int', $count);
$list = array_slice($list, 0, $count);
$ans['list'] = $list;
return Ans::ret($ans);
Exemplo n.º 5
0
 public static function getHtml(&$layer)
 {
     //Вызывается как для основных так и для подслойв tpls frame. Расширяется в tpltpl.prop.js
     //if(@$layer['tplclient'])return '';
     $row = Layer::parsed($layer);
     //$row=$_SERVER['QUERY_STRING'],$layer['id'];
     //Нельзя кэшировать слои в которых показываются динамические данные, данные пользователя определяется заголовком у данных
     //Кэш создаётся от любого пользователя.
     //Чтобы узнать что кэш делать не нужно... это знают данные они либо js либо php
     //При загрузки данных те должны выкидывать заголовки не кэшировать, либо не выкидывать если это просто парсер Excel
     //Нас интересует зависит ли html слоя от пользователя, если зависит кэшировать нельзя
     //Зависит если используется $_SESSION, infra_session, infra_admin
     //примечательно что конект к базе не запрещает кэширование этого слоя
     //Узнавать о всём этом мы будем по заголовкам
     //Так чтобы следующий слой взялся уже нормально заголовки нужно заменять...
     //Тем более заменять заголовки нужно в любом случае если кэшируется чтобы и браузер кэшировал
     //Проблема при первом session_get конект к базе и вызов session_init в следующем подключении init не вызывается
     //но для следующего подключения нам нужно понять что есть динамика// По этому загловки отправляются в том числе и руками в скритпах  Cache-Control:no-cache
     $html = Access::cache('infrajs_getHtml', function () use(&$layer) {
         //Здесь мог быть установлен infrajs['com'] его тоже нужно вернуть/ А вот после loadTEXT мог быть кэш и ничего не установится
         $html = Tpl::_getHtml($layer);
         return $html;
     }, array($row));
     //Кэш обновляемый с последней авторизацией админа определяется строкой parsed слоя
     return $html;
 }
Exemplo n.º 6
0
}
$order = Ans::GET('order', ['descending', 'ascending']);
$ans['order'] = $order;
$list = Access::cache(__FILE__, function ($dir, $order) {
    $list = array();
    array_map(function ($file) use(&$list, $dir) {
        if ($file[0] == '.') {
            return;
        }
        $file = Path::toutf($file);
        if (!Path::theme($dir . $file)) {
            return;
        }
        $fd = Load::nameInfo($file);
        if (!in_array($fd['ext'], array('jpg', 'png'))) {
            return;
        }
        $slide = $fd;
        $slide['title'] = $fd['name'];
        $src = Rubrics::find($dir, $fd['name'], 'articles');
        if ($src) {
            $slide['title'] = Rubrics::article($src);
        }
        $list[] = $slide;
    }, scandir(Path::theme($dir)));
    Load::sort($list, $order);
    //$list = array_reverse($list);
    return $list;
}, array($dir, $order));
$list = array_slice($list, $start, $count);
$ans['dir'] = $dir;
$ans['list'] = $list;
Exemplo n.º 7
0
 public static function getPos(&$pos)
 {
     $args = array($pos['producer'], $pos['article']);
     return Access::cache('Catalog::getPos', function () use($pos) {
         Xlsx::addFiles(Catalog::$conf['dir'], $pos);
         $files = explode(',', @$pos['Файлы']);
         foreach ($files as $f) {
             if (!$f) {
                 continue;
             }
             $f = trim($f);
             Xlsx::addFiles(Catalog::$conf['dir'], $pos, $f);
         }
         $files = array();
         foreach ($pos['files'] as $f) {
             if (is_string($f)) {
                 $f = Path::theme($f);
                 //убрали звездочку
                 $d = Load::srcInfo(Path::toutf($f));
             } else {
                 $d = $f;
                 $f = $d['src'];
             }
             $d['size'] = round(filesize(Path::tofs($f)) / 1000000, 2);
             if (!$d['size']) {
                 $d['size'] = '0.01';
             }
             $d['src'] = Path::pretty($d['src']);
             $files[] = $d;
         }
         $pos['files'] = $files;
         if ($pos['texts']) {
             foreach ($pos['texts'] as $k => $t) {
                 $pos['texts'][$k] = Load::loadTEXT('-doc/get.php?src=' . $t);
             }
         }
         return $pos;
     }, $args);
 }
Exemplo n.º 8
0
    $p = explode(',', $lim);
    if (sizeof($p) != 2) {
        return Ans::err($ans, 'Некорректный параметр lim');
    }
    list($start, $count) = $p;
    $list = Access::cache(__FILE__, function ($dir) {
        $list = array();
        array_map(function ($file) use(&$list, $dir) {
            if ($file[0] == '.') {
                return;
            }
            if ($file[0] == '~') {
                return;
            }
            //Скрытый файл Word
            if (!is_file(Path::theme($dir) . $file)) {
                return;
            }
            $fd = Load::nameinfo($file);
            if (!in_array($fd['ext'], array('docx', 'html', 'tpl'))) {
                return;
            }
            $list[] = Rubrics::info(Path::toutf($dir . $file));
        }, scandir(Path::theme($dir)));
        Load::sort($list);
        return $list;
    }, array($dir));
    $list = array_slice($list, $start, $count);
    $ans['list'] = $list;
} else {
    if ($type == 'page') {
        if ($type == 'page') {