|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- <?php
- if (!defined('DEDEINC')) exit('dedebiz');
- /**
- * 频道模型单元类
- * @version $Id: channelunit.class.php 2 17:32 2010年7月6日Z tianya $
- * @package DedeBIZ.Libraries
- * @copyright Copyright (c) 2022, DedeBIZ.COM
- * @license https://www.dedebiz.com/license
- * @link https://www.dedebiz.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
- ?>
|