在X3.0下,是能生成一个存放缩略图的文件夹,里面存放有缩略图。但是在2.5下,没有发现这个文件夹,所以感觉在build这一步出了问题。
下面贴出thumbbuilder.class.php这个文件的代码,请高手分析一下,为什么没有在data/attachment/下生成tiebalist这个文件夹。
<?php
if(!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;
}
}
?>
2 个解决方案
#1
buildthumb.inc.php内的内容,好像也有用处呢
<?php
if(!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'].'"/></li>';
}
$tiebalist[$key].='</ul>';
$tiebalist[$key].=
'<div id="picturebox_'.$value['tid'].'" class="picturedisplay" style="display:none;">
<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="" /></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);
}
}
}
?>
#2
这个你找原插件作者去瞅瞅吧!
#1
buildthumb.inc.php内的内容,好像也有用处呢
<?php
if(!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'].'"/></li>';
}
$tiebalist[$key].='</ul>';
$tiebalist[$key].=
'<div id="picturebox_'.$value['tid'].'" class="picturedisplay" style="display:none;">
<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="" /></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);
}
}
}
?>
#2
这个你找原插件作者去瞅瞅吧!