phpcms转supesite转换程序bug修正

因客户前期使用的门户站是phpcms产品,现要升级到康盛的supesite.很惊喜的在网上找到了康盛刚出没多久的一个转换程序XConvert_for_Phpcms.于是拿过来做转换.转换完毕后发现了如下2个bug,没办法只有查看对应的转换程序源码,经过一天的研究终于发现了问题,并换到了解决方法.并己将下述2个bug反馈给了转换程序的作者(作者很感激).在此记录一下希望对需要的朋友有帮助:
bug1: 转换后资讯对应的缩略图附件id全部为赋值为0.导致有缩略图的资讯全部显示不了.
bug1: 解决方法:

      将step_3.php文件中的如下代码:
      
if(!empty($attachment)){
		$haveattach	=	1;	//是否包含附件
		foreach($attachment as $key=>$value){
			if($value['isimage']){
				//$picid		=	1;
				$picid		=	$value['aid'];
				break;
			}
		}
	//是否是图片
	}else{
		$haveattach	=	0;
		$picid		=	0;
	}



     修改为:
      
//关联附件ID
	$haveattach	=	0;
	$picid		=	0;

	if(!empty($attachment)){
		 //是否包含附件
		 $haveattach	=	1;	
		 //图片附件id
		 $picid =	$attachment['aid'];
	}




bug2: 转换后所有资讯相关联的资讯id(以,分隔的id集合)全部为空("").导致查询相关联的资讯全部为空.
bug2解决方法:
   将setp_4.php文件中的如下代码:
     
$relativeitemids	=""


   修改为:
     
$relativeitemids	= getrelativeitemids($itemid,$source_tablepre);

      //得到给定资讯id相关联的10条资讯id集合
function getrelativeitemids($itemid,$tabprefix="phpcms_",$num=10) {
	global $db;
	$itemidarr=array();
	$tags= array();

	$query = $db['source']->query("SELECT tag FROM {$tabprefix}content_tag c WHERE c.contentid = $itemid");
	while ($value = $db['source']->fetch_array($query)) {
		$tags[] = $value['tag'];
	}

	if(empty($tags)) return '';
	//tag名称字符串
	$tagstrs="";
	for($i=0;$i<count($tags);$i++){
	 if($i==(count($tags)-1))
		 $tagstrs.="'".$tags[$i]."'";
		else
		$tagstrs.="'".$tags[$i]."',";
	}

	$where = " where tag in ($tagstrs) AND contentid<>'$itemid'";
	$order=" ORDER BY contentid DESC LIMIT 0, $num ";
	$sql="SELECT contentid FROM {$tabprefix}content_tag ".$where.$order;

	$query = $db['source']->query($sql);
	while ($value = $db['source']->fetch_array($query)) {
		$itemidarr[] = $value['contentid'];
	}
	return implode(',', $itemidarr);
}


希望以上两个bug可以帮助需要的朋友.

你可能感兴趣的:(sql,C++,c,PHP,资讯)