Example #1
0
 function GetTotalArc($tid)
 {
     if (!is_array($this->CatalogNums)) {
         $this->UpdateCatalogNum();
     }
     if (!isset($this->CatalogNums[$tid])) {
         return 0;
     } else {
         $totalnum = 0;
         $ids = explode(',', GetSonIds($tid));
         foreach ($ids as $tid) {
             if (isset($this->CatalogNums[$tid])) {
                 $totalnum += $this->CatalogNums[$tid];
             }
         }
         return $totalnum;
     }
 }
Example #2
0
require_once dirname(__FILE__) . "/config.php";
require_once DEDEINC . "/arc.caicai.class.php";
$sort = trim(empty($sort) ? 'lastpost' : preg_replace("#[^0-9a-z]#i", '', $sort));
if (!preg_match("#^(scores|badpost|goodpost)\$#", $sort)) {
    $sort = 'lastpost';
}
$tid = isset($tid) ? intval($tid) : 0;
$t1 = ExecTime();
$typequery = '';
$menutype = 'mydede';
$menutype_son = 'cc';
//获取栏目的子类、交叉分类
if ($tid != 0) {
    $arr = $dsql->GetOne("SELECT * FROM `#@__arctype` WHERE id='{$tid}' AND corank=0 ");
    if ($cfg_list_son == 'Y') {
        $CrossID = GetSonIds($tid, $arr['channeltype']);
    } else {
        $CrossID = $tid;
    }
    if ($arr['cross'] > 0) {
        $selquery = '';
        if ($arr['cross'] == 1) {
            $selquery = "SELECT id,topid FROM `#@__arctype` WHERE typename LIKE '{$arr['typename']}' AND id<>'{$tid}' AND topid<>'{$tid}'  ";
        } else {
            $arr['crossid'] = preg_replace("#[^0-9,]#", '', trim($arr['crossid']));
            if ($arr['crossid'] != '') {
                $selquery = "SELECT id,topid FROM `#@__arctype` WHERE id in('{$arr['crossid']}') AND id<>'{$tid}' AND topid<>'{$tid}'  ";
            }
        }
        if ($selquery != '') {
            $dsql->SetQuery($selquery);
 function CountRecord()
 {
     $this->TotalResult = -1;
     if (isset($GLOBALS['TotalResult'])) {
         $this->TotalResult = $GLOBALS['TotalResult'];
     }
     if (isset($GLOBALS['PageNo'])) {
         $this->PageNo = $GLOBALS['PageNo'];
     } else {
         $this->PageNo = 1;
     }
     $ksql = $this->GetKeywordSql();
     $ksqls = array();
     if ($this->StartTime > 0) {
         $ksqls[] = " arc.senddate>'" . $this->StartTime . "' ";
     }
     if ($this->TypeID > 0) {
         $ksqls[] = " typeid in (" . GetSonIds($this->TypeID) . ") ";
     }
     if ($this->ChannelType > 0) {
         $ksqls[] = " arc.channel='" . $this->ChannelType . "'";
     }
     if ($this->mid > 0) {
         $ksqls[] = " arc.mid = '" . $this->mid . "'";
     }
     $ksqls[] = " arc.arcrank > -1 ";
     $this->AddSql = $ksql == '' ? join(' And ', $ksqls) : join(' And ', $ksqls) . " And ({$ksql})";
     $cquery = "Select * From `#@__archives` arc where " . $this->AddSql;
     $hascode = md5($cquery);
     $row = $this->dsql->GetOne("Select * From `#@__arccache` where `md5hash`='" . $hascode . "' ");
     $uptime = time();
     if (is_array($row) && time() - $row['uptime'] < 3600 * 24) {
         $aids = explode(',', $row['cachedata']);
         $this->TotalResult = count($aids) - 1;
         $this->RsFields = $row['cachedata'];
     } else {
         if ($this->TotalResult == -1) {
             $this->dsql->SetQuery($cquery);
             $this->dsql->execute();
             $aidarr = array();
             $aidarr[] = 0;
             while ($row = $this->dsql->getarray()) {
                 $aidarr[] = $row['id'];
             }
             $nums = count($aidarr) - 1;
             $aids = implode(',', $aidarr);
             $delete = "Delete From `#@__arccache` where uptime<" . (time() - 3600 * 24);
             $this->dsql->SetQuery($delete);
             $this->dsql->executenonequery();
             $insert = "insert into `#@__arccache` (`md5hash`, `uptime`, `cachedata`)\r\n\t\t\t\t values('{$hascode}', '{$uptime}', '{$aids}')";
             $this->dsql->SetQuery($insert);
             $this->dsql->executenonequery();
             $this->TotalResult = $nums;
         }
     }
 }
Example #4
0
    }
    //更改子栏目属性
    if (!empty($upnext)) {
        $upquery = "Update `#@__arctype` set\r\n       issend='{$issend}',\r\n       defaultname='{$defaultname}',\r\n       channeltype='{$channeltype}',\r\n       tempindex='{$tempindex}',\r\n       templist='{$templist}',\r\n       temparticle='{$temparticle}',\r\n       namerule='{$namerule}',\r\n       namerule2='{$namerule2}',\r\n       ishidden='{$ishidden}'\r\n     where 1=1 And {$slinks}";
        if (!$dsql->ExecuteNoneQuery($upquery)) {
            ShowMsg("更改当前栏目成功,但更改下级栏目属性时失败!", "-1");
            exit;
        }
    }
    UpDateCatCache();
    ShowMsg("成功更改一个分类!", "catalog_main.php");
    exit;
} else {
    if ($dopost == "savetime") {
        $uptopsql = '';
        $slinks = " id in (" . GetSonIds($id) . ")";
        //顶级栏目二级域名根目录处理
        if ($topid == 0 && $moresite == 1) {
            $sitepath = $typedir;
            $uptopsql = " ,sitepath='{$sitepath}' ";
            if (ereg(',', $slinks)) {
                $upquery = "Update `#@__arctype` set sitepath='{$sitepath}' where {$slinks}";
                $dsql->ExecuteNoneQuery($upquery);
            }
        }
        //如果选择子栏目可投稿,更新顶级栏目为可投稿
        if ($topid > 0 && $issend == 1) {
            $dsql->ExecuteNoneQuery("Update `#@__arctype` set issend='{$issend}' where id='{$topid}'; ");
        }
        $upquery = "Update `#@__arctype` set\r\n     issend='{$issend}',\r\n     sortrank='{$sortrank}',\r\n     typedir='{$typedir}',\r\n     typename='{$typename}',\r\n   \t isdefault='{$isdefault}',\r\n     defaultname='{$defaultname}',\r\n     ispart='{$ispart}',\r\n     corank='{$corank}' {$uptopsql}\r\n\twhere id='{$id}' ";
        if (!$dsql->ExecuteNoneQuery($upquery)) {
Example #5
0
/**
 * 动态模板channel标签
 *
 * @version        $Id: plus_ask.php 1 13:58 2010年7月5日Z tianya $
 * @package        DedeCMS.Tpllib
 * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
 * @license        http://help.dedecms.com/usersguide/license.html
 * @link           http://www.dedecms.com
 */
function plus_channel(&$atts, &$refObj, &$fields)
{
    global $dsql, $_vars;
    $attlist = "typeid=0,reid=0,row=100,type=son,currentstyle=";
    FillAtts($atts, $attlist);
    FillFields($atts, $fields, $refObj);
    extract($atts, EXTR_OVERWRITE);
    $line = empty($row) ? 100 : $row;
    $reArray = array();
    $reid = 0;
    $topid = 0;
    //如果属性里没指定栏目id,从引用类里获取栏目信息
    if (empty($typeid)) {
        if (isset($refObj->TypeLink->TypeInfos['id'])) {
            $typeid = $refObj->TypeLink->TypeInfos['id'];
            $reid = $refObj->TypeLink->TypeInfos['reid'];
            $topid = $refObj->TypeLink->TypeInfos['topid'];
        } else {
            $typeid = 0;
        }
    } else {
        $row2 = $dsql->GetOne("SELECT * FROM `#@__arctype` WHERE id='{$typeid}' ");
        $typeid = $row2['id'];
        $reid = $row2['reid'];
        $topid = $row2['topid'];
        $issetInfos = true;
    }
    if ($type == '' || $type == 'sun') {
        $type = 'son';
    }
    if ($type == 'top') {
        $sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath\r\n          FROM `#@__arctype` WHERE reid=0 AND ishidden<>1 ORDER BY sortrank ASC LIMIT 0, {$line} ";
    } else {
        if ($type == 'son') {
            if ($typeid == 0) {
                return $reArray;
            }
            $sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath\r\n          FROM `#@__arctype` WHERE reid='{$typeid}' AND ishidden<>1 ORDER BY sortrank ASC LIMIT 0, {$line} ";
        } else {
            if ($type == 'self') {
                if ($reid == 0) {
                    return $reArray;
                }
                $sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath\r\n            FROM `#@__arctype` WHERE reid='{$reid}' AND ishidden<>1 ORDER BY sortrank ASC LIMIT 0, {$line} ";
            }
        }
    }
    //检查是否有子栏目,并返回rel提示(用于二级菜单)
    $needRel = true;
    if (empty($sql)) {
        return $reArray;
    }
    $dsql->Execute('me', $sql);
    $totalRow = $dsql->GetTotalRow('me');
    //如果用子栏目模式,当没有子栏目时显示同级栏目
    if ($type == 'son' && $reid != 0 && $totalRow == 0) {
        $sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath\r\n            FROM `#@__arctype` WHERE reid='{$reid}' AND ishidden<>1 ORDER BY sortrank ASC LIMIT 0, {$line} ";
        $dsql->Execute('me', $sql);
    }
    $GLOBALS['autoindex'] = 0;
    while ($row = $dsql->GetArray()) {
        $row['currentstyle'] = $row['sonids'] = $row['rel'] = '';
        if ($needRel) {
            $row['sonids'] = GetSonIds($row['id'], 0, false);
            if ($row['sonids'] == '') {
                $row['rel'] = '';
            } else {
                $row['rel'] = " rel='dropmenu{$row['id']}'";
            }
        }
        //处理同级栏目中,当前栏目的样式
        if (($row['id'] == $typeid || $topid == $row['id'] && $type == 'top') && $currentstyle != '') {
            $row['currentstyle'] = $currentstyle;
        }
        $row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row);
        $reArray[] = $row;
        $GLOBALS['autoindex']++;
    }
    //Loop for $i
    $dsql->FreeResult();
    return $reArray;
}
Example #6
0
         exit('Error!');
     }
     require_once dirname(__FILE__) . "/include/datalistcp.class.php";
     $row = $dsql->GetOne("Select typename,ishidden From `#@__arctype` where id='{$id}' ");
     if ($row['ishidden'] == 1) {
         exit;
     }
     $typename = ConvertStr($row['typename']);
     //当前栏目下级分类
     $dsql->SetQuery("Select id,typename From `#@__arctype` where reid='{$id}' And channeltype=1 And ishidden=0 And ispart<>2 order by sortrank");
     $dsql->Execute();
     while ($row = $dsql->GetObject()) {
         $channellistnext .= "<a href='wap.php?action=list&amp;id={$row->id}'>" . ConvertStr($row->typename) . "</a> ";
     }
     //栏目内容(分页输出)
     $sids = GetSonIds($id, 1, true);
     $varlist = "cfg_webname,typename,channellist,channellistnext,cfg_templeturl";
     ConvertCharset($varlist);
     $dlist = new DataListCP();
     $dlist->SetTemplet($cfg_templets_dir . "/wap/list.wml");
     $dlist->pageSize = 10;
     $dlist->SetParameter("action", "list");
     $dlist->SetParameter("id", $id);
     $dlist->SetSource("Select id,title,pubdate,click From `#@__archives` where typeid in({$sids}) And arcrank=0 order by id desc");
     $dlist->Display();
     exit;
 } else {
     if ($action == 'article') {
         //文档信息
         $query = "\r\n\t  Select tp.typename,tp.ishidden,arc.typeid,arc.title,arc.arcrank,arc.pubdate,arc.writer,arc.click,addon.body From `#@__archives` arc \r\n\t  left join `#@__arctype` tp on tp.id=arc.typeid\r\n\t  left join `#@__addonarticle` addon on addon.aid=arc.id\r\n\t  where arc.id='{$id}'\r\n\t";
         $row = $dsql->GetOne($query, MYSQL_ASSOC);
Example #7
0
<?php

require_once dirname(__FILE__) . '/config.php';
CheckPurview('a_List,a_AccList,a_MyList');
require_once DEDEINC . '/datalistcp.class.php';
if (empty($cid)) {
    $cid = '0';
    $whereSql = '';
}
if ($cid != 0) {
    require_once DEDEINC . '/channelunit.func.php';
    $whereSql = " And arc.typeid in (" . GetSonIds($cid) . ")";
}
$query = "SELECT arc.*,tp.typename FROM `#@__archives` AS arc\r\nLEFT JOIN #@__arctype AS tp ON arc.typeid = tp.id\r\nWHERE arc.arcrank = '-2' {$whereSql} order by arc.id desc";
$dlist = new DataListCP();
$dlist->SetTemplet(DEDEADMIN . "/templets/recycling.htm");
$dlist->SetSource($query);
$dlist->display();
Example #8
0
/**
 *  arclist解析函数
 *
 * @access    public
 * @param     object  $refObj  引用对象
 * @param     object  $ctag  标签
 * @param     int  $typeid  栏目ID
 * @param     int  $row  调用行数
 * @param     int  $titlelen  字符串长度
 * @param     int  $infolen  描述信息长度
 * @param     int  $imgwidth  图片宽度
 * @param     int  $imgheight  图片高度
 * @param     string  $listtype  列表类型
 * @param     string  $orderby  排列顺序
 * @param     string  $keyword  关键词
 * @param     string  $innertext  底层模板
 * @param     int  $arcid  文档ID
 * @param     string  $idlist  ID列表
 * @param     int  $channelid  频道ID
 * @param     string  $limit  限制
 * @param     string  $att  属性
 * @param     string  $order  排序类型
 * @param     int  $subday  天内
 * @param     string  $noflag  属性标记
 * @param     string  $tagid  标签id
 * @param     string  $pagesize  显示条数
 * @param     string  $isweight  是否需要对检索出来的内容按照weight排序
 * @return    string
 */
function lib_arclistDone(&$refObj, &$ctag, $typeid = 0, $row = 10, $col = 1, $titlelen = 30, $infolen = 160, $imgwidth = 120, $imgheight = 90, $listtype = 'all', $orderby = 'default', $keyword = '', $innertext = '', $arcid = 0, $idlist = '', $channelid = 0, $limit = '', $att = '', $order = 'desc', $subday = 0, $noflag = '', $tagid = '', $pagesize = 0, $isweight = 'N')
{
    global $dsql, $PubFields, $cfg_keyword_like, $cfg_index_cache, $_arclistEnv, $envs, $cfg_cache_type, $cfg_digg_update;
    $row = AttDef($row, 10);
    $titlelen = AttDef($titlelen, 30);
    $infolen = AttDef($infolen, 160);
    $imgwidth = AttDef($imgwidth, 120);
    $imgheight = AttDef($imgheight, 120);
    $listtype = AttDef($listtype, 'all');
    $arcid = AttDef($arcid, 0);
    $channelid = AttDef($channelid, 0);
    $orderby = AttDef($orderby, 'default');
    $orderWay = AttDef($order, 'desc');
    $subday = AttDef($subday, 0);
    $pagesize = AttDef($pagesize, 0);
    $line = $row;
    $orderby = strtolower($orderby);
    $keyword = trim($keyword);
    $innertext = trim($innertext);
    $tablewidth = $ctag->GetAtt('tablewidth');
    $writer = $ctag->GetAtt('writer');
    if ($tablewidth == "") {
        $tablewidth = 100;
    }
    if (empty($col)) {
        $col = 1;
    }
    $colWidth = ceil(100 / $col);
    $tablewidth = $tablewidth . "%";
    $colWidth = $colWidth . "%";
    //记录属性,以便分页样式统一调用
    $attarray = compact("row", "titlelen", 'infolen', 'imgwidth', 'imgheight', 'listtype', 'arcid', 'channelid', 'orderby', 'orderWay', 'subday', 'pagesize', 'orderby', 'keyword', 'tablewidth', 'col', 'colWidth');
    if ($innertext == '') {
        $innertext = GetSysTemplets('part_arclist.htm');
    }
    if (@$ctag->GetAtt('getall') == 1) {
        $getall = 1;
    } else {
        $getall = 0;
    }
    if ($att == '0') {
        $att = '';
    }
    if ($att == '3') {
        $att = 'f';
    }
    if ($att == '1') {
        $att = 'h';
    }
    $orwheres = array();
    $maintable = '#@__archives';
    //按不同情况设定SQL条件 排序方式
    if ($idlist == '') {
        if ($orderby == 'near' && $cfg_keyword_like == 'N') {
            $keyword = '';
        }
        if ($writer == 'this') {
            $wmid = isset($refObj->Fields['mid']) ? $refObj->Fields['mid'] : 0;
            $orwheres[] = " arc.mid = '{$wmid}' ";
        }
        //时间限制(用于调用最近热门文章、热门评论之类),这里的时间只能计算到天,否则缓存功能将无效
        if ($subday > 0) {
            $ntime = gmmktime(0, 0, 0, gmdate('m'), gmdate('d'), gmdate('Y'));
            $limitday = $ntime - $subday * 24 * 3600;
            $orwheres[] = " arc.senddate > {$limitday} ";
        }
        //关键字条件
        if ($keyword != '') {
            $keyword = str_replace(',', '|', $keyword);
            $orwheres[] = " CONCAT(arc.title,arc.keywords) REGEXP '{$keyword}' ";
        }
        //文档属性
        if (preg_match('/commend/i', $listtype)) {
            $orwheres[] = " FIND_IN_SET('c', arc.flag)>0  ";
        }
        if (preg_match('/image/i', $listtype)) {
            $orwheres[] = " FIND_IN_SET('p', arc.flag)>0  ";
        }
        if ($att != '') {
            $flags = explode(',', $att);
            for ($i = 0; isset($flags[$i]); $i++) {
                $orwheres[] = " FIND_IN_SET('{$flags[$i]}', arc.flag)>0 ";
            }
        }
        if (!empty($typeid) && $typeid != 'top') {
            //指定了多个栏目时,不再获取子类的id
            if (preg_match('#,#', $typeid)) {
                //指定了getall属性或主页模板例外
                if ($getall == 1 || empty($refObj->Fields['typeid'])) {
                    $typeids = explode(',', $typeid);
                    foreach ($typeids as $ttid) {
                        $typeidss[] = GetSonIds($ttid);
                    }
                    $typeidStr = join(',', $typeidss);
                    $typeidss = explode(',', $typeidStr);
                    $typeidssok = array_unique($typeidss);
                    $typeid = join(',', $typeidssok);
                }
                $orwheres[] = " arc.typeid IN ({$typeid}) ";
            } else {
                //处理交叉栏目
                $CrossID = '';
                if ($ctag->GetAtt('cross') == '1') {
                    $arr = $dsql->GetOne("SELECT `id`,`topid`,`cross`,`crossid`,`ispart`,`typename` FROM `#@__arctype` WHERE id='{$typeid}' ");
                    if ($arr['cross'] == 0 || $arr['cross'] == 2 && trim($arr['crossid'] == '')) {
                        $orwheres[] = ' arc.typeid IN (' . GetSonIds($typeid) . ')';
                    } else {
                        $selquery = '';
                        if ($arr['cross'] == 1) {
                            $selquery = "SELECT id,topid FROM `#@__arctype` WHERE typename LIKE '{$arr['typename']}' AND id<>'{$typeid}' AND topid<>'{$typeid}'  ";
                        } else {
                            $arr['crossid'] = preg_replace('#[^0-9,]#', '', trim($arr['crossid']));
                            if ($arr['crossid'] != '') {
                                $selquery = "SELECT id,topid FROM `#@__arctype` WHERE id IN('{$arr['crossid']}') AND id<>'{$typeid}' AND topid<>'{$typeid}'  ";
                            }
                        }
                        if ($selquery != '') {
                            $dsql->SetQuery($selquery);
                            $dsql->Execute();
                            while ($arr = $dsql->GetArray()) {
                                $CrossID .= $CrossID == '' ? $arr['id'] : ',' . $arr['id'];
                            }
                        }
                    }
                }
                if ($CrossID == '') {
                    $orwheres[] = ' arc.typeid IN (' . GetSonIds($typeid) . ')';
                } else {
                    $orwheres[] = ' arc.typeid IN (' . GetSonIds($typeid) . ',' . $CrossID . ')';
                }
            }
        }
        //频道ID
        if (preg_match('#spec#i', $listtype)) {
            $channelid == -1;
        }
        if (!empty($channelid)) {
            $orwheres[] = " And arc.channel = '{$channelid}' ";
        }
        if (!empty($noflag)) {
            if (!preg_match('#,#', $noflag)) {
                $orwheres[] = " FIND_IN_SET('{$noflag}', arc.flag)<1 ";
            } else {
                $noflags = explode(',', $noflag);
                foreach ($noflags as $noflag) {
                    if (trim($noflag) == '') {
                        continue;
                    }
                    $orwheres[] = " FIND_IN_SET('{$noflag}', arc.flag)<1 ";
                }
            }
        }
        $orwheres[] = ' arc.arcrank > -1 ';
        //由于这个条件会导致缓存功能失去意义,因此取消
        //if($arcid!=0) $orwheres[] = " arc.id<>'$arcid' ";
    }
    //文档排序的方式
    $ordersql = '';
    if ($orderby == 'hot' || $orderby == 'click') {
        $ordersql = " ORDER BY arc.click {$orderWay}";
    } else {
        if ($orderby == 'sortrank' || $orderby == 'pubdate') {
            $ordersql = " ORDER BY arc.sortrank {$orderWay}";
        } else {
            if ($orderby == 'id') {
                $ordersql = "  ORDER BY arc.id {$orderWay}";
            } else {
                if ($orderby == 'near') {
                    $ordersql = " ORDER BY ABS(arc.id - " . $arcid . ")";
                } else {
                    if ($orderby == 'lastpost') {
                        $ordersql = "  ORDER BY arc.lastpost {$orderWay}";
                    } else {
                        if ($orderby == 'scores') {
                            $ordersql = "  ORDER BY arc.scores {$orderWay}";
                        } else {
                            if ($orderby == 'goodpost') {
                                $ordersql = " order by arc.goodpost {$orderWay}";
                            } else {
                                if ($orderby == 'badpost') {
                                    $ordersql = " order by arc.badpost {$orderWay}";
                                } else {
                                    if ($orderby == 'rand') {
                                        $ordersql = "  ORDER BY rand()";
                                    } else {
                                        $ordersql = " ORDER BY arc.sortrank {$orderWay}";
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    //limit条件
    $limit = trim(preg_replace('#limit#is', '', $limit));
    if ($limit != '') {
        $limitsql = " LIMIT {$limit} ";
        $limitarr = explode(',', $limit);
        $line = isset($limitarr[1]) ? $limitarr[1] : $line;
    } else {
        $limitsql = " LIMIT 0,{$line} ";
    }
    $orwhere = '';
    if (isset($orwheres[0])) {
        $orwhere = join(' And ', $orwheres);
        $orwhere = preg_replace("#^ And#is", '', $orwhere);
        $orwhere = preg_replace("#And[ ]{1,}And#is", 'And ', $orwhere);
    }
    if ($orwhere != '') {
        $orwhere = " WHERE {$orwhere} ";
    }
    //获取附加表信息
    $addfield = trim($ctag->GetAtt('addfields'));
    $addfieldsSql = '';
    $addfieldsSqlJoin = '';
    if ($addfield != '' && !empty($channelid)) {
        $row = $dsql->GetOne("SELECT addtable FROM `#@__channeltype` WHERE id='{$channelid}' ");
        if (isset($row['addtable']) && trim($row['addtable']) != '') {
            $addtable = trim($row['addtable']);
            $addfields = explode(',', $addfield);
            $row['addtable'] = trim($row['addtable']);
            $addfieldsSql = ",addf." . join(',addf.', $addfields);
            $addfieldsSqlJoin = " LEFT JOIN `{$addtable}` addf ON addf.aid = arc.id ";
        }
    }
    $query = "SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,\r\n        tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath\r\n        {$addfieldsSql}\r\n        FROM `{$maintable}` arc LEFT JOIN `#@__arctype` tp on arc.typeid=tp.id\r\n        {$addfieldsSqlJoin}\r\n        {$orwhere} {$ordersql} {$limitsql}";
    //统一hash
    $taghash = md5(serialize($ctag) . $typeid);
    $needSaveCache = true;
    //进行tagid的默认处理
    if ($pagesize > 0) {
        $tagid = AttDef($tagid, 'tag' . $taghash);
    }
    if ($idlist != '' || $GLOBALS['_arclistEnv'] == 'index' || $cfg_index_cache == 0) {
        $needSaveCache = false;
    } else {
        $idlist = GetArclistCache($taghash);
        if ($idlist != '') {
            $needSaveCache = false;
        }
        //如果使用的是内容缓存,直接返回结果
        if ($cfg_cache_type == 'content' && $idlist != '') {
            $idlist = $idlist == 0 ? '' : $idlist;
            return $idlist;
        }
    }
    //指定了id或使用缓存中的id
    if ($idlist != '') {
        $query = "SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,\r\n            tp.moresite,tp.siteurl,tp.sitepath\r\n            {$addfieldsSql}\r\n             FROM `{$maintable}` arc left join `#@__arctype` tp on arc.typeid=tp.id\r\n             {$addfieldsSqlJoin}\r\n          WHERE arc.id in({$idlist}) {$ordersql} ";
    }
    // 好评差评缓存更新
    if ($cfg_digg_update > 0) {
        if ($orderby == 'goodpost' || $orderby == 'badpost') {
            $t1 = ExecTime();
            $postsql = "SELECT arc.id,arc.goodpost,arc.badpost,arc.scores\r\n\t\t\t\tFROM `{$maintable}` arc\r\n\t\t\t\t{$orwhere} {$ordersql} {$limitsql}";
            if ($idlist != '') {
                $postsql = "SELECT arc.id,arc.goodpost,arc.badpost,arc.scores\r\n\t\t\t\t\t FROM `{$maintable}` arc \r\n\t\t\t\t  WHERE arc.id in({$idlist}) {$ordersql} ";
            }
            $dsql->SetQuery($query);
            $dsql->Execute('lit');
            while ($row = $dsql->GetArray('lit')) {
                $prefix = 'diggCache';
                $key = 'aid-' . $row['id'];
                $cacherow = GetCache($prefix, $key);
                $setsql = array();
                if (!empty($cacherow['scores']) && $cacherow['scores'] != $row['scores']) {
                    $setsql[] = "scores = {$cacherow['scores']}";
                }
                if (!empty($cacherow['goodpost']) && $cacherow['goodpost'] != $row['goodpost']) {
                    $setsql[] = "goodpost = {$cacherow['goodpost']}";
                }
                if (!empty($cacherow['badpost']) && $cacherow['badpost'] != $row['badpost']) {
                    $setsql[] = "badpost = {$cacherow['badpost']}";
                }
                $setsql = implode(',', $setsql);
                $sql = "UPDATE `{$maintable}` SET {$setsql} WHERE id='{$row['id']}'";
                if (!empty($setsql)) {
                    $dsql->ExecuteNoneQuery($sql);
                }
            }
            //echo ExecTime()-$t1;
        }
    }
    $dsql->SetQuery($query);
    $dsql->Execute('al');
    //$row = $dsql->GetArray("al");
    $artlist = '';
    if ($pagesize > 0) {
        $artlist .= "    <div id='{$tagid}'>\r\n";
    }
    if ($col > 1) {
        $artlist = "<table width='{$tablewidth}' border='0' cellspacing='0' cellpadding='0'>\r\n";
    }
    $dtp2 = new DedeTagParse();
    $dtp2->SetNameSpace('field', '[', ']');
    $dtp2->LoadString($innertext);
    $GLOBALS['autoindex'] = 0;
    $ids = array();
    $orderWeight = array();
    for ($i = 0; $i < $line; $i++) {
        if ($col > 1) {
            $artlist .= "<tr>\r\n";
        }
        for ($j = 0; $j < $col; $j++) {
            if ($col > 1) {
                $artlist .= "    <td width='{$colWidth}'>\r\n";
            }
            if ($row = $dsql->GetArray("al")) {
                $ids[] = $row['id'];
                //处理一些特殊字段
                $row['info'] = $row['infos'] = cn_substr($row['description'], $infolen);
                $row['id'] = $row['id'];
                if ($row['corank'] > 0 && $row['arcrank'] == 0) {
                    $row['arcrank'] = $row['corank'];
                }
                $row['filename'] = $row['arcurl'] = GetFileUrl($row['id'], $row['typeid'], $row['senddate'], $row['title'], $row['ismake'], $row['arcrank'], $row['namerule'], $row['typedir'], $row['money'], $row['filename'], $row['moresite'], $row['siteurl'], $row['sitepath']);
                $row['typeurl'] = GetTypeUrl($row['typeid'], $row['typedir'], $row['isdefault'], $row['defaultname'], $row['ispart'], $row['namerule2'], $row['moresite'], $row['siteurl'], $row['sitepath']);
                if ($row['litpic'] == '-' || $row['litpic'] == '') {
                    $row['litpic'] = $GLOBALS['cfg_cmspath'] . '/images/defaultpic.gif';
                }
                if (!preg_match("#^http:\\/\\/#i", $row['litpic']) && $GLOBALS['cfg_multi_site'] == 'Y') {
                    $row['litpic'] = $GLOBALS['cfg_mainsite'] . $row['litpic'];
                }
                $row['picname'] = $row['litpic'];
                $row['stime'] = GetDateMK($row['pubdate']);
                $row['typelink'] = "<a href='" . $row['typeurl'] . "'>" . $row['typename'] . "</a>";
                $row['image'] = "<img src='" . $row['picname'] . "' border='0' width='{$imgwidth}' height='{$imgheight}' alt='" . preg_replace("#['><]#", "", $row['title']) . "'>";
                $row['imglink'] = "<a href='" . $row['filename'] . "'>" . $row['image'] . "</a>";
                $row['fulltitle'] = $row['title'];
                $row['title'] = cn_substr($row['title'], $titlelen);
                if ($row['color'] != '') {
                    $row['title'] = "<font color='" . $row['color'] . "'>" . $row['title'] . "</font>";
                }
                if (preg_match('#b#', $row['flag'])) {
                    $row['title'] = "<strong>" . $row['title'] . "</strong>";
                }
                //$row['title'] = "<b>".$row['title']."</b>";
                $row['textlink'] = "<a href='" . $row['filename'] . "'>" . $row['title'] . "</a>";
                $row['plusurl'] = $row['phpurl'] = $GLOBALS['cfg_phpurl'];
                $row['memberurl'] = $GLOBALS['cfg_memberurl'];
                $row['templeturl'] = $GLOBALS['cfg_templeturl'];
                if (is_array($dtp2->CTags)) {
                    foreach ($dtp2->CTags as $k => $ctag) {
                        if ($ctag->GetName() == 'array') {
                            //传递整个数组,在runphp模式中有特殊作用
                            $dtp2->Assign($k, $row);
                        } else {
                            if (isset($row[$ctag->GetName()])) {
                                $dtp2->Assign($k, $row[$ctag->GetName()]);
                            } else {
                                $dtp2->Assign($k, '');
                            }
                        }
                    }
                    $GLOBALS['autoindex']++;
                }
                if ($pagesize > 0) {
                    if ($GLOBALS['autoindex'] <= $pagesize) {
                        $liststr = $dtp2->GetResult();
                        $artlist .= $liststr . "\r\n";
                    } else {
                        $artlist .= "";
                        $orderWeight[] = array('weight' => $row['weight'], 'arclist' => '');
                    }
                } else {
                    $liststr = $dtp2->GetResult();
                    $artlist .= $liststr . "\r\n";
                }
                $orderWeight[] = array('weight' => $row['weight'], 'arclist' => $liststr);
            } else {
                $artlist .= '';
            }
            // 进行判断,如果启用排序则内容输出为重新排序后的内容
            // var_dump($isweight=='y' && count($orderWeight) == $line);
            $isweight = strtolower($isweight);
            if ($isweight == 'y') {
                $artlist = '';
                $orderWeight = list_sort_by($orderWeight, 'weight', 'asc');
                foreach ($orderWeight as $vv) {
                    $artlist .= $vv['arclist'];
                }
            }
            if ($col > 1) {
                $artlist .= "    </td>\r\n";
            }
        }
        //Loop Col
        if ($col > 1) {
            $i += $col - 1;
        }
        if ($col > 1) {
            $artlist .= "    </tr>\r\n";
        }
    }
    //loop line
    if ($col > 1) {
        $artlist .= "    </table>\r\n";
    }
    $dsql->FreeResult("al");
    $idsstr = join(',', $ids);
    //分页特殊处理
    if ($pagesize > 0) {
        $artlist .= "    </div>\r\n";
        $row = $dsql->GetOne("SELECT tagid FROM #@__arcmulti WHERE tagid='{$tagid}'");
        $uptime = time();
        $attstr = addslashes(serialize($attarray));
        $innertext = addslashes($innertext);
        if (!is_array($row)) {
            $query = "\r\n          INSERT INTO #@__arcmulti(tagid,uptime,innertext,pagesize,arcids,ordersql,addfieldsSql,addfieldsSqlJoin,attstr)\r\n          VALUES('{$tagid}','{$uptime}','{$innertext}','{$pagesize}','{$idsstr}','{$ordersql}','{$addfieldsSql}','{$addfieldsSqlJoin}','{$attstr}');\r\n        ";
            $dsql->ExecuteNoneQuery($query);
        } else {
            $query = "UPDATE `#@__arcmulti`\r\n           SET\r\n           uptime='{$uptime}',\r\n           innertext='{$innertext}',\r\n           pagesize='{$pagesize}',\r\n           arcids='{$idsstr}',\r\n           ordersql='{$ordersql}',\r\n           addfieldsSql='{$addfieldsSql}',\r\n           addfieldsSqlJoin='{$addfieldsSqlJoin}',\r\n           attstr='{$attstr}'\r\n           WHERE tagid='{$tagid}'\r\n        ";
            $dsql->ExecuteNoneQuery($query);
        }
    }
    //保存ID缓存
    if ($needSaveCache) {
        if ($idsstr == '') {
            $idsstr = '0';
        }
        if ($cfg_cache_type == 'content' && $idsstr != '0') {
            $idsstr = addslashes($artlist);
        }
        $inquery = "INSERT INTO `#@__arccache`(`md5hash`,`uptime`,`cachedata`) VALUES ('" . $taghash . "','" . time() . "', '{$idsstr}'); ";
        $dsql->ExecuteNoneQuery("DELETE FROM `#@__arccache` WHERE md5hash='" . $taghash . "' ");
        $dsql->ExecuteNoneQuery($inquery);
    }
    return $artlist;
}
Example #9
0
function lib_arclistDone(&$refObj, &$ctag, $typeid = 0, $row = 10, $col = 1, $titlelen = 30, $infolen = 160, $imgwidth = 120, $imgheight = 90, $listtype = 'all', $orderby = 'default', $keyword = '', $innertext = '', $arcid = 0, $idlist = '', $channelid = 0, $limit = '', $att = '', $order = 'desc', $subday = 0, $noflag = '')
{
    global $dsql, $PubFields, $cfg_keyword_like, $cfg_index_cache, $_arclistEnv, $envs, $cfg_cache_type;
    $row = AttDef($row, 10);
    $titlelen = AttDef($titlelen, 30);
    $infolen = AttDef($infolen, 160);
    $imgwidth = AttDef($imgwidth, 120);
    $imgheight = AttDef($imgheight, 120);
    $listtype = AttDef($listtype, 'all');
    $arcid = AttDef($arcid, 0);
    $channelid = AttDef($channelid, 0);
    $orderby = AttDef($orderby, 'default');
    $orderWay = AttDef($order, 'desc');
    $subday = AttDef($subday, 0);
    $line = $row;
    $orderby = strtolower($orderby);
    $keyword = trim($keyword);
    $innertext = trim($innertext);
    $tablewidth = $ctag->GetAtt('tablewidth');
    $writer = $ctag->GetAtt('writer');
    if ($tablewidth == "") {
        $tablewidth = 100;
    }
    if (empty($col)) {
        $col = 1;
    }
    $colWidth = ceil(100 / $col);
    $tablewidth = $tablewidth . "%";
    $colWidth = $colWidth . "%";
    if ($innertext == '') {
        $innertext = GetSysTemplets('part_arclist.htm');
    }
    if (@$ctag->GetAtt('getall') == 1) {
        $getall = 1;
    } else {
        $getall = 0;
    }
    if ($att == '0') {
        $att = '';
    }
    if ($att == '3') {
        $att = 'f';
    }
    if ($att == '1') {
        $att = 'h';
    }
    $orwheres = array();
    $maintable = '#@__archives';
    //按不同情况设定SQL条件 排序方式
    if ($idlist == '') {
        if ($orderby == 'near' && $cfg_keyword_like == 'N') {
            $keyword = '';
        }
        if ($writer == 'this') {
            $wmid = isset($refObj->Fields['mid']) ? $refObj->Fields['mid'] : 0;
            $orwheres[] = " arc.mid = '{$wmid}' ";
        }
        //时间限制(用于调用最近热门文章、热门评论之类),这里的时间只能计算到天,否则缓存功能将无效
        if ($subday > 0) {
            $ntime = gmmktime(0, 0, 0, gmdate('m'), gmdate('d'), gmdate('Y'));
            $limitday = $ntime - $subday * 24 * 3600;
            $orwheres[] = " arc.senddate > {$limitday} ";
        }
        //关键字条件
        if ($keyword != '') {
            $keyword = str_replace(',', '|', $keyword);
            $orwheres[] = " CONCAT(arc.title,arc.keywords) REGEXP '{$keyword}' ";
        }
        //文档属性
        if (eregi('commend', $listtype)) {
            $orwheres[] = " FIND_IN_SET('c', arc.flag)>0  ";
        }
        if (eregi('image', $listtype)) {
            $orwheres[] = " FIND_IN_SET('p', arc.flag)>0  ";
        }
        if ($att != '') {
            $flags = explode(',', $att);
            for ($i = 0; isset($flags[$i]); $i++) {
                $orwheres[] = " FIND_IN_SET('{$flags[$i]}', arc.flag)>0 ";
            }
        }
        if (!empty($typeid) && $typeid != 'top') {
            //指定了多个栏目时,不再获取子类的id
            if (ereg(',', $typeid)) {
                //指定了getall属性或主页模板例外
                if ($getall == 1 || empty($refObj->Fields['typeid'])) {
                    $typeids = explode(',', $typeid);
                    foreach ($typeids as $ttid) {
                        $typeidss[] = GetSonIds($ttid);
                    }
                    $typeidStr = join(',', $typeidss);
                    $typeidss = explode(',', $typeidStr);
                    $typeidssok = array_unique($typeidss);
                    $typeid = join(',', $typeidssok);
                }
                $orwheres[] = " arc.typeid in ({$typeid}) ";
            } else {
                //处理交叉栏目
                $CrossID = '';
                if ($ctag->GetAtt('cross') == '1') {
                    $arr = $dsql->GetOne("Select `id`,`topid`,`cross`,`crossid`,`ispart`,`typename` From `#@__arctype` where id='{$typeid}' ");
                    if ($arr['cross'] == 0 || $arr['cross'] == 2 && trim($arr['crossid'] == '')) {
                        $orwheres[] = ' arc.typeid in (' . GetSonIds($typeid) . ')';
                    } else {
                        $selquery = '';
                        if ($arr['cross'] == 1) {
                            $selquery = "Select id,topid From `#@__arctype` where typename like '{$arr['typename']}' And id<>'{$typeid}' And topid<>'{$typeid}'  ";
                        } else {
                            $arr['crossid'] = ereg_replace('[^0-9,]', '', trim($arr['crossid']));
                            if ($arr['crossid'] != '') {
                                $selquery = "Select id,topid From `#@__arctype` where id in('{$arr['crossid']}') And id<>'{$typeid}' And topid<>'{$typeid}'  ";
                            }
                        }
                        if ($selquery != '') {
                            $dsql->SetQuery($selquery);
                            $dsql->Execute();
                            while ($arr = $dsql->GetArray()) {
                                $CrossID .= $CrossID == '' ? $arr['id'] : ',' . $arr['id'];
                            }
                        }
                    }
                }
                if ($CrossID == '') {
                    $orwheres[] = ' arc.typeid in (' . GetSonIds($typeid) . ')';
                } else {
                    $orwheres[] = ' arc.typeid in (' . GetSonIds($typeid) . ',' . $CrossID . ')';
                }
            }
        }
        //频道ID
        if (eregi('spec', $listtype)) {
            $channelid == -1;
        }
        if (!empty($channelid)) {
            $orwheres[] = " And arc.channel = '{$channelid}' ";
        }
        if (!empty($noflag)) {
            if (!ereg(',', $noflag)) {
                $orwheres[] = " FIND_IN_SET('{$noflag}', arc.flag)<1 ";
            } else {
                $noflags = explode(',', $noflag);
                foreach ($noflags as $noflag) {
                    if (trim($noflag) == '') {
                        continue;
                    }
                    $orwheres[] = " FIND_IN_SET('{$noflag}', arc.flag)<1 ";
                }
            }
        }
        $orwheres[] = ' arc.arcrank > -1 ';
        //由于这个条件会导致缓存功能失去意义,因此取消
        //if($arcid!=0) $orwheres[] = " arc.id<>'$arcid' ";
    }
    //文档排序的方式
    $ordersql = '';
    if ($orderby == 'hot' || $orderby == 'click') {
        $ordersql = " order by arc.click {$orderWay}";
    } else {
        if ($orderby == 'sortrank' || $orderby == 'pubdate') {
            $ordersql = " order by arc.sortrank {$orderWay}";
        } else {
            if ($orderby == 'id') {
                $ordersql = "  order by arc.id {$orderWay}";
            } else {
                if ($orderby == 'near') {
                    $ordersql = " order by ABS(arc.id - " . $arcid . ")";
                } else {
                    if ($orderby == 'lastpost') {
                        $ordersql = "  order by arc.lastpost {$orderWay}";
                    } else {
                        if ($orderby == 'scores') {
                            $ordersql = "  order by arc.scores {$orderWay}";
                        } else {
                            if ($orderby == 'rand') {
                                $ordersql = "  order by rand()";
                            } else {
                                $ordersql = " order by arc.sortrank {$orderWay}";
                            }
                        }
                    }
                }
            }
        }
    }
    //limit条件
    $limit = trim(eregi_replace('limit', '', $limit));
    if ($limit != '') {
        $limitsql = " limit {$limit} ";
    } else {
        $limitsql = " limit 0,{$line} ";
    }
    $orwhere = '';
    if (isset($orwheres[0])) {
        $orwhere = join(' And ', $orwheres);
        $orwhere = ereg_replace("^ And", '', $orwhere);
        $orwhere = ereg_replace("And[ ]{1,}And", 'And ', $orwhere);
    }
    if ($orwhere != '') {
        $orwhere = " where {$orwhere} ";
    }
    //获取附加表信息
    $addfield = trim($ctag->GetAtt('addfields'));
    $addfieldsSql = '';
    $addfieldsSqlJoin = '';
    if ($addfield != '' && !empty($channelid)) {
        $row = $dsql->GetOne("Select addtable From `#@__channeltype` where id='{$channelid}' ");
        if (isset($row['addtable']) && trim($row['addtable']) != '') {
            $addtable = trim($row['addtable']);
            $addfields = explode(',', $addfield);
            $row['addtable'] = trim($row['addtable']);
            $addfieldsSql = ",addf." . join(',addf.', $addfields);
            $addfieldsSqlJoin = " left join `{$addtable}` addf on addf.aid = arc.id ";
        }
    }
    $query = "Select arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,\r\n\t\ttp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath\r\n\t\t{$addfieldsSql}\r\n\t\tfrom `{$maintable}` arc left join `#@__arctype` tp on arc.typeid=tp.id\r\n\t\t{$addfieldsSqlJoin}\r\n\t\t{$orwhere} {$ordersql} {$limitsql}";
    $md5hash = md5($query);
    $stylehash = $cfg_cache_type == 'content' ? md5($innertext) : '';
    $needSaveCache = true;
    if ($idlist != '' || $GLOBALS['_arclistEnv'] == 'index' || $cfg_index_cache == 0) {
        $needSaveCache = false;
    } else {
        $idlist = GetArclistCache($md5hash, $stylehash);
        if ($idlist != '') {
            $needSaveCache = false;
        }
        //如果使用的是内容缓存,直接返回结果
        if ($cfg_cache_type == 'content' && $idlist != '') {
            $idlist = $idlist == 0 ? '' : $idlist;
            return $idlist;
        }
    }
    //指定了id或使用缓存中的id
    if ($idlist != '') {
        $query = "Select arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,\r\n\t\t\ttp.moresite,tp.siteurl,tp.sitepath\r\n\t\t\t{$addfieldsSql}\r\n\t\t\t from `{$maintable}` arc left join `#@__arctype` tp on arc.typeid=tp.id\r\n\t\t\t {$addfieldsSqlJoin}\r\n\t\t  where arc.id in({$idlist}) {$ordersql} ";
    }
    $dsql->SetQuery($query);
    $dsql->Execute('al');
    $artlist = '';
    if ($col > 1) {
        $artlist = "<table width='{$tablewidth}' border='0' cellspacing='0' cellpadding='0'>\r\n";
    }
    $dtp2 = new DedeTagParse();
    $dtp2->SetNameSpace('field', '[', ']');
    $dtp2->LoadString($innertext);
    $GLOBALS['autoindex'] = 0;
    $ids = array();
    for ($i = 0; $i < $line; $i++) {
        if ($col > 1) {
            $artlist .= "<tr>\r\n";
        }
        for ($j = 0; $j < $col; $j++) {
            if ($col > 1) {
                $artlist .= "\t<td width='{$colWidth}'>\r\n";
            }
            if ($row = $dsql->GetArray("al")) {
                $ids[] = $row['id'];
                //处理一些特殊字段
                $row['info'] = $row['infos'] = cn_substr($row['description'], $infolen);
                $row['id'] = $row['id'];
                if ($row['corank'] > 0 && $row['arcrank'] == 0) {
                    $row['arcrank'] = $row['corank'];
                }
                $row['filename'] = $row['arcurl'] = GetFileUrl($row['id'], $row['typeid'], $row['senddate'], $row['title'], $row['ismake'], $row['arcrank'], $row['namerule'], $row['typedir'], $row['money'], $row['filename'], $row['moresite'], $row['siteurl'], $row['sitepath']);
                $row['typeurl'] = GetTypeUrl($row['typeid'], $row['typedir'], $row['isdefault'], $row['defaultname'], $row['ispart'], $row['namerule2'], $row['moresite'], $row['siteurl'], $row['sitepath']);
                if ($row['litpic'] == '-' || $row['litpic'] == '') {
                    $row['litpic'] = $GLOBALS['cfg_cmspath'] . '/images/defaultpic.gif';
                }
                if (!eregi("^http://", $row['litpic']) && $GLOBALS['cfg_multi_site'] == 'Y') {
                    $row['litpic'] = $GLOBALS['cfg_mainsite'] . $row['litpic'];
                }
                $row['picname'] = $row['litpic'];
                $row['stime'] = GetDateMK($row['pubdate']);
                $row['typelink'] = "<a href='" . $row['typeurl'] . "'>" . $row['typename'] . "</a>";
                $row['image'] = "<img src='" . $row['picname'] . "' border='0' width='{$imgwidth}' height='{$imgheight}' alt='" . ereg_replace("['><]", "", $row['title']) . "'>";
                $row['imglink'] = "<a href='" . $row['filename'] . "'>" . $row['image'] . "</a>";
                $row['fulltitle'] = $row['title'];
                $row['title'] = cn_substr($row['title'], $titlelen);
                if ($row['color'] != '') {
                    $row['title'] = "<font color='" . $row['color'] . "'>" . $row['title'] . "</font>";
                }
                if (ereg('b', $row['flag'])) {
                    $row['title'] = "<strong>" . $row['title'] . "</strong>";
                }
                //$row['title'] = "<b>".$row['title']."</b>";
                $row['textlink'] = "<a href='" . $row['filename'] . "'>" . $row['title'] . "</a>";
                $row['plusurl'] = $row['phpurl'] = $GLOBALS['cfg_phpurl'];
                $row['memberurl'] = $GLOBALS['cfg_memberurl'];
                $row['templeturl'] = $GLOBALS['cfg_templeturl'];
                if (is_array($dtp2->CTags)) {
                    foreach ($dtp2->CTags as $k => $ctag) {
                        if ($ctag->GetName() == 'array') {
                            //传递整个数组,在runphp模式中有特殊作用
                            $dtp2->Assign($k, $row);
                        } else {
                            if (isset($row[$ctag->GetName()])) {
                                $dtp2->Assign($k, $row[$ctag->GetName()]);
                            } else {
                                $dtp2->Assign($k, '');
                            }
                        }
                    }
                    $GLOBALS['autoindex']++;
                }
                $artlist .= $dtp2->GetResult() . "\r\n";
            } else {
                $artlist .= '';
            }
            if ($col > 1) {
                $artlist .= "\t</td>\r\n";
            }
        }
        //Loop Col
        if ($col > 1) {
            $i += $col - 1;
        }
        if ($col > 1) {
            $artlist .= "\t</tr>\r\n";
        }
    }
    //loop line
    if ($col > 1) {
        $artlist .= "\t</table>\r\n";
    }
    $dsql->FreeResult("al");
    //保存ID缓存
    $idsstr = join(',', $ids);
    if ($needSaveCache) {
        if ($idsstr == '') {
            $idsstr = '0';
        }
        if ($cfg_cache_type == 'content' && $idsstr != '0') {
            $idsstr = $artlist;
        }
        $inquery = "INSERT INTO `#@__arccache`(`md5hash`,`stylehash`,`uptime`,`cachedata`) VALUES ('" . $md5hash . "','{$stylehash}', '" . time() . "', '{$idsstr}'); ";
        $dsql->ExecuteNoneQuery("Delete From `#@__arccache` where md5hash='" . $md5hash . "' ");
        $dsql->ExecuteNoneQuery($inquery);
    }
    return $artlist;
}
Example #10
0
 /**
  *  统计列表里的记录
  *
  * @access    public
  * @return    void
  */
 function CountRecord()
 {
     global $cfg_list_son;
     //统计数据库记录
     $this->TotalResult = -1;
     if (isset($GLOBALS['TotalResult'])) {
         $this->TotalResult = $GLOBALS['TotalResult'];
     }
     if (isset($GLOBALS['PageNo'])) {
         $this->PageNo = $GLOBALS['PageNo'];
     } else {
         $this->PageNo = 1;
     }
     $this->addSql = " arc.arcrank > -1 ";
     //栏目id条件
     if (!empty($this->TypeID)) {
         if ($cfg_list_son == 'N') {
             if ($this->CrossID == '') {
                 $this->addSql .= " AND (arc.typeid='" . $this->TypeID . "') ";
             } else {
                 $this->addSql .= " AND (arc.typeid IN({$this->CrossID},{$this->TypeID})) ";
             }
         } else {
             if ($this->CrossID == '') {
                 $this->addSql .= " AND (arc.typeid IN (" . GetSonIds($this->TypeID, $this->Fields['channeltype']) . ") ) ";
             } else {
                 $this->addSql .= " AND (arc.typeid IN (" . GetSonIds($this->TypeID, $this->Fields['channeltype']) . ",{$this->CrossID}) ) ";
             }
         }
     }
     $naddQuery = '';
     //地区与信息类型条件
     if (count($this->searchArr) > 0) {
         if (!empty($this->searchArr['nativeplace'])) {
             if ($this->searchArr['nativeplace'] % 500 == 0) {
                 $naddQuery .= " AND arc.nativeplace >= '{$this->searchArr['nativeplace']}' AND arc.nativeplace < '" . ($this->searchArr['nativeplace'] + 500) . "'";
             } else {
                 $naddQuery .= "AND arc.nativeplace = '{$this->searchArr['nativeplace']}'";
             }
         }
         if (!empty($this->searchArr['infotype'])) {
             if ($this->searchArr['infotype'] % 500 == 0) {
                 $naddQuery .= " AND arc.infotype >= '{$this->searchArr['infotype']}' AND arc.infotype < '" . ($this->searchArr['infotype'] + 500) . "'";
             } else {
                 $naddQuery .= "AND arc.infotype = '{$this->searchArr['infotype']}'";
             }
         }
         if (!empty($this->searchArr['keyword'])) {
             $naddQuery .= "AND arc.title like '%{$this->searchArr['keyword']}%' ";
         }
     }
     if ($naddQuery != '') {
         $this->sAddTable = true;
         $this->addSql .= $naddQuery;
     }
     if ($this->TotalResult == -1) {
         if ($this->sAddTable) {
             $cquery = "SELECT COUNT(*) AS dd FROM `{$this->AddTable}` arc WHERE " . $this->addSql;
         } else {
             $cquery = "SELECT COUNT(*) AS dd FROM `#@__arctiny` arc WHERE " . $this->addSql;
         }
         $row = $this->dsql->GetOne($cquery);
         if (is_array($row)) {
             $this->TotalResult = $row['dd'];
         } else {
             $this->TotalResult = 0;
         }
     }
     //初始化列表模板,并统计页面总数
     $tempfile = $GLOBALS['cfg_basedir'] . $GLOBALS['cfg_templets_dir'] . "/" . $this->TypeLink->TypeInfos['templist'];
     $tempfile = str_replace("{tid}", $this->TypeID, $tempfile);
     $tempfile = str_replace("{cid}", $this->ChannelUnit->ChannelInfos['nid'], $tempfile);
     if (!file_exists($tempfile)) {
         $tempfile = $GLOBALS['cfg_basedir'] . $GLOBALS['cfg_templets_dir'] . "/" . $GLOBALS['cfg_df_style'] . "/list_default_sg.htm";
     }
     if (!file_exists($tempfile) || !is_file($tempfile)) {
         echo "模板文件不存在,无法解析文档!";
         exit;
     }
     $this->dtp->LoadTemplate($tempfile);
     $ctag = $this->dtp->GetTag("page");
     if (!is_object($ctag)) {
         $ctag = $this->dtp->GetTag("list");
     }
     if (!is_object($ctag)) {
         $this->PageSize = 20;
     } else {
         if ($ctag->GetAtt('pagesize') != '') {
             $this->PageSize = $ctag->GetAtt('pagesize');
         } else {
             $this->PageSize = 20;
         }
     }
     $this->TotalPage = ceil($this->TotalResult / $this->PageSize);
 }
Example #11
0
<?php

/**
 * 回收站
 *
 * @version        $Id: recycling.php 1 15:46 2010年7月20日Z tianya $
 * @package        DedeCMS.Administrator
 * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
 * @license        http://help.dedecms.com/usersguide/license.html
 * @link           http://www.dedecms.com
 */
require_once dirname(__FILE__) . '/config.php';
CheckPurview('a_List,a_AccList,a_MyList');
require_once DEDEINC . '/datalistcp.class.php';
if (empty($cid)) {
    $cid = '0';
    $whereSql = '';
}
if ($cid != 0) {
    require_once DEDEINC . '/channelunit.func.php';
    $whereSql = " AND arc.typeid IN (" . GetSonIds($cid) . ")";
}
$query = "SELECT arc.*,tp.typename FROM `#@__archives` AS arc\nLEFT JOIN #@__arctype AS tp ON arc.typeid = tp.id\nWHERE arc.arcrank = '-2' {$whereSql} order by arc.id desc";
$dlist = new DataListCP();
$dlist->SetTemplet(DEDEADMIN . "/templets/recycling.htm");
$dlist->SetSource($query);
$dlist->display();
Example #12
0
function lib_channel(&$ctag, &$refObj)
{
    global $dsql;
    $attlist = "typeid|0,reid|0,row|100,col|1,type|son,currentstyle|,cacheid|";
    FillAttsDefault($ctag->CAttribute->Items, $attlist);
    extract($ctag->CAttribute->Items, EXTR_SKIP);
    $innertext = $ctag->GetInnerText();
    $line = empty($row) ? 100 : $row;
    $likeType = '';
    //读取固定的缓存块
    $cacheid = trim($cacheid);
    if ($cacheid != '') {
        $likeType = GetCacheBlock($cacheid);
        if ($likeType != '') {
            return $likeType;
        }
    }
    $reid = 0;
    $topid = 0;
    //如果属性里没指定栏目id,从引用类里获取栏目信息
    if (empty($typeid)) {
        if (isset($refObj->TypeLink->TypeInfos['id'])) {
            $typeid = $refObj->TypeLink->TypeInfos['id'];
            $reid = $refObj->TypeLink->TypeInfos['reid'];
            $topid = $refObj->TypeLink->TypeInfos['topid'];
        } else {
            $typeid = 0;
        }
    } else {
        $row2 = $dsql->GetOne("Select * From `#@__arctype` where id='{$typeid}' ");
        $typeid = $row2['id'];
        $reid = $row2['reid'];
        $topid = $row2['topid'];
        $issetInfos = true;
    }
    if ($type == '' || $type == 'sun') {
        $type = 'son';
    }
    if ($innertext == '') {
        $innertext = GetSysTemplets("channel_list.htm");
    }
    if ($type == 'top') {
        $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath\r\n\t\t  From `#@__arctype` where reid=0 And ishidden<>1 order by sortrank asc limit 0, {$line} ";
    } else {
        if ($type == 'son') {
            if ($typeid == 0) {
                return '';
            }
            $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath\r\n\t\t  From `#@__arctype` where reid='{$typeid}' And ishidden<>1 order by sortrank asc limit 0, {$line} ";
        } else {
            if ($type == 'self') {
                if ($reid == 0) {
                    return '';
                }
                $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath\r\n\t\t\tFrom `#@__arctype` where reid='{$reid}' And ishidden<>1 order by sortrank asc limit 0, {$line} ";
            }
        }
    }
    //And id<>'$typeid'
    $needRel = false;
    $dtp2 = new DedeTagParse();
    $dtp2->SetNameSpace('field', '[', ']');
    $dtp2->LoadSource($innertext);
    //检查是否有子栏目,并返回rel提示(用于二级菜单)
    if (ereg(':rel', $innertext)) {
        $needRel = true;
    }
    if (empty($sql)) {
        return '';
    }
    $dsql->SetQuery($sql);
    $dsql->Execute();
    $totalRow = $dsql->GetTotalRow();
    //如果用子栏目模式,当没有子栏目时显示同级栏目
    if ($type == 'son' && $reid != 0 && $totalRow == 0) {
        $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath\r\n\t\t\tFrom `#@__arctype` where reid='{$reid}' And ishidden<>1 order by sortrank asc limit 0, {$line} ";
        $dsql->SetQuery($sql);
        $dsql->Execute();
    }
    $GLOBALS['autoindex'] = 0;
    for ($i = 0; $i < $line; $i++) {
        if ($col > 1) {
            $likeType .= "<dl>\r\n";
        }
        for ($j = 0; $j < $col; $j++) {
            if ($col > 1) {
                $likeType .= "<dd>\r\n";
            }
            if ($row = $dsql->GetArray()) {
                $row['sonids'] = $row['rel'] = '';
                if ($needRel) {
                    $row['sonids'] = GetSonIds($row['id'], 0, false);
                    if ($row['sonids'] == '') {
                        $row['rel'] = '';
                    } else {
                        $row['rel'] = " rel='dropmenu{$row['id']}'";
                    }
                }
                //处理同级栏目中,当前栏目的样式
                if (($row['id'] == $typeid || $topid == $row['id'] && $type == 'top') && $currentstyle != '') {
                    $linkOkstr = $currentstyle;
                    $row['typelink'] = GetOneTypeUrlA($row);
                    $linkOkstr = str_replace("~rel~", $row['rel'], $linkOkstr);
                    $linkOkstr = str_replace("~id~", $row['id'], $linkOkstr);
                    $linkOkstr = str_replace("~typelink~", $row['typelink'], $linkOkstr);
                    $linkOkstr = str_replace("~typename~", $row['typename'], $linkOkstr);
                    $likeType .= $linkOkstr;
                } else {
                    $row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row);
                    if (is_array($dtp2->CTags)) {
                        foreach ($dtp2->CTags as $tagid => $ctag) {
                            if (isset($row[$ctag->GetName()])) {
                                $dtp2->Assign($tagid, $row[$ctag->GetName()]);
                            }
                        }
                    }
                    $likeType .= $dtp2->GetResult();
                }
            }
            if ($col > 1) {
                $likeType .= "</dd>\r\n";
            }
            $GLOBALS['autoindex']++;
        }
        //Loop Col
        if ($col > 1) {
            $i += $col - 1;
            $likeType .= "\t</dl>\r\n";
        }
    }
    //Loop for $i
    $dsql->FreeResult();
    if ($cacheid != '') {
        WriteCacheBlock($cacheid, $likeType);
    }
    return $likeType;
}
Example #13
0
    $flagsArr .= $frow['att'] == $flag ? "<option value='{$frow['att']}' selected>{$frow['attname']}</option>\r\n" : "<option value='{$frow['att']}'>{$frow['attname']}</option>\r\n";
}
if (!empty($userCatalogSql)) {
    $whereSql .= " AND " . $userCatalogSql;
}
if (!empty($mid)) {
    $whereSql .= " AND arc.mid = '{$mid}' ";
}
if ($keyword != '') {
    $whereSql .= " AND ( CONCAT(arc.title,arc.writer) LIKE '%{$keyword}%') ";
}
if ($flag != '') {
    $whereSql .= " AND FIND_IN_SET('{$flag}', arc.flag) ";
}
if ($cid != 0) {
    $whereSql .= ' AND arc.typeid IN (' . GetSonIds($cid) . ')';
}
if ($arcrank != '') {
    $whereSql .= " AND arc.arcrank = '{$arcrank}' ";
    $CheckUserSend = "<input type='button' class='coolbg np' onClick=\"location='catalog_do.php?cid=" . $cid . "&dopost=listArchives&gurl=content_list.php';\" value='所有文档' />";
} else {
    $CheckUserSend = "<input type='button' class='coolbg np' onClick=\"location='catalog_do.php?cid=" . $cid . "&dopost=listArchives&arcrank=-1&gurl=content_list.php';\" value='稿件审核' />";
}
$orderby = empty($orderby) ? 'id' : preg_replace("#[^a-z0-9]#", "", $orderby);
$orderbyField = 'arc.' . $orderby;
$query = "SELECT arc.id,arc.typeid,arc.senddate,arc.flag,arc.ismake,\narc.channel,arc.arcrank,arc.click,arc.title,arc.color,arc.litpic,arc.pubdate,arc.mid\nFROM `#@__archives` arc \n where arc.mid={$adminid}\nORDER BY {$orderbyField} DESC";
if (empty($f) || !preg_match("#form#", $f)) {
    $f = 'form1.arcid1';
}
//初始化
$dlist = new DataListCP();
Example #14
0
 function GetList($limitstart, $ismake = 1)
 {
     global $cfg_list_son, $cfg_needsontype;
     $col = $this->ListObj->GetAtt('col');
     if (empty($col)) {
         $col = 1;
     }
     $titlelen = $this->ListObj->GetAtt('titlelen');
     $infolen = $this->ListObj->GetAtt('infolen');
     $imgwidth = $this->ListObj->GetAtt('imgwidth');
     $imgheight = $this->ListObj->GetAtt('imgheight');
     $titlelen = AttDef($titlelen, 60);
     $infolen = AttDef($infolen, 250);
     $imgwidth = AttDef($imgwidth, 80);
     $imgheight = AttDef($imgheight, 80);
     $innertext = trim($this->ListObj->GetInnerText());
     if (empty($innertext)) {
         $innertext = GetSysTemplets("list_fulllist.htm");
     }
     $tablewidth = 100;
     if ($col == "") {
         $col = 1;
     }
     $colWidth = ceil(100 / $col);
     $tablewidth = $tablewidth . "%";
     $colWidth = $colWidth . "%";
     //按不同情况设定SQL条件
     $orwhere = " arc.arcrank > -1 And channel>-1 ";
     $typeid = $this->ListObj->GetAtt('typeid');
     $subday = $this->ListObj->GetAtt('subday');
     $listtype = $this->ListObj->GetAtt('type');
     $att = $this->ListObj->GetAtt('att');
     $channelid = $this->ListObj->GetAtt('channel');
     if (empty($channelid)) {
         $channelid = 0;
     }
     //是否指定栏目条件
     if (!empty($typeid)) {
         if ($cfg_list_son == 'N') {
             $orwhere .= " And (arc.typeid='{$typeid}') ";
         } else {
             $orwhere .= " And arc.typeid in (" . GetSonIds($typeid, 0, true) . ") ";
         }
     }
     //自定义属性条件
     if ($att != '') {
         $flags = explode(',', $att);
         for ($i = 0; isset($flags[$i]); $i++) {
             $orwhere .= " AND FIND_IN_SET('{$flags[$i]}',flag)>0 ";
         }
     }
     //文档的频道模型
     if ($channelid > 0 && !eregi("spec", $listtype)) {
         $orwhere .= " And arc.channel = '{$channelid}' ";
     }
     //推荐文档 带缩略图  专题文档
     if (eregi("commend", $listtype)) {
         $orwhere .= " And FIND_IN_SET('c',flag) > 0  ";
     }
     if (eregi("image", $listtype)) {
         $orwhere .= " And arc.litpic <> ''  ";
     }
     if (eregi("spec", $listtype) || $channelid == -1) {
         $orwhere .= " And arc.channel = -1  ";
     }
     if (!empty($subday)) {
         $starttime = time() - $subday * 86400;
         $orwhere .= " And arc.senddate > {$starttime}  ";
     }
     $keyword = $this->ListObj->GetAtt('keyword');
     if (!empty($keyword)) {
         $orwhere .= " And CONCAT(arc.title,arc.keywords) REGEXP '{$keyword}' ";
     }
     $orderby = $this->ListObj->GetAtt('orderby');
     $orderWay = $this->ListObj->GetAtt('orderway');
     //排序方式
     $ordersql = "";
     if ($orderby == "senddate") {
         $ordersql = " order by arc.senddate {$orderWay}";
     } else {
         if ($orderby == "pubdate") {
             $ordersql = " order by arc.pubdate {$orderWay}";
         } else {
             if ($orderby == "id") {
                 $ordersql = "  order by arc.id {$orderWay}";
             } else {
                 if ($orderby == "hot" || $orderby == "click") {
                     $ordersql = " order by arc.click {$orderWay}";
                 } else {
                     if ($orderby == "lastpost") {
                         $ordersql = "  order by arc.lastpost {$orderWay}";
                     } else {
                         if ($orderby == "scores") {
                             $ordersql = "  order by arc.scores {$orderWay}";
                         } else {
                             if ($orderby == "rand") {
                                 $ordersql = "  order by rand()";
                             } else {
                                 $ordersql = " order by arc.sortrank {$orderWay}";
                             }
                         }
                     }
                 }
             }
         }
     }
     //获得附加表的相关信息
     $addField = "";
     $addJoin = "";
     if (is_object($this->ChannelUnit)) {
         $addtable = $this->ChannelUnit->ChannelInfos['addtable'];
         if ($addtable != "") {
             $addJoin = " left join {$addtable} on arc.id = " . $addtable . ".aid ";
             $addField = "";
             $fields = explode(",", $this->ChannelUnit->ChannelInfos['listfields']);
             foreach ($fields as $k => $v) {
                 $nfields[$v] = $k;
             }
             foreach ($this->ChannelUnit->ChannelFields as $k => $arr) {
                 if (isset($nfields[$k])) {
                     if (!empty($arr['rename'])) {
                         $addField .= "," . $addtable . "." . $k . " as " . $arr['rename'];
                     } else {
                         $addField .= "," . $addtable . "." . $k;
                     }
                 }
             }
         }
     }
     $query = "Select arc.*,tp.typedir,tp.typename,tp.isdefault,tp.defaultname,\r\n\t\ttp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath\r\n\t\t{$addField}\r\n\t\tfrom {$this->maintable} arc\r\n\t\tleft join #@__arctype tp on arc.typeid=tp.id\r\n\t\t{$addJoin}\r\n\t\twhere {$orwhere} {$ordersql} limit {$limitstart}," . $this->PageSize;
     $this->dsql->SetQuery($query);
     $this->dsql->Execute("al");
     $artlist = "";
     if ($col > 1) {
         $artlist = "<table width='{$tablewidth}' border='0' cellspacing='0' cellpadding='0'>\r\n";
     }
     $indtp = new DedeTagParse();
     $indtp->SetNameSpace("field", "[", "]");
     $indtp->LoadSource($innertext);
     $GLOBALS['autoindex'] = 0;
     for ($i = 0; $i < $this->PageSize; $i++) {
         if ($col > 1) {
             $artlist .= "<tr>\r\n";
         }
         for ($j = 0; $j < $col; $j++) {
             if ($col > 1) {
                 $artlist .= "<td width='{$colWidth}'>\r\n";
             }
             if ($row = $this->dsql->GetArray("al")) {
                 $GLOBALS['autoindex']++;
                 //处理一些特殊字段
                 $row['id'] = $row['id'];
                 $row['arcurl'] = $this->GetArcUrl($row['id'], $row['typeid'], $row['senddate'], $row['title'], $row['ismake'], $row['arcrank'], $row['namerule'], $row['typedir'], $row['money'], $row['filename'], $row['moresite'], $row['siteurl'], $row['sitepath']);
                 $row['typeurl'] = GetTypeUrl($row['typeid'], $row['typedir'], $row['isdefault'], $row['defaultname'], $row['ispart'], $row['namerule2'], $row['siteurl'], $row['sitepath']);
                 if ($ismake == 0 && $GLOBALS['cfg_multi_site'] == 'Y') {
                     if ($row["siteurl"] == "") {
                         $row["siteurl"] = $GLOBALS['cfg_mainsite'];
                     }
                 }
                 $row['description'] = cn_substr($row['description'], $infolen);
                 if ($row['litpic'] == '-' || $row['litpic'] == '') {
                     $row['litpic'] = $GLOBALS['cfg_cmspath'] . '/images/defaultpic.gif';
                 }
                 if (!eregi("^http://", $row['litpic']) && $GLOBALS['cfg_multi_site'] == 'Y') {
                     $row['litpic'] = $GLOBALS['cfg_mainsite'] . $row['litpic'];
                 }
                 $row['picname'] = $row['litpic'];
                 $row['info'] = $row['description'];
                 $row['filename'] = $row['arcurl'];
                 $row['stime'] = GetDateMK($row['pubdate']);
                 $row['textlink'] = "<a href='" . $row['filename'] . "' title='" . str_replace("'", "", $row['title']) . "'>" . $row['title'] . "</a>";
                 $row['typelink'] = "<a href='" . $row['typeurl'] . "'>[" . $row['typename'] . "]</a>";
                 $row['imglink'] = "<a href='" . $row['filename'] . "'><img src='" . $row['picname'] . "' border='0' width='{$imgwidth}' height='{$imgheight}' alt='" . str_replace("'", "", $row['title']) . "'></a>";
                 $row['image'] = "<img src='" . $row['picname'] . "' border='0' width='{$imgwidth}' height='{$imgheight}' alt='" . str_replace("'", "", $row['title']) . "'>";
                 $row['plusurl'] = $row['phpurl'] = $GLOBALS['cfg_phpurl'];
                 $row['memberurl'] = $GLOBALS['cfg_memberurl'];
                 $row['templeturl'] = $GLOBALS['cfg_templeturl'];
                 $row['title'] = cn_substr($row['title'], $titlelen);
                 if ($row['color'] != "") {
                     $row['title'] = "<font color='" . $row['color'] . "'>" . $row['title'] . "</font>";
                 }
                 if (ereg('c', $row['flag'])) {
                     $row['title'] = "<b>" . $row['title'] . "</b>";
                 }
                 //编译附加表里的数据
                 if (is_object($this->ChannelUnit)) {
                     foreach ($row as $k => $v) {
                         if (ereg("[A-Z]", $k)) {
                             $row[strtolower($k)] = $v;
                         }
                     }
                     foreach ($this->ChannelUnit->ChannelFields as $k => $arr) {
                         if (isset($row[$k])) {
                             $row[$k] = $this->ChannelUnit->MakeField($k, $row[$k]);
                         }
                     }
                 }
                 //解析单条记录
                 if (is_array($indtp->CTags)) {
                     foreach ($indtp->CTags as $k => $ctag) {
                         $_f = $ctag->GetName();
                         if ($_f == 'array') {
                             //传递整个数组,在runphp模式中有特殊作用
                             $indtp->Assign($k, $row);
                         } else {
                             if (isset($row[$_f])) {
                                 $indtp->Assign($k, $row[$_f]);
                             } else {
                                 $indtp->Assign($k, "");
                             }
                         }
                     }
                 }
                 $artlist .= $indtp->GetResult();
             } else {
                 $artlist .= "";
             }
             if ($col > 1) {
                 $artlist .= "\t</td>\r\n";
             }
         }
         //Loop Col
         if ($col > 1) {
             $i += $col - 1;
         }
         if ($col > 1) {
             $artlist .= "\t</tr>\r\n";
         }
     }
     //Loop Line
     if ($col > 1) {
         $artlist .= "</table>\r\n";
     }
     $this->dsql->FreeResult("al");
     return $artlist;
 }
Example #15
0
function lib_likearticle(&$ctag, &$refObj)
{
    global $dsql;
    //属性处理
    $attlist = "row|12,titlelen|28,infolen|150,col|1,tablewidth|100,mytypeid|0,byabs|0,imgwidth|120,imgheight|90";
    FillAttsDefault($ctag->CAttribute->Items, $attlist);
    extract($ctag->CAttribute->Items, EXTR_SKIP);
    $revalue = '';
    if (empty($tablewidth)) {
        $tablewidth = 100;
    }
    if (empty($col)) {
        $col = 1;
    }
    $colWidth = ceil(100 / $col);
    $tablewidth = $tablewidth . "%";
    $colWidth = $colWidth . "%";
    $ids = array();
    $tids = array();
    if (!empty($refObj->Fields['tags'])) {
        $keyword = $refObj->Fields['tags'];
    } else {
        $keyword = !empty($refObj->Fields['keywords']) ? $refObj->Fields['keywords'] : '';
    }
    $typeid = !empty($mytypeid) ? $mytypeid : 0;
    if (empty($typeid)) {
        if (!empty($refObj->Typelink->TypeInfos['reid'])) {
            $typeid = $refObj->Typelink->TypeInfos['reid'];
        } else {
            if (!empty($refObj->Fields['typeid'])) {
                $typeid = $refObj->Fields['typeid'];
            }
        }
    }
    if (!empty($typeid) && !preg_match('#,#', $typeid)) {
        $typeid = GetSonIds($typeid);
    }
    $limitRow = $row - count($ids);
    $keyword = '';
    if (!empty($refObj->Fields['keywords'])) {
        $keywords = explode(',', trim($refObj->Fields['keywords']));
        $keyword = '';
        $n = 1;
        foreach ($keywords as $k) {
            if ($n > 3) {
                break;
            }
            if (trim($k) == '') {
                continue;
            } else {
                $k = addslashes($k);
            }
            $keyword .= $keyword == '' ? " CONCAT(arc.keywords,' ',arc.title) LIKE '%{$k}%' " : " OR CONCAT(arc.keywords,' ',arc.title) LIKE '%{$k}%' ";
            $n++;
        }
    }
    $arcid = !empty($refObj->Fields['id']) ? $refObj->Fields['aid'] : 0;
    if (empty($arcid) || $byabs == 0) {
        $orderquery = " ORDER BY arc.id desc ";
    } else {
        $orderquery = " ORDER BY ABS(arc.id - " . $arcid . ") ";
    }
    if ($keyword != '') {
        if (!empty($typeid)) {
            $typeid = " AND arc.typeid IN({$typeid}) AND arc.id<>{$arcid} ";
        }
        $query = "SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,\r\n                  tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath\r\n                  FROM `#@__archives` arc LEFT JOIN `#@__arctype` tp ON arc.typeid=tp.id\r\n                  where arc.arcrank>-1 AND ({$keyword})  {$typeid} {$orderquery} limit 0, {$row}";
    } else {
        if (!empty($typeid)) {
            $typeid = " arc.typeid IN({$typeid}) AND arc.id<>{$arcid} ";
        }
        $query = "SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,\r\n                  tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath\r\n                  FROM `#@__archives` arc LEFT JOIN `#@__arctype` tp ON arc.typeid=tp.id\r\n                 WHERE arc.arcrank>-1 AND  {$typeid} {$orderquery} limit 0, {$row}";
    }
    $innertext = trim($ctag->GetInnerText());
    if ($innertext == '') {
        $innertext = GetSysTemplets('part_arclist.htm');
    }
    $dsql->SetQuery($query);
    $dsql->Execute('al');
    $artlist = '';
    if ($col > 1) {
        $artlist = "<table width='{$tablewidth}' border='0' cellspacing='0' cellpadding='0'>\r\n";
    }
    $dtp2 = new DedeTagParse();
    $dtp2->SetNameSpace('field', '[', ']');
    $dtp2->LoadString($innertext);
    $GLOBALS['autoindex'] = 0;
    $line = $row;
    for ($i = 0; $i < $line; $i++) {
        if ($col > 1) {
            $artlist .= "<tr>\r\n";
        }
        for ($j = 0; $j < $col; $j++) {
            if ($col > 1) {
                $artlist .= "    <td width='{$colWidth}'>\r\n";
            }
            if ($row = $dsql->GetArray("al")) {
                $ids[] = $row['id'];
                //处理一些特殊字段
                $row['info'] = $row['infos'] = cn_substr($row['description'], $infolen);
                $row['id'] = $row['id'];
                if ($row['corank'] > 0 && $row['arcrank'] == 0) {
                    $row['arcrank'] = $row['corank'];
                }
                $row['filename'] = $row['arcurl'] = GetFileUrl($row['id'], $row['typeid'], $row['senddate'], $row['title'], $row['ismake'], $row['arcrank'], $row['namerule'], $row['typedir'], $row['money'], $row['filename'], $row['moresite'], $row['siteurl'], $row['sitepath']);
                $row['typeurl'] = GetTypeUrl($row['typeid'], $row['typedir'], $row['isdefault'], $row['defaultname'], $row['ispart'], $row['namerule2'], $row['moresite'], $row['siteurl'], $row['sitepath']);
                if ($row['litpic'] == '-' || $row['litpic'] == '') {
                    $row['litpic'] = $GLOBALS['cfg_cmspath'] . '/images/defaultpic.gif';
                }
                if (!preg_match("#^http:\\/\\/#i", $row['litpic']) && $GLOBALS['cfg_multi_site'] == 'Y') {
                    $row['litpic'] = $GLOBALS['cfg_mainsite'] . $row['litpic'];
                }
                $row['picname'] = $row['litpic'];
                $row['stime'] = GetDateMK($row['pubdate']);
                $row['typelink'] = "<a href='" . $row['typeurl'] . "'>" . $row['typename'] . "</a>";
                $row['image'] = "<img src='" . $row['picname'] . "' border='0' width='{$imgwidth}' height='{$imgheight}' alt='" . preg_replace("#['><]#", "", $row['title']) . "'>";
                $row['imglink'] = "<a href='" . $row['filename'] . "'>" . $row['image'] . "</a>";
                $row['fulltitle'] = $row['title'];
                $row['title'] = cn_substr($row['title'], $titlelen);
                if ($row['color'] != '') {
                    $row['title'] = "<font color='" . $row['color'] . "'>" . $row['title'] . "</font>";
                }
                if (preg_match('#b#', $row['flag'])) {
                    $row['title'] = "<strong>" . $row['title'] . "</strong>";
                }
                $row['textlink'] = "<a href='" . $row['filename'] . "'>" . $row['title'] . "</a>";
                $row['plusurl'] = $row['phpurl'] = $GLOBALS['cfg_phpurl'];
                $row['memberurl'] = $GLOBALS['cfg_memberurl'];
                $row['templeturl'] = $GLOBALS['cfg_templeturl'];
                if (is_array($dtp2->CTags)) {
                    foreach ($dtp2->CTags as $k => $ctag) {
                        if ($ctag->GetName() == 'array') {
                            $dtp2->Assign($k, $row);
                        } else {
                            if (isset($row[$ctag->GetName()])) {
                                $dtp2->Assign($k, $row[$ctag->GetName()]);
                            } else {
                                $dtp2->Assign($k, '');
                            }
                        }
                    }
                    $GLOBALS['autoindex']++;
                }
                $artlist .= $dtp2->GetResult() . "\r\n";
            } else {
                $artlist .= '';
            }
            if ($col > 1) {
                $artlist .= "    </td>\r\n";
            }
        }
        //Loop Col
        if ($col > 1) {
            $i += $col - 1;
        }
        if ($col > 1) {
            $artlist .= "    </tr>\r\n";
        }
    }
    //loop line
    if ($col > 1) {
        $artlist .= "    </table>\r\n";
    }
    $dsql->FreeResult("al");
    return $artlist;
}
Example #16
0
 /**
  *  获得文档列表
  *
  * @access    public
  * @param     string  $innertext  底层模板
  * @return    string
  */
 function GetArcList($innertext = "")
 {
     $typeid = $this->TypeID;
     $innertext = trim($innertext);
     if ($innertext == "") {
         $innertext = GetSysTemplets("rss.htm");
     }
     $orwhere = " arc.arcrank > -1 ";
     $orwhere .= " AND (arc.typeid in (" . GetSonIds($this->TypeID, $this->TypeFields['channeltype']) . ") ) ";
     $ordersql = " ORDER BY arc.id desc";
     $query = "SELECT arc.*,tp.typedir,tp.typename,tp.isdefault,\r\n        tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath\r\n        FROM `#@__archives` arc LEFT JOIN `#@__arctype` tp ON arc.typeid=tp.id\r\n        WHERE {$orwhere} {$ordersql} LIMIT 0," . $this->MaxRow;
     $this->dsql->SetQuery($query);
     $this->dsql->Execute('al');
     $artlist = '';
     $dtp2 = new DedeTagParse();
     $dtp2->SetNameSpace('field', '[', ']');
     $dtp2->LoadSource($innertext);
     while ($row = $this->dsql->GetArray('al')) {
         //处理一些特殊字段
         if ($row['litpic'] == '-' || $row['litpic'] == '') {
             $row['litpic'] = $GLOBALS['cfg_cmspath'] . '/images/defaultpic.gif';
         }
         if (!preg_match("/^http:\\/\\//", $row['litpic']) && $GLOBALS['cfg_multi_site'] == 'Y') {
             $row['litpic'] = $GLOBALS['cfg_mainsite'] . $row['litpic'];
         }
         $row['picname'] = $row['litpic'];
         $row["arcurl"] = GetFileUrl($row["id"], $row["typeid"], $row["senddate"], $row["title"], $row["ismake"], $row["arcrank"], $row["namerule"], $row["typedir"], $row["money"], $row['filename'], $row["moresite"], $row["siteurl"], $row["sitepath"]);
         $row["typeurl"] = GetTypeUrl($row["typeid"], $row["typedir"], $row["isdefault"], $row["defaultname"], $row["ispart"], $row["namerule2"], $row["moresite"], $row["siteurl"], $row["sitepath"]);
         $row["info"] = $row["description"];
         $row["filename"] = $row["arcurl"];
         $row["stime"] = GetDateMK($row["pubdate"]);
         $row["image"] = "<img src='" . $row["picname"] . "' border='0'>";
         $row["fullurl"] = $GLOBALS["cfg_basehost"] . $row["arcurl"];
         // 2011-6-20 启用多站点RSS输出存在的路径问题(by:织梦的鱼)
         if ($GLOBALS['cfg_multi_site'] == 'Y') {
             $row["fullurl"] = $row["arcurl"];
         }
         $row["phpurl"] = $GLOBALS["cfg_plus_dir"];
         $row["templeturl"] = $GLOBALS["cfg_templets_dir"];
         if ($row["source"] == '') {
             $row["source"] = $GLOBALS['cfg_webname'];
         }
         if ($row["writer"] == '') {
             $row["writer"] = "秩名";
         }
         foreach ($row as $k => $v) {
             $row[$k] = htmlspecialchars($v);
         }
         if (is_array($dtp2->CTags)) {
             foreach ($dtp2->CTags as $k => $ctag) {
                 if ($ctag->GetName() == 'array') {
                     //传递整个数组,在runphp模式中有特殊作用
                     $dtp2->Assign($k, $row);
                 } else {
                     if (isset($row[$ctag->GetName()])) {
                         $dtp2->Assign($k, $row[$ctag->GetName()]);
                     } else {
                         $dtp2->Assign($k, '');
                     }
                 }
             }
         }
         $artlist .= $dtp2->GetResult() . "\r\n";
     }
     $this->dsql->FreeResult('al');
     return $artlist;
 }
Example #17
0
 /**
  *  统计列表里的记录
  *
  * @access    public
  * @return    string
  */
 function CountRecord()
 {
     $this->TotalResult = -1;
     if (isset($GLOBALS['TotalResult'])) {
         $this->TotalResult = $GLOBALS['TotalResult'];
         $this->TotalResult = is_numeric($this->TotalResult) ? $this->TotalResult : "";
     }
     if (isset($GLOBALS['PageNo'])) {
         $this->PageNo = intval($GLOBALS['PageNo']);
     } else {
         $this->PageNo = 1;
     }
     $ksql = $this->GetKeywordSql();
     $ksqls = array();
     if ($this->StartTime > 0) {
         $ksqls[] = " arc.senddate>'" . $this->StartTime . "' ";
     }
     if ($this->TypeID > 0) {
         $ksqls[] = " typeid IN (" . GetSonIds($this->TypeID) . ") ";
     }
     if ($this->ChannelType > 0) {
         $ksqls[] = " arc.channel='" . $this->ChannelType . "'";
     }
     if ($this->mid > 0) {
         $ksqls[] = " arc.mid = '" . $this->mid . "'";
     }
     $ksqls[] = " arc.arcrank > -1 ";
     $this->AddSql = $ksql == '' ? join(' AND ', $ksqls) : join(' AND ', $ksqls) . " AND ({$ksql})";
     if ($this->ChannelType < 0 || $this->ChannelTypeid < 0) {
         if ($this->ChannelType == "0") {
             $id = $this->ChannelTypeid;
         } else {
             $id = $this->ChannelType;
         }
         $row = $this->dsql->GetOne("SELECT addtable FROM `#@__channeltype` WHERE id={$id}");
         $addtable = trim($row['addtable']);
         $this->AddTable = $addtable;
     } else {
         $this->AddTable = "#@__archives";
     }
     $cquery = "SELECT * FROM `{$this->AddTable}` arc WHERE " . $this->AddSql;
     //var_dump($cquery);
     $hascode = md5($cquery);
     $row = $this->dsql->GetOne("SELECT * FROM `#@__arccache` WHERE `md5hash`='" . $hascode . "' ");
     $uptime = time();
     if (is_array($row) && time() - $row['uptime'] < 3600 * 24) {
         $aids = explode(',', $row['cachedata']);
         $this->TotalResult = count($aids) - 1;
         $this->RsFields = $row['cachedata'];
     } else {
         if ($this->TotalResult == -1) {
             $this->dsql->SetQuery($cquery);
             $this->dsql->execute();
             $aidarr = array();
             $aidarr[] = 0;
             while ($row = $this->dsql->getarray()) {
                 if ($this->ChannelType < 0 || $this->ChannelTypeid < 0) {
                     $aidarr[] = $row['aid'];
                 } else {
                     $aidarr[] = $row['id'];
                 }
             }
             $nums = count($aidarr) - 1;
             $aids = implode(',', $aidarr);
             $delete = "DELETE FROM `#@__arccache` WHERE uptime<" . (time() - 3600 * 24);
             $this->dsql->SetQuery($delete);
             $this->dsql->executenonequery();
             $insert = "INSERT INTO `#@__arccache` (`md5hash`, `uptime`, `cachedata`)\n                 VALUES('{$hascode}', '{$uptime}', '{$aids}')";
             $this->dsql->SetQuery($insert);
             $this->dsql->executenonequery();
             $this->TotalResult = $nums;
         }
     }
 }
Example #18
0
    }
    //更改子栏目属性
    if (!empty($upnext)) {
        $upquery = "UPDATE `#@__arctype` SET\n       issend='{$issend}',\n       defaultname='{$defaultname}',\n       channeltype='{$channeltype}',\n       tempindex='{$tempindex}',\n       templist='{$templist}',\n       temparticle='{$temparticle}',\n       namerule='{$namerule}',\n       namerule2='{$namerule2}',\n       ishidden='{$ishidden}'\n     WHERE 1=1 AND {$slinks}";
        if (!$dsql->ExecuteNoneQuery($upquery)) {
            ShowMsg("更改当前栏目成功,但更改下级栏目属性时失败!", "-1");
            exit;
        }
    }
    UpDateCatCache();
    ShowMsg("成功更改一个分类!", "catalog_main.php");
    exit;
} else {
    if ($dopost == "savetime") {
        $uptopsql = '';
        $slinks = " id IN (" . GetSonIds($id) . ")";
        //顶级栏目二级域名根目录处理
        if ($topid == 0 && $moresite == 1) {
            $sitepath = $typedir;
            $uptopsql = " ,sitepath='{$sitepath}' ";
            if (preg_match("#,#", $slinks)) {
                $upquery = "UPDATE `#@__arctype` SET sitepath='{$sitepath}' WHERE {$slinks}";
                $dsql->ExecuteNoneQuery($upquery);
            }
        }
        //如果选择子栏目可投稿,更新顶级栏目为可投稿
        if ($topid > 0 && $issend == 1) {
            $dsql->ExecuteNoneQuery("UPDATE `#@__arctype` SET issend='{$issend}' WHERE id='{$topid}'; ");
        }
        $upquery = "UPDATE `#@__arctype` SET\n     issend='{$issend}',\n     sortrank='{$sortrank}',\n     typedir='{$typedir}',\n     typename='{$typename}',\n        isdefault='{$isdefault}',\n     defaultname='{$defaultname}',\n     ispart='{$ispart}',\n\t picname='{$picname}',\n     corank='{$corank}' {$uptopsql}\n    WHERE id='{$id}' ";
        if (!$dsql->ExecuteNoneQuery($upquery)) {
}
if (!isset($uppage)) {
    $uppage = 0;
}
if (empty($maxpagesize)) {
    $maxpagesize = 50;
}
$adminID = $cuserLogin->getUserID();
$isremote = empty($isremote) ? 0 : $isremote;
$serviterm = empty($serviterm) ? "" : $serviterm;
//检测获取所有栏目ID
//普通生成或一键更新时更新所有栏目
if ($gotype == '' || $gotype == 'mkallct') {
    if ($upnext == 1 || $typeid == 0) {
        if ($typeid > 0) {
            $tidss = GetSonIds($typeid, 0);
            $idArray = explode(',', $tidss);
        } else {
            foreach ($cfg_Cs as $k => $v) {
                $idArray[] = $k;
            }
        }
    } else {
        $idArray = array();
        $idArray[] = $typeid;
    }
} else {
    if ($gotype == 'mkall') {
        $uppage = 1;
        $mkcachefile = DEDEDATA . "/mkall_cache_{$adminID}.php";
        $idArray = array();
Example #20
0
        exit;
    } else {
        if ($job == 'check') {
            $query = "Update `#@__feedback` set ischeck=1 where id in({$ids}) ";
            $dsql->ExecuteNoneQuery($query);
            ShowMsg("成功审核指定评论!", $_COOKIE['ENV_GOBACK_URL'], 0, 500);
            exit;
        } else {
            $bgcolor = '';
            $typeid = isset($typeid) && is_numeric($typeid) ? $typeid : 0;
            $aid = isset($aid) && is_numeric($aid) ? $aid : 0;
            $keyword = !isset($keyword) ? '' : $keyword;
            $ip = !isset($ip) ? '' : $ip;
            $tl = new TypeLink($typeid);
            $openarray = $tl->GetOptionArray($typeid, $admin_catalogs, 0);
            $addsql = $typeid != 0 ? " And typeid in (" . GetSonIds($typeid) . ")" : '';
            $addsql .= $aid != 0 ? " And aid={$aid} " : '';
            $addsql .= $ip != '' ? " And ip like '{$ip}' " : '';
            $querystring = "select * from `#@__feedback` where msg like '%{$keyword}%' {$addsql} order by dtime desc";
            $dlist = new DataListCP();
            $dlist->pageSize = 15;
            $dlist->SetParameter('aid', $aid);
            $dlist->SetParameter('ip', $ip);
            $dlist->SetParameter('typeid', $typeid);
            $dlist->SetParameter('keyword', $keyword);
            $dlist->SetTemplate(DEDEADMIN . '/templets/feedback_main.htm');
            $dlist->SetSource($querystring);
            $dlist->Display();
        }
    }
}
Example #21
0
    $row = $tl->dsql->GetOne("SELECT typename,addtable FROM `#@__channeltype` WHERE id='{$channelid}'");
    $positionname = $row['typename'] . " &gt; ";
    $listtable = $row['addtable'];
} else {
    $positionname = str_replace($cfg_list_symbol, " &gt; ", $tl->GetPositionName()) . " &gt; ";
}
$optionarr = $tl->GetOptionArray($cid, $admin_catalogs, $channelid);
$whereSql = $channelid == 0 ? " WHERE arc.channel < -1 " : " WHERE arc.channel = '{$channelid}' ";
if (!empty($mid)) {
    $whereSql .= " AND arc.mid = '{$mid}' ";
}
if ($keyword != '') {
    $whereSql .= " AND (arc.title like '%{$keyword}%') ";
}
if ($cid != 0) {
    $whereSql .= " AND arc.typeid in (" . GetSonIds($cid) . ")";
}
if ($arcrank != '') {
    $whereSql .= " AND arc.arcrank = '{$arcrank}' ";
    $CheckUserSend = "<input type='button' class='coolbg np' onClick=\"location='content_sg_list.php?cid={$cid}&channelid={$channelid}&dopost=listArchives';\" value='所有文档' />";
} else {
    $CheckUserSend = "<input type='button' class='coolbg np' onClick=\"location='content_sg_list.php?cid={$cid}&channelid={$channelid}&dopost=listArchives&arcrank=-1';\" value='稿件审核' />";
}
$query = "SELECT arc.aid,arc.aid as id,arc.typeid,arc.arcrank,arc.flag,arc.senddate,arc.channel,arc.title,arc.mid,arc.click,tp.typename,ch.typename as channelname\nFROM `{$listtable}` arc\nLEFT JOIN `#@__arctype` tp ON tp.id=arc.typeid\nLEFT JOIN `#@__channeltype` ch ON ch.id=arc.channel\n{$whereSql}\nORDER BY arc.aid DESC";
$dlist = new DataListCP();
$dlist->pageSize = 20;
$dlist->SetParameter("dopost", "listArchives");
$dlist->SetParameter("keyword", $keyword);
$dlist->SetParameter("cid", $cid);
$dlist->SetParameter("channelid", $channelid);
$dlist->SetTemplate(DEDEADMIN . "/templets/content_sg_list.htm");
Example #22
0
    $jumpurl = "makehtml_archives_action.php?endid={$endid}&startid={$startid}";
    $jumpurl .= "&typeid={$typeid}&pagesize=20&seltime={$seltime}";
    $jumpurl .= "&stime=" . urlencode($starttime) . "&etime=" . urlencode($endtime);
    header("Location: {$jumpurl}");
    exit;
}
$gwhere = " WHERE 1 ";
if ($startid > 0) {
    $gwhere .= " AND id>= {$startid} ";
}
if ($endid > $startid) {
    $gwhere .= " AND id<= {$endid} ";
}
$idsql = '';
if ($typeid != 0) {
    $ids = GetSonIds($typeid);
    $gwhere .= " AND typeid IN({$ids}) ";
}
if ($seltime == 1) {
    $t1 = GetMkTime($starttime);
    $t2 = GetMkTime($endtime);
    $gwhere .= " AND (senddate >= {$t1} AND senddate <= {$t2}) ";
}
if (!empty($userid)) {
    $row = $dsql->GetOne("SELECT `mid` FROM #@__member WHERE `userid` LIKE '{$userid}'");
    if (is_array($row)) {
        $gwhere .= " AND mid = {$row['mid']} ";
    }
}
//特殊操作
if (!empty($heightdone)) {
Example #23
0
function lib_arclistsg(&$ctag, &$refObj)
{
    global $dsql, $PubFields, $cfg_keyword_like, $cfg_index_cache, $_arclistEnv, $envs, $_sys_globals;
    //属性处理
    $attlist = "typeid|0,row|10,col|1,flag|,titlelen|30,sort|default,keyword|,innertext|,arcid|0,idlist|,channelid|0,limit|,orderway|desc,subday|0";
    FillAttsDefault($ctag->CAttribute->Items, $attlist);
    extract($ctag->CAttribute->Items, EXTR_SKIP);
    $line = $row;
    $orderby = strtolower($sort);
    if ($col == '') {
        $col = 1;
    }
    if (empty($imgwidth)) {
        $imgwidth = "";
    }
    if (empty($imgheight)) {
        $imgheight = "";
    }
    $innertext = trim($ctag->GetInnerText());
    if ($innertext == '') {
        $innertext = GetSysTemplets("part_arclistsg.htm");
    }
    if (empty($channelid) && isset($GLOBALS['envs']['channelid'])) {
        $channelid = $GLOBALS['envs']['channelid'];
    }
    if (empty($typeid) && !empty($envs['typeid'])) {
        $typeid = $envs['typeid'];
    }
    if (empty($typeid) && empty($channelid)) {
        return "No channel info!";
    }
    if (!empty($channelid)) {
        $gquery = "SELECT addtable,listfields FROM `#@__channeltype` WHERE id='{$channelid}' ";
    } else {
        $gquery = "SELECT ch.addtable,listfields FROM `#@__arctype` tp LEFT JOIN `#@__channeltype` ch ON ch.id=tp.channeltype WHERE id='{$typeid}'";
    }
    $row = $dsql->GetOne($gquery);
    $orwheres = array();
    $maintable = trim($row['addtable']);
    if ($maintable == '') {
        return "No addtable info!";
    }
    //列表调用字段
    $listarcs = array('aid', 'typeid');
    if (!empty($row['listfields'])) {
        $listfields = explode(',', $row['listfields']);
        foreach ($listfields as $v) {
            if (!in_array($v, $listarcs)) {
                $listarcs[] = $v;
            }
        }
    }
    $arclistquery = join(',', $listarcs);
    $arclistquery .= ",arc.aid AS id,arc.senddate AS pubdate";
    //按不同情况设定SQL条件 排序方式
    if ($idlist == '') {
        if ($orderby == 'near' && $cfg_keyword_like == 'N') {
            $keyword = '';
        }
        //时间限制(用于调用最近热门文章、热门评论之类)
        if ($subday > 0) {
            //这里的时间只能计算到天,否则缓存功能将无效
            $ntime = gmmktime(0, 0, 0, gmdate('m'), gmdate('d'), gmdate('Y'));
            $limitday = $ntime - $subday * 24 * 3600;
            $orwheres[] = " arc.senddate > {$limitday} ";
        }
        if ($flag != '') {
            $flags = explode(',', $flag);
            for ($i = 0; isset($flags[$i]); $i++) {
                $orwheres[] = " FIND_IN_SET('{$flags[$i]}',flag)>0 ";
            }
        }
        if (!empty($typeid)) {
            //指定了多个栏目时,不再获取子类的id
            if (preg_match('#,#', $typeid)) {
                $orwheres[] = " typeid IN ({$typeid}) ";
            } else {
                //处理交叉栏目
                $CrossID = '';
                if ((isset($envs['cross']) || $ctag->GetAtt('cross') == '1') && $ctag->GetAtt('nocross') != '1') {
                    $arr = $dsql->GetOne("SELECT `id`,`topid`,`cross`,`crossid`,`ispart`,`typename` FROM `#@__arctype` WHERE id='{$typeid}' ");
                    if ($arr['cross'] == 0 || $arr['cross'] == 2 && trim($arr['crossid'] == '')) {
                        $orwheres[] = ' typeid IN (' . GetSonIds($typeid) . ')';
                    } else {
                        $selquery = '';
                        if ($arr['cross'] == 1) {
                            $selquery = "SELECT id,topid FROM `#@__arctype` WHERE typename like '{$arr['typename']}' AND id<>'{$typeid}' AND topid<>'{$typeid}'  ";
                        } else {
                            $arr['crossid'] = preg_replace('#[^0-9,]#', '', trim($arr['crossid']));
                            if ($arr['crossid'] != '') {
                                $selquery = "SELECT id,topid FROM `#@__arctype` WHERE id IN('{$arr['crossid']}') AND id<>'{$typeid}' AND topid<>'{$typeid}'  ";
                            }
                        }
                        if ($selquery != '') {
                            $dsql->SetQuery($selquery);
                            $dsql->Execute();
                            while ($arr = $dsql->GetArray()) {
                                $CrossID .= $CrossID == '' ? $arr['id'] : ',' . $arr['id'];
                            }
                        }
                    }
                }
                if ($CrossID == '') {
                    $orwheres[] = ' typeid IN (' . GetSonIds($typeid) . ')';
                } else {
                    $orwheres[] = ' typeid IN (' . GetSonIds($typeid) . ',' . $CrossID . ')';
                }
            }
        }
        //频道ID
        if (!empty($channelid)) {
            $orwheres[] = " AND arc.channel = '{$channelid}' ";
        }
        //由于这个条件会导致缓存功能失去意义,因此取消
        //if($arcid!=0) $orwheres[] = " arc.id<>'$arcid' ";
    }
    //文档排序的方式
    $ordersql = '';
    if ($orderby == 'hot' || $orderby == 'click') {
        $ordersql = " ORDER BY arc.click {$orderway}";
    } else {
        if ($orderby == 'id') {
            $ordersql = "  ORDER BY arc.aid {$orderway}";
        } else {
            if ($orderby == 'near') {
                $ordersql = " ORDER BY ABS(arc.id - " . $arcid . ")";
            } else {
                if ($orderby == 'rand') {
                    $ordersql = "  ORDER BY rand()";
                } else {
                    $ordersql = " ORDER BY arc.aid {$orderway}";
                }
            }
        }
    }
    //limit条件
    $limit = trim(preg_replace('#limit#i', '', $limit));
    if ($limit != '') {
        $limitsql = " LIMIT {$limit} ";
    } else {
        $limitsql = " LIMIT 0,{$line} ";
    }
    $orwhere = '';
    if (isset($orwheres[0])) {
        $orwhere = join(' AND ', $orwheres);
        $orwhere = preg_replace("#^ AND#i", '', $orwhere);
        $orwhere = preg_replace("#AND[ ]{1,}AND#i", 'AND ', $orwhere);
    }
    if ($orwhere != '') {
        $orwhere = " WHERE {$orwhere} ";
    }
    $query = "SELECT {$arclistquery},tp.typedir,tp.typename,tp.isdefault,tp.defaultname,tp.namerule,\n        tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath\n        FROM `{$maintable}` arc LEFT JOIN `#@__arctype` tp ON arc.typeid=tp.id\n        {$orwhere} AND arc.arcrank > -1 {$ordersql} {$limitsql}";
    $md5hash = md5($query);
    $needcache = TRUE;
    if ($idlist != '') {
        $needcache = FALSE;
    } else {
        $idlist = GetArclistSgCache($md5hash);
        if ($idlist != '') {
            $needcache = FALSE;
        }
    }
    //指定了id或使用缓存中的id
    if ($idlist != '' && $_arclistEnv != 'index') {
        $query = "SELECT {$arclistquery},tp.typedir,tp.typename,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,\n            tp.moresite,tp.siteurl,tp.sitepath FROM `{$maintable}` arc LEFT JOIN `#@__arctype` tp ON arc.typeid=tp.id\n          WHERE arc.aid IN({$idlist}) {$ordersql} {$limitsql}";
    }
    $dsql->SetQuery($query);
    $dsql->Execute("al");
    $artlist = "";
    $dtp2 = new DedeTagParse();
    $dtp2->SetNameSpace("field", "[", "]");
    $dtp2->LoadString($innertext);
    $GLOBALS['autoindex'] = 0;
    $ids = array();
    for ($i = 0; $i < $line; $i++) {
        for ($j = 0; $j < $col; $j++) {
            if ($col > 1) {
                $artlist .= "    <div>\r\n";
            }
            if ($row = $dsql->GetArray("al")) {
                $ids[] = $row['aid'];
                $row['filename'] = $row['arcurl'] = GetFileUrl($row['id'], $row['typeid'], $row['senddate'], $row['title'], 1, 0, $row['namerule'], $row['typedir'], 0, '', $row['moresite'], $row['siteurl'], $row['sitepath']);
                $row['typeurl'] = GetTypeUrl($row['typeid'], $row['typedir'], $row['isdefault'], $row['defaultname'], $row['ispart'], $row['namerule2'], $row['moresite'], $row['siteurl'], $row['sitepath']);
                if ($row['litpic'] == '-' || $row['litpic'] == '') {
                    $row['litpic'] = $GLOBALS['cfg_cmspath'] . '/images/defaultpic.gif';
                }
                if (!preg_match("#^http:\\/\\/#i", $row['litpic']) && $GLOBALS['cfg_multi_site'] == 'Y') {
                    $row['litpic'] = $GLOBALS['cfg_mainsite'] . $row['litpic'];
                }
                $row['picname'] = $row['litpic'];
                $row['image'] = "<img src='" . $row['picname'] . "' border='0' width='{$imgwidth}' height='{$imgheight}' alt='" . preg_replace("#['><]#", "", $row['title']) . "' />";
                $row['imglink'] = "<a href='" . $row['filename'] . "'>" . $row['image'] . "</a>";
                $row['stime'] = GetDateMK($row['pubdate']);
                $row['typelink'] = "<a href='" . $row['typeurl'] . "'>" . $row['typename'] . "</a>";
                $row['fulltitle'] = $row['title'];
                $row['title'] = cn_substr($row['title'], $titlelen);
                $row['textlink'] = "<a href='" . $row['filename'] . "'>" . $row['title'] . "</a>";
                $row['plusurl'] = $row['phpurl'] = $GLOBALS['cfg_phpurl'];
                $row['memberurl'] = $GLOBALS['cfg_memberurl'];
                $row['templeturl'] = $GLOBALS['cfg_templeturl'];
                if (is_array($dtp2->CTags)) {
                    foreach ($dtp2->CTags as $k => $ctag) {
                        if ($ctag->GetName() == 'array') {
                            //传递整个数组,在runphp模式中有特殊作用
                            $dtp2->Assign($k, $row);
                        } else {
                            if (isset($row[$ctag->GetName()])) {
                                $dtp2->Assign($k, $row[$ctag->GetName()]);
                            } else {
                                $dtp2->Assign($k, '');
                            }
                        }
                    }
                    $GLOBALS['autoindex']++;
                }
                $artlist .= $dtp2->GetResult() . "\r\n";
            } else {
                $artlist .= '';
            }
            if ($col > 1) {
                $artlist .= "    </div>\r\n";
            }
        }
        //Loop Col
        if ($col > 1) {
            $i += $col - 1;
        }
    }
    //loop line
    $dsql->FreeResult("al");
    //保存ID缓存
    $idsstr = join(',', $ids);
    if ($idsstr != '' && $needcache && $cfg_index_cache > 0) {
        $mintime = time() - $cfg_index_cache * 3600;
        $inquery = "INSERT INTO `#@__arccache`(`md5hash`,`uptime`,`cachedata`) VALUES ('" . $md5hash . "', '" . time() . "', '{$idsstr}'); ";
        $dsql->ExecuteNoneQuery("DELETE FROM `#@__arccache` WHERE md5hash='" . $md5hash . "' or uptime < {$mintime} ");
        $dsql->ExecuteNoneQuery($inquery);
    }
    return $artlist;
}
Example #24
0
 /**
  *  统计列表里的记录
  *
  * @access    public
  * @param     string
  * @return    string
  */
 function CountRecord()
 {
     global $cfg_list_son, $cfg_need_typeid2, $cfg_cross_sectypeid;
     if (empty($cfg_need_typeid2)) {
         $cfg_need_typeid2 = 'N';
     }
     //统计数据库记录
     $this->TotalResult = -1;
     if (isset($GLOBALS['TotalResult'])) {
         $this->TotalResult = $GLOBALS['TotalResult'];
     }
     if (isset($GLOBALS['PageNo'])) {
         $this->PageNo = $GLOBALS['PageNo'];
     } else {
         $this->PageNo = 1;
     }
     $this->addSql = " arc.arcrank > -1 ";
     $typeid2like = " '%,{$this->TypeID},%' ";
     if ($cfg_list_son == 'N') {
         if ($cfg_need_typeid2 == 'N') {
             if ($this->CrossID == '') {
                 $this->addSql .= " AND (arc.typeid='" . $this->TypeID . "') ";
             } else {
                 $this->addSql .= " AND (arc.typeid in({$this->CrossID},{$this->TypeID})) ";
             }
         } else {
             if ($this->CrossID == '') {
                 $this->addSql .= " AND ( (arc.typeid='" . $this->TypeID . "') OR CONCAT(',', arc.typeid2, ',') LIKE {$typeid2like}) ";
             } else {
                 if ($cfg_cross_sectypeid == 'Y') {
                     $typeid2Clike = " '%,{$this->CrossID},%' ";
                     $this->addSql .= " AND ( arc.typeid IN({$this->CrossID},{$this->TypeID}) OR CONCAT(',', arc.typeid2, ',') LIKE {$typeid2like} OR CONCAT(',', arc.typeid2, ',') LIKE {$typeid2Clike})";
                 } else {
                     $this->addSql .= " AND ( arc.typeid IN({$this->CrossID},{$this->TypeID}) OR CONCAT(',', arc.typeid2, ',') LIKE {$typeid2like})";
                 }
             }
         }
     } else {
         $sonids = GetSonIds($this->TypeID, $this->Fields['channeltype']);
         if (!preg_match("/,/", $sonids)) {
             $sonidsCon = " arc.typeid = '{$sonids}' ";
         } else {
             $sonidsCon = " arc.typeid IN({$sonids}) ";
         }
         if ($cfg_need_typeid2 == 'N') {
             if ($this->CrossID == '') {
                 $this->addSql .= " AND ( {$sonidsCon} ) ";
             } else {
                 $this->addSql .= " AND ( arc.typeid IN ({$sonids},{$this->CrossID}) ) ";
             }
         } else {
             if ($this->CrossID == '') {
                 $this->addSql .= " AND ( {$sonidsCon} OR CONCAT(',', arc.typeid2, ',') like {$typeid2like}  ) ";
             } else {
                 if ($cfg_cross_sectypeid == 'Y') {
                     $typeid2Clike = " '%,{$this->CrossID},%' ";
                     $this->addSql .= " AND ( arc.typeid IN ({$sonids},{$this->CrossID}) OR CONCAT(',', arc.typeid2, ',') LIKE {$typeid2like} OR CONCAT(',', arc.typeid2, ',') LIKE {$typeid2Clike}) ";
                 } else {
                     $this->addSql .= " AND ( arc.typeid IN ({$sonids},{$this->CrossID}) OR CONCAT(',', arc.typeid2, ',') LIKE {$typeid2like}) ";
                 }
             }
         }
     }
     if ($this->TotalResult == -1) {
         $cquery = "SELECT COUNT(*) AS dd FROM `#@__arctiny` arc WHERE " . $this->addSql;
         $row = $this->dsql->GetOne($cquery);
         if (is_array($row)) {
             $this->TotalResult = $row['dd'];
         } else {
             $this->TotalResult = 0;
         }
     }
     //初始化列表模板,并统计页面总数
     $tempfile = $GLOBALS['cfg_basedir'] . $GLOBALS['cfg_templets_dir'] . "/" . $this->TypeLink->TypeInfos['templist'];
     $tempfile = str_replace("{tid}", $this->TypeID, $tempfile);
     $tempfile = str_replace("{cid}", $this->ChannelUnit->ChannelInfos['nid'], $tempfile);
     if (!file_exists($tempfile)) {
         $tempfile = $GLOBALS['cfg_basedir'] . $GLOBALS['cfg_templets_dir'] . "/" . $GLOBALS['cfg_df_style'] . "/list_default.htm";
     }
     if (!file_exists($tempfile) || !is_file($tempfile)) {
         echo "模板文件不存在,无法解析文档!";
         exit;
     }
     $this->dtp->LoadTemplate($tempfile);
     $ctag = $this->dtp->GetTag("page");
     if (!is_object($ctag)) {
         $ctag = $this->dtp->GetTag("list");
     }
     if (!is_object($ctag)) {
         $this->PageSize = 20;
     } else {
         if ($ctag->GetAtt("pagesize") != "") {
             $this->PageSize = $ctag->GetAtt("pagesize");
         } else {
             $this->PageSize = 20;
         }
     }
     $this->TotalPage = ceil($this->TotalResult / $this->PageSize);
 }
Example #25
0
    $flagsArr .= $frow['att'] == $flag ? "<option value='{$frow['att']}' selected>{$frow['attname']}</option>\r\n" : "<option value='{$frow['att']}'>{$frow['attname']}</option>\r\n";
}
if (!empty($userCatalogSql)) {
    $whereSql .= " And " . $userCatalogSql;
}
if (!empty($mid)) {
    $whereSql .= " And arc.mid = '{$mid}' ";
}
if ($keyword != '') {
    $whereSql .= " And ( CONCAT(arc.title,arc.writer) like '%{$keyword}%') ";
}
if ($flag != '') {
    $whereSql .= " And FIND_IN_SET('{$flag}', arc.flag) ";
}
if ($cid != 0) {
    $whereSql .= ' And arc.typeid in (' . GetSonIds($cid) . ')';
}
if ($arcrank != '') {
    $whereSql .= " And arc.arcrank = '{$arcrank}' ";
    $CheckUserSend = "<input type='button' class='coolbg np' onClick=\"location='catalog_do.php?cid=" . $cid . "&dopost=listArchives&gurl=content_list.php';\" value='所有文档' />";
} else {
    $CheckUserSend = "<input type='button' class='coolbg np' onClick=\"location='catalog_do.php?cid=" . $cid . "&dopost=listArchives&arcrank=-1&gurl=content_list.php';\" value='稿件审核' />";
}
$orderby = empty($orderby) ? 'id' : eregi_replace("[^a-z0-9]", "", $orderby);
$orderbyField = 'arc.' . $orderby;
$query = "Select arc.id,arc.typeid,arc.senddate,arc.flag,arc.ismake,\r\narc.channel,arc.arcrank,arc.click,arc.title,arc.color,arc.litpic,arc.pubdate,arc.mid,\r\ntp.typename,ch.typename as channelname,mb.uname as adminname\r\nfrom `{$maintable}` arc\r\nleft join `#@__arctype` tp on tp.id=arc.typeid\r\nleft join `#@__channeltype` ch on ch.id=arc.channel\r\nleft join `#@__member` mb on mb.mid=arc.mid\r\n{$whereSql}\r\norder by {$orderbyField} desc";
if (empty($f) || !ereg('form', $f)) {
    $f = 'form1.arcid1';
}
//初始化
$dlist = new DataListCP();