function install_connectors() { if (isset($this->installdefs['connectors'])) { foreach ($this->installdefs['connectors'] as $cp) { $this->log(translate('LBL_MI_IN_CONNECTORS') . $cp['name']); $dir = str_replace('_', '/', $cp['name']); $cp['connector'] = str_replace('<basepath>', $this->base_dir, $cp['connector']); $source_path = 'custom/modules/Connectors/connectors/sources/' . $dir . '/'; $GLOBALS['log']->debug("Installing Connector " . $cp['name'] . "..." . $cp['connector']); if (!file_exists($source_path)) { mkdir_recursive($source_path, true); } copy_recursive($cp['connector'], $source_path); //Install optional formatter code if it is specified if (!empty($cp['formatter'])) { $cp['formatter'] = str_replace('<basepath>', $this->base_dir, $cp['formatter']); $formatter_path = 'custom/modules/Connectors/connectors/formatters/' . $dir . '/'; if (!file_exists($formatter_path)) { mkdir_recursive($formatter_path, true); } copy_recursive($cp['formatter'], $formatter_path); } } $this->reset_file_cache(); require_once 'include/connectors/utils/ConnectorUtils.php'; ConnectorUtils::installSource($cp['name']); // refresh connector cache require_once 'include/connectors/ConnectorManager.php'; $cm = new ConnectorManager(); $connectors = $cm->buildConnectorsMeta(); } }
/** * action_SaveModifyMapping */ function action_SaveModifyMapping() { $mapping_sources = !empty($_REQUEST['mapping_sources']) ? explode(',', $_REQUEST['mapping_sources']) : array(); $mapping_values = !empty($_REQUEST['mapping_values']) ? explode(',', $_REQUEST['mapping_values']) : array(); //Build the source->module->fields mapping $source_modules_fields = array(); foreach ($mapping_values as $id) { $parts = explode(':', $id); $key_vals = explode('=', $parts[2]); //Note the strtolwer call... we are lowercasing the key values $source_modules_fields[$parts[0]][$parts[1]][strtolower($key_vals[0])] = $key_vals[1]; } //foreach foreach ($mapping_sources as $source_id) { if (empty($source_modules_fields[$source_id])) { $source = SourceFactory::getSource($source_id); $mapping = $source->getMapping(); foreach ($mapping['beans'] as $module => $entry) { $source_modules_fields[$source_id][$module] = array(); } } } //foreach if (isset($_SESSION['searchDefs'])) { unset($_SESSION['searchDefs']); } require_once 'include/connectors/utils/ConnectorUtils.php'; $source_entries = ConnectorUtils::getConnectors(); require_once 'include/connectors/sources/SourceFactory.php'; foreach ($source_modules_fields as $id => $mapping_entry) { //Insert the id mapping foreach ($mapping_entry as $module => $entry) { $mapping_entry[$module]['id'] = 'id'; } $source = SourceFactory::getSource($id); $mapping = $source->getMapping(); $mapping['beans'] = $mapping_entry; //Now write the new mapping entry to the custom folder $dir = $source_entries[$id]['directory']; if (!preg_match('/^custom\\//', $dir)) { $dir = 'custom/' . $dir; } if (!file_exists($dir)) { mkdir_recursive($dir); } if (!write_array_to_file('mapping', $mapping, "{$dir}/mapping.php")) { $GLOBALS['log']->fatal("Cannot write file {$dir}/mapping.php"); } $source->saveMappingHook($mapping); } //Rewrite the metadata files ConnectorUtils::updateMetaDataFiles(); // refresh connectors require_once 'include/connectors/ConnectorManager.php'; $cm = new ConnectorManager(); $connectors = $cm->buildConnectorsMeta(); // BEGIN SUGAR INT if (empty($_REQUEST['from_unit_test'])) { // END SUGAR INT header("Location: index.php?action=ConnectorSettings&module=Connectors"); // BEGIN SUGAR INT } // END SUGAR INT }