Ejemplo n.º 1
0
 /** @return bool */
 protected final function filterConnectorData()
 {
     $result = true;
     $endpoint = $this->getConnector();
     if (is_array($endpoint) && !empty($endpoint['CODE'])) {
         // do not send mails if connector will not found
         $result = false;
         // try to find connector
         $connector = ConnectorManager::getConnector($endpoint);
         $this->connector = $connector;
     } elseif (is_object($endpoint) && $endpoint instanceof Connector) {
         $this->connector = $endpoint;
     }
     if ($this->connector) {
         // merge connector filter and proxy fields. proxy fields have priority
         $connectorFields = $this->getProxyFieldsFromEventToConnector();
         if (!empty($connectorFields)) {
             $connectorFields = $connectorFields + $this->getFields();
         }
         // set fields to connector
         $this->connector->setFieldValues($connectorFields);
         $result = false;
         // add recipient from data if connector get it
         $recipientDb = $this->connector->getData();
         if ($recipient = $recipientDb->Fetch()) {
             $this->recipient = $recipient;
             $result = true;
         }
     }
     return $result;
 }
Ejemplo n.º 2
0
 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();
     }
 }
Ejemplo n.º 3
0
 /**
  * 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
 }