function display() { global $mod_strings, $app_strings; require_once 'include/connectors/utils/ConnectorUtils.php'; require_once 'include/connectors/sources/SourceFactory.php'; $sugar_smarty = new Sugar_Smarty(); $sugar_smarty->assign('mod', $mod_strings); $sugar_smarty->assign('APP', $app_strings); $connectors = ConnectorUtils::getConnectors(true); $required_fields = array(); //Get required fields for first connector only foreach ($connectors as $id => $entry) { $s = SourceFactory::getSource($id); $connector_strings = ConnectorUtils::getConnectorStrings($id); $fields = $s->getRequiredConfigFields(); foreach ($fields as $field_id) { $label = isset($connector_strings[$field_id]) ? $connector_strings[$field_id] : $field_id; $required_fields[$id][$field_id] = $label; } break; } $sugar_smarty->assign('SOURCES', $connectors); $sugar_smarty->assign('REQUIRED_FIELDS', $required_fields); echo get_module_title('Connectors', $mod_strings['LBL_MODIFY_PROPERTIES_PAGE_TITLE'], true); $sugar_smarty->display('modules/Connectors/tpls/modify_properties.tpl'); }
/** * @see SugarView::display() */ public function display() { global $mod_strings, $app_strings; require_once 'include/connectors/utils/ConnectorUtils.php'; require_once 'include/connectors/sources/SourceFactory.php'; $this->ss->assign('mod', $mod_strings); $this->ss->assign('APP', $app_strings); $connectors = ConnectorUtils::getConnectors(true); $required_fields = array(); //Get required fields for first connector only $connectorsToShow = $connectors; foreach ($connectors as $id => $entry) { $s = SourceFactory::getSource($id); $connector_strings = ConnectorUtils::getConnectorStrings($id); $fields = $s->getRequiredConfigFields(); if (!$s->isEnabledInAdminProperties() || empty($fields)) { unset($connectorsToShow[$id]); } else { if (empty($required_fields)) { foreach ($fields as $field_id) { $label = isset($connector_strings[$field_id]) ? $connector_strings[$field_id] : $field_id; $required_fields[$id][$field_id] = $label; } } } } $this->ss->assign('SOURCES', $connectorsToShow); $this->ss->assign('REQUIRED_FIELDS', $required_fields); // Handle active tab selection $active_tab = isset($_REQUEST['active_tab']) ? $_REQUEST['active_tab'] : null; $this->ss->assign('ACTIVE_TAB', $active_tab); echo $this->getModuleTitle(false); $this->ss->display($this->getCustomFilePathIfExists('modules/Connectors/tpls/modify_properties.tpl')); }
/** * @see SugarView::display() */ public function display() { global $mod_strings, $app_strings; require_once 'include/connectors/utils/ConnectorUtils.php'; require_once 'include/connectors/sources/SourceFactory.php'; $this->ss->assign('mod', $mod_strings); $this->ss->assign('APP', $app_strings); $connectors = ConnectorUtils::getConnectors(true); $required_fields = array(); //Get required fields for first connector only $connectorsToShow = $connectors; foreach ($connectors as $id => $entry) { $s = SourceFactory::getSource($id); $connector_strings = ConnectorUtils::getConnectorStrings($id); $fields = $s->getRequiredConfigFields(); if (empty($fields)) { unset($connectorsToShow[$id]); } else { if (empty($required_fields)) { foreach ($fields as $field_id) { $label = isset($connector_strings[$field_id]) ? $connector_strings[$field_id] : $field_id; $required_fields[$id][$field_id] = $label; } } } } $this->ss->assign('SOURCES', $connectorsToShow); $this->ss->assign('REQUIRED_FIELDS', $required_fields); echo $this->getModuleTitle(); $this->ss->display('modules/Connectors/tpls/modify_properties.tpl'); }
function testConnectorFailsNullGracefully() { //now write a connector file with missing array info instead of an array for the connector var file_put_contents($this->custom_path . '/connectors.php', "<?php\n "); //create the connector and call getConnectors $cu = new ConnectorUtils(); $this->assertInternalType(PHPUnit_Framework_Constraint_IsType::TYPE_ARRAY, $cu->getConnectors(true), 'ConnectorsUtils::getConnectors() failed to return an array when connectors array was missing. '); }
/** * @see SugarView::display() */ public function display() { require_once 'include/connectors/utils/ConnectorUtils.php'; $source = $_REQUEST['source_id']; $sources = ConnectorUtils::getConnectors(); $modules_sources = ConnectorUtils::getDisplayConfig(); //$json = getJSONobj(); $enabled_modules = array(); $disabled_modules = array(); //Find all modules this source has been enabled for foreach ($modules_sources as $module => $mapping) { foreach ($modules_sources[$module] as $entry) { if ($entry == $source) { $enabled_modules[$module] = $module; } } } global $moduleList, $beanList; //Do filtering here? $count = 0; global $current_user; $access = $current_user->getDeveloperModules(); $d = dir('modules'); while ($e = $d->read()) { if (substr($e, 0, 1) == '.' || !is_dir('modules/' . $e)) { continue; } if (empty($enabled_modules[$e]) && file_exists('modules/' . $e . '/metadata/studio.php') && file_exists('modules/' . $e . '/metadata/detailviewdefs.php') && isset($GLOBALS['beanList'][$e]) && (in_array($e, $access) || is_admin($current_user))) { $disabled_modules[$e] = $e; } } $s = SourceFactory::getSource($source); // Not all sources can be connected to all modules $enabled_modules = $s->filterAllowedModules($enabled_modules); $disabled_modules = $s->filterAllowedModules($disabled_modules); asort($enabled_modules); asort($disabled_modules); //$enabled = $json->encode($enabled_modules); //$disabled = $json->encode($disabled_modules); //$script = "addTable('{$module}', '{$enabled}', '{$disabled}', '{$source}', '{$GLOBALS['theme']}');\n"; //$this->ss->assign('new_modules_sources', $modules_sources); //$this->ss->assign('dynamic_script', $script); $this->ss->assign('enabled_modules', $enabled_modules); $this->ss->assign('disabled_modules', $disabled_modules); $this->ss->assign('source_id', $source); $this->ss->assign('mod', $GLOBALS['mod_strings']); $this->ss->assign('APP', $GLOBALS['app_strings']); $this->ss->assign('theme', $GLOBALS['theme']); $this->ss->assign('external', !empty($sources[$source]['eapm'])); $this->ss->assign('externalOnly', !empty($sources[$source]['eapm']['only'])); // We don't want to tell the user to set the properties of the connector if there aren't any $fields = $s->getRequiredConfigFields(); $this->ss->assign('externalHasProperties', !empty($fields)); $this->ss->assign('externalChecked', !empty($sources[$source]['eapm']['enabled']) ? " checked" : ""); echo $this->ss->fetch('modules/Connectors/tpls/display_properties.tpl'); }
/** * @see SugarView::display() */ public function display() { require_once 'include/connectors/utils/ConnectorUtils.php'; $sources = ConnectorUtils::getConnectors(); $this->ss->assign('SOURCES', $sources); $this->ss->assign('mod', $GLOBALS['mod_strings']); $this->ss->assign('APP', $GLOBALS['app_strings']); $this->ss->assign('theme', $GLOBALS['theme']); echo $this->getModuleTitle(); $this->ss->display('modules/Connectors/tpls/modify_display.tpl'); }
function display() { require_once 'include/connectors/utils/ConnectorUtils.php'; $sources = ConnectorUtils::getConnectors(); $this->ss->assign('SOURCES', $sources); $this->ss->assign('mod', $GLOBALS['mod_strings']); $this->ss->assign('APP', $GLOBALS['app_strings']); $this->ss->assign('theme', $GLOBALS['theme']); echo get_module_title('Connectors', $GLOBALS['mod_strings']['LBL_MODIFY_DISPLAY_PAGE_TITLE'], true); $this->ss->display('modules/Connectors/tpls/modify_display.tpl'); }
/** * @see SugarView::display() */ public function display() { require_once 'include/connectors/utils/ConnectorUtils.php'; $source = $_REQUEST['source_id']; $sources = ConnectorUtils::getConnectors(); $modules_sources = ConnectorUtils::getDisplayConfig(); $enabled_modules = array(); $disabled_modules = array(); //Find all modules this source has been enabled for foreach ($modules_sources as $module => $mapping) { foreach ($modules_sources[$module] as $entry) { if ($entry == $source) { $enabled_modules[$module] = isset($GLOBALS['app_list_strings']['moduleList'][$module]) ? $GLOBALS['app_list_strings']['moduleList'][$module] : $module; } } } global $moduleList, $beanList; //Do filtering here? $count = 0; global $current_user; $access = $current_user->getDeveloperModules(); foreach (SugarAutoLoader::getDirFiles("modules", true) as $e) { //Strip the 'modules/' portion out from beginning of $e $e = substr($e, 8); if (empty($enabled_modules[$e]) && SugarAutoLoader::existingCustomOne("modules/{$e}/metadata/studio.php") && SugarAutoLoader::fileExists('modules/' . $e . '/metadata/detailviewdefs.php') && isset($GLOBALS['beanList'][$e]) && (in_array($e, $access) || is_admin($current_user))) { $disabled_modules[$e] = isset($GLOBALS['app_list_strings']['moduleList'][$e]) ? $GLOBALS['app_list_strings']['moduleList'][$e] : $e; } } $s = SourceFactory::getSource($source); // Not all sources can be connected to all modules $enabled_modules = $s->filterAllowedModules($enabled_modules); $disabled_modules = $s->filterAllowedModules($disabled_modules); asort($enabled_modules); asort($disabled_modules); //$enabled = $json->encode($enabled_modules); //$disabled = $json->encode($disabled_modules); //$script = "addTable('{$module}', '{$enabled}', '{$disabled}', '{$source}', '{$GLOBALS['theme']}');\n"; //$this->ss->assign('new_modules_sources', $modules_sources); //$this->ss->assign('dynamic_script', $script); $this->ss->assign('enabled_modules', $enabled_modules); $this->ss->assign('disabled_modules', $disabled_modules); $this->ss->assign('source_id', $source); $this->ss->assign('mod', $GLOBALS['mod_strings']); $this->ss->assign('APP', $GLOBALS['app_strings']); $this->ss->assign('theme', $GLOBALS['theme']); $this->ss->assign('external', !empty($sources[$source]['eapm'])); $this->ss->assign('externalOnly', !empty($sources[$source]['eapm']['only'])); // We don't want to tell the user to set the properties of the connector if there aren't any $fields = $s->getRequiredConfigFields(); $this->ss->assign('externalHasProperties', !empty($fields)); $this->ss->assign('externalChecked', !empty($sources[$source]['eapm']['enabled']) ? " checked" : ""); echo $this->ss->fetch($this->getCustomFilePathIfExists('modules/Connectors/tpls/display_properties.tpl')); }
/** * @see SugarView::display() */ public function display() { require_once 'include/connectors/utils/ConnectorUtils.php'; require_once 'include/connectors/sources/SourceFactory.php'; global $mod_strings, $app_strings; $this->ss->assign('mod', $mod_strings); $this->ss->assign('APP', $app_strings); $connectors = ConnectorUtils::getConnectors(true); $this->ss->assign('SOURCES', $connectors); echo $this->getModuleTitle(); $this->ss->display('modules/Connectors/tpls/modify_mapping.tpl'); }
function display() { require_once 'include/connectors/utils/ConnectorUtils.php'; require_once 'include/connectors/sources/SourceFactory.php'; global $mod_strings, $app_strings; $sugar_smarty = new Sugar_Smarty(); $sugar_smarty->assign('mod', $mod_strings); $sugar_smarty->assign('APP', $app_strings); $connectors = ConnectorUtils::getConnectors(true); $sugar_smarty->assign('SOURCES', $connectors); echo get_module_title('Connectors', $mod_strings['LBL_MODIFY_MAPPING_PAGE_TITLE'], true); $sugar_smarty->display('modules/Connectors/tpls/modify_mapping.tpl'); }
/** * @see SugarView::display() */ public function display() { require_once 'include/connectors/utils/ConnectorUtils.php'; require_once 'include/connectors/sources/SourceFactory.php'; $source_id = $_REQUEST['source_id']; $connector_strings = ConnectorUtils::getConnectorStrings($source_id); $is_enabled = ConnectorUtils::isSourceEnabled($source_id); $modules_sources = array(); $sources = ConnectorUtils::getConnectors(); $display_data = array(); if ($is_enabled) { $searchDefs = ConnectorUtils::getSearchDefs(); $searchDefs = !empty($searchDefs[$_REQUEST['source_id']]) ? $searchDefs[$_REQUEST['source_id']] : array(); $source = SourceFactory::getSource($_REQUEST['source_id']); $field_defs = $source->getFieldDefs(); //Create the Javascript code to dynamically add the tables $json = getJSONobj(); foreach ($searchDefs as $module => $fields) { $disabled = array(); $enabled = array(); $enabled_fields = array_flip($fields); $field_keys = array_keys($field_defs); foreach ($field_keys as $index => $key) { if (!empty($field_defs[$key]['hidden']) || empty($field_defs[$key]['search'])) { continue; } if (!isset($enabled_fields[$key])) { $disabled[$key] = !empty($connector_strings[$field_defs[$key]['vname']]) ? $connector_strings[$field_defs[$key]['vname']] : $key; } else { $enabled[$key] = !empty($connector_strings[$field_defs[$key]['vname']]) ? $connector_strings[$field_defs[$key]['vname']] : $key; } } $modules_sources[$module] = array_merge($enabled, $disabled); asort($disabled); $display_data[$module] = array('enabled' => $enabled, 'disabled' => $disabled); } } $this->ss->assign('no_searchdefs_defined', !$is_enabled); $this->ss->assign('display_data', $display_data); $this->ss->assign('modules_sources', $modules_sources); $this->ss->assign('sources', $sources); $this->ss->assign('mod', $GLOBALS['mod_strings']); $this->ss->assign('APP', $GLOBALS['app_strings']); $this->ss->assign('source_id', $_REQUEST['source_id']); $this->ss->assign('theme', $GLOBALS['theme']); $this->ss->assign('connector_language', $connector_strings); echo $this->ss->fetch('modules/Connectors/tpls/search_properties.tpl'); }
/** * @see SugarView::display() */ public function display() { require_once 'include/connectors/utils/ConnectorUtils.php'; $connectors = ConnectorUtils::getConnectors(true); foreach ($connectors as $id => $source) { $s = SourceFactory::getSource($id); if (!$s->isEnabledInAdminDisplay()) { unset($connectors[$id]); } } $this->ss->assign('SOURCES', $connectors); $this->ss->assign('mod', $GLOBALS['mod_strings']); $this->ss->assign('APP', $GLOBALS['app_strings']); $this->ss->assign('theme', $GLOBALS['theme']); echo $this->getModuleTitle(false); $this->ss->display($this->getCustomFilePathIfExists('modules/Connectors/tpls/modify_display.tpl')); }
/** * @see SugarView::display() */ public function display() { require_once 'include/connectors/utils/ConnectorUtils.php'; $source = $_REQUEST['source_id']; $sources = ConnectorUtils::getConnectors(); $modules_sources = ConnectorUtils::getDisplayConfig(); //$json = getJSONobj(); $enabled_modules = array(); $disabled_modules = array(); //Find all modules this source has been enabled for foreach ($modules_sources as $module => $mapping) { foreach ($modules_sources[$module] as $entry) { if ($entry == $source) { $enabled_modules[$module] = $module; } } } global $moduleList, $beanList; //Do filtering here? $count = 0; global $current_user; $access = get_admin_modules_for_user($current_user); $d = dir('modules'); while ($e = $d->read()) { if (substr($e, 0, 1) == '.' || !is_dir('modules/' . $e)) { continue; } if (empty($enabled_modules[$e]) && file_exists('modules/' . $e . '/metadata/studio.php') && file_exists('modules/' . $e . '/metadata/detailviewdefs.php') && isset($GLOBALS['beanList'][$e]) && (in_array($e, $access) || is_admin($current_user))) { $disabled_modules[$e] = $e; } } asort($enabled_modules); asort($disabled_modules); //$enabled = $json->encode($enabled_modules); //$disabled = $json->encode($disabled_modules); //$script = "addTable('{$module}', '{$enabled}', '{$disabled}', '{$source}', '{$GLOBALS['theme']}');\n"; //$this->ss->assign('new_modules_sources', $modules_sources); //$this->ss->assign('dynamic_script', $script); $this->ss->assign('enabled_modules', $enabled_modules); $this->ss->assign('disabled_modules', $disabled_modules); $this->ss->assign('source_id', $source); $this->ss->assign('mod', $GLOBALS['mod_strings']); $this->ss->assign('APP', $GLOBALS['app_strings']); $this->ss->assign('theme', $GLOBALS['theme']); echo $this->ss->fetch('modules/Connectors/tpls/display_properties.tpl'); }
/** * @see SugarView::display() */ public function display() { require_once 'include/connectors/utils/ConnectorUtils.php'; global $mod_strings, $app_strings; $sugar_smarty = new Sugar_Smarty(); $this->ss->assign('mod', $mod_strings); $this->ss->assign('APP', $app_strings); $connectors = ConnectorUtils::getConnectors(); foreach ($connectors as $id => $source) { $s = SourceFactory::getSource($id); if (!$s->isEnabledInAdminSearch() || !$s->isEnabledInWizard()) { unset($connectors[$id]); } } $this->ss->assign('SOURCES', $connectors); echo $this->getModuleTitle(false); $this->ss->display($this->getCustomFilePathIfExists('modules/Connectors/tpls/modify_search.tpl')); }
/** * @see SugarView::display() */ public function display() { require_once 'include/connectors/utils/ConnectorUtils.php'; require_once 'include/connectors/sources/SourceFactory.php'; global $mod_strings, $app_strings; $this->ss->assign('mod', $mod_strings); $this->ss->assign('APP', $app_strings); $connectors = ConnectorUtils::getConnectors(true); foreach ($connectors as $id => $source) { $s = SourceFactory::getSource($id); $mapping = $s->getMapping(); if (!$s->isEnabledInAdminMapping() || empty($mapping)) { unset($connectors[$id]); } } $this->ss->assign('SOURCES', $connectors); echo $this->getModuleTitle(false); $this->ss->display($this->getCustomFilePathIfExists('modules/Connectors/tpls/modify_mapping.tpl')); }
/** * action_RetrieveSources * Returns a JSON encoded format of the Connectors that are configured for the system * */ function action_RetrieveSources() { require_once 'include/connectors/utils/ConnectorUtils.php'; $this->view = 'ajax'; $sources = ConnectorUtils::getConnectors(); $results = array(); foreach ($sources as $id => $entry) { $results[$id] = !empty($entry['name']) ? $entry['name'] : $id; } $json = getJSONobj(); echo $json->encode($results); }
/** * gets list of all connectors * @return mixed */ protected function getConnectorList() { return ConnectorUtils::getConnectors(); }
/** * @see SugarView::display() */ public function display() { require_once 'include/connectors/utils/ConnectorUtils.php'; require_once 'include/connectors/sources/SourceFactory.php'; $connector_strings = ConnectorUtils::getConnectorStrings($_REQUEST['source_id']); $sources = ConnectorUtils::getConnectors(); $source_id = $_REQUEST['source_id']; $source = SourceFactory::getSource($source_id); $is_enabled = ConnectorUtils::isSourceEnabled($source_id); $script = ''; $display_data = array(); if ($is_enabled) { $mapping = $source->getMapping(); $source_defs = $source->getFieldDefs(); //Create the Javascript code to dynamically add the tables $json = getJSONobj(); foreach ($mapping['beans'] as $module => $field_mapping) { $mod_strings = return_module_language($GLOBALS['current_language'], $module); $bean = loadBean($module); if (!is_object($bean)) { continue; } $field_defs = $bean->getFieldDefinitions(); $available_fields = array(); $labels = array(); $duplicate_labels = array(); foreach ($field_defs as $id => $def) { //We are filtering out some fields here if ($def['type'] == 'relate' || $def['type'] == 'link' || isset($def['dbType']) && $def['dbType'] == 'id') { continue; } if (isset($def['vname'])) { $available_fields[$id] = !empty($mod_strings[$def['vname']]) ? $mod_strings[$def['vname']] : $id; } else { $available_fields[$id] = $id; } //Remove the ':' character in some labels if (preg_match('/\\:$/', $available_fields[$id])) { $available_fields[$id] = substr($available_fields[$id], 0, strlen($available_fields[$id]) - 1); } if (isset($labels[$available_fields[$id]])) { $duplicate_labels[$labels[$available_fields[$id]]] = $labels[$available_fields[$id]]; $duplicate_labels[$id] = $id; } else { $labels[$available_fields[$id]] = $id; } } foreach ($duplicate_labels as $id) { $available_fields[$id] = $available_fields[$id] . " ({$id})"; } asort($available_fields); $field_keys = array(); $field_values = array(); $source_fields = array(); foreach ($field_mapping as $id => $field) { if (!empty($source_defs[$id])) { $source_fields[$id] = $source_defs[$id]; } } $source_fields = array_merge($source_fields, $source_defs); foreach ($source_fields as $id => $def) { if (empty($def['hidden'])) { $field_keys[strtolower($id)] = !empty($connector_strings[$source_fields[$id]['vname']]) ? $connector_strings[$source_fields[$id]['vname']] : $id; $field_values[] = !empty($field_mapping[strtolower($id)]) ? $field_mapping[strtolower($id)] : ''; } } $display_data[$module] = array('field_keys' => $field_keys, 'field_values' => $field_values, 'available_fields' => $available_fields, 'field_mapping' => $field_mapping); } } $this->ss->assign('display_data', $display_data); $this->ss->assign('empty_mapping', empty($display_data) ? true : false); $this->ss->assign('dynamic_script', $script); $this->ss->assign('sources', $sources); $this->ss->assign('mod', $GLOBALS['mod_strings']); $this->ss->assign('APP', $GLOBALS['app_strings']); $this->ss->assign('source_id', $source_id); $this->ss->assign('source_name', $sources[$source_id]['name']); $this->ss->assign('theme', $GLOBALS['theme']); echo $this->ss->fetch('modules/Connectors/tpls/mapping_properties.tpl'); }
function action_SaveModifyDisplay() { if (empty($_REQUEST['display_sources'])) { return; } require_once 'include/connectors/utils/ConnectorUtils.php'; require_once 'include/connectors/sources/SourceFactory.php'; $connectors = ConnectorUtils::getConnectors(); $connector_keys = array_keys($connectors); $modules_sources = ConnectorUtils::getDisplayConfig(); if (!is_array($modules_sources)) { $modules_sources = (array) $modules_sources; } $sources = array(); $values = array(); $new_modules_sources = array(); if (!empty($_REQUEST['display_values'])) { $display_values = explode(',', $_REQUEST['display_values']); foreach ($display_values as $value) { $entry = explode(':', $value); $mod = get_module_from_singular($entry[1]); // get the internal module name $new_modules_sources[$mod][$entry[0]] = $entry[0]; } } //These are the sources that were modified. //We only update entries for these sources that have been changed $display_sources = explode(',', $_REQUEST['display_sources']); foreach ($display_sources as $source) { $sources[$source] = $source; } //foreach $removedModules = array(); //Unset entries that have all sources removed foreach ($modules_sources as $module => $source_entries) { foreach ($source_entries as $source_id) { if (!empty($sources[$source_id]) && empty($new_modules_sources[$module][$source_id])) { unset($modules_sources[$module][$source_id]); $removedModules[$module] = true; } } } $removedModules = array_keys($removedModules); foreach ($removedModules as $key) { if (empty($new_modules_sources[$key])) { ConnectorUtils::cleanMetaDataFile($key); } } //Update based on new_modules_sources foreach ($new_modules_sources as $module => $enabled_sources) { //If the module is not in $modules_sources add it there if (empty($modules_sources[$module])) { $modules_sources[$module] = $enabled_sources; } else { foreach ($enabled_sources as $source_id) { if (empty($modules_sources[$module][$source_id])) { $modules_sources[$module][$source_id] = $source_id; } } //foreach } } //foreach //Should we just remove entries where all sources are disabled? $unset_modules = array(); foreach ($modules_sources as $module => $mapping) { if (empty($mapping)) { $unset_modules[] = $module; } } foreach ($unset_modules as $mod) { unset($modules_sources[$mod]); } if (!write_array_to_file('modules_sources', $modules_sources, CONNECTOR_DISPLAY_CONFIG_FILE)) { //Log error and return empty array $GLOBALS['log']->fatal("Cannot write \$modules_sources to " . CONNECTOR_DISPLAY_CONFIG_FILE); } $sources_modules = array(); foreach ($modules_sources as $module => $source_entries) { foreach ($source_entries as $id) { $sources_modules[$id][$module] = $module; } } //Now update the searchdefs and field mapping entries accordingly require 'modules/Connectors/metadata/searchdefs.php'; $originalSearchDefs = $searchdefs; $connectorSearchDefs = ConnectorUtils::getSearchDefs(); $searchdefs = array(); foreach ($sources_modules as $source_id => $modules) { foreach ($modules as $module) { $searchdefs[$source_id][$module] = !empty($connectorSearchDefs[$source_id][$module]) ? $connectorSearchDefs[$source_id][$module] : (!empty($originalSearchDefs[$source_id][$module]) ? $originalSearchDefs[$source_id][$module] : array()); } } //Write the new searchdefs out if (!write_array_to_file('searchdefs', $searchdefs, 'custom/modules/Connectors/metadata/searchdefs.php')) { $GLOBALS['log']->fatal("Cannot write file custom/modules/Connectors/metadata/searchdefs.php"); } //Unset the $_SESSION['searchDefs'] variable if (isset($_SESSION['searchDefs'])) { unset($_SESSION['searchDefs']); } //Clear mapping file if needed (this happens when all modules are removed from a source foreach ($sources as $id) { if (empty($sources_modules[$source])) { //Now write the new mapping entry to the custom folder $dir = $connectors[$id]['directory']; if (!preg_match('/^custom\\//', $dir)) { $dir = 'custom/' . $dir; } if (!file_exists("{$dir}")) { mkdir_recursive("{$dir}"); } $fakeMapping = array('beans' => array()); if (!write_array_to_file('mapping', $fakeMapping, "{$dir}/mapping.php")) { $GLOBALS['log']->fatal("Cannot write file {$dir}/mapping.php"); } $s = SourceFactory::getSource($id); $s->saveMappingHook($fakeMapping); } //if } //foreach //Now update the field mapping entries foreach ($sources_modules as $id => $modules) { $source = SourceFactory::getSource($id); $mapping = $source->getMapping(); $mapped_modules = array_keys($mapping['beans']); foreach ($mapped_modules as $module) { if (empty($sources_modules[$id][$module])) { unset($mapping['beans'][$module]); } } //Remove modules from the mapping entries foreach ($modules as $module) { if (empty($mapping['beans'][$module])) { $originalMapping = $source->getOriginalMapping(); if (empty($originalMapping['beans'][$module])) { $defs = $source->getFieldDefs(); $keys = array_keys($defs); $new_mapping_entry = array(); foreach ($keys as $key) { $new_mapping_entry[$key] = ''; } $mapping['beans'][$module] = $new_mapping_entry; } else { $mapping['beans'][$module] = $originalMapping['beans'][$module]; } } //if } //foreach if ($id == 'ext_rest_twitter' || $id == 'ext_rest_facebook') { $full_list = array_keys($mapping['beans']); $new_modules = array_diff($full_list, $mapped_modules); if (count($new_modules) > 0) { foreach ($new_modules as $module) { $field_name = substr($id, 9) . '_user_c'; $bean = BeanFactory::newBean($module); if (!isset($bean->{$field_name})) { $this->add_social_field($module, $field_name); } } } unset($bean); } //Now write the new mapping entry to the custom folder $dir = $connectors[$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); } //foreach // save eapm configs foreach ($connectors as $connector_name => $data) { if (isset($sources[$connector_name]) && !empty($data["eapm"])) { // if we touched it AND it has EAPM data $connectors[$connector_name]["eapm"]["enabled"] = !empty($_REQUEST[$connector_name . "_external"]); } } ConnectorUtils::saveConnectors($connectors); ConnectorUtils::updateMetaDataFiles(); // 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 }