1

我一直在尝试自定义块用户插件以创建 2 路块,但是,在尝试调整事件管理器中的 lib/functions.php 时遇到了问题。

我基本上只是获取被阻止用户的列表,然后尝试在通过 $entities_options 查询数组返回事件列表之前放入“NOT EXISTS”子句。我对 Elgg 中的数据库查询方面非常陌生,因此可以使用一些帮助来解决这个问题。

// 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 将是一种关系。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 回答