private function repeaterHydrate($record, $app)
{
$contentTypeName = $record->contenttype['slug'];
$contentType = $app['config']->get('contenttypes/' . $contentTypeName);
$values = $this->localeValues;
$localeSlug = $app['translate.slug'];
if (isset($values[$localeSlug . 'data'])) {
$localeData = json_decode($values[$localeSlug . 'data'], true);
foreach ($localeData as $key => $value) {
if ($key === 'templatefields') {
$templateFields = $app['config']->get('theme/templatefields/' . $record['template'] . '/fields');
foreach ($templateFields as $key => $field) {
if ($field['type'] === 'repeater') {
$localeData = json_decode($value[$key], true);
$originalMapping = null;
$originalMapping[$key]['fields'] = $templateFields[$key]['fields'];
$originalMapping[$key]['type'] = 'repeater';
$mapping = $app['storage.metadata']->getRepeaterMapping($originalMapping);
$repeater = new RepeatingFieldCollection($app['storage'], $mapping);
$repeater->setName($key);
foreach ($localeData as $subValue) {
$repeater->addFromArray($subValue);
}
$record['templatefields'][$key] = $repeater;
}
}
}
if (isset($contentType['fields'][$key]) && $contentType['fields'][$key]['type'] === 'repeater') {
/**
* Hackish fix until #5533 gets fixed, after that the
* following four (4) lines can be replaced with
* "$record[$key]->clear();"
*/
$originalMapping[$key]['fields'] = $contentType['fields'][$key]['fields'];
$originalMapping[$key]['type'] = 'repeater';
$mapping = $app['storage.metadata']->getRepeaterMapping($originalMapping);
$record[$key] = new RepeatingFieldCollection($app['storage'], $mapping);
foreach ($value as $subValue) {
$record[$key]->addFromArray($subValue);
}
}
}
}
}