]*)\.(gif|jpg|png))/isU", $body, $img_array);
$img_array = array_unique($img_array[2]);
$imgUrl = $cfg_user_dir."/".$cfg_ml->M_ID;
$imgPath = $cfg_basedir.$imgUrl;
if (!is_dir($imgPath."/")) {
MkdirAll($imgPath, $GLOBALS['cfg_dir_purview']);
CloseFtp();
}
$milliSecond = MyDate("ymdHis", time());
foreach ($img_array as $key => $value) {
if (preg_match("#".$basehost."#i", $value)) {
continue;
}
if ($cfg_basehost != $basehost && preg_match("#".$cfg_basehost."#i", $value)) {
continue;
}
if (!preg_match("#^http[s]?:\/\/#i", $value)) {
continue;
}
if ($cfg_mb_rmdown == 'Y') {
$value = trim($value);
$itype = substr($value, -4, 4);
if (!preg_match("#\.(gif|jpg|png)#i", $itype)) $itype = ".jpg";
$rndFileName = $imgPath."/".$milliSecond.$key.$itype;
$iurl = $imgUrl."/".$milliSecond.$key.$itype;
//下载并保存文件
//$rs = $htd->SaveToBin($rndFileName);
$rs = DownImageKeep($value, $rfurl, $rndFileName, '', 0, 30);
if ($rs) {
if ($pagestyle > 2) {
$litpicname = GetImageMapDD($iurl, $ddmaxwidth);
if ($litpicname != '') SaveUploadInfo($title, $litpicname, 1, $addinfos);
} else {
$litpicname = '';
}
if (empty($firstdd)) {
$firstdd = $litpicname;
if (!file_exists($cfg_basedir.$firstdd)) $firstdd = $iurl;
}
@WaterImg($rndFileName, 'down');
$info = '';
$imginfos = GetImageSize($rndFileName, $info);
SaveUploadInfo($title, $iurl, 1, $imginfos);
$rsimg .= "{dede:img ddimg='$litpicname' text='' width='".$imginfos[0]."' height='".$imginfos[1]."'} $iurl {/dede:img}\r\n";
}
} else {
$rsimg .= "{dede:img ddimg='$value' text='' width='0' height='0'} $value {/dede:img}\r\n";
}
}
return $rsimg;
}
/**
* 图集里大图的小图
*
* @param string $filename 文件名
* @param string $ddm 缩略图
* @param string $oldname 旧的名称
* @return string
*/
function GetImageMapDD($filename, $ddm, $oldname = '')
{
if ($oldname != '' && !preg_match("#^http:\/\/#i", $oldname)) {
$ddpicok = $oldname;
} else {
$ddn = substr($filename, -3);
$ddpicok = preg_replace("#\.".$ddn."$#", "-lp.".$ddn, $filename);
}
$toFile = $GLOBALS['cfg_basedir'].$ddpicok;
ImageResize($GLOBALS['cfg_basedir'].$filename, $ddm, 300, $toFile);
return $ddpicok;
}
/**
* 把上传的信息保存到数据库
*
* @param string $title 标题
* @param string $filename 文件名称
* @param string $medaitype 附件类型
* @param string $addinfos 附加信息
* @return string
*/
function SaveUploadInfo($title, $filename, $medaitype = 1, $addinfos = '')
{
global $dsql, $cfg_ml, $cfg_basedir;
if ($filename == '') {
return FALSE;
}
if (!is_array($addinfos)) {
$addinfos[0] = $addinfos[1] = $addinfos[2] = 0;
}
if ($medaitype == 1) {
$info = '';
$addinfos = GetImageSize($cfg_basedir.$filename, $info);
}
$addinfos[2] = @filesize($cfg_basedir.$filename);
$row = $dsql->GetOne("SELECT aid,title,url FROM `#@__uploads` WHERE url LIKE '$filename' AND mid='".$cfg_ml->M_ID."'; ");
$uptime = time();
if (is_array($row)) {
$query = "UPDATE `#@__uploads` SET title='$title',mediatype='$medaitype',
width='{$addinfos[0]}',height='{$addinfos[1]}',filesize='{$addinfos[2]}',uptime='$uptime'
WHERE aid='{$row['aid']}'; ";
$dsql->ExecuteNoneQuery($query);
} else {
$inquery = "INSERT INTO `#@__uploads`(title,url,mediatype,width,height,playtime,filesize,uptime,mid)
VALUES ('$title','$filename','$medaitype','".$addinfos[0]."','".$addinfos[1]."','0','".$addinfos[2]."','$uptime','".$cfg_ml->M_ID."'); ";
$dsql->ExecuteNoneQuery($inquery);
}
$fid = $dsql->GetLastID();
AddMyAddon($fid, $filename);
return TRUE;
}
/**
* 获得一个附加表单
*
* @param object $ctag
* @return string
*/
function GetFormItemA($ctag)
{
return GetFormItem($ctag, 'member');
}
/**
* 处理不同类型的数据
*
* @param string $dvalue
* @param string $dtype
* @param int $aid
* @param string $job
* @param string $addvar
* @return string
*/
function GetFieldValueA($dvalue, $dtype, $aid = 0, $job = 'add', $addvar = '')
{
return GetFieldValue($dvalue, $dtype, $aid, $job, $addvar, 'member');
}
/**
* 获得带值的表单(编辑时用)
*
* @param object $ctag
* @param string $fvalue 默认值
* @return string
*/
function GetFormItemValueA($ctag, $fvalue)
{
return GetFormItemValue($ctag, $fvalue, 'member');
}
/**
* 载入自定义表单(用于发布)
*
* @access public
* @param string $fieldset
* @param string $loadtype
* @param bool $isprint 是否打印
* @return string
*/
function PrintAutoFieldsAdd(&$fieldset, $loadtype = 'all', $isprint = TRUE)
{
$dtp = new DedeTagParse();
$dtp->SetNameSpace('field', '<', '>');
$dtp->LoadSource($fieldset);
$dede_addonfields = '';
$addonfieldsname = '';
if (is_array($dtp->CTags)) {
foreach ($dtp->CTags as $tid => $ctag) {
if ($loadtype != 'autofield' || $ctag->GetAtt('autofield') == 1) {
$dede_addonfields .= ($dede_addonfields == "" ? $ctag->GetName().",".$ctag->GetAtt('type') : ";".$ctag->GetName().",".$ctag->GetAtt('type'));
$addonfieldsname .= ",".$ctag->GetName();
if ($isprint) echo GetFormItemA($ctag);
}
}
}
echo "";
echo "";
//增加一个返回
return $addonfieldsname;
}
/**
* 载入自定义表单(用于编辑)
*
* @param string $fieldset
* @param string $fieldValues
* @param string $loadtype
* @return string
*/
function PrintAutoFieldsEdit(&$fieldset, &$fieldValues, $loadtype = 'all')
{
$dtp = new DedeTagParse();
$dtp->SetNameSpace("field", "<", ">");
$dtp->LoadSource($fieldset);
$dede_addonfields = "";
if (is_array($dtp->CTags)) {
foreach ($dtp->CTags as $tid => $ctag) {
if (
$loadtype != 'autofield'
|| ($loadtype == 'autofield' && $ctag->GetAtt('autofield') == 1)
) {
$dede_addonfields .= ($dede_addonfields == '' ? $ctag->GetName().",".$ctag->GetAtt('type') : ";".$ctag->GetName().",".$ctag->GetAtt('type'));
echo GetFormItemValueA($ctag, $fieldValues[$ctag->GetName()]);
}
}
}
echo "";
echo "";
}
/**
* 创建指定ID的文档
*
* @param int $aid
* @param bool $ismakesign
* @return string
*/
function MakeArt($aid, $ismakesign = FALSE)
{
include_once(DEDEINC.'/arc.archives.class.php');
if ($ismakesign) {
$envs['makesign'] = 'yes';
}
$arc = new Archives($aid);
$reurl = $arc->MakeHtml();
if (isset($typeid)) {
$preRow = $arc->dsql->GetOne("SELECT id FROM `#@__arctiny` WHERE id<$aid AND arcrank>-1 AND typeid='$typeid' order by id desc");
$nextRow = $arc->dsql->GetOne("SELECT id FROM `#@__arctiny` WHERE id>$aid AND arcrank>-1 AND typeid='$typeid' order by id asc");
if (is_array($preRow)) {
$arc = new Archives($preRow['id']);
$arc->MakeHtml();
}
if (is_array($nextRow)) {
$arc = new Archives($nextRow['id']);
$arc->MakeHtml();
}
}
return $reurl;
}
/**
* 处理HTML文本、自动摘要、自动获取缩略图等
*
* @access public
* @param string $body 文档内容
* @param string $description 描述
* @param string $dtype 类型
* @return string
*/
function AnalyseHtmlBody($body, &$description, $dtype = '')
{
global $cfg_mb_rmdown, $cfg_basehost, $cfg_auot_description, $arcID;
$autolitpic = (empty($autolitpic) ? '' : $autolitpic);
$body = stripslashes($body);
//远程图片本地化
if ($cfg_mb_rmdown == 'Y') {
$body = GetCurContent($body);
}
//自动摘要
if ($description == '' && $cfg_auot_description > 0) {
$description = cn_substr(html2text($body), $cfg_auot_description);
$description = trim(preg_replace('/#p#|#e#/', '', $description));
$description = addslashes($description);
}
$body = addslashes($body);
return $body;
}
/**
* 获得文章body里的外部资源
*
* @access public
* @param string $body 内容
* @return string
*/
function GetCurContent(&$body)
{
global $cfg_multi_site, $cfg_basehost, $cfg_basedir, $cfg_user_dir, $title, $cfg_ml;
include_once(DEDEINC."/dedecollection.func.php");
$htd = new DedeHttpDown();
$basehost = "http://".$_SERVER["HTTP_HOST"];
$img_array = array();
preg_match_all("/(src|SRC)=[\"|'| ]{0,}(http[s]?:\/\/([^>]*)\.(gif|jpg|png))/isU", $body, $img_array);
$img_array = array_unique($img_array[2]);
$imgUrl = $cfg_user_dir."/".$cfg_ml->M_ID;
$imgPath = $cfg_basedir.$imgUrl;
if (!is_dir($imgPath."/")) {
MkdirAll($imgPath, $GLOBALS['cfg_dir_purview']);
CloseFtp();
}
$milliSecond = MyDate("ymdHis", time());
foreach ($img_array as $key => $value) {
if (preg_match("#".$basehost."#i", $value)) {
continue;
}
if ($cfg_basehost != $basehost && preg_match("#".$cfg_basehost."#i", $value)) {
continue;
}
if (!preg_match("#^http:\/\/#i", $value)) {
continue;
}
$htd->OpenUrl($value);
$itype = $htd->GetHead("content-type");
$itype = substr($value, -4, 4);
if (!preg_match("#\.(jpg|gif|png)#i", $itype)) {
if ($itype == 'image/gif') {
$itype = ".gif";
} else if ($itype == 'image/png') {
$itype = ".png";
} else {
$itype = '.jpg';
}
}
$milliSecondN = dd2char($milliSecond.'-'.mt_rand(1000, 8000));
$value = trim($value);
$rndFileName = $imgPath."/".$milliSecondN.'-'.$key.$itype;
$fileurl = $imgUrl."/".$milliSecondN.'-'.$key.$itype;
$rs = $htd->SaveToBin($rndFileName);
if ($rs) {
$body = str_replace($value, $fileurl, $body);
@WaterImg($rndFileName, 'down');
}
$info = '';
$imginfos = GetImageSize($rndFileName, $info);
SaveUploadInfo($title, $fileurl, 1, $imginfos);
}
$htd->Close();
return $body;
}