public function loadAllGroups($offset = 0, $limit = -1)
{
$cache = $this->cache->getItem('objectstategroup', 'all');
$groupIds = $cache->get();
if ($cache->isMiss()) {
$this->logger->logCall(__METHOD__, array('offset' => $offset, 'limit' => $limit));
$stateGroups = $this->persistenceHandler->objectStateHandler()->loadAllGroups(0, -1);
$groupIds = array();
foreach ($stateGroups as $objectStateGroup) {
$groupCache = $this->cache->getItem('objectstategroup', $objectStateGroup->id);
$groupCache->set($objectStateGroup)->save();
$groupIds[] = $objectStateGroup->id;
}
$cache->set($groupIds)->save();
$stateGroups = array_slice($stateGroups, $offset, $limit > -1 ?: null);
} else {
$groupIds = array_slice($groupIds, $offset, $limit > -1 ?: null);
$stateGroups = array();
foreach ($groupIds as $groupId) {
$stateGroups[] = $this->loadGroup($groupId);
}
}
return $stateGroups;
}