function infrajs_seo_init() { //Делается при каждой пробежки $store =& infrajs::store(); $store['seo'] = array(); $store['seolayer'] = array(); $conf = infra_config(); if (!$conf['seo']['seo']) { return; } if (!$conf['seo']['robots']) { return; } infra_admin_cache('infrajs_seo_init', function () { if (!infra_theme('robots.txt')) { $data = array(); $data['host'] = $_SERVER['HTTP_HOST']; $data['root'] = infra_view_getRoot(); $html = infra_template_parse('*seo/sitemap.tpl', $data, 'robots') . "\n"; $dirs = infra_dirs(); file_put_contents('robots.txt', $html); } }); }
public static function parse($src) { $src = infra_theme($src); if (!$src) { return; } $args = array($src); return infra_cache(array($src), 'mhtparse', function ($src) { $conf = infra_config(); $imgmaxwidth = $conf['files']['imgmaxwidth']; $previewlen = $conf['files']['previewlen']; $filename = infra_theme($src); $fdata = infra_srcinfo($src); if ($fdata['ext'] == 'php') { $data = infra_loadTEXT($filename); } else { $data = file_get_contents($filename); } $ans = array(); if ($fdata['ext'] == 'mht') { $p = explode('/', $filename); $fname = array_pop($p); $fnameext = $fname; //$fname=basename($filename); preg_match("/^(\\d*)/", $fname, $match); $date = $match[0]; $fname = infra_toutf(preg_replace('/^\\d*\\s+/', '', $fname)); $fname = preg_replace('/\\.\\w{0,4}$/', '', $fname); $ar = preg_split('/------=_NextPart_.*/', $data); if (sizeof($ar) > 1) { //На первом месте идёт информация о ворде... unset($ar[0]); unset($ar[sizeof($ar) - 1]); } $ar = array_values($ar); $dirs = infra_dirs(); $folder = $dirs['cache'] . 'mht/' . md5($src) . '/'; @mkdir($folder); $html = ''; for ($i = 0, $l = sizeof($ar); $i < $l; ++$i) { if (!$ar[$i]) { continue; } $d = preg_split("/\n/", $ar[$i], 6); $j = -1; do { ++$j; } while (@$d[$j][0] !== 'C' && $j <= 5); if ($j >= 5) { /* не нашли Content-Location: file:///C:/0FCF1655/file9909.files/header.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" */ continue; } $location = preg_replace('/Content-Location: /', '', $d[$j]); $location = trim($location); $encoding = preg_replace('/Content-Transfer-Encoding: /', '', $d[$j + 1]); $type = preg_replace('/Content-Type: /', '', $d[$j + 2]); $content = $d[5]; $name = basename($location); if (preg_match("/text\\/html/", $type) || preg_match('/Subject:/', $type)) { $html .= $content; } else { @file_put_contents($folder . $name, base64_decode($content)); //Сохраняем картинку или тп... } } if (!$html) { $html = ''; } $html = preg_replace("/=\r\n/", '', $html); $html = preg_replace("/\\s+/", ' ', $html); $html = preg_replace("/^.*<body .*>\\s*/U", '', $html, 1); $html = preg_replace("/\\s*<\\/body>.*/", '', $html, 1); $images = array(); preg_match_all('/src=3D".*\\.files\\/(image.+)"/U', $html, $match, PREG_PATTERN_ORDER); for ($i = 0, $l = sizeof($match[1]); $i < $l; $i = $i + 2) { $min = $match[1][$i + 1]; if (!$min) { $min = $match[1][$i]; } $images[$min] = $match[1][$i]; //Каждая следующая картинка есть уменьшенная копия предыдущей оригинального размера } $html = preg_replace("/<\\!--.*-->/U", '', $html); $html = preg_replace("/<!\\[if !vml\\]>/", '', $html); $html = preg_replace("/<!\\[endif\\]>/", '', $html); $html = preg_replace('/=3D/', '=', $html); $html = preg_replace('/align="right"/', 'align="right" class="right"', $html); $html = preg_replace('/align="left"/', 'align="left" class="left"', $html); $html = preg_replace('/align=right/', 'align="right" class="right"', $html); $html = preg_replace('/align=left/', 'align="left" class="left"', $html); $html = infra_toutf($html); //Виндовые файлы хранятся в cp1251 $folder = infra_toutf($folder); $html = preg_replace('/ src=".*\\/(.*)"/U', ' src="' . $folder . '${1}"', $html); $html = preg_replace('/<span class=SpellE>(.*)<\\/span>/U', '${1}', $html); $html = preg_replace('/<span lang=.*>(.*)<\\/span>/U', '${1}', $html); $html = preg_replace('/<span class=GramE>(.*)<\\/span>/U', '${1}', $html); $html = preg_replace("/<span style='mso.*>(.*)<\\/span>/U", '${1}', $html); $html = preg_replace("/<span style='mso.*>(.*)<\\/span>/U", '${1}', $html); $html = preg_replace("/<span style='mso.*>(.*)<\\/span>/U", '${1}', $html); $html = preg_replace("/<span style='mso.*>(.*)<\\/span>/U", '${1}', $html); $html = preg_replace('/ class=MsoNormal/U', '', $html); $html = preg_replace('/<a name="_.*>(.*)<\\/a>/U', '${1}', $html); //Приводим к единому виду маркерные списки $patern = '/<p class=MsoListParagraphCxSp(\\w+) .*>(.*)<\\/p>/U'; $count = 3; do { preg_match($patern, $html, $match); if (sizeof($match) == $count) { $pos = strtolower($match[1]); $text = $match[2]; $text = preg_replace('/^.*(<\\/span>)+/U', '', $text, 1); $text = '<li>' . $text . '</li>'; if ($pos == 'first') { $text = '<ul>' . $text; } if ($pos == 'last') { $text = $text . '</ul>'; } $html = preg_replace($patern, $text, $html, 1); } else { break; } } while (sizeof($match) == $count); $title = $fname; $patern = '/<img(.*)>/U'; $count = 2; do { preg_match($patern, $html, $match); if (sizeof($match) == $count) { $sfind = $match[1]; //$sfind='<img src="/image.asdf">'; preg_match("/width=(\\d*)/", $sfind, $match2); $w = trim($match2[1]); preg_match("/height=(\\d*)/", $sfind, $match2); $h = trim($match2[1]); if (!$w || $w > $imgmaxwidth) { $w = $imgmaxwidth; } preg_match('/src="(.*\\/)(image.*)"/U', $sfind, $match2); $path = trim($match2[1]); $small = $match2[2]; preg_match('/alt="(.*)".*/U', $sfind, $match2); $alt = trim(@$match2[1]); $alt = html_entity_decode($alt, ENT_QUOTES, 'utf-8'); preg_match('/align="(.*)".*/U', $sfind, $match2); $align = trim($match2[1]); $align = html_entity_decode($align, ENT_QUOTES, 'utf-8'); $big = $images[$small]; if (!$big) { $big = $small; } $isbig = preg_match('/#/', $alt); if ($isbig) { $alt = preg_replace('/#/', '', $alt); } //$i="<IMG title='$alt' src='?*imager/imager.php?w=$w&h=$h&src=".($path.$big)."' align='$align' class='$align' alt='$alt'>"; $i = "<IMG src='?*imager/imager.php?w={$w}&h={$h}&src=" . ($path . $big) . "' align='{$align}' class='{$align}'>"; //urlencode решает проблему с ie7 когда иллюстрации с адресом содержащим пробел не показываются if ($isbig) { $i = "<a target='about:blank' href='?*imager/imager.php?src=" . urlencode($path . $big) . "'>{$i}</a>"; } //$i.='<textarea style="width:500px; height:300px">'.$i.'</textarea>'; $html = preg_replace($patern, $i, $html, 1); } else { break; } } while (sizeof($match) == $count); $patern = "/###\\{(.*)\\}###/U"; //js код do { preg_match($patern, $html, $match); if (sizeof($match) > 0) { $param = $match[1]; $param = strip_tags($param); $param = html_entity_decode($param, ENT_QUOTES, 'utf-8'); $param = preg_replace('/(‘|’)/', "'", $param); $param = preg_replace('/(“|«|»|”)/', '"', $param); $html = preg_replace($patern, $param, $html, 1); } else { break; } } while (sizeof($match) > 1); $patern = "/####.*<table.*>(.*)<\\/table>.*####/U"; do { preg_match($patern, $html, $match); if (sizeof($match) > 0) { $param = $match[1]; $param = preg_replace('/style=".*"/U', '', $param); $param = preg_replace("/style='.*'/U", '', $param); $html = preg_replace($patern, '<table class="table table-striped">' . $param . '</table>', $html, 1); } else { break; } } while (sizeof($match) > 1); $ans['images'] = array(); foreach ($images as $img) { $ans['images'][] = array('src' => $folder . $img); } } else { $html = $data; $images = array(); preg_match_all('/<img.*src="(.*)".*>/U', $html, $match, PREG_PATTERN_ORDER); for ($i = 0, $l = sizeof($match[1]); $i < $l; $i++) { $images[] = array('src' => $match[1][$i]); //Каждая следующая картинка есть уменьшенная копия предыдущей оригинального размера } $ans['images'] = $images; } $r = preg_match('/<h.*>(.*)<\\/h.>/U', $html, $match); if ($r) { $heading = strip_tags($match[1]); } else { $heading = false; } $ans['heading'] = $heading; preg_match_all('/<a.*href="(.*)".*>(.*)<\\/a>/U', $html, $match); $links = array(); foreach ($match[1] as $k => $v) { $title = strip_tags($match[2][$k]); if (!$title) { continue; } $links[] = array('title' => $title, 'href' => $match[1][$k]); } $ans['links'] = $links; $html = trim($html); $html = html_entity_decode($html, ENT_COMPAT, 'UTF-8'); $html = preg_replace('/ /U', '', $html); //bugfix списки в mht порождаются адский символ. в eval-е скрипта недопустим. $ans['html'] = $html; return $ans; }, $args); }
function readxls($ifile, $name = 0, $onelist = false, $onlynew = false, $showlists = false, $list = false, $descr = false, $id = false, $nokey = false, $param = false, $obj = 0, $reverse = 0, $isname = 0) { $file = infra_theme($ifile, 'f'); if (!$file) { return array(); } $list = infra_toutf($list); $id = infra_toutf($id); $name = $name; $obj = (int) $obj; $data = pages_cache(array($file), 'readxlsmain', array($file)); /*foreach($data['boundsheets'] as &$sheet){ $sheet['name']=trim($sheet['name']); } foreach($data['sheets'] as &$sheet){ $sheet['name']=trim($sheet['name']); foreach($sheet['cells'] as &$row){ foreach($row as $k=>$cell){ $row[$k]=trim($cell); } } }*/ if ($showlists) { $r = array(); for ($i = 0, $l = sizeof($data['boundsheets']); $i < $l; ++$i) { if ($data['boundsheets'][$i]['name'][0] == '.') { continue; } if (!$name) { array_push($r, $data['boundsheets'][$i]['name']); } else { $r[$data['boundsheets'][$i]['name']] = 1; } } $result = $r; } else { $r = array(); for ($i = 0, $l = sizeof($data['boundsheets']); $i < $l; ++$i) { if (!$data['sheets'][$i]['cells']) { continue; } $listname = trim($data['boundsheets'][$i]['name']); if (!$param && $name) { if ($name == 'auto') { $test = $data['sheets'][$i]['cells']; $temp = 0; $find = false; foreach ($test as $v) { ++$temp; if (sizeof($v) > 2) { $find = true; break; } } if (!$find) { if ($isname) { $find = true; ++$temp; } else { $temp = 1; } } } else { $temp = $name; } $descrdata = array(); while ($temp > 1) { $descrd = array_shift($data['sheets'][$i]['cells']); $descrdata[] = $descrd; --$temp; } $names = array_shift($data['sheets'][$i]['cells']); //$data['sheets'][$i]['cells']=array_values($data['sheets'][$i]['cells']); if ($descr) { if ($descr == 1) { $descrd = array(); foreach ($descrdata as $v) { $ii = 0; foreach ($v as $jj) { if (!$ii) { $ii = $jj; } else { $descrd[$ii] = $jj; break; } } } } else { $descrd = $descrdata; } } else { $result = $r; } $r[$listname] = array(); for ($j = 0, $k = sizeof($data['sheets'][$i]['cells']); $j < $k; ++$j) { $r[$listname][$j] = array(); foreach ($names as $num => $value) { @($r[$listname][$j][$value] = $data['sheets'][$i]['cells'][$j][$num]); } } if ($descr) { $d = $r[$listname]; unset($r[$listname]); $r[$listname]['data'] = $d; $r[$listname]['descr'] = $descrd; } } else { $r[$data['boundsheets'][$i]['name']] = array_values($data['sheets'][$i]['cells']); foreach ($r[$data['boundsheets'][$i]['name']] as $k => $v) { $r[$data['boundsheets'][$i]['name']][$k] = array_values($r[$data['boundsheets'][$i]['name']][$k]); } //$r[$data['boundsheets'][$i]['name']] } } if ($reverse) { foreach ($r as $l => $d) { if ($descr) { $r[$l]['data'] = array_reverse($r[$l]['data'], true); } else { $r[$l] = array_reverse($r[$l], true); } } } if ($onelist || $list) { if ($list) { $r = $r[$list]; } else { foreach ($r as $l) { $r = $l; break; } } } $result = $r; if ($param) { if ($onelist) { $newres = array(); for ($i = (int) $name, $l = sizeof($result); $i < $l; ++$i) { $newres[$result[$i][0]] = $result[$i][1]; } $result = $newres; } else { foreach ($result as $k => $list) { $newres = array(); for ($i = (int) $name, $l = sizeof($list); $i < $l; ++$i) { $newres[$list[$i][0]] = $list[$i][1]; } $result[$k] = $newres; } } } else { if ($id && $name) { if ($descr) { $res = $result['data']; } else { $res = $result; } $newres = array(); for ($i = 0, $l = sizeof($res); $i < $l; ++$i) { $newres[$res[$i][$id]] = $res[$i]; //unset($newres[$res[$i][$id]][$id]); } if ($descr) { $result['data'] = $newres; } else { $result = $newres; } } if ($nokey) { foreach ($result as $k => &$v) { $result[$k] = array_values($result[$k]); } } } } return $result; }
function imager_mark($src, $type) { $conf = infra_config(); if (!$conf['imager']['watermark']) { return; } if (!$type) { return; } if ($type == 'gif') { return; } //Проблема прозрачности $info =& imager_readInfo($src); if (@$info['ignore']) { return; } //В изображении указано что не нужно делать водяной знак на нём if (@$info['water']) { return; } //Если нужно повторно наложить водяной знак, для этого нужно удалить все старые знаки $water = infra_theme('*imager/mark.png'); if (!$water) { return; } //Добавляем водяной знак $orig = $info['orig']; if (!$orig) { $orig = $src; } elseif (!infra_theme($orig)) { return; } //Защита.. оригинал не найден.. значит старая версия водяной знак есть, //метке water нет. второй знак не нужен $fn = 'imagecreatefrom' . $type; $img = $fn($orig); $orig = infra_theme($orig); list($w, $h) = getimagesize($orig); $w = $w * 9 / 10; $h = $h * 9 / 10; $water = imager_scale($water, $w, $h); $temp = tmpfile(); fwrite($temp, $water); $meta = stream_get_meta_data($temp); $water = imagecreatefrompng($meta['uri']); $img = create_watermark($type, $img, $water, 100); //$img - картинка с водяным знаком $info = imager_makeInfo($src); //Сделали бэкап, или считали info у существующего файла, чтобы после изменений сохранить прошлые $fn = 'image' . $type; $fn($img, $src); //Подменили картинку на картинку с водяным знаком $info['water'] = true; imager_writeInfo($src, $info); return; }
<?php $ans = array('title' => 'Необходимо установленный flexslider через bower. И подключение (не проверяется).'); if (!infra_theme('bower_components/flexslider/jquery.flexslider-min.js')) { return infra_err($ans, 'bower_components/flexslider/jquery.flexslider-min.js не найден'); } return infra_ret($ans, 'Дистрибутив есть');
$obj[$images[$i]] = 1; } } else { for ($i = 0; $i < $length; ++$i) { $obj[$images[$i]['name']] = $images[$i]; } } } $images = array('obj' => $obj, 'length' => $length); } } } if (isset($_GET['preview'])) { $list = array(); for ($i = 0, $l = sizeof($images); $i < $l; ++$i) { $path = infra_theme(infra_toutf($src) . $images[$i], 'fnu'); $ar = explode('.', $path); $ext = ''; if (sizeof($ar) == 2 && !$ar[0] && $ar[1]) { $filename = implode('.', $ar); } elseif (sizeof($ar) > 1) { //Это может быть папка или файл без расширения, тогда считаем что имя файла есть а расширения нет $ext = array_pop($ar); $filename = implode('.', $ar); } else { $filename = array_pop($ar); $ext = ''; } if ($ext == 'mht' || $ext == 'tpl' || $ext == 'html' || $ext == 'htm') { $s = '*pages/mht/mht.php?preview=1&src=' . infra_toutf($src) . $images[$i]; } elseif ($ext == 'docx') {
<?php /* Copyright 2008 ITLife, Ltd. Togliatti, Samara Oblast, Russian Federation. http://itlife-studio.ru *ready for include *using modified History 13.05.2010 modified */ require_once __DIR__ . '/../../pages/xls/excel_parser/oleread.php'; require_once __DIR__ . '/../../pages/xls/excel_parser/reader.php'; require_once __DIR__ . '/../../pages/xls/xlstojs.inc.php'; require_once __DIR__ . '/../../infra/infra.php'; if (!isset($_GET['src'])) { ?> Парсер Excel <?php } else { $src = infra_theme($_GET['src']); $data = pages_cache(array($src), 'readxls', array($src, $_GET['name'], $_GET['onelist'], $_GET['onlynew'], $_GET['showlists'], $_GET['list'], $_GET['descr'], $_GET['id'], $_GET['nokey'], $_GET['param'], $_GET['obj'], $_GET['reverse'], $_GET['isname']), (bool) $_GET['reparse']); /*echo '<pre>'; print_r(infra_tophp($data123)); exit;*/ return infra_echo($data); }
public static function getPos(&$pos) { $args = array($pos['producer'], $pos['article']); return Catalog::cache('getPos', function () use($pos) { Xlsx::addFiles($pos); $files = explode(',', @$pos['Файлы']); foreach ($files as $f) { if (!$f) { continue; } $f = trim($f); $conf = infra_config(); Xlsx::addFiles($pos, $conf['catalog']['dir'] . $f); } $files = array(); foreach ($pos['files'] as $f) { if (is_string($f)) { $f = infra_theme($f); //убрали звездочку $d = infra_srcinfo(infra_toutf($f)); } else { $d = $f; $f = $d['src']; } $d['size'] = round(filesize(infra_tofs($f)) / 1000000, 2); if (!$d['size']) { $d['size'] = '0.01'; } $files[] = $d; } $pos['files'] = $files; if ($pos['texts']) { foreach ($pos['texts'] as $k => $t) { $pos['texts'][$k] = infra_loadTEXT('*files/get.php?' . $t); } } return $pos; }, $args); }
private function makeMark($data) { if (!$data) { return ''; } self::rksort($data); $key = md5(serialize($data)); $that = $this; $mark = infra_once($this->prefix . $key, function () use($data, $that, $key) { $isoutdate = true; $raise = $this->raise; //На сколько символов разрешено увеличивать хэш $note = $this->note; //При увеличении на сколько записывается сообщение в лог $len = $this->len - 1; while ($isoutdate && $len < $this->len + $raise) { $len++; $mark = substr($key, 0, $len); $src = infra_theme('~.marks/' . $that->prefix . $mark . '.json'); if ($src) { $otherdata = file_get_contents($src); $otherdata = infra_json_decode($otherdata); } else { $otherdata = false; } //$otherdata=infra_mem_get($that->prefix.$mark); if ($otherdata && is_array($otherdata['data']) && $otherdata['time']) { if ($otherdata['data'] == $data) { $isoutdate = false; //Такая метка уже есть и она правильная } else { //Решается судьба старой метки $isoutdate = time() > $data['time'] + $this->warrantytime; } } else { $isoutdate = false; } } if ($len >= $this->len + $note) { $that->notice = 'Mark adding to hash ' . ($len - $this->len) . ' symbol(s) for save time warranty ' . print_r($data, true); error_log($that->notice); } if ($isoutdate) { //Все метки актуальны... перезаписываем первую $that->error = 'Mark rewrite actual hashmark'; error_log($that->error); $mark = substr($key, 0, $this->len); } $src = infra_theme('~.marks/'); if (!$src) { die('Fatal error no marks dir'); } $src = $src . $this->prefix . $mark . '.json'; $data = infra_json_encode(array('time' => time(), 'data' => $data)); $data = file_put_contents($src, $data); //infra_mem_set($that->prefix.$mark, array( // 'time'=>time(), // 'data'=>$data //)); return $mark; }); return $mark; }
25.04.2010 Добавлено кэширование modified 09.05.2010 Добавлена поддерж php файлов и возможность передачи get параметров запрашиваемому файлу */ require_once __DIR__ . '/../infra/infra.php'; $exts = array('tpl' => '', 'html' => '', 'docx' => '*pages/docx.php?src=', 'mht' => '*pages/mht/mht.php?src=', 'php' => ''); //..'xls'=>'?*pages/xls/xls.php?src=' $isrc = infra_toutf(urldecode($_SERVER['QUERY_STRING'])); $ext = preg_match('/\\.(\\w{0,4})$/', $isrc, $match); //Расширение при поиске не учитываем if ($ext) { $ext = $match[1]; } $src = infra_theme($isrc); $src = infra_toutf($src); $fdata = infra_srcinfo($isrc); $name = preg_replace('/\\.\\w{0,4}$/', '', $fdata['file']); $isrc = $fdata['folder'] . $name; if ($src) { @header('Content-Type: text/html; charset=utf-8'); if (isset($exts[$ext])) { //Расширение уже было $info = infra_loadTEXT($exts[$ext] . $src); } else { //Расширения небыло берём по приоритету if (!$ext) { //приоритет $ext = 'tpl'; $info = infra_loadTEXT($exts[$ext] . $isrc . '.' . $ext);
public static function addFiles(&$pos, $dir = false) { $conf = infra_config(); $props = array('producer', 'article'); if (!isset($pos['images'])) { $pos['images'] = array(); } if (!isset($pos['texts'])) { $pos['texts'] = array(); } if (!isset($pos['files'])) { $pos['files'] = array(); } if (!$dir) { $dir = array(); $pth = $conf['catalog']['dir']; if (infra_forr($props, function &($name) use(&$dir, &$pos) { $rname = infra_seq_right($name); $val = infra_seq_get($pos, $rname); if (!$val) { return true; } $dir[] = $val; $r = null; return $r; })) { return; } if ($dir) { $dir = implode('/', $dir) . '/'; $dir = $pth . $dir; } else { $dir = $pth; } } $dir = infra_theme($dir); if (!$dir) { return false; } if (is_dir($dir)) { $paths = glob($dir . '*'); } elseif (is_file($dir)) { $paths = array($dir); $p = infra_srcinfo($dir); $dir = $p['folder']; } infra_forr($paths, function &($p) use(&$pos, $dir) { $d = explode('/', $p); $name = array_pop($d); $n = infra_strtolower($name); $fd = infra_nameinfo($n); $ext = $fd['ext']; //if(!$ext)return; if (!is_file($dir . $name)) { return; } //$name=preg_replace('/\.\w{0,4}$/','',$name); /*$p=pathinfo($p); $name=$p['basename']; $ext=strtolower($p['extension']);*/ $dirs = infra_dirs(); $dir = preg_replace('/^' . str_replace('/', '\\/', $dirs['data']) . '/', '*', $dir); $name = infra_toutf($dir . $name); if ($name[0] == '.') { return; } $im = array('png', 'gif', 'jpg'); $te = array('html', 'tpl', 'mht', 'docx'); if (infra_forr($im, function ($e) use($ext) { if ($ext == $e) { return true; } })) { $pos['images'][] = $name; } elseif (infra_forr($te, function ($e) use($ext) { if ($ext == $e) { return true; } })) { $pos['texts'][] = $name; } else { if ($ext != 'db') { $pos['files'][] = $name; } } $r = null; return $r; }); $pos['images'] = array_unique($pos['images']); $pos['texts'] = array_unique($pos['texts']); $pos['files'] = array_unique($pos['files']); }
$src = $dir . $file; $info = imager_readInfo($src); //Долгая операция $orig = $info['orig']; if ($orig) { if (!isset($_SESSION['imager']['origs'][$orig])) { $_SESSION['imager']['origs'][$orig] = array(); } $_SESSION['imager']['origs'][$orig][] = $dir . $file; } unset($_SESSION['imager']['files'][$k]); //Чтобы при обнолении страницы, не бегать снова } //Теперь у нас есть только массив origs foreach ($_SESSION['imager']['origs'] as $orig => $srcs) { $origf = infra_theme($orig); if (!$origf) { //if(preg_match("/^core\/data\//",$orig))continue;//старая версия сайта ничего с этим не поделать //die('Не найден оригинал '.infra_toutf($orig)." для картинки ".infra_toutf(print_r($srcs,true)).'<br>\n'); echo 'Не найден оригинал ' . infra_toutf($orig) . ' для картинки ' . infra_toutf(print_r($srcs, true)) . '<br>\\n'; continue; } foreach ($srcs as $src) { $r = copy($origf, $src); if (!$r) { die('Не удалось скопировать на место оригинал ' . infra_toutf($src)); } } $r = unlink($origf); if (!$r) { die('Не удалось удалить востановленный оригинал');
<?php $src = urldecode($_GET['src']); $src = preg_replace("/\\.mht\$/", '', $src); $src = preg_replace("/\\.tpl\$/", '', $src); $src = preg_replace("/\\.html\$/", '', $src); $dirs = infra_dirs(); $src = str_replace($dirs['data'], '*', $src); $filename = infra_theme($src . '.mht'); $ftype = 'mht'; if (!$filename) { $ftype = 'tpl'; $filename = infra_theme($src . '.tpl', true); if (!$filename) { $ftype = 'html'; $filename = infra_theme($src . '.html'); } //if(!$filename)$filename=infra_theme($src); if ($filename) { $p = infra_srcinfo($filename); $ftype = $p['ext']; } } if ($filename) { //@header("Content-Type: text/plain"); $reparse = isset($_GET['re']); //$reparse=true;//debug $conf = infra_config(); if ($conf['files'] && $conf['files']['imgmaxwidth']) { $imgmaxwidth = $conf['files']['imgmaxwidth']; }
$orig = $info['orig']; if ($orig) { $orig = infra_theme($orig); if (!$orig) { die('Оригинал не найден'); } else { $src = $orig; //Что далее будет означать что возьмётся для вывода оригинальная картинка } } else { die('Already original'); } } elseif ($limark) { $info = imager_readInfo($src); if (@$info['water']) { $orig = infra_theme($info['orig']); if ($orig) { $src = $orig; } else { //die('Не найден оригинал'); } } } //$src с водяной меткой если нужно if ($gray) { $src = imager_makeGray($src, $temp); //новый src уже на серую картинку } $data = imager_scale($src, $w, $h, $crop, $top); if (!$data) { die('Resize Error');
//Данные для построения интерфейса постраничной разбивки $ans['list'] = array(); //Массив позиций Catalog::search($md, $ans); $conf = infra_config(); //BREADCRUMBS TITLE if (!$md['group'] && $md['producer'] && sizeof($md['producer']) == 1) { //ПРОИЗВОДИТЕЛЬ if ($md['producer']) { foreach ($md['producer'] as $producer => $v) { break; } } else { $producer = false; } $dir = infra_theme(CATDIR . $val . '/'); //is!, descr!, text!, name!, breadcrumbs! $ans['is'] = 'producer'; $name = Catalog::getProducer($producer); $ans['name'] = $name; $ans['title'] = $name; $conf = infra_config(); $ans['breadcrumbs'][] = array('title' => $conf['catalog']['title'], 'add' => 'producer:'); $menu = infra_loadJSON('*catalog/menu.json'); $ans['breadcrumbs'][] = array('href' => 'producers', 'title' => $menu['producers']['title']); $ans['breadcrumbs'][] = array('add' => 'producer::producer.' . $name . ':1', 'title' => $name); } else { if (!$md['group'] && $md['search']) { $ans['is'] = 'search'; $ans['name'] = $md['search']; $ans['title'] = infra_forFs($md['search']);
} if ($fdata['ext'] && $fdata['ext'] != $fd['ext']) { return; } elseif ($result) { //Расширение не указано и уже есть результат //Исключение.. расширение tpl самое авторитетное if ($fd['ext'] != 'tpl') { return; } } $result = $file; }, scandir(infra_theme($folder))); if (!$result) { return false; } return infra_theme($folder . $result); }, array($fdata['path']), isset($_GET['re'])); $ans = array('src' => $isrc); if (!$src) { if (!infra_isphp()) { header('HTTP/1.0 404 Not Found'); } return; } $fdata = infra_srcinfo($src); if (in_array($fdata['ext'], array('docx'))) { $txt = files\Docx::get($src); return Ans::txt($txt); } if (in_array($fdata['ext'], array('mht'))) { $txt = files\Mht::get($src);
/** * Кэширумеая функция, основной разбор. */ public static function parse($src) { $args = array($src, $imgmaxwidth, $previewlen); $param = infra_cache(array($src), 'docx_parse', function ($src, $imgmaxwidth, $previewlen, $re) { $conf = infra_config(); $imgmaxwidth = $conf['files']['imgmaxwidth']; $previewlen = $conf['files']['previewlen']; $cachename = md5($src); $dirs = infra_dirs(); $cachefolder = $dirs['cache'] . 'docx/' . $cachename . '/'; //В винде ингда вылетает о шибка что нет прав удалить какой-то файл в папке и как следствие саму папку //Обновление страницы проходит уже нормально //Полагаю в линукс такой ошибки не будет хз почему возникает @docx_full_del_dir($cachefolder); $path = infra_theme($src); if (!$path) { return array(); } $xmls = docx_getTextFromZippedXML($path, 'word/document.xml', $cachefolder, $re); $rIds = array(); $param = array('folder' => $cachefolder, 'imgmaxwidth' => $imgmaxwidth, 'previewlen' => $previewlen, 'type' => $type, 'rIds' => $rIds); if ($xmls[0]) { $xmlar = docx_dom_to_array($xmls[0]); $xmlar2 = docx_dom_to_array($xmls[1]); foreach ($xmlar2['Relationships']['Relationship'] as $v) { $rIds[$v['Id']] = $v['Target']; } $param['rIds'] = $rIds; $html = docx_each($xmlar, '\\itlife\\files\\docx_analyse', $param); } else { $param['rIds'] = array(); $html = ''; } $param['html'] = $html; return $param; }, $args); unset($param['rIds']); unset($param['type']); unset($param['imgmaxwidth']); unset($param['previewlen']); unset($param['isli']); unset($param['isul']); unset($param['imgnum']); unset($param['folder']); return $param; }