Home  >  Article  >  Backend Development  >  discuz插件的事,我又跑到csdn来问,相信组织的力量!

discuz插件的事,我又跑到csdn来问,相信组织的力量!

WBOY
WBOYOriginal
2016-06-23 13:54:521121browse

这个插件呢,是仿贴吧的,在帖子列表显示缩略图,是我很喜欢的一种风格,适用于X3.0,但是为了客户端,我只能用X2.5版本,这个插件在X2.5不工作,无法生成缩略图我就是想改一改代码,让其在X2.5环境下工作,自用,不商用。
在X3.0下,是能生成一个存放缩略图的文件夹,里面存放有缩略图。但是在2.5下,没有发现这个文件夹,所以感觉在build这一步出了问题。
下面贴出thumbbuilder.class.php这个文件的代码,请高手分析一下,为什么没有在data/attachment/下生成tiebalist这个文件夹。

<?phpif(!defined('IN_DISCUZ')) {    exit('Access Denied');}if (!class_exists('PhpThumbFactory',false)) require_once('source/plugin/chs_tiebalist/phpthumb/ThumbLib.inc.php');class ThumbBuilder {    private $basedir;	private $baseurl;    public function __construct(){        global $_G;		$this->basedir=!$_G['setting']['attachdir'] ? (DISCUZ_ROOT.'data/attachment/'):$_G['setting']['attachdir'];		$this->baseurl=!$_G['setting']['attachurl'] ? ('data/attachment/'):$_G['setting']['attachurl'];    }    private function getCoverPath($tid){        return 'tiebalist/'.substr(md5($tid), 0, 2).'/'.substr(md5($tid), 2, 2).'/';    }    public function GetThreadCovers($tid,$aids){        $coverpath=$this->getCoverPath($tid);        $fullpath=$this->basedir.$coverpath;        $fullurl=$this->baseurl.$coverpath;        $images=array();        foreach($aids as $aid){            if (file_exists($fullpath.$aid.'.jpg')) $images[]=array('aid'=>$aid,'thumbfile'=>$fullurl.$aid.'.jpg');          }        return $images;    }    public function CreateThreadCovers($tid,$images,$force=0){        $path=$this->basedir.$this->getCoverPath($tid);		dmkdir($path);        global $_G;        $setting=&$_G['cache']['plugin']['chs_tiebalist'];        $thumbheight=$setting['thumbheight']?$setting['thumbheight']:80;        $thumbmaxwidth=$setting['thumbmaxwidth']?$setting['thumbmaxwidth']:300;        foreach($images as $aid=>$image){            $target=$path.$aid.'.jpg';            if (file_exists($target)&&(!$force)) continue;            try {				$thumb = PhpThumbFactory::create($image,array('resizeUp'=>true));                $dimensions=$thumb->getCurrentDimensions();                $newwidth=$thumbheight*$dimensions['width']/$dimensions['height'];                if ($newwidth>$thumbmaxwidth) {                    $thumb->adaptiveResize($thumbmaxwidth,$thumbheight);                }else {                    $thumb->resize(0,$thumbheight);//封面不限定宽度                }				$thumb->save($target);			}catch(Exception $oEx){//捕获生成缩略图可能抛出的异常,防止中断                writelog('tiebalistlog',$oEx->getMessage());				continue;			}        }        if ($force) {            $thumbfiles=$this->getfiles($path,'jpg');            $aids=array_keys($images);            foreach($thumbfiles as $filename){                $aid=intval(substr($filename,0,strpos($filename,'.')));                if (!in_array($aid,$aids)) unlink($path.$filename);            }        }    }        private function getfiles($dir,$mask=''){         $fileArray=array();         if (false != ($handle = opendir ($dir))) {            while (false!==($file=readdir($handle))){                if ($file == '.' || $file == '..') continue;                if (empty($mask)) $fileArray[]=$file;                else if (substr(strrchr($file, '.'), 1)==$mask) $fileArray[]=$file;            }          }         return $fileArray;    }}?>


回复讨论(解决方案)

buildthumb.inc.php内的内容,好像也有用处呢

<?phpif(!defined('IN_DISCUZ')) {    exit('Access Denied');}class plugin_chs_tiebalist {       function common() {}}class plugin_chs_tiebalist_forum extends plugin_chs_tiebalist {     function forumdisplay_thread_subject_output(){           global $_G;        $setting=&$_G['cache']['plugin']['chs_tiebalist'];        if (!$setting['enabled']) return;        $fid = intval($_G['fid']);        $forumselected=unserialize($setting['forumselected']);        if(!in_array($fid,$forumselected)) return;                if ($_G['forum']['picstyle'] == 0||$_G['cookie']['forumdefstyle']==1){            global $_G;            $threadlist = array();            $threadlist = $_G['forum_threadlist'];            $tiebalist = array();            $messagelength=$setting['messagelength']?$setting['messagelength']:100;            $picturenum=$setting['$picturenum']?$setting['$picturenum']:3;            include libfile('function/post');            require_once('thumbbuilder.class.php');            $oTB=new ThumbBuilder();            foreach($threadlist as $key => $value){                $position=($value['special']==2)?2:1;//商品主题的首帖在第二楼,回复从第3楼开始                $firstpost=C::t('forum_post')->fetch_all_by_tid_position('tid:'.$value['tid'],$value['tid'],$position);                if (count($firstpost)>0&&$firstpost[0]['invisible']>=0){                    $post=&$firstpost[0];                    $message=messagecutstr($post['message'],$messagelength);                    $tiebalist[$key] = '<p>'.$message.'</p>';                    $attachs=C::t('forum_attachment_n')->fetch_all_by_id('pid:'.$post['pid'],'pid',$post['pid'],false,true,false,false,$picturenum);                    $aids=array_keys($attachs);                    if ($aids){                        $imagelist=$oTB->GetThreadCovers($value['tid'],$aids);                        if (count($imagelist)>0) {                            $tiebalist[$key].='<ul id="thumblist_'.$value['tid'].'" class="thumblist cl">';                            foreach($imagelist as $ii=>$image){                                $attach=$attachs[$image['aid']];                                $forumimg=($attach['remote'] ? $_G['setting']['ftp']['attachurl'] : $_G['setting']['attachurl']).'forum/'.$attach['attachment'];                                $tiebalist[$key].='<li data="'.$forumimg.'" onclick="showpicture('.$value['tid'].','.$ii.');return false;"><img  src="'.$image['thumbfile'].'"/ alt="discuz插件的事,我又跑到csdn来问,相信组织的力量!" ></li>';                            }                            $tiebalist[$key].='</ul>';                            $tiebalist[$key].=                            '<div id="picturebox_'.$value['tid'].'" class="picturedisplay"   style="max-width:90%">                                <div class="picturecontrol">                                    <a class="icon_close" onclick="closepicture('.$value['tid'].');return false;">收起</a>                                    <span>|</span>                                    <a class="icon_viewpost" href="forum.php?mod=viewthread&tid='.$value['tid'].'&extra=page%3D1">查看帖子</a>                                    <span>|</span>                                    <a class="icon_turnleft" onclick="turnimg('.$value['tid'].',1);return false;">左转</a>                                    <span>|</span>                                    <a class="icon_turnright" onclick="turnimg('.$value['tid'].',0);return false;">右转</a>                                </div>                                <div class="picturewrap" >                                    <a onclick="closepicture('.$value['tid'].');return false;"><img  class="picture" src="" / alt="discuz插件的事,我又跑到csdn来问,相信组织的力量!" ></a>                                    <div class="goprevious"></div>                                    <div class="gonext"></div>                                </div>                            </div>';                          }                    }                }            }            return $tiebalist;        }    }    function  forumdisplay_threadlist_bottom() {		global $_G;        $setting=&$_G['cache']['plugin']['chs_tiebalist'];        if (!$setting['enabled']) return;        $fid = intval($_G['fid']);        $forumselected=unserialize($setting['forumselected']);        if(!in_array($fid,$forumselected)) return;		$echo = '<link rel="stylesheet" type="text/css" href="source/plugin/chs_tiebalist/template/css/tiebalist.css" />';		$echo .= '<script src="source/plugin/chs_tiebalist/template/js/tiebalist.js"  type="text/javascript"></script>';        $picturemaxwidth=$setting['picturemaxwidth']?$setting['picturemaxwidth']:600;        $echo .='<script type="text/javascript">var picturemaxwidth='.$picturemaxwidth.';</script>';		return $echo;	}    function post_chs_tiebalist_message($params) {		global $_G, $tid, $pid, $modthread, $isfirstpost;        $setting=&$_G['cache']['plugin']['chs_tiebalist'];        if (!$setting['enabled']) return;        $fid = intval($_G['fid']);        $forumselected=unserialize($setting['forumselected']);        if(!in_array($fid,$forumselected)) return;		list($msg, $url_forward, $values, $extraparam) = $params['param'];		if (($msg == 'post_newthread_succeed')||($msg == 'post_newthread_mod_succeed')) {			$pid = $modthread->pid;			$this->create_covers($pid,$tid);			dshowmessage($msg, $url_forward, $values, $extraparam);		}else if (($msg == 'post_edit_succeed')&&$isfirstpost) {			$tid=$_G['tid'];			$this->create_covers($pid,$tid);			dshowmessage($msg, $url_forward, $values, $extraparam);		}    }    private function create_covers($pid,$tid){		global $_G;        $setting=&$_G['cache']['plugin']['chs_tiebalist'];        $picturenum=$setting['$picturenum']?$setting['$picturenum']:3;		//获取帖子的图片		$attachs=C::t('forum_attachment_n')->fetch_all_by_id('pid:'.$pid,'pid',$pid,false,true,false,false,$picturenum);		$images=array();		foreach($attachs as $attach){			$images[$attach['aid']]=($attach['remote'] ? $_G['setting']['ftp']['attachdir'] : $_G['setting']['attachdir']).'forum/'.$attach['attachment'];		}		if ($images){			require_once("thumbbuilder.class.php");			$oTB=new ThumbBuilder();			$oTB->CreateThreadCovers($tid,$images);		}	}}?>

这个你找原插件作者去瞅瞅吧!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn