groupthread.lib.php
2.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php if(!defined('DEDEINC')) exit('Request Error!');
/**
* 圈子主题调用标签
*
* @version $Id: groupthread.lib.php 1 9:29 2010年7月6日Z tianya $
* @package DedeCMS.Taglib
* @copyright Copyright (c) 2007 - 2010, DesDev, Inc.
* @license http://help.dedecms.com/usersguide/license.html
* @link http://www.dedecms.com
*/
/*>>dede>>
<name>圈子主题</name>
<type>全局标记</type>
<for>V55,V56,V57</for>
<description>圈子主题调用标签</description>
<demo>
{dede:groupthread gid='0' orderby='dateline' orderway='desc' row='12' titlelen='30'}
<li>
<a href='[field:groupurl/]' target="_blank">[[field:groupname function="cn_substr(@me,10)"/]]</a>
<a href="[field:url/]" title="[field:subject/]" target="_blank">[field:subject/]</a>([field:lastpost function="GetDateMk('@me')"/])
</li>
{/dede:groupthread}
</demo>
<attributes>
<iterm>gid:圈子id,默认为全部</iterm>
<iterm>orderby:排序,默认为时间</iterm>
<iterm>orderway:排序方向,默认是最新主题在前</iterm>
<iterm>row:记录数</iterm>
<iterm>titlelen:主题标题(subject)最大长度</iterm>
</attributes>
>>dede>>*/
function lib_groupthread(&$ctag,&$refObj)
{
global $dsql, $envs, $cfg_dbprefix, $cfg_cmsurl;
//属性处理
$attlist="gid|0,orderby|dateline,orderway|desc,row|12,titlelen|30";
FillAttsDefault($ctag->CAttribute->Items,$attlist);
extract($ctag->CAttribute->Items, EXTR_SKIP);
if( !$dsql->IsTable("{$cfg_dbprefix}groups") ) return '没安装圈子模块';
if(!preg_match("#\/$#", $cfg_cmsurl)) $cfg_group_url = $cfg_cmsurl."/group";
else $cfg_group_url = $cfg_cmsurl."group";
$innertext = $ctag->GetInnerText();
if(trim($innertext)=='') $innertext = GetSysTemplets('groupthreads.htm');
$WhereSql = " WHERE t.closed=0 ";
$orderby = 't.'.$orderby;
if($gid > 0) $WhereSql .= " AND t.gid='$gid' ";
$query = "SELECT t.subject,t.gid,t.tid,t.lastpost,g.groupname FROM `#@__group_threads` t
LEFT JOIN `#@__groups` g ON g.groupid=t.gid
$WhereSql ORDER BY $orderby $orderway LIMIT 0,{$row}";
$dsql->SetQuery($query);
$dsql->Execute();
$ctp = new DedeTagParse();
$ctp->SetNameSpace('field', '[', ']');
if(!isset($list)) $list = '';
while($rs = $dsql->GetArray())
{
$ctp->LoadSource($innertext);
$rs['subject'] = cn_substr($rs['subject'], $titlelen);
$rs['url'] = $cfg_group_url."/viewthread.php?id={$rs['gid']}&tid={$rs['tid']}";
$rs['groupurl'] = $cfg_group_url."/group.php?id={$rs['gid']}";
foreach($ctp->CTags as $tagid=>$ctag) {
if(!empty($rs[strtolower($ctag->GetName())]))
{
$ctp->Assign($tagid, $rs[$ctag->GetName()]);
}
}
$list .= $ctp->GetResult();
}
return $list;
}