/** * This function sets up the modules of the import framework according to the * settings, reads the terms and creates articles for them. * * @param string $settings * This XML string contains the modules (Transport Layer, Data Access Layer), * the data source, the import sets and the input, mapping and conflict * policy. * * @return mixed (boolean, string) * <true>, if all terms were successfully imported or an * error message, otherwise. * */ public function importTerms($settings, $termImportName) { echo "Starting to import terms...\n"; echo "\n" . $settings; global $smwgDIIP; require_once $smwgDIIP . '/specials/TermImport/SMW_XMLParser.php'; $parser = new XMLParser($settings); $result = $parser->parse(); if ($result !== TRUE) { return $result; } $tlModule = $parser->getValuesOfElement(array('TLModules', 'Module', 'id')); if (count($tlModule) == 0) { return "Error: Transport layer module was not defined."; //todo: language } $dalModule = $parser->getValuesOfElement(array('DALModules', 'Module', 'id')); if (count($dalModule) == 0) { return "Error: Data access layer module was not defined."; //todo: language } global $smwgDIIP; require_once $smwgDIIP . '/specials/TermImport/SMW_WIL.php'; $wil = new WIL(); $tlModules = $wil->getTLModules(); echo "\n WIL connected"; $res = $wil->connectTL($tlModule[0], $tlModules); if (stripos($res, '<value>true</value>') === false) { return "Connecting the transport layer module {$tlModule['0']} failed."; //todo: language } $dalModules = $wil->getDALModules(); $res = $wil->connectDAL($dalModule[0], $dalModules); if (stripos($res, '<value>true</value>') === false) { return "Connecting the data access layer module {$dalModule['0']} failed."; //todo: language } $source = $parser->serializeElement(array('DataSource')); $importSets = $parser->serializeElement(array('ImportSets')); $inputPolicy = $parser->serializeElement(array('InputPolicy')); $conflictPolicy = $parser->serializeElement(array('ConflictPolicy')); echo "\nGet Terms"; $terms = $wil->getTerms($source, $importSets, $inputPolicy, $conflictPolicy); echo "\nTerms in place"; $mappingPolicy = $parser->serializeElement(array('MappingPolicy')); try { $result = $this->createArticles($terms, $mappingPolicy, $conflictPolicy, $wil, $termImportName); echo "Bot finished!\n"; if ($result === true) { $result = wfMsg('smw_ti_import_successful'); } } catch (Exception $e) { $result = "Something bad happened during the Term Import: " . $e; } return $result; }