ログインしたユーザーがフラグを設定したアイテム(コンテンツ)の数を取得したい。
<?php
$flag = flag_get_flag('flag1');
print $flag->get_count($nid);
?>
上記の行には、コンテンツにフラグが付けられた合計回数が表示されます。ログインしたユーザーがフラグを設定したアイテムの数を取得するにはどうすればよいですか?ユーザーAがコンテンツ1、コンテンツ2、コンテンツ3にフラグを付けたとします。必要な出力は次のようになります。
[current:user]によってフラグが付けられたアイテムの数:3
ありがとう
これは通常のブロックで私のために動作します(ビューではありません):
<?php
global $user;
$uid = $user->uid; //Logged in user ID
$result = db_query("SELECT COUNT(*) FROM flagging WHERE uid=:uid and fid=2", array(':uid' => $uid))->fetchField(); //fid = ID your flag
print $result ." flagged items";
?>
これは動作するはずですが、テストされていません:
$result = db_select('flag_content', 'fc')
->fields('fc', array('content_id'))
->condition('content_type', $flag->content_type)
->condition('uid', $user->uid)
->condition('fid', $flag->fid)
->execute();
$flagged = $result->fetchCol();
return array('content_flagged_by_user' => $flagged);
Flagとルールの統合を試すこともできます
このフラグAPI関数を使用できます: flag_get_user_flags()
回数を取得したいとしますnode A
は、現在ログインしているユーザーによってフラグが付けられました:
$flag = flag_get_user_flags('node', 'NID_OF_A');