Example #1
0
 /**
  * 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;
 }