E-mail
パスワード
次回から自動ログインする
パスワード紛失
新規登録
ホーム
|
フォーラム
|
ブログ
|
Wiki
|
用語集
|
マイアルバム
|
カレンダー
|
リンク
|
サイト内検索
|
|
新規
下位
一覧
検索
最新
ヘルプ
ページへ戻る
編集
複製
履歴
Note
リンク元
印刷
inc/xsns_d3pipes
- バックアップ No.1 を復元して編集
xpwiki
:
inc
/
xsns_d3pipes
- バックアップ No.1 を復元して編集
inc/xsns_d3pipes の編集
-- 雛形とするページ --
AutoAliasName
BracketName
FormattingRules
FrontPage
InterWiki
InterWikiName
InterWikiSandBox
InterWikiテクニカル
LeftMenu
MenuBar
PHP
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin/H-K
PukiWikiMod
QRコード
RecentPage
SandBox
TopList
TopPage
User
User/なーお
WikiEngines
WikiName
WikiWikiWeb
XOOPS
YukiWiki
ishii
nao-pon
readme
ゲストブック
コンテンツ
テーブルの拡張書式
ヘルプ
ヘルプ/Attachfile
ヘルプ/BBコード
ヘルプ/FAQ
ヘルプ/Plugin
ヘルプ/Plugin/A-D
ヘルプ/Plugin/E-G
ヘルプ/Plugin/H-K
ヘルプ/Plugin/L-N
ヘルプ/Plugin/O-R
ヘルプ/Plugin/S-U
ヘルプ/Plugin/V-Z
ヘルプ/wikiエディタ
ヘルプ/wikiヘルパー
ヘルプ/イベント通知
ヘルプ/フォーラム
ヘルプ/ブックマーク
ヘルプ/ページ作成
ヘルプ/画像添付法
モーションクリエイト
モーションクリエイト/セキュリティポリシー
公開Data集
公開Data集/Hint集
公開Data集/Hint集/ツール
公開Data集/Hint集/ツール/デバイスリスト
公開Data集/Hint集/ツール/ラベル
公開Data集/Hint集/ツール/ラベル/Ax(n)Cmd
公開Data集/Hint集/ツール/ラベル/Ax(n)R
公開Data集/Hint集/ツール/ラベル/Ax(n)St
公開Data集/Hint集/ツール/ラベル/Ax(n)W
公開Data集/Hint集/ツール/ラベル/Sn(n)Cmd
公開Data集/Hint集/ツール/ラベル/Sn(n)R
公開Data集/Hint集/ツール/ラベル/Sn(n)St
公開Data集/Hint集/ツール/ラベル/Sn(n)W
公開Data集/Hint集/ツール/ラベル/SysCmd
公開Data集/Hint集/ツール/ラベル/SysCmdAlt
公開Data集/Hint集/ツール/ラベル/SysSt
公開Data集/Hint集/ツール/ラベル/SysW
公開Data集/Hint集/ツール/ラベル/V(n)Cmd
公開Data集/Hint集/ツール/ラベル/V(n)R
公開Data集/Hint集/ツール/ラベル/V(n)St
公開Data集/Hint集/演算時間削減
公開Data集/Hint集/演算時間削減/分岐削減
公開Data集/Hint集/軸割付
公開Data集/モーションSFC演算時間
公開Data集/モーション演算周期
公開Data集/用語集
公開Data集/用語集/inc
公開Data集/用語集/inc/C言語コントローラ
公開Data集/用語集/inc/C言語コントローラ/関数処理時間
公開Data集/用語集/inc/サーボPGM
公開Data集/用語集/inc/サーボPGM/ABS
公開Data集/用語集/inc/サーボPGM/FEED
公開Data集/用語集/inc/サーボPGM/WAITON
公開Data集/用語集/inc/デバイス
公開Data集/用語集/inc/デバイス/DIN
公開Data集/用語集/inc/デバイス/DOUT
公開Data集/用語集/inc/デバイス/OUT
公開Data集/用語集/inc/デバイス/RST
公開Data集/用語集/inc/デバイス/SET
公開Data集/用語集/inc/デバイス/YNトランジション
公開Data集/用語集/inc/デバイス/位置決始動完了
公開Data集/用語集/inc/デバイス/位置決完了
公開Data集/用語集/inc/デバイス/始動受付
公開Data集/用語集/inc/デバイス/完了信号OFF指令
公開Data集/用語集/inc/一般
公開Data集/用語集/inc/一般/トルク制限
公開Data集/用語集/inc/一般/ドループ
公開Data集/用語集/inc/一般/モーション演算周期
公開Data集/用語集/inc/一般/演算時間
公開Data集/用語集/inc/仮想/メカ機構
公開Data集/用語集/inc/仮想/仮想モード
公開Data集/用語集/inc/仮想/仮想切替
利用規定
練習用ページ
詳細な入力項目を表示
ページタイトル
( 空白で自動設定 )
:
ページ並び順
( 0-9 小数可 標準:1 )
:
ページ別名
(複数は[
改行
]で区切る)
:
ページ内容:
* XSNSモジュールの新着トピックで新着コメントを取得したい [#t844a559] XSNSモジュールを使用させていただいています。 本格的に使い始めたところで、ちょっと問題に直面しまして解決させたので、役に立つ場面もあるかと思い、記事にしておきます。 ** 概要 [#if89ed49] - XSNSで新着トピブロックを使ったとき、ブロックに表示される新着リンクをクリックしても、トピックの頭の説明にジャンプします。mixiでもトピの頭に飛ぶので同様の仕様と言えなくもありませんが、これを最新記事にジャンプさせたいと思いました。 - XSNSのd3pipesブロックジョイントクラス「D3pipおesBlockXsnstopiclist.class.php」で取得するトピックの本文が、最新のコメントではなく、毎回トピ説明が同じように繰り返されます。 ここはやはり、「新着コメント」のほうの本文を通知してほしいものです。 ということで、原因を探してましたが、どうやら「(trust)/modules/blocks/block_functions.php」「function b_xsns_recent_topic_show」の中でDBから取得するSQLに問題がありそう。。 :roll: ** 問題の箇所 [#p67a389b] 「(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_comment'). " tc". " USING(c_commu_id))". " INNER JOIN ". $db->prefix($mydirname.'_c_commu_topic'). " t". " USING(c_commu_topic_id)". " GROUP BY tid". " ORDER BY max_r_datetime DESC"; }} なお、以下の説明は私も勉強しながら知った身なので言うことが間違っているかもしれません。 上のSQL文で、GROUP BY tidでトピックIDでグループ化して抽出、MAX(tc.number)、MAX(tc.r_datetime)で各最大値を取得する、までは良いのですが、そこに様々な他のフィールドを検索取得するような指定を並べてます。 この方法は、[[結果を保証されない方式であるとの情報:http://q.hatena.ne.jp/1213899211#a836594]]もありますし、最新のsubjectが得られそうで実際には得られていません。 そこで、自分なりに見やすいクエリ2つに分割しました。 #code(php,1-){{ function b_xsns_recent_topic_show($options) { global $xoopsUser, $xoopsUserIsAdmin; require_once dirname(dirname(__FILE__)).'/include/common_functions.php'; $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( 'Invalid dirname' ) ; $constpref = '_MB_'.strtoupper($mydirname); $block = array(); $perm_arr = array(); $own_uid = is_object($xoopsUser) ? $xoopsUser->getVar('uid') : -1; // naao from //各トピの最新コメントIDを取得 $sql = "SELECT c_commu_topic_id AS tid, MAX(c_commu_topic_comment_id) AS com_id FROM ". $db->prefix($mydirname.'_c_commu_topic_comment')." GROUP BY tid;"; $result = $db->query($sql); if(!$result || $db->getRowsNum($result) < 1){ return array(); } while ( $dbdat = $db->fetchArray($result)){ $com_num[] = $dbdat['com_id']; } $whr_num = "tc.c_commu_topic_comment_id IN (" .implode( "," , $com_num ). ") "; // 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_comment'). " tc". " USING(c_commu_id))". " INNER JOIN ". $db->prefix($mydirname.'_c_commu_topic'). " t". " 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.php'; while($row = $db->fetchArray($rs)) { if($item_limit <= $item_count){ break; } // check community permission if($row['cflag']==3 && !$xoopsUserIsAdmin && $row['cadmin']!=$own_uid && $row['csubadmin']!=$own_uid){ if($own_uid < 0){ continue; } $cid = intval($row['cid']); if(!isset($perm_arr[$cid])){ $perm_arr[$cid] = xsns_is_community_member($mydirname, $cid, $own_uid); } if(!$perm_arr[$cid]){ continue; } } //$date_arr = explode(' ', XsnsUtils::getUserDatetime($row['max_r_datetime']), 2); $date_arr = explode(' ', XsnsUtils::getUserDatetime($row['r_datetime']), 2); //naao 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'). $r_time_arr[2]. constant($constpref.'_DAY'); } $block['topic_list'][] = array( 'link' => XOOPS_URL.'/modules/'.$mydirname.'/?p=topic&tid='.intval($row['tid']).'#'.intval($row['comment_count']), //naao '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_datetime']), //naao 'time' => XsnsUtils::getUserTimestamp($row['r_datetime']), //naao 'uid' => intval($row['tcuid']), 'community' => array( 'link' => XOOPS_URL.'/modules/'.$mydirname.'/?cid='.intval($row['cid']), '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_recent_topic.html'); return $ret; } else{ return $block; } } }}
編集の要約:
Q & A 認証:
ページ更新時は次の質問にお答えください。(プレビュー時は必要ありません)
Q:
日本の首都は?(漢字で)
A:
お名前:
テキスト整形のルールを表示する
ぺージ情報
ぺージ名 :
inc/xsns_d3pipes
ページ別名 :
未設定
ページ作成 :
ゲスト
閲覧可
グループ :
すべての訪問者
ユーザー :
すべての訪問者
編集可
グループ :
すべての訪問者
ユーザー :
すべての訪問者
Counter: 0, today: 0, yesterday: 0
Wiki新着ページ
最新の10件
2019-05-18
モーションクリエイト
2014-09-20
TopPage
2013-03-30
公開Data集/Hint集/ツール/ラベル/Sn(n)W
公開Data集/Hint集/ツール/ラベル/Sn(n)R
公開Data集/Hint集/ツール/ラベル/Sn(n)St
公開Data集/Hint集/ツール/ラベル/Sn(n)Cmd
公開Data集/Hint集/ツール/ラベル/V(n)R
公開Data集/Hint集/ツール/ラベル/V(n)St
公開Data集/Hint集/ツール/ラベル/V(n)Cmd
公開Data集/Hint集/ツール/ラベル/Ax(n)W
メインメニュー
ホーム
新着情報
フォーラム
ブログ
Wiki
新規ページ作成
最新ページ一覧
全ページ一覧
ヘルプ
» 関連ページ
» 編集する
» 編集履歴
» バックアップ一覧
» 添付ファイル一覧
» リンク元一覧
用語集
アルバム