/** * Кэширумеая функция, основной разбор. */ 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; }
function docx_get($src, $type = 'norm', $re = false) { $debug = $re; $conf = infra_config(); if (@$conf['files'] && @$conf['files']['imgmaxwidth']) { $imgmaxwidth = $conf['files']['imgmaxwidth']; } if (!$imgmaxwidth) { $imgmaxwidth = 1000; } $imgmaxwidth = (int) $imgmaxwidth; $previewlen = 150; $args = array($src, $type, $imgmaxwidth, $previewlen); $dhtml = infra_cache(array($src), 'docx_parse', function ($src, $type, $imgmaxwidth, $previewlen, $debug) { $cachename = md5($src); $dirs = infra_dirs(); $cachefolder = $dirs['cache'] . 'docx/' . $cachename . '/'; //В винде ингда вылетает о шибка что нет прав удалить какой-то файл в папке и как следствие саму папку //Обновление страницы проходит уже нормально //Полагаю в линукс такой ошибки не будет хз почему возникает @docx_full_del_dir($cachefolder); $xmls = docx_getTextFromZippedXML($src, 'word/document.xml', $cachefolder, $debug); $rIds = array(); $param = array('com' => 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, 'docx_analyse', $param); } else { $param['rIds'] = array(); $html = ''; } /*if($debug){ echo $html; echo '<textarea style="width:600px; height:400px">'; echo $html; echo '</textarea>'; echo '<pre>'; print_r($xmlar); }*/ if ($type == 'preview' || $type == 'news') { $p = explode('/', $src); $fname = array_pop($p); $s = infra_toutf($fname); $data = infra_nameinfo($s); //$p=explode("/",$src); //$fname=array_pop($p); //preg_match("/^(\d*)/",$fname,$match); //$fname=infra_toutf(preg_replace('/^\d*/','',$fname)); //$fname=preg_replace('/\.\w{0,4}$/','',$fname); //$fname=trim($fname); //$date=$match[0]; $patern = '/###cut###/U'; $d = preg_split($patern, $html); if (sizeof($d) > 1) { $html = preg_replace($patern, '', $html); $preview = $d[0]; } else { $temphtml = strip_tags($html, '<p>'); //preg_match('/^(<p.*>.{'.$previewlen.'}.*<\/p>)/U',$temphtml,$match); preg_match('/(<p.*>.{1}.*<\\/p>)/U', $temphtml, $match); if (sizeof($match) > 1) { $preview = $match[1]; } else { $preview = $html; } } $preview = preg_replace('/<h1.*<\\/h1>/U', '', $preview); $preview = preg_replace('/<img.*>/U', '', $preview); $preview = preg_replace('/<p.*>\\s*<\\/p>/iU', '', $preview); $preview = preg_replace("/\\s+/", ' ', $preview); $preview = trim($preview); preg_match('/<img.*src=["\'](.*)["\'].*>/U', $html, $match); if ($match && $match[1]) { $img = $match[1]; } else { $img = false; } $filetime = filemtime($src); $data['modified'] = $filetime; if (@$param['links']) { $data['links'] = $param['links']; } if (@$param['heading']) { $data['heading'] = $param['heading']; } //title - depricated if (@$data['name']) { $data['title'] = $data['name']; } if ($img) { $data['img'] = $img; } if (@$param['images']) { $data['images'] = $param['images']; } if ($preview) { $data['preview'] = $preview; } return array($data, $param['com']); } else { return array($html, $param['com']); } }, $args, $re); //$html=$dhtml[0]; //кэш этого место в infrajs в getHTML return $dhtml; }