コード例 #1
0
ファイル: install.php プロジェクト: akiyatkin/imager
<?php

$dirs = infra_dirs();
$conf = infra_config();
if ($conf['infra']['cache'] == 'fs') {
    if (!is_dir($dirs['cache'] . 'imager_remote/')) {
        mkdir($dirs['cache'] . 'imager_remote/');
    }
}
if ($conf['imager']['watermark']) {
    if (!is_dir($dirs['data'] . 'imager/')) {
        mkdir($dirs['data'] . 'imager/');
    }
    if (!is_dir($dirs['data'] . 'imager/.notwater/')) {
        mkdir($dirs['data'] . 'imager/.notwater/');
    }
    if (!is_dir($dirs['data'] . 'imager/.backuporig/')) {
        mkdir($dirs['data'] . 'imager/.backuporig/');
    }
}
コード例 #2
0
ファイル: imager.inc.php プロジェクト: akiyatkin/imager
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;
}
コード例 #3
0
ファイル: Mht.php プロジェクト: akiyatkin/files
 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);
 }
コード例 #4
0
ファイル: yml.php プロジェクト: akiyatkin/yml
function yml_init()
{
    infra_require('*cart/catalog.inc.php');
    $data = cat_init();
    xls_runGroups($data, function (&$group, $i, &$parent) {
        $group['data'] = array_filter($group['data'], function (&$pos) {
            //Убираем позиции у которых не указана цена
            if ($pos['Синхронизация'] != 'Да') {
                return false;
            }
            if (!$pos['Цена']) {
                return false;
            }
            return true;
        });
        $group['data'] = array_values($group['data']);
    });
    xls_runGroups($data, function (&$group, $i, &$parent) {
        if ($group['childs']) {
            $group['childs'] = array_filter($group['childs'], function (&$g) {
                if (!$g['data'] && !$g['childs']) {
                    return false;
                }
                return true;
            });
            $group['childs'] = array_values($group['childs']);
        }
    }, array(), true);
    xls_runPoss($data, function (&$pos) {
        $conf = infra_config();
        xls_preparePosFiles($pos, $conf['cart']['dir'], array('Производитель', 'article'));
        foreach ($pos['images'] as $k => $v) {
            $src = $pos['images'][$k];
            $p = explode('/', $src);
            foreach ($p as $i => $n) {
                $p[$i] = urlencode($n);
                $p[$i] = preg_replace('/\\+/', '%20', $p[$i]);
            }
            $pos['images'][$k] = implode('/', $p);
        }
    });
    return yml_parse($data);
}
コード例 #5
0
ファイル: User.php プロジェクト: akiyatkin/user
 public static function sentEmail($email, $tpl, $data = array())
 {
     $conf = infra_config();
     call_user_func($conf['user']['sentEmail'], $email, $tpl, $data);
 }
コード例 #6
0
ファイル: Xlsx.php プロジェクト: akiyatkin/files
 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']);
 }
コード例 #7
0
ファイル: seo.ext.php プロジェクト: akiyatkin/seo
function infrajs_seo_apply()
{
    $conf = infra_config();
    if (!$conf['seo']['seo']) {
        return;
    }
    $store =& infrajs_store();
    $layer =& $store['seolayer'];
    if (!$layer) {
        return;
    }
    $seo = $layer['seo'];
    $reallink = $layer['crumb']->toString();
    $item = $seo;
    if (isset($seo['name'])) {
        $id = $seo['name'] . '|' . $reallink;
        $r = infra_loadJSON('*seo/seo.php?type=item&id=' . $id);
        $item = $r['item'];
    }
    //Применяем
    $html = infra_html();
    $name = 'keywords';
    //stencil//
    if (isset($item[$name])) {
        if (!is_string($item[$name])) {
            $item[$name] = implode(', ', $item[$name]);
        }
        $r = preg_match('/<meta.*name=.{0,1}' . $name . '.{0,1}.*>/i', $html);
        if (!$r) {
            $html = str_ireplace('<head>', "<head>\n<meta name=\"" . $name . '" content="' . infrajs_seo_value($item[$name]) . '">', $html);
        } else {
            $html = preg_replace('/(<meta.*name=.{0,1}' . $name . '.{0,1})(.*>)/i', '<meta name="' . $name . '" content="' . infrajs_seo_value($item[$name]) . '" >', $html);
        }
    }
    $name = 'description';
    //stencil//
    if (isset($item[$name])) {
        $r = preg_match('/<meta.*name=.{0,1}' . $name . '.{0,1}.*>/i', $html);
        if (!$r) {
            $html = str_ireplace('<head>', "<head>\n<meta name=\"" . $name . '" content="' . infrajs_seo_value($item[$name]) . '">', $html);
        } else {
            $html = preg_replace('/(<meta.*name=.{0,1}' . $name . '.{0,1})(.*>)/i', '<meta name="' . $name . '" content="' . infrajs_seo_value($item[$name]) . '" >', $html);
        }
    }
    $name = 'title';
    //stencil//
    if (isset($item[$name])) {
        $r = preg_match('/<title>/i', $html);
        if (!$r) {
            $html = str_ireplace('<head>', "<head>\n<title>" . infrajs_seo_value($item[$name]) . '</title>', $html);
        } else {
            $html = preg_replace('/<title>.*<\\/title>/i', '<title>' . infrajs_seo_value($item[$name]) . '</title>', $html);
        }
    }
    infra_html($html, true);
}
コード例 #8
0
ファイル: Catalog.php プロジェクト: oduvanio/catalog
 public static function search($md, &$ans = array())
 {
     $args = array(Catalog::nocache($md));
     $res = Catalog::cache('search.php filter list', function ($md) {
         $conf = infra_config();
         $ans['list'] = Catalog::getPoss($md['group']);
         //ЭТАП filters list
         $ans['filters'] = Catalog::filtering($ans['list'], $md);
         foreach ($md['group'] as $now => $one) {
             break;
         }
         $ans['childs'] = Catalog::getGroups($ans['list'], $now);
         $ans['count'] = sizeof($ans['list']);
         return $ans;
     }, $args, isset($_GET['re']));
     $ans = array_merge($ans, $res);
     return $ans;
 }
コード例 #9
0
ファイル: Docx.php プロジェクト: akiyatkin/files
 /**
  * Кэширумеая функция, основной разбор.
  */
 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;
 }
コード例 #10
0
ファイル: docx.php プロジェクト: akiyatkin/pages
 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;
 }