function getType($typeid)
 {
     $this->TypeLink = new TypeLink($typeid);
     $typeinfos = $this->TypeLink->TypeInfos;
     $typeinfos['typelink'] = $typeinfos['typeurl'] = GetOneTypeUrlA($this->TypeLink->TypeInfos);
     $typeinfos['position'] = Html2Text($this->TypeLink->GetPositionLink(TRUE));
     return $typeinfos;
 }
Beispiel #2
0
function lib_sonchannel(&$ctag, &$refObj)
{
    global $_sys_globals, $dsql;
    $attlist = "row|100,nosonmsg|,col|1";
    FillAttsDefault($ctag->CAttribute->Items, $attlist);
    extract($ctag->CAttribute->Items, EXTR_SKIP);
    $innertext = $ctag->GetInnerText();
    $typeid = $_sys_globals['typeid'];
    if (empty($typeid)) {
        return $ctag->GetAtt('nosonmsg');
    }
    $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,{$row}";
    //And id<>'$typeid'
    $dtp2 = new DedeTagParse();
    $dtp2->SetNameSpace("field", "[", "]");
    $dtp2->LoadSource($innertext);
    $dsql->SetQuery($sql);
    $dsql->Execute();
    $line = $row;
    $GLOBALS['autoindex'] = 0;
    $likeType = '';
    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['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 .= "    </dl>\r\n";
        }
    }
    //Loop for $i
    $dsql->FreeResult();
    return $likeType;
}
Beispiel #3
0
function cattreeListSon($id, &$revalue)
{
    global $dsql;
    $query = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath From `#@__arctype` where reid='{$id}' And ishidden<>1 ";
    $dsql->Execute($id, $query);
    $thisv = '';
    while ($row = $dsql->GetArray($id)) {
        $row['typelink'] = GetOneTypeUrlA($row);
        $thisv .= "\t<dl class='cattree'>\n";
        $thisv .= "\t<dt><a href='{$row['typelink']}'>{$row['typename']}</a></dt>\n";
        cattreeListSon($row['id'], $thisv);
        $thisv .= "\t</dl>\n";
    }
    if ($thisv != '') {
        $revalue .= "\t<dd>\n{$thisv}\t</dd>\n";
    }
}
Beispiel #4
0
function lib_type(&$ctag, &$refObj)
{
    global $dsql, $envs;
    $attlist = 'typeid|0';
    FillAttsDefault($ctag->CAttribute->Items, $attlist);
    extract($ctag->CAttribute->Items, EXTR_SKIP);
    $innertext = trim($ctag->GetInnerText());
    if ($typeid == 0) {
        $typeid = isset($refObj->TypeLink->TypeInfos['id']) ? $refObj->TypeLink->TypeInfos['id'] : $envs['typeid'];
    }
    if (empty($typeid)) {
        return '';
    }
    $row = $dsql->GetOne("SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath \r\n                          FROM `#@__arctype` WHERE id='{$typeid}' ");
    if (!is_array($row)) {
        return '';
    }
    if (trim($innertext) == '') {
        $innertext = GetSysTemplets("part_type_list.htm");
    }
    $dtp = new DedeTagParse();
    $dtp->SetNameSpace('field', '[', ']');
    $dtp->LoadSource($innertext);
    if (!is_array($dtp->CTags)) {
        unset($dtp);
        return '';
    } else {
        $row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row);
        foreach ($dtp->CTags as $tagid => $ctag) {
            if (isset($row[$ctag->GetName()])) {
                $dtp->Assign($tagid, $row[$ctag->GetName()]);
            }
        }
        $revalue = $dtp->GetResult();
        unset($dtp);
        return $revalue;
    }
}
Beispiel #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;
}
Beispiel #6
0
function lib_channelartlist(&$ctag, &$refObj)
{
    global $dsql, $envs, $_sys_globals, $cfg_tui;
    //处理标记属性、innertext
    $attlist = 'typeid|0,row|20,showhide|no,cacheid|';
    FillAttsDefault($ctag->CAttribute->Items, $attlist);
    extract($ctag->CAttribute->Items, EXTR_SKIP);
    $innertext = trim($ctag->GetInnerText());
    $showhideArr = array('yes' => 0, 'no' => 1, 'both' => -1);
    $hideflag = $showhideArr[$showhide];
    $artlist = '';
    //读取固定的缓存块
    $cacheid = trim($cacheid);
    if ($cacheid != '') {
        $artlist = GetCacheBlock($cacheid);
        if ($artlist != '') {
            return $artlist;
        }
    }
    if (empty($typeid)) {
        $typeid = !empty($refObj->TypeLink->TypeInfos['id']) ? $refObj->TypeLink->TypeInfos['id'] : 0;
    }
    if ($innertext == '') {
        $innertext = GetSysTemplets('part_channelartlist.htm');
    }
    $totalnum = $row;
    if (empty($totalnum)) {
        $totalnum = 20;
    }
    //获得类别ID总数的信息
    $typeids = array();
    if ($typeid == 0) {
        $tpsql = " reid<>0 AND ispart<>2 AND ishidden<>{$hideflag} AND channeltype>0 ";
    } else {
        if ($typeid == '-1') {
            $tpsql = " reid=0 and ishidden<>{$hideflag} AND channeltype>0 ";
        } else {
            if ($typeid == '-9999999') {
                $tpsql = " id={$cfg_tui} AND ispart<>2 AND ishidden<>{$hideflag} ";
            } else {
                if (!preg_match('#,#', $typeid) && $typeid > 0) {
                    $tpsql = " reid='{$typeid}' AND ispart<>2 AND ishidden<>{$hideflag} ";
                } else {
                    if ($typeid < 0) {
                        $typeid = 0 - $typeid;
                        $tpsql = " id={$typeid} AND ispart<>2 AND ishidden<>{$hideflag} ";
                    } else {
                        $tpsql = " reid IN({$typeid}) AND ispart<>2 AND ishidden<>{$hideflag} ";
                    }
                }
            }
        }
    }
    if ($orderby == '') {
        $orderbysql = "ORDER BY id";
    } else {
        $orderbysql = "ORDER BY {$orderby}";
    }
    if ($orderway == '') {
        $orderwaysql = "desc";
    } else {
        $orderwaysql = "{$orderway}";
    }
    $dsql->SetQuery("SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath \r\n                                            FROM `#@__arctype` WHERE {$tpsql} {$orderbysql} {$orderwaysql} LIMIT {$totalnum}");
    $dsql->Execute();
    while ($row = $dsql->GetArray()) {
        $typeids[] = $row;
    }
    if (!isset($typeids[0])) {
        return '';
    }
    $GLOBALS['itemindex'] = 0;
    $GLOBALS['itemparity'] = 1;
    for ($i = 0; isset($typeids[$i]); $i++) {
        $GLOBALS['itemindex']++;
        $pv = new PartView($typeids[$i]['id']);
        $pv->Fields['typeurl'] = GetOneTypeUrlA($typeids[$i]);
        $pv->SetTemplet($innertext, 'string');
        $artlist .= $pv->GetResult();
        $GLOBALS['itemparity'] = $GLOBALS['itemparity'] == 1 ? 2 : 1;
    }
    //注销环境变量,以防止后续调用中被使用
    $GLOBALS['envs']['typeid'] = $_sys_globals['typeid'];
    $GLOBALS['envs']['reid'] = '';
    if ($cacheid != '') {
        WriteCacheBlock($cacheid, $artlist);
    }
    return $artlist;
}
Beispiel #7
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;
}
function lib_channelartlist(&$ctag, &$refObj)
{
    global $dsql, $envs, $_sys_globals;
    //处理标记属性、innertext
    $attlist = 'typeid|0,row|20,cacheid|';
    FillAttsDefault($ctag->CAttribute->Items, $attlist);
    extract($ctag->CAttribute->Items, EXTR_SKIP);
    $innertext = trim($ctag->GetInnerText());
    $artlist = '';
    //读取固定的缓存块
    $cacheid = trim($cacheid);
    if ($cacheid != '') {
        $artlist = GetCacheBlock($cacheid);
        if ($artlist != '') {
            return $artlist;
        }
    }
    if (empty($typeid)) {
        $typeid = !empty($refObj->TypeLink->TypeInfos['id']) ? $refObj->TypeLink->TypeInfos['id'] : 0;
    }
    if ($innertext == '') {
        $innertext = GetSysTemplets('part_channelartlist.htm');
    }
    $totalnum = $row;
    if (empty($totalnum)) {
        $totalnum = 20;
    }
    //获得类别ID总数的信息
    $typeids = array();
    if ($typeid == 0 || $typeid == 'top') {
        $tpsql = " reid=0 AND ispart<>2 AND ishidden<>1 AND channeltype>0 ";
    } else {
        if (!preg_match('#,#', $typeid)) {
            $tpsql = " reid='{$typeid}' AND ispart<>2 AND ishidden<>1 ";
        } else {
            $tpsql = " id IN({$typeid}) AND ispart<>2 AND ishidden<>1 ";
        }
    }
    $dsql->SetQuery("SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath \n                                            FROM `#@__arctype` WHERE {$tpsql} ORDER BY substring_index( '{$typeid}',id,1) limit {$totalnum}");
    $dsql->Execute();
    while ($row = $dsql->GetArray()) {
        $typeids[] = $row;
    }
    if (!isset($typeids[0])) {
        return '';
    }
    $GLOBALS['itemindex'] = 0;
    $GLOBALS['itemparity'] = 1;
    for ($i = 0; isset($typeids[$i]); $i++) {
        $GLOBALS['itemindex']++;
        $pv = new PartView($typeids[$i]['id']);
        $pv->Fields['typeurl'] = GetOneTypeUrlA($typeids[$i]);
        if ($typeids[$i]['id'] == $refObj->TypeLink->TypeInfos['id'] || $typeids[$i]['id'] == $refObj->TypeLink->TypeInfos['topid']) {
            $pv->Fields['currentstyle'] = $currentstyle ? $currentstyle : 'current';
        } else {
            $pv->Fields['currentstyle'] = '';
        }
        $pv->SetTemplet($innertext, 'string');
        $artlist .= $pv->GetResult();
        $GLOBALS['itemparity'] = $GLOBALS['itemparity'] == 1 ? 2 : 1;
    }
    //注销环境变量,以防止后续调用中被使用
    $GLOBALS['envs']['typeid'] = $_sys_globals['typeid'];
    $GLOBALS['envs']['reid'] = '';
    if ($cacheid != '') {
        WriteCacheBlock($cacheid, $artlist);
    }
    return $artlist;
}