XOOPSメモ:d3forumでフォーラム毎の承認待ち件数
d3forumモジュールの承認待ち件数取得プラグインwaiting.plugin.php (XOOPS_TRUST_PATHのmodules/d3forum/include内。拡張承認待ちコンテンツwaitingモジュールから呼び出される)。XOOPSを初めてもうすぐ3週間、d3forumと格闘し敗れ再びインストールして2日。試行錯誤の末作成。なくなったら嫌だからメモ。
データ件数が少ない時しかだめだろうなぁ。
- forumタイトルを別の手段で表示するなら2つめのJOINは不要
- forumリストで回してSQLを発行する方が良いと思う
……だけどよくわからないからSQL1回でごりおししました。ご了承ください。
ダウンロード waiting.plugin.php (1.1K)
<?php
function b_waiting_d3forum( $mydirname )
{
$db =& Database::getInstance();
$ret = array();
$sql = "SELECT ".$db->prefix($mydirname."_topics").".forum_id, forum_title, ".
" COUNT( ".$db->prefix($mydirname."_topics").".forum_id ) AS waiting_count ,MIN( post_id ) AS post_id".
" FROM (".$db->prefix($mydirname."_posts")." LEFT JOIN ".$db->prefix($mydirname."_topics").
" ON ".$db->prefix($mydirname."_posts").".topic_id = ".$db->prefix($mydirname."_topics").".topic_id)".
" INNER JOIN ".$db->prefix($mydirname."_forums").
" ON ".$db->prefix($mydirname."_topics").".forum_id = ".$db->prefix($mydirname."_forums").".forum_id".
" WHERE ".$db->prefix($mydirname."_posts").".approval = 0".
" GROUP BY ".$db->prefix($mydirname."_topics").".forum_id";
if ($recs = $db->query($sql)){
while ($result = $db->fetchArray($recs)){
$ret[] = array(
'adminlink' => XOOPS_URL.'/modules/'.$mydirname.'/index.php?post_id='.intval($result['post_id']) ,
'pendingnum' => intval($result['waiting_count']) ,
'lang_linkname' => $result['forum_title'] //._PI_WAITING_WAITINGS ,
) ;
}
}
return $ret ;
}
?>
| 固定リンク