E-mail
パスワード
次回から自動ログインする
パスワード紛失
新規登録
ホーム
|
新着情報
|
研究室
|
掲示板
|
ぶろぐ
|
Wiki
|
お問合せ
|
アルバム
|
リンク
|
サイトマップ
|
|
一覧
検索
最新
ヘルプ
ページへ戻る
履歴
リンク元
印刷
inc/xsns_d3pipes
をテンプレートにして作成
xpwiki
:inc/xsns_d3pipes をテンプレートにして作成
開始行:
* XSNSモジュールのd3pipesジョイントで新着コメント本文を取...
XSNSモジュール-1.1.1を使用させていただいています。
本格的に使い始めたところで、ちょっと問題に直面しまして解...
** 概要
- XSNSで新着トピブロックを使ったとき、ブロックに表示され...
- XSNSのd3pipesブロックジョイントクラス「D3pipおesBlockXs...
ということで、原因を探してましたが、どうやら「(trust)/mod...
** 問題の箇所
以下の説明は私も勉強しながら知った身なので言うことが間...
下のSQL文で、GROUP BY tidでトピックIDでグループ化して抽...
この方法は、[[結果を保証されない方式であるとの情報:http...
「(trust)/modules/blocks/block_functions.php」の25行目付近
#code(php,25-){{
// topic search
$sql = "SELECT ".
"c.c_commu_id AS cid,".
"c.name AS cname,".
"c.uid_admin AS cadmin,".
"c.uid_sub_admin AS csubadmin,".
"c.public_flag AS cflag,".
"t.c_commu_topic_id AS tid,".
"t.name AS tname,".
"tc.body AS tcbody,".
"tc.uid AS tcuid,".
"MAX(tc.number) AS comment_count,".
"MAX(tc.r_datetime) AS max_r_datetime".
" FROM (". $db->prefix($mydirname.'_c_commu'). " c".
" INNER JOIN ". $db->prefix($mydirname.'_c_commu_topic...
" USING(c_commu_id))".
" INNER JOIN ". $db->prefix($mydirname.'_c_commu_topic...
" USING(c_commu_topic_id)".
" GROUP BY tid".
" ORDER BY max_r_datetime DESC";
}}
** 改善案
そこで、自分なりに見やすいクエリ2つに分割しました。
また、飛び先のURLのトピ内コメントアンカー番号にジャンプ...
(&font(Red){090525修正};:リンク先にページ開始番号が抜...
#code(php,1-){{
function b_xsns_recent_topic_show($options)
{
global $xoopsUser, $xoopsUserIsAdmin;
require_once dirname(dirname(__FILE__)).'/include/common...
$db =& Database::getInstance();
$myts =& MyTextSanitizer::getInstance();
$mydirname = empty($options[0]) ? 'xsns' : $options[0];
$item_limit = empty($options[1]) ? 5 : intval($options[1...
if( preg_match( '/[^0-9a-zA-Z_-]/' , $mydirname ) ) die(...
$constpref = '_MB_'.strtoupper($mydirname);
$block = array();
$perm_arr = array();
$own_uid = is_object($xoopsUser) ? $xoopsUser->getVar('u...
// naao from
//各トピの最新コメントIDを取得
$sql = "SELECT c_commu_topic_id AS tid, MAX(c_commu_topi...
$result = $db->query($sql);
if(!$result || $db->getRowsNum($result) < 1){
return array();
}
while ( $dbdat = $db->fetchArray($result)){
$com_num[] = intval($dbdat['com_id']);
}
$whr_num = "tc.c_commu_topic_comment_id IN (" .implode...
// topic search
$sql = "SELECT ".
"c.c_commu_id AS cid,".
"c.name AS cname,".
"c.uid_admin AS cadmin,".
"c.uid_sub_admin AS csubadmin,".
"c.public_flag AS cflag,".
"t.c_commu_topic_id AS tid,".
"t.name AS tname,".
"tc.body AS tcbody,".
"tc.uid AS tcuid,".
"tc.number AS comment_count,".
"tc.r_datetime AS r_datetime,".
"tc.c_commu_topic_comment_id ".
" FROM (". $db->prefix($mydirname.'_c_commu'). " c".
" INNER JOIN ". $db->prefix($mydirname.'_c_commu_topic...
" USING(c_commu_id))".
" INNER JOIN ". $db->prefix($mydirname.'_c_commu_topic...
" USING(c_commu_topic_id)".
" WHERE ".$whr_num.
" ORDER BY r_datetime DESC";
// naao to
$rs = $db->query($sql);
if(!$rs || $db->getRowsNum($rs) < 1){
return array();
}
$today = date('Y-m-d');
$item_count = 0;
require_once dirname(dirname(__FILE__)).'/userlib/utils....
while($row = $db->fetchArray($rs)) {
if($item_limit <= $item_count){
break;
}
// check community permission
if($row['cflag']==3 && !$xoopsUserIsAdmin && $row['cadm...
if($own_uid < 0){
continue;
}
$cid = intval($row['cid']);
if(!isset($perm_arr[$cid])){
$perm_arr[$cid] = xsns_is_community_member($mydirname...
}
if(!$perm_arr[$cid]){
continue;
}
}
//$date_arr = explode(' ', XsnsUtils::getUserDatetime($...
$date_arr = explode(' ', XsnsUtils::getUserDatetime($ro...
if(!is_array($date_arr)){
continue;
}
if($today==$date_arr[0]){
$r_time_arr = explode(':', $date_arr[1], 3);
if(!is_array($r_time_arr)){
continue;
}
$r_time = $r_time_arr[0].':'.$r_time_arr[1];
}
else{
$r_time_arr = explode('-', $date_arr[0], 3);
if(!is_array($r_time_arr)){
continue;
}
$r_time = $r_time_arr[1]. constant($constpref.'_MONTH'...
}
$comment_index = intval(intval($row['comment_count'])/...
$block['topic_list'][] = array(
'link' => XOOPS_URL.'/modules/'.$mydirname.'/?p=topic&...
'title' => $myts->htmlSpecialChars($row['tname']),
'body' => $myts->htmlSpecialChars($row['tcbody']),
'comment_count' => intval($row['comment_count']),
'datetime' => $r_time,
// 'time' => XsnsUtils::getUserTimestamp($row['max_r_da...
'time' => XsnsUtils::getUserTimestamp($row['r_datetime...
'uid' => intval($row['tcuid']),
'community' => array(
'link' => XOOPS_URL.'/modules/'.$mydirname.'/?cid='.i...
'title' => $myts->htmlSpecialChars($row['cname']),
),
);
$item_count++;
}
if(empty($options['disable_renderer'])){
require_once XOOPS_ROOT_PATH.'/class/template.php' ;
$tpl =& new XoopsTpl();
$tpl->assign('block', $block);
$ret['content'] = $tpl->fetch('db:'.$mydirname.'_block_...
return $ret;
}
else{
return $block;
}
}
}}
** その他
コメントを編集したときに、トピックの更新日時も更新され...
//'r_datetime' => $r_datetime, // naao 編集時に、トピ日...
ただ、これは現状の仕様のほうが適切なのかもしれず、何とも...
終了行:
* XSNSモジュールのd3pipesジョイントで新着コメント本文を取...
XSNSモジュール-1.1.1を使用させていただいています。
本格的に使い始めたところで、ちょっと問題に直面しまして解...
** 概要
- XSNSで新着トピブロックを使ったとき、ブロックに表示され...
- XSNSのd3pipesブロックジョイントクラス「D3pipおesBlockXs...
ということで、原因を探してましたが、どうやら「(trust)/mod...
** 問題の箇所
以下の説明は私も勉強しながら知った身なので言うことが間...
下のSQL文で、GROUP BY tidでトピックIDでグループ化して抽...
この方法は、[[結果を保証されない方式であるとの情報:http...
「(trust)/modules/blocks/block_functions.php」の25行目付近
#code(php,25-){{
// topic search
$sql = "SELECT ".
"c.c_commu_id AS cid,".
"c.name AS cname,".
"c.uid_admin AS cadmin,".
"c.uid_sub_admin AS csubadmin,".
"c.public_flag AS cflag,".
"t.c_commu_topic_id AS tid,".
"t.name AS tname,".
"tc.body AS tcbody,".
"tc.uid AS tcuid,".
"MAX(tc.number) AS comment_count,".
"MAX(tc.r_datetime) AS max_r_datetime".
" FROM (". $db->prefix($mydirname.'_c_commu'). " c".
" INNER JOIN ". $db->prefix($mydirname.'_c_commu_topic...
" USING(c_commu_id))".
" INNER JOIN ". $db->prefix($mydirname.'_c_commu_topic...
" USING(c_commu_topic_id)".
" GROUP BY tid".
" ORDER BY max_r_datetime DESC";
}}
** 改善案
そこで、自分なりに見やすいクエリ2つに分割しました。
また、飛び先のURLのトピ内コメントアンカー番号にジャンプ...
(&font(Red){090525修正};:リンク先にページ開始番号が抜...
#code(php,1-){{
function b_xsns_recent_topic_show($options)
{
global $xoopsUser, $xoopsUserIsAdmin;
require_once dirname(dirname(__FILE__)).'/include/common...
$db =& Database::getInstance();
$myts =& MyTextSanitizer::getInstance();
$mydirname = empty($options[0]) ? 'xsns' : $options[0];
$item_limit = empty($options[1]) ? 5 : intval($options[1...
if( preg_match( '/[^0-9a-zA-Z_-]/' , $mydirname ) ) die(...
$constpref = '_MB_'.strtoupper($mydirname);
$block = array();
$perm_arr = array();
$own_uid = is_object($xoopsUser) ? $xoopsUser->getVar('u...
// naao from
//各トピの最新コメントIDを取得
$sql = "SELECT c_commu_topic_id AS tid, MAX(c_commu_topi...
$result = $db->query($sql);
if(!$result || $db->getRowsNum($result) < 1){
return array();
}
while ( $dbdat = $db->fetchArray($result)){
$com_num[] = intval($dbdat['com_id']);
}
$whr_num = "tc.c_commu_topic_comment_id IN (" .implode...
// topic search
$sql = "SELECT ".
"c.c_commu_id AS cid,".
"c.name AS cname,".
"c.uid_admin AS cadmin,".
"c.uid_sub_admin AS csubadmin,".
"c.public_flag AS cflag,".
"t.c_commu_topic_id AS tid,".
"t.name AS tname,".
"tc.body AS tcbody,".
"tc.uid AS tcuid,".
"tc.number AS comment_count,".
"tc.r_datetime AS r_datetime,".
"tc.c_commu_topic_comment_id ".
" FROM (". $db->prefix($mydirname.'_c_commu'). " c".
" INNER JOIN ". $db->prefix($mydirname.'_c_commu_topic...
" USING(c_commu_id))".
" INNER JOIN ". $db->prefix($mydirname.'_c_commu_topic...
" USING(c_commu_topic_id)".
" WHERE ".$whr_num.
" ORDER BY r_datetime DESC";
// naao to
$rs = $db->query($sql);
if(!$rs || $db->getRowsNum($rs) < 1){
return array();
}
$today = date('Y-m-d');
$item_count = 0;
require_once dirname(dirname(__FILE__)).'/userlib/utils....
while($row = $db->fetchArray($rs)) {
if($item_limit <= $item_count){
break;
}
// check community permission
if($row['cflag']==3 && !$xoopsUserIsAdmin && $row['cadm...
if($own_uid < 0){
continue;
}
$cid = intval($row['cid']);
if(!isset($perm_arr[$cid])){
$perm_arr[$cid] = xsns_is_community_member($mydirname...
}
if(!$perm_arr[$cid]){
continue;
}
}
//$date_arr = explode(' ', XsnsUtils::getUserDatetime($...
$date_arr = explode(' ', XsnsUtils::getUserDatetime($ro...
if(!is_array($date_arr)){
continue;
}
if($today==$date_arr[0]){
$r_time_arr = explode(':', $date_arr[1], 3);
if(!is_array($r_time_arr)){
continue;
}
$r_time = $r_time_arr[0].':'.$r_time_arr[1];
}
else{
$r_time_arr = explode('-', $date_arr[0], 3);
if(!is_array($r_time_arr)){
continue;
}
$r_time = $r_time_arr[1]. constant($constpref.'_MONTH'...
}
$comment_index = intval(intval($row['comment_count'])/...
$block['topic_list'][] = array(
'link' => XOOPS_URL.'/modules/'.$mydirname.'/?p=topic&...
'title' => $myts->htmlSpecialChars($row['tname']),
'body' => $myts->htmlSpecialChars($row['tcbody']),
'comment_count' => intval($row['comment_count']),
'datetime' => $r_time,
// 'time' => XsnsUtils::getUserTimestamp($row['max_r_da...
'time' => XsnsUtils::getUserTimestamp($row['r_datetime...
'uid' => intval($row['tcuid']),
'community' => array(
'link' => XOOPS_URL.'/modules/'.$mydirname.'/?cid='.i...
'title' => $myts->htmlSpecialChars($row['cname']),
),
);
$item_count++;
}
if(empty($options['disable_renderer'])){
require_once XOOPS_ROOT_PATH.'/class/template.php' ;
$tpl =& new XoopsTpl();
$tpl->assign('block', $block);
$ret['content'] = $tpl->fetch('db:'.$mydirname.'_block_...
return $ret;
}
else{
return $block;
}
}
}}
** その他
コメントを編集したときに、トピックの更新日時も更新され...
//'r_datetime' => $r_datetime, // naao 編集時に、トピ日...
ただ、これは現状の仕様のほうが適切なのかもしれず、何とも...
ページ名:
ぺージ情報
ぺージ名 :
inc/xsns_d3pipes
ページ別名 :
未設定
ページ作成 :
なーお
閲覧可
グループ :
すべての訪問者
ユーザー :
すべての訪問者
編集可
グループ :
なし
ユーザー :
なし
Counter: 0, today: 0, yesterday: 0
Go Page Top
Powered by
XOOPS Cube
2.2 © 2001-2012
XOOPS Cube Project
, theme design by
BCOOL
ログイン
ユーザ名:
パスワード:
IDとパスワードを記憶
パスワード紛失
新規登録
メインメニュー
ホーム
なーお'nぶろぐ
フォーラム
なーお'n研究室
xpwiki
最新ページ一覧
全ページ一覧
ヘルプ
新着情報
マイアルバム
ラン記録
大会リスト
シューズリスト
画像マネージャ
マイフレンド
WEBリンク集