/**
  * @param ArtVandelay_ExportedDataModel $model
  * @param bool $force if set to true items not in the import will be deleted
  * @return ArtVandelay_ResultModel
  */
 private function importFromExportedDataModel(ArtVandelay_ExportedDataModel $model, $force)
 {
     $result = new ArtVandelay_ResultModel();
     if ($model !== null) {
         $pluginImportResult = craft()->artVandelay_plugins->import($model->plugins);
         $assetImportResult = craft()->artVandelay_assets->import($model->assets);
         $categoryImportResult = craft()->artVandelay_categories->import($model->categories);
         $fieldImportResult = craft()->artVandelay_fields->import($model->fields, $force);
         $globalImportResult = craft()->artVandelay_globals->import($model->globals, $force);
         $sectionImportResult = craft()->artVandelay_sections->import($model->sections, $force);
         $tagImportResult = craft()->artVandelay_tags->import($model->tags);
         $userGroupImportResult = craft()->artVandelay_userGroups->import($model->userGroups, $force);
         $result->consume($pluginImportResult);
         $result->consume($assetImportResult);
         $result->consume($categoryImportResult);
         $result->consume($fieldImportResult);
         $result->consume($globalImportResult);
         $result->consume($sectionImportResult);
         $result->consume($tagImportResult);
         $result->consume($userGroupImportResult);
         // run plugin imports through hook
         $services = craft()->plugins->callFirst('registerMigrationService');
         if (is_array($services)) {
             foreach ($services as $handle => $service) {
                 $service->import($model->pluginData[$handle], $force);
             }
         }
     }
     return $result;
 }
 public function actionImport()
 {
     $this->requirePostRequest();
     $json = craft()->request->getParam('data', '{}');
     $data = ArtVandelay_ExportedDataModel::fromJson($json);
     $result = new ArtVandelay_ResultModel();
     if ($data !== null) {
         $assetImportResult = craft()->artVandelay_assets->import($data->assets);
         $categoryImportResult = craft()->artVandelay_categories->import($data->categories);
         $fieldImportResult = craft()->artVandelay_fields->import($data->fields);
         $globalImportResult = craft()->artVandelay_globals->import($data->globals);
         $sectionImportResult = craft()->artVandelay_sections->import($data->sections);
         $tagImportResult = craft()->artVandelay_tags->import($data->tags);
         $result->consume($assetImportResult);
         $result->consume($categoryImportResult);
         $result->consume($fieldImportResult);
         $result->consume($globalImportResult);
         $result->consume($sectionImportResult);
         $result->consume($tagImportResult);
         if ($result->ok) {
             craft()->userSession->setNotice('All done.');
             $this->redirectToPostedUrl();
             return;
         }
     } else {
         $errors[] = 'Invalid JSON.';
     }
     craft()->userSession->setError('Get *out*! ' . implode(', ', $result->errors));
     craft()->urlManager->setRouteVariables(array('groupOptions' => $this->_getGroupOptions(), 'entryTypeOptions' => $this->_getEntryTypeOptions()));
 }
 private function importFromExportedDataModel($model)
 {
     $result = new ArtVandelay_ResultModel();
     if ($model !== null) {
         $assetImportResult = craft()->artVandelay_assets->import($model->assets);
         $categoryImportResult = craft()->artVandelay_categories->import($model->categories);
         $fieldImportResult = craft()->artVandelay_fields->import($model->fields);
         $globalImportResult = craft()->artVandelay_globals->import($model->globals);
         $sectionImportResult = craft()->artVandelay_sections->import($model->sections);
         $tagImportResult = craft()->artVandelay_tags->import($model->tags);
         $result->consume($assetImportResult);
         $result->consume($categoryImportResult);
         $result->consume($fieldImportResult);
         $result->consume($globalImportResult);
         $result->consume($sectionImportResult);
         $result->consume($tagImportResult);
     }
     return $result;
 }