if(!defined('DEDEINC')) exit("Request Error!"); /** * 频道模型单元类 * @version $Id: channelunit.class.php 2 17:32 2010年7月6日Z tianya $ * @package DedeCMS.Libraries * @copyright Copyright (c) 2007 - 2010, DesDev, Inc. * @license http://help.dedecms.com/usersguide/license.html * @link http://www.dedecms.com */ require_once(DEDEINC."/dedetag.class.php"); require_once(DEDEINC."/channelunit.func.php"); /*---------------------------------- function C____ChannelUnit(); -----------------------------------*/ class ChannelUnit { var $ChannelInfos; var $ChannelFields; var $AllFieldNames; var $ChannelID; var $ArcID; var $dsql; var $SplitPageField; //php5构造函数 function __construct($cid,$aid=0) { $this->ChannelInfos = ''; $this->ChannelFields = ''; $this->AllFieldNames = ''; $this->SplitPageField = ''; $this->ChannelID = $cid; $this->ArcID = $aid; $this->dsql = $GLOBALS['dsql']; $sql = " SELECT * FROM `#@__channeltype` WHERE id='$cid' "; $this->ChannelInfos = $this->dsql->GetOne($sql); if(!is_array($this->ChannelInfos)) { echo '读取频道信息失败,无法进行后续操作!'; exit(); } $dtp = new DedeTagParse(); $dtp->SetNameSpace('field','<','>'); $dtp->LoadSource($this->ChannelInfos['fieldset']); if(is_array($dtp->CTags)) { $tnames = Array(); foreach($dtp->CTags as $ctag) { $tname = $ctag->GetName(); if(isset($tnames[$tname])) { break; } $tnames[$tname] = 1; if($this->AllFieldNames!='') { $this->AllFieldNames .= ','.$tname; } else { $this->AllFieldNames .= $tname; } if(is_array($ctag->CAttribute->Items)) { $this->ChannelFields[$tname] = $ctag->CAttribute->Items; } $this->ChannelFields[$tname]['value'] = ''; $this->ChannelFields[$tname]['innertext'] = $ctag->GetInnerText(); if(empty($this->ChannelFields[$tname]['itemname'])) { $this->ChannelFields[$tname]['itemname'] = $tname; } if($ctag->GetAtt('page')=='split') { $this->SplitPageField = $tname; } } } $dtp->Clear(); } function ChannelUnit($cid,$aid=0) { $this->__construct($cid,$aid); } /** * 设置档案ID * * @access private * @param int $aid 档案ID * @return void */ function SetArcID($aid) { $this->ArcID = $aid; } /** * 处理某个字段的值 * * @access public * @param string $fname 字段名称 * @param string $fvalue 字段值 * @param string $addvalue 增加值 * @return string */ function MakeField($fname, $fvalue, $addvalue='') { //处理各种数据类型 $ftype = $this->ChannelFields[$fname]['type']; if($fvalue=='') { if($ftype != 'checkbox') $fvalue = $this->ChannelFields[$fname]['default']; } if($ftype=='text') { $fvalue = HtmlReplace($fvalue); } else if($ftype=='textdata') { if(!is_file($GLOBALS['cfg_basedir'].$fvalue)) { return ''; } $fp = fopen($GLOBALS['cfg_basedir'].$fvalue,'r'); $fvalue = ''; while(!feof($fp)) { $fvalue .= fgets($fp,1024); } fclose($fp); } else if($ftype=='addon') { $foldvalue = $fvalue; $tmptext = GetSysTemplets("channel_addon.htm"); $fvalue = str_replace('~link~',$foldvalue,$tmptext); $fvalue = str_replace('~phpurl~',$GLOBALS['cfg_phpurl'],$fvalue); } else if(file_exists(DEDEINC.'/taglib/channel/'.$ftype.'.lib.php')) { include_once(DEDEINC.'/taglib/channel/'.$ftype.'.lib.php'); $func = 'ch_'.$ftype; $fvalue = $func($fvalue,$addvalue,$this,$fname); } return $fvalue; } /** * 获取缩略图链接 * * @access public * @param string $fvalue 表单值 * @return string */ function GetlitImgLinks($fvalue) { if($GLOBALS["htmltype"]=="dm"){ if(empty($GLOBALS["pageno"])) $NowPage = 1; else $NowPage = intval($GLOBALS["pageno"]); }else{ if(empty($GLOBALS["stNowPage"])) $NowPage = 1; else $NowPage = intval($GLOBALS["stNowPage"]); } $revalue = ""; $dtp = new DedeTagParse(); $dtp->LoadSource($fvalue); if(!is_array($dtp->CTags)){ $dtp->Clear(); return "无图片信息!"; } $ptag = $dtp->GetTag("pagestyle"); if(is_object($ptag)){ $pagestyle = $ptag->GetAtt('value'); $maxwidth = $ptag->GetAtt('maxwidth'); $ddmaxwidth = $ptag->GetAtt('ddmaxwidth'); $irow = $ptag->GetAtt('row'); $icol = $ptag->GetAtt('col'); if(empty($maxwidth)) $maxwidth = $GLOBALS['cfg_album_width']; }else{ $pagestyle = 2; $maxwidth = $GLOBALS['cfg_album_width']; $ddmaxwidth = 200; } if($pagestyle == 3){ if(empty($irow)) $irow = 4; if(empty($icol)) $icol = 4; } $mrow = 0; $mcol = 0; $photoid = 1; $images = array(); $TotalPhoto = sizeof($dtp->CTags); foreach($dtp->CTags as $ctag){ if($ctag->GetName()=="img") { $iw = $ctag->GetAtt('width'); $ih = $ctag->GetAtt('heigth'); $alt = str_replace("'","",$ctag->GetAtt('text')); $src = trim($ctag->GetInnerText()); $ddimg = $ctag->GetAtt('ddimg'); if($iw > $maxwidth) $iw = $maxwidth; $iw = (empty($iw) ? "" : "width='$iw'"); if($GLOBALS["htmltype"]=="dm") { $imgurl = "view.php?aid=$this->ArcID&pageno=$photoid"; }else{ if($photoid==1){ $imgurl = $GLOBALS["fileFirst"].".html"; }else{ $imgurl = $GLOBALS["fileFirst"]."_".$photoid.".html"; } } $imgcls = "image".($photoid-1); $revalue .= "
$alt
$ddimg
$ddimg
$ddimg
$photoid
\r\n"; $photoid++; } } unset($dtp); unset($images); return $revalue; } //关闭所占用的资源 function Close() { } }//End class ChannelUnit if(!defined('DEDEINC')) exit("Request Error!"); /** * 频道模型单元类 * @version $Id: channelunit.class.php 2 17:32 2010年7月6日Z tianya $ * @package DedeCMS.Libraries * @copyright Copyright (c) 2007 - 2010, DesDev, Inc. * @license http://help.dedecms.com/usersguide/license.html * @link http://www.dedecms.com */ require_once(DEDEINC."/dedetag.class.php"); require_once(DEDEINC."/channelunit.func.php"); /*---------------------------------- function C____ChannelUnit(); -----------------------------------*/ class ChannelUnit { var $ChannelInfos; var $ChannelFields; var $AllFieldNames; var $ChannelID; var $ArcID; var $dsql; var $SplitPageField; //php5构造函数 function __construct($cid,$aid=0) { $this->ChannelInfos = ''; $this->ChannelFields = ''; $this->AllFieldNames = ''; $this->SplitPageField = ''; $this->ChannelID = $cid; $this->ArcID = $aid; $this->dsql = $GLOBALS['dsql']; $sql = " SELECT * FROM `#@__channeltype` WHERE id='$cid' "; $this->ChannelInfos = $this->dsql->GetOne($sql); if(!is_array($this->ChannelInfos)) { echo '读取频道信息失败,无法进行后续操作!'; exit(); } $dtp = new DedeTagParse(); $dtp->SetNameSpace('field','<','>'); $dtp->LoadSource($this->ChannelInfos['fieldset']); if(is_array($dtp->CTags)) { $tnames = Array(); foreach($dtp->CTags as $ctag) { $tname = $ctag->GetName(); if(isset($tnames[$tname])) { break; } $tnames[$tname] = 1; if($this->AllFieldNames!='') { $this->AllFieldNames .= ','.$tname; } else { $this->AllFieldNames .= $tname; } if(is_array($ctag->CAttribute->Items)) { $this->ChannelFields[$tname] = $ctag->CAttribute->Items; } $this->ChannelFields[$tname]['value'] = ''; $this->ChannelFields[$tname]['innertext'] = $ctag->GetInnerText(); if(empty($this->ChannelFields[$tname]['itemname'])) { $this->ChannelFields[$tname]['itemname'] = $tname; } if($ctag->GetAtt('page')=='split') { $this->SplitPageField = $tname; } } } $dtp->Clear(); } function ChannelUnit($cid,$aid=0) { $this->__construct($cid,$aid); } /** * 设置档案ID * * @access private * @param int $aid 档案ID * @return void */ function SetArcID($aid) { $this->ArcID = $aid; } /** * 处理某个字段的值 * * @access public * @param string $fname 字段名称 * @param string $fvalue 字段值 * @param string $addvalue 增加值 * @return string */ function MakeField($fname, $fvalue, $addvalue='') { //处理各种数据类型 $ftype = $this->ChannelFields[$fname]['type']; if($fvalue=='') { if($ftype != 'checkbox') $fvalue = $this->ChannelFields[$fname]['default']; } if($ftype=='text') { $fvalue = HtmlReplace($fvalue); } else if($ftype=='textdata') { if(!is_file($GLOBALS['cfg_basedir'].$fvalue)) { return ''; } $fp = fopen($GLOBALS['cfg_basedir'].$fvalue,'r'); $fvalue = ''; while(!feof($fp)) { $fvalue .= fgets($fp,1024); } fclose($fp); } else if($ftype=='addon') { $foldvalue = $fvalue; $tmptext = GetSysTemplets("channel_addon.htm"); $fvalue = str_replace('~link~',$foldvalue,$tmptext); $fvalue = str_replace('~phpurl~',$GLOBALS['cfg_phpurl'],$fvalue); } else if(file_exists(DEDEINC.'/taglib/channel/'.$ftype.'.lib.php')) { include_once(DEDEINC.'/taglib/channel/'.$ftype.'.lib.php'); $func = 'ch_'.$ftype; $fvalue = $func($fvalue,$addvalue,$this,$fname); } return $fvalue; } /** * 获取缩略图链接 * * @access public * @param string $fvalue 表单值 * @return string */ function GetlitImgLinks($fvalue) { if($GLOBALS["htmltype"]=="dm"){ if(empty($GLOBALS["pageno"])) $NowPage = 1; else $NowPage = intval($GLOBALS["pageno"]); }else{ if(empty($GLOBALS["stNowPage"])) $NowPage = 1; else $NowPage = intval($GLOBALS["stNowPage"]); } $revalue = ""; $dtp = new DedeTagParse(); $dtp->LoadSource($fvalue); if(!is_array($dtp->CTags)){ $dtp->Clear(); return "无图片信息!"; } $ptag = $dtp->GetTag("pagestyle"); if(is_object($ptag)){ $pagestyle = $ptag->GetAtt('value'); $maxwidth = $ptag->GetAtt('maxwidth'); $ddmaxwidth = $ptag->GetAtt('ddmaxwidth'); $irow = $ptag->GetAtt('row'); $icol = $ptag->GetAtt('col'); if(empty($maxwidth)) $maxwidth = $GLOBALS['cfg_album_width']; }else{ $pagestyle = 2; $maxwidth = $GLOBALS['cfg_album_width']; $ddmaxwidth = 200; } if($pagestyle == 3){ if(empty($irow)) $irow = 4; if(empty($icol)) $icol = 4; } $mrow = 0; $mcol = 0; $photoid = 1; $images = array(); $TotalPhoto = sizeof($dtp->CTags); foreach($dtp->CTags as $ctag){ if($ctag->GetName()=="img") { $iw = $ctag->GetAtt('width'); $ih = $ctag->GetAtt('heigth'); $alt = str_replace("'","",$ctag->GetAtt('text')); $src = trim($ctag->GetInnerText()); $ddimg = $ctag->GetAtt('ddimg'); if($iw > $maxwidth) $iw = $maxwidth; $iw = (empty($iw) ? "" : "width='$iw'"); if($GLOBALS["htmltype"]=="dm") { $imgurl = "view.php?aid=$this->ArcID&pageno=$photoid"; }else{ if($photoid==1){ $imgurl = $GLOBALS["fileFirst"].".html"; }else{ $imgurl = $GLOBALS["fileFirst"]."_".$photoid.".html"; } } $imgcls = "image".($photoid-1); $revalue .= "
$alt
$ddimg
$ddimg
$ddimg
$photoid
\r\n"; $photoid++; } } unset($dtp); unset($images); return $revalue; } //关闭所占用的资源 function Close() { } }//End class ChannelUnit