2013-01-26 3 views
1

J'ai essayé de personnaliser le plugin block utilisateur afin de créer un bloc bidirectionnel, cependant, je rencontre un problème lorsque j'essaie de modifier le fichier lib/functions.php dans l'événement directeur. Je reçois essentiellement la liste des utilisateurs bloqués, puis j'essaie de mettre une clause "NOT EXISTS" avant que la liste d'événements ne soit renvoyée via le tableau de requêtes $ entities_options. Je suis farily nouveau à l'interrogation de DB côté des choses dans Elgg ainsi pourrait utiliser une aide pour obtenir ce droit.Essayer de personnaliser une requête de base de données 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! 

} 

Je crois que je dois utiliser les clauses/oùS SE JOINT, tel qu'il est utilisé dans le reste de la page, mais je suis mal à trouver et à utiliser les noms de champs corrects. par exemple.

$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) . "))"; 

Tous les conseils sur ce serait très apprécié :)

Répondre

0

Pour toute personne intéressée, cela a été résolu en utilisant le code suivant placé dans le fichier functions.php du gestionnaire d'événements:

// 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; 

} 
1

On dirait que vous voulez modéliser cela en utilisant les relations Elgg. Par exemple, UserA bloque UserB serait une relation. Elgg a une API pour créer et interroger en fonction de ceux qui devraient rendre cela plus facile.

Questions connexes