12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- <?php
- namespace Elgg;
- class EntityPreloader {
-
- public function preload($objects, array $guid_properties) {
- $guids = $this->getGuidsToLoad($objects, $guid_properties);
-
-
- if (count($guids) > 1) {
- call_user_func($this->_callable_entity_loader, array(
- 'guids' => $guids,
- ));
- }
- }
-
- protected function getGuidsToLoad($objects, array $guid_properties) {
- if (!is_array($objects) || count($objects) < 2) {
- return array();
- }
- $preload_guids = array();
- foreach ($objects as $object) {
- if (is_object($object)) {
- foreach ($guid_properties as $property) {
- if (empty($object->{$property})) {
- continue;
- }
- $guid = $object->{$property};
- if ($guid && !call_user_func($this->_callable_cache_checker, $guid)) {
- $preload_guids[] = $guid;
- }
- }
- }
- }
- return array_unique($preload_guids);
- }
-
- public $_callable_cache_checker = '_elgg_retrieve_cached_entity';
-
- public $_callable_entity_loader = 'elgg_get_entities';
- }
|