2017-10-31 6 views
0

Finishing meines Elgg-Plugin ist zu einigen Problemen gekommen, nach dem Fixieren meiner letzten Frage habe ich ein anderes gefunden. Apperently Ich missbräuchlich oder die Verwendung der Erstellungszeit Mißverständnis unteren und oberen Funktionen in ElggElgg und die Verwendung von Relationship_created_time_lower

Mit dem folgenden Code:

$monthSpan = (30 * 24 * 60 * 60); 
$startTime = time() - $monthSpan; 

$MemberDifference = elgg_get_entities_from_relationship(array(
    'relationship' => 'member', //get Members 
    'relationship_guid' => $group->guid, //get individual guid for use 
    'inverse_relationship' => true, 
    'type' => 'user', //users are returned 
    'limit' => 20, 
    'joins' => array("JOIN {$db_prefix}users_entity u ON e.guid=u.guid"), 
    'order_by' => 'u.name ASC', 
    'relationship_created_time_lower' => $startTime, //the furthest back it will reach 
    'relationship_created_time_upper' => time(), //possibly unneeded, but ensures the closest date is today 
    'count' => true, 
)); 

Mit dieser Funktion baute ich es auf meine Art und Weise alle Mitglieder zu bekommen In der zugehörigen Gruppe sollte es theoretisch alle Mitglieder aufnehmen, die sich innerhalb des letzten Monats bei dieser Gruppe registriert haben. Leider greift es weiterhin alle Mitglieder der Gruppe an, unabhängig von der Zeit, zu der sie sich angemeldet haben.

Hat jemand irgendwelche Informationen darüber, wo ich falsch gelaufen bin?

Antwort

0

Es stellte sich heraus, meine Version von Elgg war zu niedrig, sonst würde der gesamte Block von Code funktionieren. Arbeiten Elgg 1.8, musste ich den folgenden Code verwenden:

 $MemberDifference = elgg_get_entities_from_relationship_count(array(
      'relationship' => 'member', 
      'relationship_guid' => $Reports->guid, 
      'inverse_relationship' => true, 
      'type' => 'user', 
      'limit' => 20, 
      'count' => true, 
      'joins' => array("JOIN {$db_prefix}users_entity u ON e.guid=u.guid"), 
      'order_by' => 'u.name ASC', 
      'wheres' => array('r.time_created >=' . $startTime) 
     )); 

Das funktioniert perfekt und bringt genau das, was im suchen.