/** * Import module from given array datas * * @param array $data The module datas to import * @param array $params The import parameters. * array( * create => false|true : create missing objects (default : true) * update => false|true : update existing objects (default : true) * files => false|true : use files from PATH_TMP_FS (default : true) * ) * @param CMS_language $cms_language The CMS_langage to use * @param array $idsRelation : Reference : The relations between import datas ids and real imported ids * @param string $infos : Reference : The import infos returned * @return boolean : true on success, false on failure * @access public */ static function fromArray($data, $params, $cms_language, &$idsRelation, &$infos) { $return = true; foreach ($data as $moduleDatas) { if (!isset($moduleDatas['codename'])) { $infos .= 'Missing codename ...' . "\n"; return false; } //check if module exists $codenames = CMS_modulesCatalog::getAllCodenames(); //instanciate module $importType = ''; if (isset($codenames[$moduleDatas['codename']])) { if (!isset($params['update']) || $params['update'] == true) { $module = CMS_modulesCatalog::getByCodename($moduleDatas['codename']); $infos .= 'Get Module ' . $module->getLabel($cms_language) . ' for update...' . "\n"; $importType = ' (Update)'; } else { $infos .= 'Module already exists and parameter does not allow to update it ...' . "\n"; return false; } } else { if (!isset($params['create']) || $params['create'] == true) { $infos .= 'Create new module for imported datas...' . "\n"; $importType = ' (Creation)'; if (isset($moduleDatas['polymod']) && $moduleDatas['polymod']) { $module = new CMS_polymod(); } else { $module = new CMS_module(); } } else { $infos .= 'Module does not exists and parameter does not allow to create it ...' . "\n"; return false; } } if ($module->fromArray($moduleDatas, $params, $cms_language, $idsRelation, $infos)) { $return &= true; $infos .= 'Module "' . $module->getLabel($cms_language) . '" successfully imported' . $importType . "\n"; } else { $return = false; $infos .= 'Error during import of module ' . $moduleDatas['codename'] . $importType . "\n"; } } return $return; }