/** * Import module datas * * @param mixed $datas, the import datas * @param string $format, the import format in : php (default), xml * @param CMS_language $cms_language, the current cms_language to use. Passed by reference to temporary overwrite it with import language * @param string $infos (reference), the returned import infos * @return boolean : the import status */ function import($datas, $format = 'php', &$cms_language, &$infos) { $infos = ''; $return = true; switch ($format) { case 'xml': //convert XML to PHP array $xml2Array = new CMS_xml2Array($datas, CMS_xml2Array::XML_ARRAY2XML_FORMAT); $importedArray = $xml2Array->getParsedArray(); break; case 'php': //try to eval PHP Array if (!is_array($datas)) { $infos .= 'Error : PHP datas must be a valid PHP array ... ' . "\n"; return false; } else { $importedArray = $datas; } break; default: $infos .= 'Error : Unknown import format ... ' . $format . "\n"; return false; break; } if (!isset($importedArray) || !is_array($importedArray)) { $infos .= 'Error : no datas to import or incorrect datas ...' . "\n"; return false; } if (isset($importedArray['version'])) { $version = $importedArray['version']; unset($importedArray['version']); } else { $version = ''; } //Check for version compliance if ($version && version_compare(AUTOMNE_VERSION, $version, '<')) { $infos .= 'Error: Automne version below the version of imported datas' . "\n"; return false; } if (isset($importedArray['language'])) { //force import language to overwrite user language because imported datas refer to this language $oldLanguage = $cms_language->getCode(); $cms_language = CMS_languagesCatalog::getByCode($importedArray['language']); if (!$cms_language || $cms_language->hasError()) { //reload user language $cms_language = CMS_languagesCatalog::getByCode($oldLanguage); } unset($importedArray['language']); } //return import description if exists if (isset($importedArray['description']) && $importedArray['description']) { $infos .= '--------------------------------------------------------------------------------------------------------' . "\n"; $infos .= 'Import description: ' . "\n"; $infos .= io::htmlspecialchars($importedArray['description']) . "\n"; $infos .= '--------------------------------------------------------------------------------------------------------' . "\n"; unset($importedArray['description']); } foreach ($importedArray as $type => $data) { switch ($type) { case 'modules': $idsRelation = array(); $importInfos = ''; if (CMS_modulesCatalog::fromArray($data, $this->_parameters, $cms_language, $idsRelation, $importInfos)) { $infos .= 'Import completed successfully' . ($importInfos ? ': ' . "\n" . $importInfos : '') . "\n"; } else { $infos .= 'Error: ' . "\n" . $importInfos . "\n"; $return &= false; } break; default: $infos .= 'Error: Unknown data type to import : ' . $type . "\n"; $return &= false; break; } } if (isset($importedArray['language'])) { //reload user language $cms_language = CMS_languagesCatalog::getByCode($oldLanguage); } return $return; }