public function loadLocationsByContent($contentId, $rootLocationId = null) { if ($rootLocationId) { $cache = $this->cache->getItem('content', 'locations', $contentId, 'root', $rootLocationId); } else { $cache = $this->cache->getItem('content', 'locations', $contentId); } $locationIds = $cache->get(); if ($cache->isMiss()) { $this->logger->logCall(__METHOD__, array('content' => $contentId, 'root' => $rootLocationId)); $locations = $this->persistenceHandler->locationHandler()->loadLocationsByContent($contentId, $rootLocationId); $locationIds = array(); foreach ($locations as $location) { $locationIds[] = $location->id; } $cache->set($locationIds)->save(); } else { $locations = array(); foreach ($locationIds as $locationId) { $locations[] = $this->load($locationId); } } return $locations; }