123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- <?php 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 = array();
- $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 .= "<dl><dt>$alt<dd>$ddimg<dd>$ddimg<dd>$ddimg<dd><dd><div></div><div></div><dd><dd>$photoid</dd></dl>\r\n";
- $photoid++;
- }
- }
- unset($dtp);
- unset($images);
- return $revalue;
- }
- //关闭所占用的资源
- function Close()
- {
- }
- }//End class ChannelUnit
|