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; }
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; }
$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; });
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);
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; }
} $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;
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); }
$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') {