/** * Builds the assign element info from JSON. * * @param AppData $data the export data * * @return array Assign element info */ public function getImportInfo(AppData $data) { $info = array(); $application = $this->app->zoo->getApplication(); // get frontpage count $info['frontpage_count'] = (bool) $data->find('categories._root'); // get category count $info['category_count'] = max(array(count($data->get('categories', array())) - (int) $info['frontpage_count'], 0)); // get types $type_elements = array(); foreach ($application->getTypes() as $type) { foreach ($type->getElements() as $element) { $type_elements[$type->id][$element->getElementType()][] = $element; } } // get item types $info['items'] = array(); foreach ($data->get('items', array()) as $alias => $item) { $group = $item['group']; if (!isset($info['items'][$group])) { $info['items'][$group]['item_count'] = 0; $info['items'][$group]['elements'] = array(); if (isset($item['elements'])) { foreach ($item['elements'] as $alias => $element) { if (!isset($info['items'][$group]['elements'][$alias])) { // add element type $info['items'][$group]['elements'][$alias]['type'] = ucfirst($element['type']); // add element name $info['items'][$group]['elements'][$alias]['name'] = $element['name']; // add elements to assign too $info['items'][$group]['elements'][$alias]['assign'] = array(); foreach ($type_elements as $type => $assign_elements) { if (isset($assign_elements[$element['type']])) { $info['items'][$group]['elements'][$alias]['assign'][$type] = $assign_elements[$element['type']]; } } } } } } $info['items'][$group]['item_count'] += 1; } return $info; }