DEDEV5.5图集Bug与修正

DEDE5.5更新的功能挺多,一些细节地方确实更新不少。甚至把WordPress中Ajax修改基本参数的功能也抄了进来,整体感觉还不错。

无奈,在图集方面,下的功能并不多,第一次加了SWFupload以后,上传图片的过程倒是简化不少,问题却又突然增加不少。

  1. 发布图集方便不少,编辑图集却变得十分复杂,不能直观的显示图集数量和图片地址。
  2. 使用HTML发布图集时,不能对提取的缩略图进行缩放生成新的缩略图。
  3. 生成缩略图的函数居然还有一个莫名其妙的Bug,花了一个小时才找到问题并解决。

以下是一些修正:

一,从网页上复制图片,即从HTML中提取图片地址并下载的这段代码修正如下:

[php]
//处理并保存从网上复制的图片
/*———————
function _getformhtml()
——————*/
if($formhtml==1 && $imagebody)
{
if(!$litpic){
$ddisremote = 1;
$ddisfirst = 1;
$isrm = 1;
}
$imagebody = stripslashes($imagebody);
$imgurls .= GetCurContentAlbum($imagebody,$copysource,$litpicname);
if($ddisfirst==1 && $litpic==” && !empty($litpicname))
{
$litpic = $litpicname;
$hasone = true;
}
$litpic = GetDDImage(‘ddfirst’, $litpic, $isrm);}

[/php]
这里,绿色部份是对第一张图片进行缩小。

二,生成缩略图的函数GetDDImage的Bug修正:
[php]//获得缩略图
function GetDDImage($litpic,$picname,$isremote)
{
global $cuserLogin,$cfg_ddimg_width,$cfg_ddimg_height,$cfg_basedir,$ddcfg_image_dir,$cfg_addon_savetype;
$ntime = time();
if( ($litpic != ‘none’ || $litpic != ‘ddfirst’) &&
!empty($_FILES[$litpic][‘tmp_name’]) && is_uploaded_file($_FILES[$litpic][‘tmp_name’]))
{
//如果用户自行上传缩略图
$istype = 0;
$sparr = Array("image/pjpeg","image/jpeg","image/gif","image/png");
$_FILES[$litpic][‘type’] = strtolower(trim($_FILES[$litpic][‘type’]));
if(!in_array($_FILES[$litpic][‘type’],$sparr))
{
ShowMsg("上传的图片格式错误,请使用JPEG、GIF、PNG格式的其中一种!","-1");
exit();
}
$savepath = $ddcfg_image_dir.’/’.MyDate($cfg_addon_savetype, $ntime);

CreateDir($savepath);
$fullUrl = $savepath.’/’.dd2char(MyDate(‘mdHis’,$ntime).$cuserLogin->getUserID().mt_rand(1000,9999));
if(strtolower($_FILES[$litpic][‘type’])=="image/gif")
{
$fullUrl = $fullUrl.".gif";
}
else if(strtolower($_FILES[$litpic][‘type’])=="image/png")
{
$fullUrl = $fullUrl.".png";
}
else
{
$fullUrl = $fullUrl.".jpg";
}

@move_uploaded_file($_FILES[$litpic][‘tmp_name’],$cfg_basedir.$fullUrl);
$litpic = $fullUrl;

if($GLOBALS[‘cfg_ddimg_full’]==’Y’) @ImageResizeNew($cfg_basedir.$fullUrl,$cfg_ddimg_width,$cfg_ddimg_height);
else @ImageResize($cfg_basedir.$fullUrl,$cfg_ddimg_width,$cfg_ddimg_height);

$img = $cfg_basedir.$litpic;

}
else
{

$picname = trim($picname);
if($isremote==1 && eregi("^http://",$picname))
{
$litpic = $picname;

$ddinfos = GetRemoteImage($litpic,$cuserLogin->getUserID());

if(!is_array($ddinfos))
{
$litpic = ”;
}
else
{
$litpic = $ddinfos[0];
if($ddinfos[1] > $cfg_ddimg_width || $ddinfos[2] > $cfg_ddimg_height)
{
if($GLOBALS[‘cfg_ddimg_full’]==’Y’) @ImageResizeNew($cfg_basedir.$litpic,$cfg_ddimg_width,$cfg_ddimg_height);
else @ImageResize($cfg_basedir.$litpic,$cfg_ddimg_width,$cfg_ddimg_height);
}
}
}
else
{
if($litpic==’ddfirst’ && !eregi("^http://",$picname))
{
$oldpic = $cfg_basedir.$picname;
<span style="color: #008000;"> $ddn = substr($filename, -3);
$litpic = ereg_replace("\.".$ddn."$", "-lp.".$ddn, $picname);</span>
if($GLOBALS[‘cfg_ddimg_full’]==’Y’) @ImageResizeNew($oldpic,$cfg_ddimg_width,$cfg_ddimg_height,$cfg_basedir.$litpic);
else @ImageResize($oldpic,$cfg_ddimg_width,$cfg_ddimg_height,$cfg_basedir.$litpic);
if(!is_file($cfg_basedir.$litpic)) $litpic = ”;
}
else
{
$litpic = $picname;
return $litpic;
}
}
}
if($litpic==’litpic’ || $litpic==’ddfirst’)
{
$litpic = ”;
}
return $litpic;
}[/php]
这样可以避免目录中出现多个.时无法生成缩略图的问题。

这两个小地方,看得出DEDE的开发人员,确实不止一人哈,呵呵。同类型的函数居然写了两个,且风格不一。看来柏拉图应该好好坐下来读读代码,把把关了。

此文仅属存档,方便以后升级时查询,如果有朋友遇到这样的问题,可以联系我进行修改。