1

双方向ブロックを作成するためにブロック ユーザー プラグインをカスタマイズしようとしましたが、イベント マネージャーで lib/functions.php を微調整しようとすると問題が発生します。

私は基本的に、ブロックされたユーザーのリストを取得し、$entities_options クエリ配列を介してイベント リストが返される前に "NOT EXISTS" 句を挿入しようとしています。私は Elgg の DB クエリ側にまったく慣れていないので、これを正しく行うためにいくつかの助けを借りることができます。

// GET ARRAY OF BLOCKED USERS

$users = lee_framework_get_options(elgg_get_plugin_user_setting('blockuser_get', lee_loggedin_user_guid, 'blockuser'));
$blocked_user_array = array();
foreach($users as $user)

{
    $blocked_guid = get_user_by_username($user)->guid; 
    $blocked_user_array[] = $blocked_guid;

    $entities_options['owner_guids'] != $blocked_guid; // This is just to indicate what I am trying to achieve!

}

ページの残りの部分で使用されているように、JOINS / WHERES 句を使用する必要があると思いますが、正しいフィールド名を見つけて使用するのに苦労しています。例えば。

$entities_options['joins'][] = "JOIN " . elgg_get_config("dbprefix") . "entity_relationships e_ra ON e.guid = e_ra.guid_one";
$entities_options['wheres'][] = "(e_ra.guid_two IN (" . implode(", ", $friends_guids) . "))";

これに関するアドバイスは大歓迎です:)

4

2 に答える 2

1

Elgg 関係を使用してこれをモデル化したいようです。たとえば、UserA が UserB をブロックすると、1 つの関係になります。Elgg には、これらに基づいて作成および照会するための API があり、これにより、これが容易になります。

于 2013-02-28T14:58:41.070 に答える
0

興味のある方のために、これはイベントマネージャーの functions.php ファイルに配置された次のコードを使用して解決されました:

// GET ARRAY OF BLOCKED USERS

$blocked_users = lee_framework_get_options(elgg_get_plugin_user_setting('blockuser_get', lee_loggedin_user_guid, 'blockuser'));
$blocked_user_array = array();

foreach($blocked_users as $user) {

$blocked_user_array[] = get_user_by_username($user)->guid;

$entities_options['joins'][] = "JOIN " . elgg_get_config("dbprefix") . "metadata md on e.guid = md.entity_guid";
$entities_options['wheres'][] = "md.owner_guid != " . get_user_by_username($user)->guid;

}
于 2013-03-01T15:39:59.847 に答える