web-dev-qa-db-ja.com

ログインしたユーザーがフラグを立てたコンテンツの数を数える

ログインしたユーザーがフラグを設定したアイテム(コンテンツ)の数を取得したい。

<?php
  $flag = flag_get_flag('flag1');
  print $flag->get_count($nid);
?>

上記の行には、コンテンツにフラグが付けられた合計回数が表示されます。ログインしたユーザーがフラグを設定したアイテムの数を取得するにはどうすればよいですか?ユーザーAがコンテンツ1、コンテンツ2、コンテンツ3にフラグを付けたとします。必要な出力は次のようになります。

[current:user]によってフラグが付けられたアイテムの数:3

ありがとう

3
why

これは通常のブロックで私のために動作します(ビューではありません):

<?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";
?>
3
Gynekolog

これは動作するはずですが、テストされていません:

$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とルールの統合を試すこともできます

1
Pan Chrono

このフラグAPI関数を使用できます: flag_get_user_flags()

回数を取得したいとしますnode Aは、現在ログインしているユーザーによってフラグが付けられました:

$flag = flag_get_user_flags('node', 'NID_OF_A');
0
subhojit777