]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
check entity cache first, and remove limit (from Paweł Sroka's branch)
authorSteve Clay <steve@mrclay.org>
Sun, 25 Nov 2012 21:49:34 +0000 (16:49 -0500)
committerSteve Clay <steve@mrclay.org>
Sun, 25 Nov 2012 21:59:52 +0000 (16:59 -0500)
engine/lib/river.php

index 7bc3af9def0442107f0a1003433e63a638cbf6b0..133ef6de919e15f4a6299d94739ea1bd402d5107 100644 (file)
@@ -380,28 +380,35 @@ function _elgg_prefetch_river_entities(array $river_items) {
        // prefetch objects and subjects
        $guids = array();
        foreach ($river_items as $item) {
-               $guids[$item->object_guid] = true;
-               $guids[$item->subject_guid] = true;
-               if (count($guids) > 100) {
-                       break;
+               if ($item->subject_guid && !retrieve_cached_entity($item->subject_guid)) {
+                       $guids[$item->subject_guid] = true;
+               }
+               if ($item->object_guid && !retrieve_cached_entity($item->object_guid)) {
+                       $guids[$item->object_guid] = true;
                }
        }
+       // avoid creating oversized query
+       // @todo how to better handle this?
+       $guids = array_slice($guids, 0, 300, true);
        // return value unneeded, just priming cache
-       elgg_get_entities(array('guids' => array_keys($guids)));
+       elgg_get_entities(array(
+               'guids' => array_keys($guids),
+               'limit' => 0,
+       ));
 
        // prefetch object containers
        $guids = array();
        foreach ($river_items as $item) {
                $object = $item->getObjectEntity();
-               if ($object) {
+               if ($object->container_guid && !retrieve_cached_entity($object->container_guid)) {
                        $guids[$object->container_guid] = true;
                }
-               if (count($guids) > 100) {
-                       break;
-               }
        }
-       // return value unneeded, just priming cache
-       elgg_get_entities(array('guids' => array_keys($guids)));
+       $guids = array_slice($guids, 0, 300, true);
+       elgg_get_entities(array(
+               'guids' => array_keys($guids),
+               'limit' => 0,
+       ));
 }
 
 /**