Myページ
ホーム
コミュニティの人々
ソフトウェア
技術紹介
適用分野
Tyzohとは
ご意見お問い合わせ

V.S.A. III

[Secure-SBM:023] コメントの一覧表示

こんにちは,五十嵐です.ブックマークを登録しているユーザとコメントの一覧を作成します.

ユーザの一覧は "/listbookmarkusers" で呼び出します.ブックマークの ID を bookmarkid とすると,"/listbookmarkusers/bookmarkid" という具合に呼び出します.

指定されたブックマークをテーブルから検索し,URL とタイトルを取得します.
    if( my $bdb = $c->model('SecureSBMDB::Bookmark')->find(
                        {
                            bookmark_id => $bookmarkid
                        }       
                )
    ){              
        my $bookmark = {
            url => $bdb->bookmark_uri,
            title => $bdb->bookmark_title
        };
       ...


ブックマークしているユーザを検索し,プロフィールの設定から,ニックネームを公開しているかどうかを確認します.ニックネームが公開されていればニックネームを,そうでなければユーザ ID の番号を変数 $nickname に格納します.コメントも一旦変数 $comment に格納しておきます.
        my %user;
        my @users;
        my $usersnum = 0;
        foreach my $ubdb ($bdb->user_bookmarks->search(
                {
                    -or     =>  \@ORquery,
                    -and    =>  \@ANDquery,
                },
                {
                    join    =>  [qw/
                        user_bookmark_roles
                    /],
                    order_by    =>  'user_bookmark_ts DESC',
                }
                )
        ){
            my $userid = $ubdb->user_id;
            my $profile = $ubdb->user->user_profiles->find({user_id => $userid});

            my $nickname;
            if( $profile->user_profile_nickname_publish == 1 ){
                $nickname = '<ul class="noId"><li>'
                    . $profile->user_profile_nickname
                    . '</li></ul>';
            }else{
                $nickname = '<ul class="onlyId"><li>'
                    . $profile->user_id
                    . '</li></ul>';
            }

            my $comment = $ubdb->user_bookmark_comment;
       ...
    }
発行したい SQL はわかっているのに search() でどのように書くのか,というところでちょっと苦労しました.ロールとの関連性を記述している user_bookmark_roles の指定の仕方.ここが今回のポイントです.

話が前後しますが,ブックマークが public (role_id が 2 番)か,public ではない場合,閲覧しようとしているユーザのロールとを設定し,上の @ORquery に設定しておきます.
    my @ORquery = ({'user_bookmark_roles.role_id' => 2});
    if( $c->user_exists ){
        my $udb = $c->stash->{user};
        foreach my $ur ($udb->user_roles->all){
            push( @ORquery, {'user_bookmark_roles.role_id' => $ur->role_id} );
        }
    }

最後に,一覧するものがあれば stash に格納してテンプレート (View) に渡します.

if( defined $bookmark && $#users > 0 ){ 
    $c->stash->{bookmark} = $bookmark; 
    $c->stash->{publishusers} = \@users; 
    $c->stash->{usersnum} = $#users; 
} 

あとは,テンプレート側で体裁を整えれば終了です.

2007/06/22 記

参考:


Keyword: Perl Catalyst Secure-SBM SSBM セキュア・ソーシャル・ブックマーク

 

カテゴリ:SBM , 開発日記

タグ:

いかちょー (2007-07-18 10:01) | コメント(0)| トラックバック(3)

トラックバック(3)

トラックバックURL:

Abilify schizoaffective disorder. - Abilify and diabetes. (2010年11月15日 15:03)

Abilify. 続きを読む

Levaquin. - Levaquin side effects. (2010年11月24日 10:37)

Levaquin kidneys. Levaquin intravenously. Levaquin. 続きを読む

Abilify lawsuit. - Aripiprazole abilify research neurotransmitter net. (2010年12月17日 11:59)

Abilify opinions. Abilify. Abilify medicine. 続きを読む

コメント

コメントを投稿

名前

電子メール

URL

ログイン情報を記憶

コメント

プロフィール

いかちょー

いかちょーこと五十嵐智です。
情報セキュリティ分野に興味があります。
一応、CISSP ホルダー。

SF者です。どうぞよろしく。

プロフィール詳細 (Google プロフィール)

RSSフィード

コミュニティの人々 | ソフトウェア | 技術紹介 | 適用分野 | Tyzohとは | ご意見お問い合わせ

Copyright (C) 2004-2011 Nihon Unisys, Ltd. All Rights Reserved.
Powered by Movable Type Open Source