コード例 #1
0
ファイル: view.step2.php プロジェクト: stefano6310/SuiteCRM
 /**
  * @see SugarView::display()
  */
 public function display()
 {
     global $mod_strings, $app_list_strings, $app_strings, $current_user, $import_bean_map, $import_mod_strings;
     $this->instruction = 'LBL_SELECT_UPLOAD_INSTRUCTION';
     $this->ss->assign('INSTRUCTION', $this->getInstruction());
     $this->ss->assign("MODULE_TITLE", $this->getModuleTitle(false));
     $this->ss->assign("IMP", $import_mod_strings);
     $this->ss->assign("CURRENT_STEP", $this->currentStep);
     $this->ss->assign("TYPE", !empty($_REQUEST['type']) ? $_REQUEST['type'] : "import");
     $this->ss->assign("CUSTOM_DELIMITER", !empty($_REQUEST['custom_delimiter']) ? $_REQUEST['custom_delimiter'] : ",");
     $this->ss->assign("CUSTOM_ENCLOSURE", htmlentities(!empty($_REQUEST['custom_enclosure']) && $_REQUEST['custom_enclosure'] != 'other' ? $_REQUEST['custom_enclosure'] : (!empty($_REQUEST['custom_enclosure_other']) ? $_REQUEST['custom_enclosure_other'] : "")));
     $this->ss->assign("IMPORT_MODULE", $_REQUEST['import_module']);
     $this->ss->assign("HEADER", $app_strings['LBL_IMPORT'] . " " . $mod_strings['LBL_MODULE_NAME']);
     $this->ss->assign("JAVASCRIPT", $this->_getJS());
     $this->ss->assign("SAMPLE_URL", "<a href=\"javascript: void(0);\" onclick=\"window.location.href='index.php?entryPoint=export&module=" . $_REQUEST['import_module'] . "&action=index&all=true&sample=true'\" >" . $mod_strings['LBL_EXAMPLE_FILE'] . "</a>");
     $displayBackBttn = isset($_REQUEST['action']) && $_REQUEST['action'] == 'Step2' && isset($_REQUEST['current_step']) && $_REQUEST['current_step'] !== '2' ? TRUE : FALSE;
     //bug 51239
     $this->ss->assign("displayBackBttn", $displayBackBttn);
     // get user defined import maps
     $is_admin = is_admin($current_user);
     if ($is_admin) {
         $savedMappingHelpText = $mod_strings['LBL_MY_SAVED_ADMIN_HELP'];
     } else {
         $savedMappingHelpText = $mod_strings['LBL_MY_SAVED_HELP'];
     }
     $this->ss->assign('savedMappingHelpText', $savedMappingHelpText);
     $this->ss->assign('is_admin', $is_admin);
     $import_map_seed = new ImportMap();
     $custom_imports_arr = $import_map_seed->retrieve_all_by_string_fields(array('assigned_user_id' => $current_user->id, 'is_published' => 'no', 'module' => $_REQUEST['import_module']));
     if (count($custom_imports_arr)) {
         $custom = array();
         foreach ($custom_imports_arr as $import) {
             $custom[] = array("IMPORT_NAME" => $import->name, "IMPORT_ID" => $import->id);
         }
         $this->ss->assign('custom_imports', $custom);
     }
     // get globally defined import maps
     $published_imports_arr = $import_map_seed->retrieve_all_by_string_fields(array('is_published' => 'yes', 'module' => $_REQUEST['import_module']));
     if (count($published_imports_arr)) {
         $published = array();
         foreach ($published_imports_arr as $import) {
             $published[] = array("IMPORT_NAME" => $import->name, "IMPORT_ID" => $import->id);
         }
         $this->ss->assign('published_imports', $published);
     }
     //End custom mapping
     // add instructions for anything other than custom_delimited
     $instructions = array();
     $lang_key = "CUSTOM";
     for ($i = 1; isset($mod_strings["LBL_{$lang_key}_NUM_{$i}"]); $i++) {
         $instructions[] = array("STEP_NUM" => $mod_strings["LBL_NUM_{$i}"], "INSTRUCTION_STEP" => $mod_strings["LBL_{$lang_key}_NUM_{$i}"]);
     }
     $this->ss->assign("INSTRUCTIONS_TITLE", $mod_strings["LBL_IMPORT_{$lang_key}_TITLE"]);
     $this->ss->assign("instructions", $instructions);
     $content = $this->ss->fetch('modules/Import/tpls/step2.tpl');
     $this->ss->assign("CONTENT", $content);
     $this->ss->display('modules/Import/tpls/wizardWrapper.tpl');
 }
コード例 #2
0
ファイル: view.dupcheck.php プロジェクト: delkyd/sugarcrm_dev
 private function getImportMap()
 {
     if (!empty($_REQUEST['source_id'])) {
         $import_map_seed = new ImportMap();
         $import_map_seed->retrieve($_REQUEST['source_id'], false);
         return $import_map_seed->getMapping();
     } else {
         return array();
     }
 }
コード例 #3
0
ファイル: Bug61172Test.php プロジェクト: delkyd/sugarcrm_dev
 public function testSaveMappingFileSavesNumberFieldAssociationCorrectly()
 {
     $lead = new Lead();
     $importSource = new ImportFile($this->testFile, ',', '', false);
     $importer = new Bug61172TestImporterMock($importSource, $lead);
     $importer->saveMappingFile();
     $mappingFile = new ImportMap();
     $mappingFile->retrieve_by_string_fields(array('name' => $_REQUEST['save_map_as']));
     $this->assertNotEmpty($mappingFile->content);
     $contentFields = explode('&', $mappingFile->content);
     $this->assertContains('1=status', $contentFields, "Field status should be associated with #1");
     $mappingFile->mark_deleted($mappingFile->id);
 }
コード例 #4
0
ファイル: ImportStep3.php プロジェクト: hardikk/HNH
// SAVE MAPPING IF REQUESTED
if (isset($_REQUEST['save_map']) && $_REQUEST['save_map'] == 'on' && isset($_REQUEST['save_map_as']) && $_REQUEST['save_map_as'] != '') {
    p("save map");
    $serialized_mapping = '';
    if ($has_header) {
        foreach ($col_pos_to_field as $pos => $field_name) {
            if (isset($firstrow[$pos]) && isset($field_name)) {
                $header_to_field[$firstrow[$pos]] = $field_name;
            }
        }
        $serialized_mapping = implode_assoc("=", "&", $header_to_field);
    } else {
        $serialized_mapping = implode_assoc("=", "&", $col_pos_to_field);
    }
    $mapping_file_name = $_REQUEST['save_map_as'];
    $mapping_file = new ImportMap();
    $result = $mapping_file->save_map($current_user->id, $mapping_file_name, $_REQUEST['module'], $has_header, $serialized_mapping);
    $adb->println("Save map done");
    $adb->println($result);
}
//save map - ends
if (isset($_SESSION['totalrows']) && $_SESSION['totalrows'] != '') {
    $xrows = $_SESSION['totalrows'];
} else {
    $xrows = $datarows;
}
if (isset($_SESSION['return_field_count'])) {
    $ret_field_count = $_SESSION['return_field_count'];
}
if (isset($_SESSION['column_position_to_field'])) {
    $col_pos_to_field = $_SESSION['column_position_to_field'];
コード例 #5
0
ファイル: ImportAjax.php プロジェクト: jmangarret/vtigercrm
    $map_name = $_REQUEST['name'];
    global $adb;
    $query = "select * from vtiger_import_maps where deleted=0 and name=?";
    $Result = $adb->pquery($query, array($map_name));
    $noofrows = $adb->num_rows($Result);
    if ($noofrows > 0) {
        echo "false";
    } else {
        echo "true";
    }
} else {
    if ($_REQUEST['delete_map'] != '') {
        $query = "update vtiger_import_maps set deleted=1 where id = ?";
        $adb->pquery($query, array($_REQUEST['mapping']));
    }
    $mapping_file = new ImportMap();
    $mapping_arr = $mapping_file->getSavedMappingContent($_REQUEST['mapping']);
    $importable_fields = $_SESSION['import_module_object_column_fields'];
    $field_count = $_SESSION['import_module_field_count'];
    $required_fields = $_SESSION['import_module_object_required_fields'];
    $translated_column_fields = $_SESSION['import_module_translated_column_fields'];
    $tablename = '';
    $has_header = $_SESSION['import_has_header'];
    $firstrow = $_SESSION['import_firstrow'];
    $field_map =& $mapping_arr;
    //$_SESSION['import_field_map'];
    $smarty_array1 = array();
    for ($i = 0; $i < $field_count; $i++) {
        $suggest = '';
        if ($has_header && isset($field_map[$firstrow[$i]])) {
            $suggest = $field_map[$firstrow[$i]];
コード例 #6
0
ファイル: view.step3.php プロジェクト: sysraj86/carnivalcrm
    /**
     * @see SugarView::display()
     */
    public function display()
    {
        global $mod_strings, $app_strings, $current_user, $sugar_config, $app_list_strings, $locale;
        $this->ss->assign("IMPORT_MODULE", $_REQUEST['import_module']);
        $has_header = isset($_REQUEST['has_header']) ? 1 : 0;
        $sugar_config['import_max_records_per_file'] = empty($sugar_config['import_max_records_per_file']) ? 1000 : $sugar_config['import_max_records_per_file'];
        // Clear out this user's last import
        $seedUsersLastImport = new UsersLastImport();
        $seedUsersLastImport->mark_deleted_by_user_id($current_user->id);
        ImportCacheFiles::clearCacheFiles();
        // attempt to lookup a preexisting field map
        // use the custom one if specfied to do so in step 1
        $field_map = array();
        $default_values = array();
        $ignored_fields = array();
        if (!empty($_REQUEST['source_id'])) {
            $mapping_file = new ImportMap();
            $mapping_file->retrieve($_REQUEST['source_id'], false);
            $_REQUEST['source'] = $mapping_file->source;
            $has_header = $mapping_file->has_header;
            if (isset($mapping_file->delimiter)) {
                $_REQUEST['custom_delimiter'] = $mapping_file->delimiter;
            }
            if (isset($mapping_file->enclosure)) {
                $_REQUEST['custom_enclosure'] = htmlentities($mapping_file->enclosure);
            }
            $field_map = $mapping_file->getMapping();
            $default_values = $mapping_file->getDefaultValues();
            $this->ss->assign("MAPNAME", $mapping_file->name);
            $this->ss->assign("CHECKMAP", 'checked="checked" value="on"');
        } else {
            // Try to see if we have a custom mapping we can use
            // based upon the where the records are coming from
            // and what module we are importing into
            $classname = 'ImportMap' . ucfirst($_REQUEST['source']);
            if (file_exists("modules/Import/{$classname}.php")) {
                require_once "modules/Import/{$classname}.php";
            } elseif (file_exists("custom/modules/Import/{$classname}.php")) {
                require_once "custom/modules/Import/{$classname}.php";
            } else {
                require_once "custom/modules/Import/ImportMapOther.php";
                $classname = 'ImportMapOther';
                $_REQUEST['source'] = 'other';
            }
            if (class_exists($classname)) {
                $mapping_file = new $classname();
                if (isset($mapping_file->delimiter)) {
                    $_REQUEST['custom_delimiter'] = $mapping_file->delimiter;
                }
                if (isset($mapping_file->enclosure)) {
                    $_REQUEST['custom_enclosure'] = htmlentities($mapping_file->enclosure);
                }
                $ignored_fields = $mapping_file->getIgnoredFields($_REQUEST['import_module']);
                $field_map = $mapping_file->getMapping($_REQUEST['import_module']);
            }
        }
        $this->ss->assign("CUSTOM_DELIMITER", !empty($_REQUEST['custom_delimiter']) ? $_REQUEST['custom_delimiter'] : ",");
        $this->ss->assign("CUSTOM_ENCLOSURE", !empty($_REQUEST['custom_enclosure']) ? $_REQUEST['custom_enclosure'] : "");
        // handle uploaded file
        $uploadFile = new UploadFile('userfile');
        if (isset($_FILES['userfile']) && $uploadFile->confirm_upload()) {
            $uploadFile->final_move('IMPORT_' . $this->bean->object_name . '_' . $current_user->id);
            $uploadFileName = $uploadFile->get_upload_path('IMPORT_' . $this->bean->object_name . '_' . $current_user->id);
        } else {
            $this->_showImportError($mod_strings['LBL_IMPORT_MODULE_ERROR_NO_UPLOAD'], $_REQUEST['import_module'], 'Step2');
            return;
        }
        // split file into parts
        $splitter = new ImportFileSplitter($uploadFileName, $sugar_config['import_max_records_per_file']);
        $splitter->splitSourceFile($_REQUEST['custom_delimiter'], html_entity_decode($_REQUEST['custom_enclosure'], ENT_QUOTES), $has_header);
        // Now parse the file and look for errors
        $importFile = new ImportFile($uploadFileName, $_REQUEST['custom_delimiter'], html_entity_decode($_REQUEST['custom_enclosure'], ENT_QUOTES));
        if (!$importFile->fileExists()) {
            $this->_showImportError($mod_strings['LBL_CANNOT_OPEN'], $_REQUEST['import_module'], 'Step2');
            return;
        }
        // retrieve first 3 rows
        $rows = array();
        $system_charset = $locale->default_export_charset;
        $user_charset = $locale->getExportCharset();
        $other_charsets = 'UTF-8, UTF-7, ASCII, CP1252, EUC-JP, SJIS, eucJP-win, SJIS-win, JIS, ISO-2022-JP';
        $detectable_charsets = "UTF-8, {$user_charset}, {$system_charset}, {$other_charsets}";
        // Bug 26824 - mb_detect_encoding() thinks CP1252 is IS0-8859-1, so use that instead in the encoding list passed to the function
        $detectable_charsets = str_replace('CP1252', 'ISO-8859-1', $detectable_charsets);
        $charset_for_import = $user_charset;
        //We will set the default import charset option by user's preference.
        $able_to_detect = function_exists('mb_detect_encoding');
        for ($i = 0; $i < 3; $i++) {
            $rows[$i] = $importFile->getNextRow();
            if (!empty($rows[$i]) && $able_to_detect) {
                foreach ($rows[$i] as &$temp_value) {
                    $current_charset = mb_detect_encoding($temp_value, $detectable_charsets);
                    if (!empty($current_charset) && $current_charset != "UTF-8") {
                        $temp_value = $locale->translateCharset($temp_value, $current_charset);
                        // we will use utf-8 for displaying the data on the page.
                        $charset_for_import = $current_charset;
                        //set the default import charset option according to the current_charset.
                        //If it is not utf-8, tt may be overwritten by the later one. So the uploaded file should not contain two types of charset($user_charset, $system_charset), and I think this situation will not occur.
                    }
                }
            }
        }
        $ret_field_count = $importFile->getFieldCount();
        // Bug 14689 - Parse the first data row to make sure it has non-empty data in it
        $isempty = true;
        if ($rows[(int) $has_header] != false) {
            foreach ($rows[(int) $has_header] as $value) {
                if (strlen(trim($value)) > 0) {
                    $isempty = false;
                    break;
                }
            }
        }
        if ($isempty || $rows[(int) $has_header] == false) {
            $this->_showImportError($mod_strings['LBL_NO_LINES'], $_REQUEST['import_module'], 'Step2');
            return;
        }
        // save first row to send to step 4
        $this->ss->assign("FIRSTROW", base64_encode(serialize($rows[0])));
        // Now build template
        $this->ss->assign("TMP_FILE", $uploadFileName);
        $this->ss->assign("FILECOUNT", $splitter->getFileCount());
        $this->ss->assign("RECORDCOUNT", $splitter->getRecordCount());
        $this->ss->assign("RECORDTHRESHOLD", $sugar_config['import_max_records_per_file']);
        $this->ss->assign("SOURCE", $_REQUEST['source']);
        $this->ss->assign("TYPE", $_REQUEST['type']);
        $this->ss->assign("DELETE_INLINE_PNG", SugarThemeRegistry::current()->getImage('basic_search', 'align="absmiddle" alt="' . $app_strings['LNK_DELETE'] . '" border="0"'));
        $this->ss->assign("PUBLISH_INLINE_PNG", SugarThemeRegistry::current()->getImage('advanced_search', 'align="absmiddle" alt="' . $mod_strings['LBL_PUBLISH'] . '" border="0"'));
        $this->ss->assign("MODULE_TITLE", $this->getModuleTitle());
        $this->ss->assign("STEP4_TITLE", strip_tags(str_replace("\n", "", getClassicModuleTitle($mod_strings['LBL_MODULE_NAME'], array($mod_strings['LBL_MODULE_NAME'], $mod_strings['LBL_STEP_4_TITLE']), false))));
        $this->ss->assign("HEADER", $app_strings['LBL_IMPORT'] . " " . $mod_strings['LBL_MODULE_NAME']);
        // we export it as email_address, but import as email1
        $field_map['email_address'] = 'email1';
        // build each row; row count is determined by the the number of fields in the import file
        $columns = array();
        $mappedFields = array();
        for ($field_count = 0; $field_count < $ret_field_count; $field_count++) {
            // See if we have any field map matches
            $defaultValue = "";
            // Bug 31260 - If the data rows have more columns than the header row, then just add a new header column
            if (!isset($rows[0][$field_count])) {
                $rows[0][$field_count] = '';
            }
            // See if we can match the import row to a field in the list of fields to import
            $firstrow_name = trim(str_replace(":", "", $rows[0][$field_count]));
            if ($has_header && isset($field_map[$firstrow_name])) {
                $defaultValue = $field_map[$firstrow_name];
            } elseif (isset($field_map[$field_count])) {
                $defaultValue = $field_map[$field_count];
            } elseif (empty($_REQUEST['source_id'])) {
                $defaultValue = trim($rows[0][$field_count]);
            }
            // build string of options
            $fields = $this->bean->get_importable_fields();
            $options = array();
            $defaultField = '';
            foreach ($fields as $fieldname => $properties) {
                // get field name
                if (!empty($properties['vname'])) {
                    $displayname = str_replace(":", "", translate($properties['vname'], $this->bean->module_dir));
                } else {
                    $displayname = str_replace(":", "", translate($properties['name'], $this->bean->module_dir));
                }
                // see if this is required
                $req_mark = "";
                $req_class = "";
                if (array_key_exists($fieldname, $this->bean->get_import_required_fields())) {
                    $req_mark = ' ' . $app_strings['LBL_REQUIRED_SYMBOL'];
                    $req_class = ' class="required" ';
                }
                // see if we have a match
                $selected = '';
                if (!empty($defaultValue) && !in_array($fieldname, $mappedFields) && !in_array($fieldname, $ignored_fields)) {
                    if (strtolower($fieldname) == strtolower($defaultValue) || strtolower($fieldname) == str_replace(" ", "_", strtolower($defaultValue)) || strtolower($displayname) == strtolower($defaultValue) || strtolower($displayname) == str_replace(" ", "_", strtolower($defaultValue))) {
                        $selected = ' selected="selected" ';
                        $defaultField = $fieldname;
                        $mappedFields[] = $fieldname;
                    }
                }
                // get field type information
                $fieldtype = '';
                if (isset($properties['type']) && isset($mod_strings['LBL_IMPORT_FIELDDEF_' . strtoupper($properties['type'])])) {
                    $fieldtype = ' [' . $mod_strings['LBL_IMPORT_FIELDDEF_' . strtoupper($properties['type'])] . '] ';
                }
                if (isset($properties['comment'])) {
                    $fieldtype .= ' - ' . $properties['comment'];
                }
                $options[$displayname . $fieldname] = '<option value="' . $fieldname . '" title="' . $displayname . htmlentities($fieldtype) . '"' . $selected . $req_class . '>' . $displayname . $req_mark . '</option>\\n';
            }
            // get default field value
            $defaultFieldHTML = '';
            if (!empty($defaultField)) {
                $defaultFieldHTML = getControl($_REQUEST['import_module'], $defaultField, $fields[$defaultField], isset($default_values[$defaultField]) ? $default_values[$defaultField] : '');
            }
            if (isset($default_values[$defaultField])) {
                unset($default_values[$defaultField]);
            }
            // Bug 27046 - Sort the column name picker alphabetically
            ksort($options);
            $columns[] = array('field_choices' => implode('', $options), 'default_field' => $defaultFieldHTML, 'cell1' => str_replace("&quot;", '', htmlspecialchars($rows[0][$field_count])), 'cell2' => str_replace("&quot;", '', htmlspecialchars($rows[1][$field_count])), 'cell3' => str_replace("&quot;", '', htmlspecialchars($rows[2][$field_count])), 'show_remove' => false);
        }
        // add in extra defaulted fields if they are in the mapping record
        if (count($default_values) > 0) {
            foreach ($default_values as $field_name => $default_value) {
                // build string of options
                $fields = $this->bean->get_importable_fields();
                $options = array();
                $defaultField = '';
                foreach ($fields as $fieldname => $properties) {
                    // get field name
                    if (!empty($properties['vname'])) {
                        $displayname = str_replace(":", "", translate($properties['vname'], $this->bean->module_dir));
                    } else {
                        $displayname = str_replace(":", "", translate($properties['name'], $this->bean->module_dir));
                    }
                    // see if this is required
                    $req_mark = "";
                    $req_class = "";
                    if (array_key_exists($fieldname, $this->bean->get_import_required_fields())) {
                        $req_mark = ' ' . $app_strings['LBL_REQUIRED_SYMBOL'];
                        $req_class = ' class="required" ';
                    }
                    // see if we have a match
                    $selected = '';
                    if (strtolower($fieldname) == strtolower($field_name) && !in_array($fieldname, $mappedFields) && !in_array($fieldname, $ignored_fields)) {
                        $selected = ' selected="selected" ';
                        $defaultField = $fieldname;
                        $mappedFields[] = $fieldname;
                    }
                    // get field type information
                    $fieldtype = '';
                    if (isset($properties['type']) && isset($mod_strings['LBL_IMPORT_FIELDDEF_' . strtoupper($properties['type'])])) {
                        $fieldtype = ' [' . $mod_strings['LBL_IMPORT_FIELDDEF_' . strtoupper($properties['type'])] . '] ';
                    }
                    if (isset($properties['comment'])) {
                        $fieldtype .= ' - ' . $properties['comment'];
                    }
                    $options[$displayname . $fieldname] = '<option value="' . $fieldname . '" title="' . $displayname . $fieldtype . '"' . $selected . $req_class . '>' . $displayname . $req_mark . '</option>\\n';
                }
                // get default field value
                $defaultFieldHTML = '';
                if (!empty($defaultField)) {
                    $defaultFieldHTML = getControl($_REQUEST['import_module'], $defaultField, $fields[$defaultField], $default_value);
                }
                // Bug 27046 - Sort the column name picker alphabetically
                ksort($options);
                $columns[] = array('field_choices' => implode('', $options), 'default_field' => $defaultFieldHTML, 'show_remove' => true);
                $ret_field_count++;
            }
        }
        $this->ss->assign("COLUMNCOUNT", $ret_field_count);
        $this->ss->assign("rows", $columns);
        // get list of valid date/time formats
        $timeFormat = $current_user->getUserDateTimePreferences();
        $timeOptions = get_select_options_with_id($sugar_config['time_formats'], $timeFormat['time']);
        $dateOptions = get_select_options_with_id($sugar_config['date_formats'], $timeFormat['date']);
        $this->ss->assign('TIMEOPTIONS', $timeOptions);
        $this->ss->assign('DATEOPTIONS', $dateOptions);
        $this->ss->assign('datetimeformat', $GLOBALS['timedate']->get_cal_date_time_format());
        // get list of valid timezones
        $userTZ = $current_user->getPreference('timezone');
        if (empty($userTZ)) {
            $userTZ = TimeDate::userTimezone();
        }
        $this->ss->assign('TIMEZONE_CURRENT', $userTZ);
        $this->ss->assign('TIMEZONEOPTIONS', TimeDate::getTimezoneList());
        // get currency preference
        require_once 'modules/Currencies/ListCurrency.php';
        $currency = new ListCurrency();
        $cur_id = $locale->getPrecedentPreference('currency', $current_user);
        if ($cur_id) {
            $selectCurrency = $currency->getSelectOptions($cur_id);
            $this->ss->assign("CURRENCY", $selectCurrency);
        } else {
            $selectCurrency = $currency->getSelectOptions();
            $this->ss->assign("CURRENCY", $selectCurrency);
        }
        $currenciesVars = "";
        $i = 0;
        foreach ($locale->currencies as $id => $arrVal) {
            $currenciesVars .= "currencies[{$i}] = '{$arrVal['symbol']}';\n";
            $i++;
        }
        $currencySymbolsJs = <<<eoq
var currencies = new Object;
{$currenciesVars}
function setSymbolValue(id) {
    document.getElementById('symbol').value = currencies[id];
}
eoq;
        $this->ss->assign('currencySymbolJs', $currencySymbolsJs);
        // fill significant digits dropdown
        $significantDigits = $locale->getPrecedentPreference('default_currency_significant_digits', $current_user);
        $sigDigits = '';
        for ($i = 0; $i <= 6; $i++) {
            if ($significantDigits == $i) {
                $sigDigits .= '<option value="' . $i . '" selected="true">' . $i . '</option>';
            } else {
                $sigDigits .= '<option value="' . $i . '">' . $i . '</option>';
            }
        }
        $this->ss->assign('sigDigits', $sigDigits);
        $num_grp_sep = $current_user->getPreference('num_grp_sep');
        $dec_sep = $current_user->getPreference('dec_sep');
        $this->ss->assign("NUM_GRP_SEP", empty($num_grp_sep) ? $sugar_config['default_number_grouping_seperator'] : $num_grp_sep);
        $this->ss->assign("DEC_SEP", empty($dec_sep) ? $sugar_config['default_decimal_seperator'] : $dec_sep);
        $this->ss->assign('getNumberJs', $locale->getNumberJs());
        // Name display format
        $this->ss->assign('default_locale_name_format', $locale->getLocaleFormatMacro($current_user));
        $this->ss->assign('getNameJs', $locale->getNameJs());
        // Charset
        $charsetOptions = get_select_options_with_id($locale->getCharsetSelect(), $charset_for_import);
        //wdong,  bug 25927, here we should use the charset testing results from above.
        $this->ss->assign('CHARSETOPTIONS', $charsetOptions);
        // handle building index selector
        global $dictionary, $current_language;
        require_once "include/templates/TemplateGroupChooser.php";
        $chooser_array = array();
        $chooser_array[0] = array();
        $idc = new ImportDuplicateCheck($this->bean);
        $chooser_array[1] = $idc->getDuplicateCheckIndexes();
        $chooser = new TemplateGroupChooser();
        $chooser->args['id'] = 'selected_indices';
        $chooser->args['values_array'] = $chooser_array;
        $chooser->args['left_name'] = 'choose_index';
        $chooser->args['right_name'] = 'ignore_index';
        $chooser->args['left_label'] = $mod_strings['LBL_INDEX_USED'];
        $chooser->args['right_label'] = $mod_strings['LBL_INDEX_NOT_USED'];
        $this->ss->assign("TAB_CHOOSER", $chooser->display());
        // show notes
        if ($this->bean instanceof Person) {
            $module_key = "LBL_CONTACTS_NOTE_";
        } elseif ($this->bean instanceof Company) {
            $module_key = "LBL_ACCOUNTS_NOTE_";
        } else {
            $module_key = "LBL_" . strtoupper($_REQUEST['import_module']) . "_NOTE_";
        }
        $notetext = '';
        for ($i = 1; isset($mod_strings[$module_key . $i]); $i++) {
            $notetext .= '<li>' . $mod_strings[$module_key . $i] . '</li>';
        }
        $this->ss->assign("NOTETEXT", $notetext);
        $this->ss->assign("HAS_HEADER", $has_header ? 'on' : 'off');
        // get list of required fields
        $required = array();
        foreach (array_keys($this->bean->get_import_required_fields()) as $name) {
            $properties = $this->bean->getFieldDefinition($name);
            if (!empty($properties['vname'])) {
                $required[$name] = str_replace(":", "", translate($properties['vname'], $this->bean->module_dir));
            } else {
                $required[$name] = str_replace(":", "", translate($properties['name'], $this->bean->module_dir));
            }
        }
        // include anything needed for quicksearch to work
        require_once "include/TemplateHandler/TemplateHandler.php";
        $quicksearch_js = TemplateHandler::createQuickSearchCode($fields, $fields, 'importstep3');
        $this->ss->assign("JAVASCRIPT", $quicksearch_js . "\n" . $this->_getJS($required));
        $this->ss->assign('required_fields', implode(', ', $required));
        $this->ss->display('modules/Import/tpls/step3.tpl');
    }
コード例 #7
0
ファイル: view.step2.php プロジェクト: klr2003/sourceread
 /** 
  * display the form
  */
 public function display()
 {
     global $mod_strings, $app_list_strings, $app_strings, $current_user, $import_bean_map;
     global $import_mod_strings;
     $this->ss->assign("MODULE_TITLE", get_module_title($mod_strings['LBL_MODULE_NAME'], $mod_strings['LBL_MODULE_NAME'] . " " . $mod_strings['LBL_STEP_2_TITLE'], true));
     $this->ss->assign("MOD", $mod_strings);
     $this->ss->assign("APP", $app_strings);
     $this->ss->assign("IMP", $import_mod_strings);
     $this->ss->assign("TYPE", !empty($_REQUEST['type']) ? $_REQUEST['type'] : "import");
     $this->ss->assign("CUSTOM_DELIMITER", !empty($_REQUEST['custom_delimiter']) ? $_REQUEST['custom_delimiter'] : ",");
     $this->ss->assign("CUSTOM_ENCLOSURE", htmlentities(!empty($_REQUEST['custom_enclosure']) && $_REQUEST['custom_enclosure'] != 'other' ? $_REQUEST['custom_enclosure'] : (!empty($_REQUEST['custom_enclosure_other']) ? $_REQUEST['custom_enclosure_other'] : "")));
     $this->ss->assign("IMPORT_MODULE", $_REQUEST['import_module']);
     $this->ss->assign("HEADER", $app_strings['LBL_IMPORT'] . " " . $mod_strings['LBL_MODULE_NAME']);
     $this->ss->assign("JAVASCRIPT", $this->_getJS());
     // load bean
     $focus = loadImportBean($_REQUEST['import_module']);
     if (!$focus) {
         showImportError($mod_strings['LBL_ERROR_IMPORTS_NOT_SET_UP'], $_REQUEST['import_module']);
         return;
     }
     // special for importing from Outlook
     if ($_REQUEST['source'] == "outlook") {
         $this->ss->assign("SOURCE", $_REQUEST['source']);
         $this->ss->assign("SOURCE_NAME", "Outlook ");
         $this->ss->assign("HAS_HEADER_CHECKED", " CHECKED");
     } elseif (strncasecmp("custom:", $_REQUEST['source'], 7) == 0) {
         $id = substr($_REQUEST['source'], 7);
         $import_map_seed = new ImportMap();
         $import_map_seed->retrieve($id, false);
         $this->ss->assign("SOURCE_ID", $import_map_seed->id);
         $this->ss->assign("SOURCE_NAME", $import_map_seed->name);
         $this->ss->assign("SOURCE", $import_map_seed->source);
         if (isset($import_map_seed->delimiter)) {
             $this->ss->assign("CUSTOM_DELIMITER", $import_map_seed->delimiter);
         }
         if (isset($import_map_seed->enclosure)) {
             $this->ss->assign("CUSTOM_ENCLOSURE", htmlentities($import_map_seed->enclosure));
         }
         if ($import_map_seed->has_header) {
             $this->ss->assign("HAS_HEADER_CHECKED", " CHECKED");
         }
     } else {
         $classname = 'ImportMap' . ucfirst($_REQUEST['source']);
         require "modules/Import/{$classname}.php";
         $import_map_seed = new $classname();
         if (isset($import_map_seed->delimiter)) {
             $this->ss->assign("CUSTOM_DELIMITER", $import_map_seed->delimiter);
         }
         if (isset($import_map_seed->enclosure)) {
             $this->ss->assign("CUSTOM_ENCLOSURE", htmlentities($import_map_seed->enclosure));
         }
         if ($import_map_seed->has_header) {
             $this->ss->assign("HAS_HEADER_CHECKED", " CHECKED");
         }
         $this->ss->assign("SOURCE", $_REQUEST['source']);
     }
     // add instructions for anything other than custom_delimited
     if ($_REQUEST['source'] != 'other') {
         $instructions = array();
         $lang_key = '';
         switch ($_REQUEST['source']) {
             case "act":
                 $lang_key = "ACT";
                 break;
             case "outlook":
                 $lang_key = "OUTLOOK";
                 break;
             case "salesforce":
                 $lang_key = "SF";
                 break;
             case "tab":
                 $lang_key = "TAB";
                 break;
             case "jigsaw":
                 $lang_key = "JIGSAW";
                 break;
             case "csv":
                 $lang_key = "CUSTOM";
                 break;
         }
         if ($lang_key != '') {
             for ($i = 1; isset($mod_strings["LBL_{$lang_key}_NUM_{$i}"]); $i++) {
                 $instructions[] = array("STEP_NUM" => $mod_strings["LBL_NUM_{$i}"], "INSTRUCTION_STEP" => $mod_strings["LBL_{$lang_key}_NUM_{$i}"]);
             }
             $this->ss->assign("INSTRUCTIONS_TITLE", $mod_strings["LBL_IMPORT_{$lang_key}_TITLE"]);
             $this->ss->assign("instructions", $instructions);
         }
     }
     $this->ss->display('modules/Import/tpls/step2.tpl');
 }
コード例 #8
0
$xtpl->assign("MODULE", $_REQUEST['module']);
// see if the source starts with 'custom'
// if so, pull off the id, load that map, and get the name
if ($_REQUEST['source'] == "outlook") {
    $xtpl->assign("SOURCE", $_REQUEST['source']);
    $xtpl->assign("SOURCE_NAME", "Outlook ");
    $xtpl->assign("HAS_HEADER_CHECKED", " CHECKED");
} else {
    if ($_REQUEST['source'] == "act") {
        $xtpl->assign("SOURCE", $_REQUEST['source']);
        $xtpl->assign("SOURCE_NAME", "ACT! ");
        $xtpl->assign("HAS_HEADER_CHECKED", " CHECKED");
    } else {
        if (strncasecmp("custom:", $_REQUEST['source'], 7) == 0) {
            $id = substr($_REQUEST['source'], 7);
            $import_map_seed = new ImportMap();
            $import_map_seed->retrieve($id, false);
            $xtpl->assign("SOURCE_ID", $import_map_seed->id);
            $xtpl->assign("SOURCE_NAME", $import_map_seed->name);
            $xtpl->assign("SOURCE", $import_map_seed->source);
            if ($import_map_seed->has_header) {
                $xtpl->assign("HAS_HEADER_CHECKED", " CHECKED");
            }
        } else {
            $xtpl->assign("HAS_HEADER_CHECKED", " CHECKED");
            $xtpl->assign("SOURCE", $_REQUEST['source']);
        }
    }
}
$xtpl->assign("JAVASCRIPT", get_validate_upload_js());
$lang_key = '';
コード例 #9
0
ファイル: view.step1.php プロジェクト: klr2003/sourceread
 /** 
  * display the form
  */
 public function display()
 {
     global $mod_strings, $app_list_strings, $app_strings, $current_user;
     global $sugar_config;
     $this->ss->assign("MODULE_TITLE", get_module_title($mod_strings['LBL_MODULE_NAME'], $mod_strings['LBL_MODULE_NAME'] . " " . $mod_strings['LBL_STEP_1_TITLE'], true));
     $this->ss->assign("MOD", $mod_strings);
     $this->ss->assign("APP", $app_strings);
     $this->ss->assign("DELETE_INLINE_PNG", SugarThemeRegistry::current()->getImage('delete_inline', 'align="absmiddle" alt="' . $app_strings['LNK_DELETE'] . '" border="0"'));
     $this->ss->assign("PUBLISH_INLINE_PNG", SugarThemeRegistry::current()->getImage('publish_inline', 'align="absmiddle" alt="' . $mod_strings['LBL_PUBLISH'] . '" border="0"'));
     $this->ss->assign("UNPUBLISH_INLINE_PNG", SugarThemeRegistry::current()->getImage('unpublish_inline', 'align="absmiddle" alt="' . $mod_strings['LBL_UNPUBLISH'] . '" border="0"'));
     $this->ss->assign("IMPORT_MODULE", $_REQUEST['import_module']);
     $this->ss->assign("JAVASCRIPT", $this->_getJS());
     // handle publishing and deleting import maps
     if (isset($_REQUEST['delete_map_id'])) {
         $import_map = new ImportMap();
         $import_map->mark_deleted($_REQUEST['delete_map_id']);
     }
     if (isset($_REQUEST['publish'])) {
         $import_map = new ImportMap();
         $result = 0;
         $import_map = $import_map->retrieve($_REQUEST['import_map_id'], false);
         if ($_REQUEST['publish'] == 'yes') {
             $result = $import_map->mark_published($current_user->id, true);
             if (!$result) {
                 $this->ss->assign("ERROR", $mod_strings['LBL_ERROR_UNABLE_TO_PUBLISH']);
             }
         } elseif ($_REQUEST['publish'] == 'no') {
             // if you don't own this importmap, you do now!
             // unless you have a map by the same name
             $result = $import_map->mark_published($current_user->id, false);
             if (!$result) {
                 $this->ss->assign("ERROR", $mod_strings['LBL_ERROR_UNABLE_TO_UNPUBLISH']);
             }
         }
     }
     // load bean
     $focus = loadImportBean($_REQUEST['import_module']);
     if (!$focus) {
         showImportError($mod_strings['LBL_ERROR_IMPORTS_NOT_SET_UP'], $_REQUEST['import_module']);
         return;
     }
     // trigger showing other software packages
     $this->ss->assign("show_salesforce", false);
     $this->ss->assign("show_outlook", false);
     $this->ss->assign("show_act", false);
     $this->ss->assign("show_jigsaw", false);
     switch ($_REQUEST['import_module']) {
         case "Prospects":
             break;
         case "Accounts":
             $this->ss->assign("show_salesforce", true);
             $this->ss->assign("show_act", true);
             $this->ss->assign("show_jigsaw", true);
             break;
         case "Contacts":
             $this->ss->assign("show_salesforce", true);
             $this->ss->assign("show_outlook", true);
             $this->ss->assign("show_act", true);
             break;
         default:
             $this->ss->assign("show_salesforce", true);
             break;
     }
     // get user defined import maps
     $this->ss->assign('is_admin', is_admin($current_user));
     $import_map_seed = new ImportMap();
     $custom_imports_arr = $import_map_seed->retrieve_all_by_string_fields(array('assigned_user_id' => $current_user->id, 'is_published' => 'no', 'module' => $_REQUEST['import_module']));
     if (count($custom_imports_arr)) {
         $custom = array();
         foreach ($custom_imports_arr as $import) {
             $custom[] = array("IMPORT_NAME" => $import->name, "IMPORT_ID" => $import->id);
         }
         $this->ss->assign('custom_imports', $custom);
     }
     // get globally defined import maps
     $published_imports_arr = $import_map_seed->retrieve_all_by_string_fields(array('is_published' => 'yes', 'module' => $_REQUEST['import_module']));
     if (count($published_imports_arr)) {
         $published = array();
         foreach ($published_imports_arr as $import) {
             $published[] = array("IMPORT_NAME" => $import->name, "IMPORT_ID" => $import->id);
         }
         $this->ss->assign('published_imports', $published);
     }
     $this->ss->display('modules/Import/tpls/step1.tpl');
 }
コード例 #10
0
ファイル: view.step4.php プロジェクト: aldridged/gtg-sugar
 /** 
  * @see SugarView::display()
  */
 public function display()
 {
     global $sugar_config;
     // Increase the max_execution_time since this step can take awhile
     ini_set("max_execution_time", max($sugar_config['import_max_execution_time'], 3600));
     // stop the tracker
     TrackerManager::getInstance()->pause();
     // use our own error handler
     set_error_handler('handleImportErrors', E_ALL);
     global $mod_strings, $app_strings, $current_user, $import_bean_map;
     global $app_list_strings, $timedate;
     $update_only = isset($_REQUEST['import_type']) && $_REQUEST['import_type'] == 'update';
     $firstrow = unserialize(base64_decode($_REQUEST['firstrow']));
     // All the Look Up Caches are initialized here
     $enum_lookup_cache = array();
     // Let's try and load the import bean
     $focus = loadImportBean($_REQUEST['import_module']);
     if (!$focus) {
         trigger_error($mod_strings['LBL_ERROR_IMPORTS_NOT_SET_UP'], E_USER_ERROR);
     }
     // setup the importable fields array.
     $importable_fields = $focus->get_importable_fields();
     // loop through all request variables
     $importColumns = array();
     foreach ($_REQUEST as $name => $value) {
         // only look for var names that start with "fieldNum"
         if (strncasecmp($name, "colnum_", 7) != 0) {
             continue;
         }
         // pull out the column position for this field name
         $pos = substr($name, 7);
         if (isset($importable_fields[$value])) {
             // now mark that we've seen this field
             $importColumns[$pos] = $value;
         }
     }
     // set the default locale settings
     $ifs = new ImportFieldSanitize();
     $ifs->dateformat = $_REQUEST['importlocale_dateformat'];
     $ifs->timeformat = $_REQUEST['importlocale_timeformat'];
     $ifs->timezone = $_REQUEST['importlocale_timezone'];
     $currency = new Currency();
     $currency->retrieve($_REQUEST['importlocale_currency']);
     $ifs->currency_symbol = $currency->symbol;
     $ifs->default_currency_significant_digits = $_REQUEST['importlocale_default_currency_significant_digits'];
     $ifs->num_grp_sep = $_REQUEST['importlocale_num_grp_sep'];
     $ifs->dec_sep = $_REQUEST['importlocale_dec_sep'];
     $ifs->default_locale_name_format = $_REQUEST['importlocale_default_locale_name_format'];
     // Check to be sure we are getting an import file that is in the right place
     if (realpath(dirname($_REQUEST['tmp_file']) . '/') != realpath($sugar_config['upload_dir'])) {
         trigger_error($mod_strings['LBL_CANNOT_OPEN'], E_USER_ERROR);
     }
     // Open the import file
     $importFile = new ImportFile($_REQUEST['tmp_file'], $_REQUEST['custom_delimiter'], html_entity_decode($_REQUEST['custom_enclosure'], ENT_QUOTES));
     if (!$importFile->fileExists()) {
         trigger_error($mod_strings['LBL_CANNOT_OPEN'], E_USER_ERROR);
     }
     $fieldDefs = $focus->getFieldDefinitions();
     unset($focus);
     while ($row = $importFile->getNextRow()) {
         $focus = loadImportBean($_REQUEST['import_module']);
         $focus->unPopulateDefaultValues();
         $focus->save_from_post = false;
         $focus->team_id = null;
         $ifs->createdBeans = array();
         $do_save = true;
         for ($fieldNum = 0; $fieldNum < $_REQUEST['columncount']; $fieldNum++) {
             // loop if this column isn't set
             if (!isset($importColumns[$fieldNum])) {
                 continue;
             }
             // get this field's properties
             $field = $importColumns[$fieldNum];
             $fieldDef = $focus->getFieldDefinition($field);
             $fieldTranslated = translate(isset($fieldDef['vname']) ? $fieldDef['vname'] : $fieldDef['name'], $_REQUEST['module']) . " (" . $fieldDef['name'] . ")";
             // Bug 37241 - Don't re-import over a field we already set during the importing of another field
             if (!empty($focus->{$field})) {
                 continue;
             }
             //DETERMINE WHETHER OR NOT $fieldDef['name'] IS DATE_MODIFIED AND SET A VAR, USE DOWN BELOW
             // translate strings
             global $locale;
             if (empty($locale)) {
                 $locale = new Localization();
             }
             if (isset($row[$fieldNum])) {
                 $rowValue = $locale->translateCharset(strip_tags(trim($row[$fieldNum])), $_REQUEST['importlocale_charset'], $sugar_config['default_charset']);
             } else {
                 $rowValue = '';
             }
             // If there is an default value then use it instead
             if (!empty($_REQUEST[$field])) {
                 if (is_array($_REQUEST[$field])) {
                     $defaultRowValue = encodeMultienumValue($_REQUEST[$field]);
                 } else {
                     $defaultRowValue = $_REQUEST[$field];
                 }
                 // translate default values to the date/time format for the import file
                 if ($fieldDef['type'] == 'date' && $ifs->dateformat != $timedate->get_date_format()) {
                     $defaultRowValue = $timedate->swap_formats($defaultRowValue, $ifs->dateformat, $timedate->get_date_format());
                 }
                 if ($fieldDef['type'] == 'time' && $ifs->timeformat != $timedate->get_time_format()) {
                     $defaultRowValue = $timedate->swap_formats($defaultRowValue, $ifs->timeformat, $timedate->get_time_format());
                 }
                 if (($fieldDef['type'] == 'datetime' || $fieldDef['type'] == 'datetimecombo') && $ifs->dateformat . ' ' . $ifs->timeformat != $timedate->get_date_time_format()) {
                     $defaultRowValue = $timedate->swap_formats($defaultRowValue, $ifs->dateformat . ' ' . $ifs->timeformat, $timedate->get_date_time_format());
                 }
                 if (in_array($fieldDef['type'], array('currency', 'float', 'int', 'num')) && $ifs->num_grp_sep != $current_user->getPreference('num_grp_sep')) {
                     $defaultRowValue = str_replace($current_user->getPreference('num_grp_sep'), $ifs->num_grp_sep, $defaultRowValue);
                 }
                 if (in_array($fieldDef['type'], array('currency', 'float')) && $ifs->dec_sep != $current_user->getPreference('dec_sep')) {
                     $defaultRowValue = str_replace($current_user->getPreference('dec_sep'), $ifs->dec_sep, $defaultRowValue);
                 }
                 $currency->retrieve('-99');
                 $user_currency_symbol = $currency->symbol;
                 if ($fieldDef['type'] == 'currency' && $ifs->currency_symbol != $user_currency_symbol) {
                     $defaultRowValue = str_replace($user_currency_symbol, $ifs->currency_symbol, $defaultRowValue);
                 }
                 if (empty($rowValue)) {
                     $rowValue = $defaultRowValue;
                     unset($defaultRowValue);
                 }
             }
             // Bug 22705 - Don't update the First Name or Last Name value if Full Name is set
             if (in_array($field, array('first_name', 'last_name')) && !empty($focus->full_name)) {
                 continue;
             }
             // loop if this value has not been set
             if (!isset($rowValue)) {
                 continue;
             }
             // If the field is required and blank then error out
             if (array_key_exists($field, $focus->get_import_required_fields()) && empty($rowValue) && $rowValue != '0') {
                 $importFile->writeError($mod_strings['LBL_REQUIRED_VALUE'], $fieldTranslated, 'NULL');
                 $do_save = false;
             }
             // Handle the special case "Sync to Outlook"
             if ($focus->object_name == "Contacts" && $field == 'sync_contact') {
                 $bad_names = array();
                 $returnValue = $ifs->synctooutlook($rowValue, $fieldDef, $bad_names);
                 // try the default value on fail
                 if (!$returnValue && !empty($defaultRowValue)) {
                     $returnValue = $ifs->synctooutlook($defaultRowValue, $fieldDef, $bad_names);
                 }
                 if (!$returnValue) {
                     $importFile->writeError($mod_strings['LBL_ERROR_SYNC_USERS'], $fieldTranslated, explode(",", $bad_names));
                     $do_save = 0;
                 }
             }
             // Handle email1 and email2 fields ( these don't have the type of email )
             if ($field == 'email1' || $field == 'email2') {
                 $returnValue = $ifs->email($rowValue, $fieldDef);
                 // try the default value on fail
                 if (!$returnValue && !empty($defaultRowValue)) {
                     $returnValue = $ifs->email($defaultRowValue, $fieldDef);
                 }
                 if ($returnValue === FALSE) {
                     $do_save = 0;
                     $importFile->writeError($mod_strings['LBL_ERROR_INVALID_EMAIL'], $fieldTranslated, $rowValue);
                 } else {
                     $rowValue = $returnValue;
                     // check for current opt_out and invalid email settings for this email address
                     // if we find any, set them now
                     $emailres = $focus->db->query("SELECT opt_out, invalid_email FROM email_addresses \n                                WHERE email_address = '" . $focus->db->quote($rowValue) . "'");
                     if ($emailrow = $focus->db->fetchByAssoc($emailres)) {
                         $focus->email_opt_out = $emailrow['opt_out'];
                         $focus->invalid_email = $emailrow['invalid_email'];
                     }
                 }
             }
             // Handle splitting Full Name into First and Last Name parts
             if ($field == 'full_name' && !empty($rowValue)) {
                 $ifs->fullname($rowValue, $fieldDef, $focus);
             }
             // to maintain 451 compatiblity
             if (!isset($fieldDef['module']) && $fieldDef['type'] == 'relate') {
                 $fieldDef['module'] = ucfirst($fieldDef['table']);
             }
             if (isset($fieldDef['custom_type']) && !empty($fieldDef['custom_type'])) {
                 $fieldDef['type'] = $fieldDef['custom_type'];
             }
             // If the field is empty then there is no need to check the data
             if (!empty($rowValue)) {
                 switch ($fieldDef['type']) {
                     case 'enum':
                     case 'multienum':
                         if (isset($fieldDef['type']) && $fieldDef['type'] == "multienum") {
                             $returnValue = $ifs->multienum($rowValue, $fieldDef);
                         } else {
                             $returnValue = $ifs->enum($rowValue, $fieldDef);
                         }
                         // try the default value on fail
                         if (!$returnValue && !empty($defaultRowValue)) {
                             if (isset($fieldDef['type']) && $fieldDef['type'] == "multienum") {
                                 $returnValue = $ifs->multienum($defaultRowValue, $fieldDef);
                             } else {
                                 $returnValue = $ifs->enum($defaultRowValue, $fieldDef);
                             }
                         }
                         if ($returnValue === FALSE) {
                             $importFile->writeError($mod_strings['LBL_ERROR_NOT_IN_ENUM'] . implode(",", $app_list_strings[$fieldDef['options']]), $fieldTranslated, $rowValue);
                             $do_save = 0;
                         } else {
                             $rowValue = $returnValue;
                         }
                         break;
                     case 'relate':
                     case 'parent':
                         $returnValue = $ifs->relate($rowValue, $fieldDef, $focus, empty($defaultRowValue));
                         if (!$returnValue && !empty($defaultRowValue)) {
                             $returnValue = $ifs->relate($defaultRowValue, $fieldDef, $focus);
                         }
                         // Bug 33623 - Set the id value found from the above method call as an importColumn
                         if ($returnValue !== false) {
                             $importColumns[] = $fieldDef['id_name'];
                         }
                         break;
                     case 'teamset':
                         $returnValue = $ifs->teamset($rowValue, $fieldDef, $focus);
                         $importColumns[] = 'team_set_id';
                         $importColumns[] = 'team_id';
                         break;
                     case 'fullname':
                         break;
                     default:
                         if (method_exists('ImportFieldSanitize', $fieldDef['type'])) {
                             $fieldtype = $fieldDef['type'];
                             $returnValue = $ifs->{$fieldtype}($rowValue, $fieldDef);
                             // try the default value on fail
                             if (!$returnValue && !empty($defaultRowValue)) {
                                 $returnValue = $ifs->{$fieldtype}($defaultRowValue, $fieldDef);
                             }
                             if (!$returnValue) {
                                 $do_save = 0;
                                 $importFile->writeError($mod_strings['LBL_ERROR_INVALID_' . strtoupper($fieldDef['type'])], $fieldTranslated, $rowValue);
                             } else {
                                 $rowValue = $returnValue;
                             }
                         }
                 }
             }
             $focus->{$field} = $rowValue;
             unset($defaultRowValue);
         }
         // Now try to validate flex relate fields
         if (isset($focus->field_defs['parent_name']) && isset($focus->parent_name) && $focus->field_defs['parent_name']['type'] == 'parent') {
             // populate values from the picker widget if the import file doesn't have them
             $parent_idField = $focus->field_defs['parent_name']['id_name'];
             if (empty($focus->{$parent_idField}) && !empty($_REQUEST[$parent_idField])) {
                 $focus->{$parent_idField} = $_REQUEST[$parent_idField];
             }
             $parent_typeField = $focus->field_defs['parent_name']['type_name'];
             if (empty($focus->{$parent_typeField}) && !empty($_REQUEST[$parent_typeField])) {
                 $focus->{$parent_typeField} = $_REQUEST[$parent_typeField];
             }
             // now validate it
             $returnValue = $ifs->parent($focus->parent_name, $focus->field_defs['parent_name'], $focus, empty($_REQUEST['parent_name']));
             if (!$returnValue && !empty($_REQUEST['parent_name'])) {
                 $returnValue = $ifs->parent($_REQUEST['parent_name'], $focus->field_defs['parent_name'], $focus);
             }
         }
         // check to see that the indexes being entered are unique.
         if (isset($_REQUEST['display_tabs_def']) && $_REQUEST['display_tabs_def'] != "") {
             $idc = new ImportDuplicateCheck($focus);
             if ($idc->isADuplicateRecord(explode('&', $_REQUEST['display_tabs_def']))) {
                 $importFile->markRowAsDuplicate();
                 $this->_undoCreatedBeans($ifs->createdBeans);
                 continue;
             }
         }
         // if the id was specified
         $newRecord = true;
         if (!empty($focus->id)) {
             $focus->id = $this->_convertId($focus->id);
             // check if it already exists
             $query = "SELECT * FROM {$focus->table_name} WHERE id='" . $focus->db->quote($focus->id) . "'";
             $result = $focus->db->query($query) or sugar_die("Error selecting sugarbean: ");
             $dbrow = $focus->db->fetchByAssoc($result);
             if (isset($dbrow['id']) && $dbrow['id'] != -1) {
                 // if it exists but was deleted, just remove it
                 if (isset($dbrow['deleted']) && $dbrow['deleted'] == 1 && $update_only == false) {
                     $query2 = "DELETE FROM {$focus->table_name} WHERE id='" . $focus->db->quote($focus->id) . "'";
                     $result2 = $focus->db->query($query2) or sugar_die($mod_strings['LBL_ERROR_DELETING_RECORD'] . " " . $focus->id);
                     if ($focus->hasCustomFields()) {
                         $query3 = "DELETE FROM {$focus->table_name}_cstm WHERE id_c='" . $focus->db->quote($focus->id) . "'";
                         $result2 = $focus->db->query($query3);
                     }
                     $focus->new_with_id = true;
                 } else {
                     if (!$update_only) {
                         $do_save = 0;
                         $importFile->writeError($mod_strings['LBL_ID_EXISTS_ALREADY'], 'ID', $focus->id);
                         $this->_undoCreatedBeans($ifs->createdBeans);
                         continue;
                     }
                     $existing_focus = loadImportBean($_REQUEST['import_module']);
                     $newRecord = false;
                     if (!$existing_focus->retrieve($dbrow['id']) instanceof SugarBean) {
                         $do_save = 0;
                         $importFile->writeError($mod_strings['LBL_RECORD_CANNOT_BE_UPDATED'], 'ID', $focus->id);
                         $this->_undoCreatedBeans($ifs->createdBeans);
                         continue;
                     } else {
                         $newData = $focus->toArray();
                         foreach ($newData as $focus_key => $focus_value) {
                             if (in_array($focus_key, $importColumns)) {
                                 $existing_focus->{$focus_key} = $focus_value;
                             }
                         }
                         $focus = $existing_focus;
                     }
                     unset($existing_focus);
                 }
             } else {
                 $focus->new_with_id = true;
             }
         }
         if ($do_save) {
             // Populate in any default values to the bean
             $focus->populateDefaultValues();
             if (!isset($focus->assigned_user_id) || $focus->assigned_user_id == '' && $newRecord) {
                 $focus->assigned_user_id = $current_user->id;
             }
             /*
              * Bug 34854: Added all conditions besides the empty check on date modified. Currently, if
              * we do an update to a record, it doesn't update the date_modified value.
              * Hack note: I'm doing a to_display and back to_db on the fetched row to make sure that any truncating that happens
              * when $focus->date_modified goes to_display and back to_db also happens on the fetched db value. Otherwise,
              * in some cases we truncate the seconds on one and not the other, and the comparison fails when it should pass
              */
             if (!empty($focus->new_with_id) && !empty($focus->date_modified) || empty($focus->new_with_id) && $timedate->to_db($focus->date_modified) != $timedate->to_db($timedate->to_display_date_time($focus->fetched_row['date_modified']))) {
                 $focus->update_date_modified = false;
             }
             $focus->optimistic_lock = false;
             if ($focus->object_name == "Contacts" && isset($focus->sync_contact)) {
                 //copy the potential sync list to another varible
                 $list_of_users = $focus->sync_contact;
                 //and set it to false for the save
                 $focus->sync_contact = false;
             } else {
                 if ($focus->object_name == "User" && !empty($current_user) && $focus->is_admin && !is_admin($current_user) && is_admin_for_module($current_user, 'Users')) {
                     sugar_die($GLOBALS['mod_strings']['ERR_IMPORT_SYSTEM_ADMININSTRATOR']);
                 }
             }
             //bug# 40260 setting it true as the module in focus is involved in an import
             $focus->in_import = true;
             // call any logic needed for the module preSave
             $focus->beforeImportSave();
             $focus->save(false);
             // call any logic needed for the module postSave
             $focus->afterImportSave();
             if ($focus->object_name == "Contacts" && isset($list_of_users)) {
                 $focus->process_sync_to_outlook($list_of_users);
             }
             // Update the created/updated counter
             $importFile->markRowAsImported($newRecord);
             // Add ID to User's Last Import records
             if ($newRecord) {
                 ImportFile::writeRowToLastImport($_REQUEST['import_module'], $focus->object_name == 'Case' ? 'aCase' : $focus->object_name, $focus->id);
             }
         } else {
             $this->_undoCreatedBeans($ifs->createdBeans);
         }
     }
     // save mapping if requested
     if (isset($_REQUEST['save_map_as']) && $_REQUEST['save_map_as'] != '') {
         $mapping_file = new ImportMap();
         if (isset($_REQUEST['has_header']) && $_REQUEST['has_header'] == 'on') {
             $header_to_field = array();
             foreach ($importColumns as $pos => $field_name) {
                 if (isset($firstrow[$pos]) && isset($field_name)) {
                     $header_to_field[$firstrow[$pos]] = $field_name;
                 }
             }
             $mapping_file->setMapping($header_to_field);
         } else {
             $mapping_file->setMapping($importColumns);
         }
         // save default fields
         $defaultValues = array();
         for ($i = 0; $i < $_REQUEST['columncount']; $i++) {
             if (isset($importColumns[$i]) && !empty($_REQUEST[$importColumns[$i]])) {
                 $field = $importColumns[$i];
                 $fieldDef = $focus->getFieldDefinition($field);
                 if (!empty($fieldDef['custom_type']) && $fieldDef['custom_type'] == 'teamset') {
                     require_once 'include/SugarFields/Fields/Teamset/SugarFieldTeamset.php';
                     $sugar_field = new SugarFieldTeamset('Teamset');
                     $teams = $sugar_field->getTeamsFromRequest($field);
                     if (isset($_REQUEST['primary_team_name_collection'])) {
                         $primary_index = $_REQUEST['primary_team_name_collection'];
                     }
                     //If primary_index was selected, ensure that the first Array entry is the primary team
                     if (isset($primary_index)) {
                         $count = 0;
                         $new_teams = array();
                         foreach ($teams as $id => $name) {
                             if ($primary_index == $count++) {
                                 $new_teams[$id] = $name;
                                 unset($teams[$id]);
                                 break;
                             }
                         }
                         foreach ($teams as $id => $name) {
                             $new_teams[$id] = $name;
                         }
                         $teams = $new_teams;
                     }
                     //if
                     $json = getJSONobj();
                     $defaultValues[$field] = $json->encode($teams);
                 } else {
                     $defaultValues[$field] = $_REQUEST[$importColumns[$i]];
                 }
             }
         }
         $mapping_file->setDefaultValues($defaultValues);
         $result = $mapping_file->save($current_user->id, $_REQUEST['save_map_as'], $_REQUEST['import_module'], $_REQUEST['source'], isset($_REQUEST['has_header']) && $_REQUEST['has_header'] == 'on', $_REQUEST['custom_delimiter'], html_entity_decode($_REQUEST['custom_enclosure'], ENT_QUOTES));
     }
     $importFile->writeStatus();
 }
コード例 #11
0
 function retrieve_all_by_string_fields($fields_array)
 {
     $where_clause = $this->get_where($fields_array);
     $query = "SELECT * FROM {$this->table_name} {$where_clause}";
     $GLOBALS['log']->debug("Retrieve {$this->object_name}: " . $query);
     $result = $this->db->query($query, true, " Error: ");
     $obj_arr = array();
     while ($row = $this->db->fetchByAssoc($result, -1, FALSE)) {
         $focus = new ImportMap();
         foreach ($this->column_fields as $field) {
             if (isset($row[$field])) {
                 $focus->{$field} = $row[$field];
             }
         }
         $focus->fill_in_additional_detail_fields();
         array_push($obj_arr, $focus);
     }
     return $obj_arr;
 }
コード例 #12
0
ファイル: ImportMapTest.php プロジェクト: jgera/sugarcrm_dev
 public function testMarkUnpublishedNameConflict()
 {
     $this->_addMapping();
     $this->_importMap->mark_published($GLOBALS['current_user']->id, true);
     $id = $this->_importMap->id;
     $GLOBALS['current_user'] = SugarTestUserUtilities::createAnonymousUser();
     $this->_importMap = new ImportMap();
     $this->_addMapping();
     $importMapRetrieve = new ImportMap();
     $importMapRetrieve->retrieve($id, false);
     $this->assertFalse($this->_importMap->mark_published($GLOBALS['current_user']->id, false));
     $query = "SELECT * FROM import_maps \n                    WHERE id = '{$id}'";
     $result = $GLOBALS['db']->query($query);
     $row = $GLOBALS['db']->fetchByAssoc($result);
     $this->assertEquals($row['is_published'], 'yes');
 }
コード例 #13
0
 private function getImportMap($importSource)
 {
     if (strncasecmp("custom:", $importSource, 7) == 0) {
         $id = substr($importSource, 7);
         $import_map_seed = new ImportMap();
         $import_map_seed->retrieve($id, false);
         $this->ss->assign("SOURCE_ID", $import_map_seed->id);
         $this->ss->assign("SOURCE_NAME", $import_map_seed->name);
         $this->ss->assign("SOURCE", $import_map_seed->source);
     } else {
         $classname = 'ImportMap' . ucfirst($importSource);
         if (file_exists("modules/Import/maps/{$classname}.php")) {
             require_once "modules/Import/maps/{$classname}.php";
         } elseif (file_exists("custom/modules/Import/maps/{$classname}.php")) {
             require_once "custom/modules/Import/maps/{$classname}.php";
         } else {
             require_once "custom/modules/Import/maps/ImportMapOther.php";
             $classname = 'ImportMapOther';
             $importSource = 'other';
         }
         if (class_exists($classname)) {
             $import_map_seed = new $classname();
             $this->ss->assign("SOURCE", $importSource);
         }
     }
     return $import_map_seed;
 }
コード例 #14
0
ファイル: view.step1.php プロジェクト: rgauss/sugarcrm_dev
 /** 
  * @see SugarView::display()
  */
 public function display()
 {
     global $mod_strings, $app_strings, $current_user;
     global $sugar_config;
     $selectedData = $this->_retrieveParams();
     $this->ss->assign("MODULE_TITLE", $this->getModuleTitle());
     $this->ss->assign("DELETE_INLINE_PNG", SugarThemeRegistry::current()->getImage('delete_inline', 'align="absmiddle" alt="' . $app_strings['LNK_DELETE'] . '" border="0"'));
     $this->ss->assign("PUBLISH_INLINE_PNG", SugarThemeRegistry::current()->getImage('publish_inline', 'align="absmiddle" alt="' . $mod_strings['LBL_PUBLISH'] . '" border="0"'));
     $this->ss->assign("UNPUBLISH_INLINE_PNG", SugarThemeRegistry::current()->getImage('unpublish_inline', 'align="absmiddle" alt="' . $mod_strings['LBL_UNPUBLISH'] . '" border="0"'));
     $this->ss->assign("IMPORT_MODULE", $_REQUEST['import_module']);
     $this->ss->assign("JAVASCRIPT", $this->_getJS(isset($selectedData->source) ? $selectedData->source : false));
     // handle publishing and deleting import maps
     if (isset($_REQUEST['delete_map_id'])) {
         $import_map = new ImportMap();
         $import_map->mark_deleted($_REQUEST['delete_map_id']);
     }
     if (isset($_REQUEST['publish'])) {
         $import_map = new ImportMap();
         $result = 0;
         $import_map = $import_map->retrieve($_REQUEST['import_map_id'], false);
         if ($_REQUEST['publish'] == 'yes') {
             $result = $import_map->mark_published($current_user->id, true);
             if (!$result) {
                 $this->ss->assign("ERROR", $mod_strings['LBL_ERROR_UNABLE_TO_PUBLISH']);
             }
         } elseif ($_REQUEST['publish'] == 'no') {
             // if you don't own this importmap, you do now!
             // unless you have a map by the same name
             $result = $import_map->mark_published($current_user->id, false);
             if (!$result) {
                 $this->ss->assign("ERROR", $mod_strings['LBL_ERROR_UNABLE_TO_UNPUBLISH']);
             }
         }
     }
     // trigger showing other software packages
     $this->ss->assign("show_salesforce", false);
     $this->ss->assign("show_outlook", false);
     $this->ss->assign("show_act", false);
     switch ($_REQUEST['import_module']) {
         case "Prospects":
             break;
         case "Accounts":
             $this->ss->assign("show_salesforce", true);
             $this->ss->assign("show_act", true);
             break;
         case "Contacts":
             $this->ss->assign("show_salesforce", true);
             $this->ss->assign("show_outlook", true);
             $this->ss->assign("show_act", true);
             break;
         default:
             $this->ss->assign("show_salesforce", true);
             break;
     }
     // show any custom mappings
     if (sugar_is_dir('custom/modules/Import') && ($dir = opendir('custom/modules/Import'))) {
         while (($file = readdir($dir)) !== false) {
             if (sugar_is_file("custom/modules/Import/{$file}") && strpos($file, ".php") !== false) {
                 require_once "custom/modules/Import/{$file}";
                 $classname = str_replace('.php', '', $file);
                 $mappingClass = new $classname();
                 $custom_mappings[] = $mappingClass->name;
             }
         }
     }
     // get user defined import maps
     $this->ss->assign('is_admin', is_admin($current_user));
     $import_map_seed = new ImportMap();
     $custom_imports_arr = $import_map_seed->retrieve_all_by_string_fields(array('assigned_user_id' => $current_user->id, 'is_published' => 'no', 'module' => $_REQUEST['import_module']));
     if (count($custom_imports_arr)) {
         $custom = array();
         foreach ($custom_imports_arr as $import) {
             $custom[] = array("IMPORT_NAME" => $import->name, "IMPORT_ID" => $import->id);
         }
         $this->ss->assign('custom_imports', $custom);
     }
     // get globally defined import maps
     $published_imports_arr = $import_map_seed->retrieve_all_by_string_fields(array('is_published' => 'yes', 'module' => $_REQUEST['import_module']));
     if (count($published_imports_arr)) {
         $published = array();
         foreach ($published_imports_arr as $import) {
             $published[] = array("IMPORT_NAME" => $import->name, "IMPORT_ID" => $import->id);
         }
         $this->ss->assign('published_imports', $published);
     }
     $this->ss->display('modules/Import/tpls/step1.tpl');
 }
コード例 #15
0
    if ($_REQUEST['module'] == 'Accounts') {
        $xtpl->parse("main.show_salesforce");
        $xtpl->parse("main.show_act");
    } else {
        if ($_REQUEST['module'] == 'Prospects') {
            // does not show salesforce
        } else {
            $xtpl->parse("main.show_salesforce");
        }
    }
}
if (is_admin($current_user)) {
    //	$xtpl->parse("main.create_global_map");
}
$query_arr = array('assigned_user_id' => $current_user->id, 'is_published' => 'no', 'module' => $_REQUEST['module']);
$import_map_seed = new ImportMap();
$custom_imports_arr = $import_map_seed->retrieve_all_by_string_fields($query_arr);
if (count($custom_imports_arr)) {
    foreach ($custom_imports_arr as $import) {
        $xtpl->assign("IMPORT_NAME", $import->name);
        $xtpl->assign("IMPORT_ID", $import->id);
        if (is_admin($current_user)) {
            $xtpl->parse("main.saved.saved_elem.is_admin");
        }
        $xtpl->parse("main.saved.saved_elem");
    }
    $xtpl->parse("main.saved");
}
$query_arr = array('is_published' => 'yes', 'module' => $_REQUEST['module']);
$published_imports_arr = $import_map_seed->retrieve_all_by_string_fields($query_arr);
if (count($published_imports_arr)) {
コード例 #16
0
 function action_mapping()
 {
     global $mod_strings, $current_user;
     $results = array('message' => '');
     // handle publishing and deleting import maps
     if (isset($_REQUEST['delete_map_id'])) {
         $import_map = new ImportMap();
         $import_map->mark_deleted($_REQUEST['delete_map_id']);
     }
     if (isset($_REQUEST['publish'])) {
         $import_map = new ImportMap();
         $import_map = $import_map->retrieve($_REQUEST['import_map_id'], false);
         if ($_REQUEST['publish'] == 'yes') {
             $result = $import_map->mark_published($current_user->id, true);
             if (!$result) {
                 $results['message'] = $mod_strings['LBL_ERROR_UNABLE_TO_PUBLISH'];
             }
         } elseif ($_REQUEST['publish'] == 'no') {
             // if you don't own this importmap, you do now, unless you have a map by the same name
             $result = $import_map->mark_published($current_user->id, false);
             if (!$result) {
                 $results['message'] = $mod_strings['LBL_ERROR_UNABLE_TO_UNPUBLISH'];
             }
         }
     }
     echo json_encode($results);
     sugar_cleanup(TRUE);
 }
コード例 #17
0
ファイル: view.step3.php プロジェクト: omusico/sugar_work
 /**
  * @see SugarView::display()
  */
 public function display()
 {
     global $mod_strings, $app_strings, $current_user, $sugar_config, $app_list_strings, $locale;
     $this->ss->assign("IMPORT_MODULE", $_REQUEST['import_module']);
     $has_header = isset($_REQUEST['has_header']) ? 1 : 0;
     $sugar_config['import_max_records_per_file'] = empty($sugar_config['import_max_records_per_file']) ? 1000 : $sugar_config['import_max_records_per_file'];
     $this->ss->assign("CURRENT_STEP", $this->currentStep);
     // attempt to lookup a preexisting field map
     // use the custom one if specfied to do so in step 1
     $mapping_file = new ImportMap();
     $field_map = $mapping_file->set_get_import_wizard_fields();
     $default_values = array();
     $ignored_fields = array();
     if (!empty($_REQUEST['source_id'])) {
         $GLOBALS['log']->fatal("Loading import map properties.");
         $mapping_file = new ImportMap();
         $mapping_file->retrieve($_REQUEST['source_id'], false);
         $_REQUEST['source'] = $mapping_file->source;
         $has_header = $mapping_file->has_header;
         if (isset($mapping_file->delimiter)) {
             $_REQUEST['custom_delimiter'] = $mapping_file->delimiter;
         }
         if (isset($mapping_file->enclosure)) {
             $_REQUEST['custom_enclosure'] = htmlentities($mapping_file->enclosure);
         }
         $field_map = $mapping_file->getMapping();
         //print_r($field_map);die();
         $default_values = $mapping_file->getDefaultValues();
         $this->ss->assign("MAPNAME", $mapping_file->name);
         $this->ss->assign("CHECKMAP", 'checked="checked" value="on"');
     } else {
         $classname = $this->getMappingClassName(ucfirst($_REQUEST['source']));
         //Set the $_REQUEST['source'] to be 'other' for ImportMapOther special case
         if ($classname == 'ImportMapOther') {
             $_REQUEST['source'] = 'other';
         }
         if (class_exists($classname)) {
             $mapping_file = new $classname();
             $ignored_fields = $mapping_file->getIgnoredFields($_REQUEST['import_module']);
             $field_map2 = $mapping_file->getMapping($_REQUEST['import_module']);
             $field_map = array_merge($field_map, $field_map2);
         }
     }
     $delimiter = $this->getRequestDelimiter();
     $this->ss->assign("CUSTOM_DELIMITER", $delimiter);
     $this->ss->assign("CUSTOM_ENCLOSURE", !empty($_REQUEST['custom_enclosure']) ? $_REQUEST['custom_enclosure'] : "");
     //populate import locale  values from import mapping if available, these values will be used througout the rest of the code path
     $uploadFileName = $_REQUEST['file_name'];
     // Now parse the file and look for errors
     $importFile = new ImportFile($uploadFileName, $delimiter, html_entity_decode($_REQUEST['custom_enclosure'], ENT_QUOTES), FALSE);
     if (!$importFile->fileExists()) {
         $this->_showImportError($mod_strings['LBL_CANNOT_OPEN'], $_REQUEST['import_module'], 'Step2');
         return;
     }
     $charset = $importFile->autoDetectCharacterSet();
     // retrieve first 3 rows
     $rows = array();
     //Keep track of the largest row count found.
     $maxFieldCount = 0;
     for ($i = 0; $i < 3; $i++) {
         $rows[] = $importFile->getNextRow();
         $maxFieldCount = $importFile->getFieldCount() > $maxFieldCount ? $importFile->getFieldCount() : $maxFieldCount;
     }
     $ret_field_count = $maxFieldCount;
     // Bug 14689 - Parse the first data row to make sure it has non-empty data in it
     $isempty = true;
     if ($rows[(int) $has_header] != false) {
         foreach ($rows[(int) $has_header] as $value) {
             if (strlen(trim($value)) > 0) {
                 $isempty = false;
                 break;
             }
         }
     }
     if ($isempty || $rows[(int) $has_header] == false) {
         $this->_showImportError($mod_strings['LBL_NO_LINES'], $_REQUEST['import_module'], 'Step2');
         return;
     }
     // save first row to send to step 4
     $this->ss->assign("FIRSTROW", base64_encode(serialize($rows[0])));
     // Now build template
     $this->ss->assign("TMP_FILE", $uploadFileName);
     $this->ss->assign("SOURCE", $_REQUEST['source']);
     $this->ss->assign("TYPE", $_REQUEST['type']);
     $this->ss->assign("DELETE_INLINE_PNG", SugarThemeRegistry::current()->getImage('basic_search', 'align="absmiddle" alt="' . $app_strings['LNK_DELETE'] . '" border="0"'));
     $this->ss->assign("PUBLISH_INLINE_PNG", SugarThemeRegistry::current()->getImage('advanced_search', 'align="absmiddle" alt="' . $mod_strings['LBL_PUBLISH'] . '" border="0"'));
     $this->instruction = 'LBL_SELECT_MAPPING_INSTRUCTION';
     $this->ss->assign('INSTRUCTION', $this->getInstruction());
     $this->ss->assign("MODULE_TITLE", $this->getModuleTitle(false));
     $this->ss->assign("STEP4_TITLE", strip_tags(str_replace("\n", "", getClassicModuleTitle($mod_strings['LBL_MODULE_NAME'], array($mod_strings['LBL_MODULE_NAME'], $mod_strings['LBL_STEP_4_TITLE']), false))));
     $this->ss->assign("HEADER", $app_strings['LBL_IMPORT'] . " " . $mod_strings['LBL_MODULE_NAME']);
     // we export it as email_address, but import as email1
     $field_map['email_address'] = 'email1';
     // build each row; row count is determined by the the number of fields in the import file
     $columns = array();
     $mappedFields = array();
     // this should be populated if the request comes from a 'Back' button click
     $importColumns = $this->getImportColumns();
     $column_sel_from_req = false;
     if (!empty($importColumns)) {
         $column_sel_from_req = true;
     }
     for ($field_count = 0; $field_count < $ret_field_count; $field_count++) {
         // See if we have any field map matches
         $defaultValue = "";
         // Bug 31260 - If the data rows have more columns than the header row, then just add a new header column
         if (!isset($rows[0][$field_count])) {
             $rows[0][$field_count] = '';
         }
         // See if we can match the import row to a field in the list of fields to import
         $firstrow_name = trim(str_replace(":", "", $rows[0][$field_count]));
         if ($has_header && isset($field_map[$firstrow_name])) {
             $defaultValue = $field_map[$firstrow_name];
         } elseif (isset($field_map[$field_count])) {
             $defaultValue = $field_map[$field_count];
         } elseif (empty($_REQUEST['source_id'])) {
             $defaultValue = trim($rows[0][$field_count]);
         }
         // build string of options
         $fields = $this->bean->get_importable_fields();
         $options = array();
         $defaultField = '';
         global $current_language;
         $moduleStrings = return_module_language($current_language, $this->bean->module_dir);
         foreach ($fields as $fieldname => $properties) {
             // get field name
             if (!empty($moduleStrings['LBL_EXPORT_' . strtoupper($fieldname)])) {
                 $displayname = str_replace(":", "", $moduleStrings['LBL_EXPORT_' . strtoupper($fieldname)]);
             } else {
                 if (!empty($properties['vname'])) {
                     $displayname = str_replace(":", "", translate($properties['vname'], $this->bean->module_dir));
                 } else {
                     $displayname = str_replace(":", "", translate($properties['name'], $this->bean->module_dir));
                 }
             }
             // see if this is required
             $req_mark = "";
             $req_class = "";
             if (array_key_exists($fieldname, $this->bean->get_import_required_fields())) {
                 $req_mark = ' ' . $app_strings['LBL_REQUIRED_SYMBOL'];
                 $req_class = ' class="required" ';
             }
             // see if we have a match
             $selected = '';
             if ($column_sel_from_req && isset($importColumns[$field_count])) {
                 if ($fieldname == $importColumns[$field_count]) {
                     $selected = ' selected="selected" ';
                     $defaultField = $fieldname;
                     $mappedFields[] = $fieldname;
                 }
             } else {
                 if (!empty($defaultValue) && !in_array($fieldname, $mappedFields) && !in_array($fieldname, $ignored_fields)) {
                     if (strtolower($fieldname) == strtolower($defaultValue) || strtolower($fieldname) == str_replace(" ", "_", strtolower($defaultValue)) || strtolower($displayname) == strtolower($defaultValue) || strtolower($displayname) == str_replace(" ", "_", strtolower($defaultValue))) {
                         $selected = ' selected="selected" ';
                         $defaultField = $fieldname;
                         $mappedFields[] = $fieldname;
                     }
                 }
             }
             // get field type information
             $fieldtype = '';
             if (isset($properties['type']) && isset($mod_strings['LBL_IMPORT_FIELDDEF_' . strtoupper($properties['type'])])) {
                 $fieldtype = ' [' . $mod_strings['LBL_IMPORT_FIELDDEF_' . strtoupper($properties['type'])] . '] ';
             }
             if (isset($properties['comment'])) {
                 $fieldtype .= ' - ' . $properties['comment'];
             }
             $options[$displayname . $fieldname] = '<option value="' . $fieldname . '" title="' . $displayname . htmlentities($fieldtype) . '"' . $selected . $req_class . '>' . $displayname . $req_mark . '</option>\\n';
         }
         // get default field value
         $defaultFieldHTML = '';
         if (!empty($defaultField)) {
             $defaultFieldHTML = getControl($_REQUEST['import_module'], $defaultField, $fields[$defaultField], isset($default_values[$defaultField]) ? $default_values[$defaultField] : '');
         }
         if (isset($default_values[$defaultField])) {
             unset($default_values[$defaultField]);
         }
         // Bug 27046 - Sort the column name picker alphabetically
         ksort($options);
         // to be displayed in UTF-8 format
         if (!empty($charset) && $charset != 'UTF-8') {
             if (isset($rows[1][$field_count])) {
                 $rows[1][$field_count] = $locale->translateCharset($rows[1][$field_count], $charset);
             }
         }
         $cellOneData = isset($rows[0][$field_count]) ? $rows[0][$field_count] : '';
         $cellTwoData = isset($rows[1][$field_count]) ? $rows[1][$field_count] : '';
         $cellThreeData = isset($rows[2][$field_count]) ? $rows[2][$field_count] : '';
         $columns[] = array('field_choices' => implode('', $options), 'default_field' => $defaultFieldHTML, 'cell1' => strip_tags($cellOneData), 'cell2' => strip_tags($cellTwoData), 'cell3' => strip_tags($cellThreeData), 'show_remove' => false);
     }
     // add in extra defaulted fields if they are in the mapping record
     if (count($default_values) > 0) {
         foreach ($default_values as $field_name => $default_value) {
             // build string of options
             $fields = $this->bean->get_importable_fields();
             $options = array();
             $defaultField = '';
             foreach ($fields as $fieldname => $properties) {
                 // get field name
                 if (!empty($properties['vname'])) {
                     $displayname = str_replace(":", "", translate($properties['vname'], $this->bean->module_dir));
                 } else {
                     $displayname = str_replace(":", "", translate($properties['name'], $this->bean->module_dir));
                 }
                 // see if this is required
                 $req_mark = "";
                 $req_class = "";
                 if (array_key_exists($fieldname, $this->bean->get_import_required_fields())) {
                     $req_mark = ' ' . $app_strings['LBL_REQUIRED_SYMBOL'];
                     $req_class = ' class="required" ';
                 }
                 // see if we have a match
                 $selected = '';
                 if (strtolower($fieldname) == strtolower($field_name) && !in_array($fieldname, $mappedFields) && !in_array($fieldname, $ignored_fields)) {
                     $selected = ' selected="selected" ';
                     $defaultField = $fieldname;
                     $mappedFields[] = $fieldname;
                 }
                 // get field type information
                 $fieldtype = '';
                 if (isset($properties['type']) && isset($mod_strings['LBL_IMPORT_FIELDDEF_' . strtoupper($properties['type'])])) {
                     $fieldtype = ' [' . $mod_strings['LBL_IMPORT_FIELDDEF_' . strtoupper($properties['type'])] . '] ';
                 }
                 if (isset($properties['comment'])) {
                     $fieldtype .= ' - ' . $properties['comment'];
                 }
                 $options[$displayname . $fieldname] = '<option value="' . $fieldname . '" title="' . $displayname . $fieldtype . '"' . $selected . $req_class . '>' . $displayname . $req_mark . '</option>\\n';
             }
             // get default field value
             $defaultFieldHTML = '';
             if (!empty($defaultField)) {
                 $defaultFieldHTML = getControl($_REQUEST['import_module'], $defaultField, $fields[$defaultField], $default_value);
             }
             // Bug 27046 - Sort the column name picker alphabetically
             ksort($options);
             $columns[] = array('field_choices' => implode('', $options), 'default_field' => $defaultFieldHTML, 'show_remove' => true);
             $ret_field_count++;
         }
     }
     $this->ss->assign("COLUMNCOUNT", $ret_field_count);
     $this->ss->assign("rows", $columns);
     $this->ss->assign('datetimeformat', $GLOBALS['timedate']->get_cal_date_time_format());
     // handle building index selector
     global $dictionary, $current_language;
     // show notes
     if ($this->bean instanceof Person) {
         $module_key = "LBL_CONTACTS_NOTE_";
     } elseif ($this->bean instanceof Company) {
         $module_key = "LBL_ACCOUNTS_NOTE_";
     } else {
         $module_key = "LBL_" . strtoupper($_REQUEST['import_module']) . "_NOTE_";
     }
     $notetext = '';
     for ($i = 1; isset($mod_strings[$module_key . $i]); $i++) {
         $notetext .= '<li>' . $mod_strings[$module_key . $i] . '</li>';
     }
     $this->ss->assign("NOTETEXT", $notetext);
     $this->ss->assign("HAS_HEADER", $has_header ? 'on' : 'off');
     // get list of required fields
     $required = array();
     foreach (array_keys($this->bean->get_import_required_fields()) as $name) {
         $properties = $this->bean->getFieldDefinition($name);
         if (!empty($properties['vname'])) {
             $required[$name] = str_replace(":", "", translate($properties['vname'], $this->bean->module_dir));
         } else {
             $required[$name] = str_replace(":", "", translate($properties['name'], $this->bean->module_dir));
         }
     }
     // include anything needed for quicksearch to work
     require_once "include/TemplateHandler/TemplateHandler.php";
     // Bug #46879 : createQuickSearchCode() function in IBM RTC call function getQuickSearchDefaults() to get instance and then getQSDLookup() function
     // if we call this function as static it replaces context and use ImportViewStep3 as $this in getQSDLookup()
     $template_handler = new TemplateHandler();
     $quicksearch_js = $template_handler->createQuickSearchCode($fields, $fields, 'importstep3');
     $this->ss->assign("QS_JS", $quicksearch_js);
     $this->ss->assign("JAVASCRIPT", $this->_getJS($required));
     $this->ss->assign('required_fields', implode(', ', $required));
     $this->ss->assign('CSS', $this->_getCSS());
     $content = $this->ss->fetch($this->getCustomFilePathIfExists('modules/Import/tpls/step3.tpl'));
     $this->ss->assign("CONTENT", $content);
     $this->ss->display($this->getCustomFilePathIfExists('modules/Import/tpls/wizardWrapper.tpl'));
 }
コード例 #18
0
ファイル: Importer.php プロジェクト: delkyd/sugarcrm_dev
 protected function saveMappingFile()
 {
     global $current_user;
     $firstrow = unserialize(base64_decode($_REQUEST['firstrow']));
     $mappingValsArr = $this->importColumns;
     $mapping_file = new ImportMap();
     if (isset($_REQUEST['has_header']) && $_REQUEST['has_header'] == 'on') {
         $header_to_field = array();
         foreach ($this->importColumns as $pos => $field_name) {
             if (isset($firstrow[$pos]) && isset($field_name)) {
                 $header_to_field[$firstrow[$pos]] = $field_name;
             }
         }
         $mappingValsArr = $header_to_field;
     }
     //get array of values to save for duplicate and locale settings
     $advMapping = $this->retrieveAdvancedMapping();
     //merge with mappingVals array
     if (!empty($advMapping) && is_array($advMapping)) {
         $mappingValsArr = $advMapping + $mappingValsArr;
     }
     //set mapping
     $mapping_file->setMapping($mappingValsArr);
     // save default fields
     $defaultValues = array();
     for ($i = 0; $i < $_REQUEST['columncount']; $i++) {
         if (isset($this->importColumns[$i]) && !empty($_REQUEST[$this->importColumns[$i]])) {
             $field = $this->importColumns[$i];
             $fieldDef = $this->bean->getFieldDefinition($field);
             if (!empty($fieldDef['custom_type']) && $fieldDef['custom_type'] == 'teamset') {
                 require_once 'include/SugarFields/Fields/Teamset/SugarFieldTeamset.php';
                 $sugar_field = new SugarFieldTeamset('Teamset');
                 $teams = $sugar_field->getTeamsFromRequest($field);
                 if (isset($_REQUEST['primary_team_name_collection'])) {
                     $primary_index = $_REQUEST['primary_team_name_collection'];
                 }
                 //If primary_index was selected, ensure that the first Array entry is the primary team
                 if (isset($primary_index)) {
                     $count = 0;
                     $new_teams = array();
                     foreach ($teams as $id => $name) {
                         if ($primary_index == $count++) {
                             $new_teams[$id] = $name;
                             unset($teams[$id]);
                             break;
                         }
                     }
                     foreach ($teams as $id => $name) {
                         $new_teams[$id] = $name;
                     }
                     $teams = $new_teams;
                 }
                 //if
                 $json = getJSONobj();
                 $defaultValues[$field] = $json->encode($teams);
             } else {
                 $defaultValues[$field] = $_REQUEST[$this->importColumns[$i]];
             }
         }
     }
     $mapping_file->setDefaultValues($defaultValues);
     $result = $mapping_file->save($current_user->id, $_REQUEST['save_map_as'], $_REQUEST['import_module'], $_REQUEST['source'], isset($_REQUEST['has_header']) && $_REQUEST['has_header'] == 'on', $_REQUEST['custom_delimiter'], html_entity_decode($_REQUEST['custom_enclosure'], ENT_QUOTES));
 }
コード例 #19
0
ファイル: ImportStep2.php プロジェクト: hardikk/HNH
            $secondrow[$ind] = to_html($val);
        }
    }
    if (isset($thirdrow)) {
        //Asha: Fix for ticket #4432
        foreach ($thirdrow as $ind => $val) {
            if (strlen($val) > 30) {
                $thirdrow[$ind] = substr(to_html($val), 0, 30) . " ..........";
            } else {
                $thirdrow[$ind] = to_html($val);
            }
        }
    }
}
$field_map = $outlook_contacts_field_map;
$mapping_file = new ImportMap();
$saved_map_lists = $mapping_file->getSavedMappingsList($_REQUEST['return_module']);
$map_list_combo = '<select class="small" name="source" id="saved_source" disabled onchange="getImportSavedMap(this)">';
$map_list_combo .= '<OPTION value="-1" selected>--Select--</OPTION>';
if (is_array($saved_map_lists)) {
    foreach ($saved_map_lists as $mapid => $mapname) {
        $map_list_combo .= '<OPTION value=' . $mapid . '>' . $mapname . '</OPTION>';
    }
}
$map_list_combo .= '</select>';
//This link is Delete link for the selected mapping
$map_list_combo .= "&nbsp;&nbsp;&nbsp;<span id='delete_mapping' style='visibility:hidden;'><a href='javascript:; deleteMapping();'>Del</a></span>";
$smarty->assign("SAVED_MAP_LISTS", $map_list_combo);
if (count($mapping_arr) > 0) {
    $field_map =& $mapping_arr;
} else {
コード例 #20
0
ファイル: ImportMap.php プロジェクト: honj51/taobaocrm
 /**	function used to publish or unpublish the mapping
  *	@param int $user_id - user id who is publishing the map
  *	@param string $flag - yes or no
  *	@return value - if flag is yes then update the db and return 1 otherwise return -1
  */
 function mark_published($user_id, $flag)
 {
     $other_map = new ImportMap();
     if ($flag == 'yes') {
         // if you are trying to publish your map
         // but there's another published map
         // by the same name
         $query_arr = array('name' => $this->name, 'is_published' => 'yes');
     } else {
         // if you are trying to unpublish a map
         // but you own an unpublished map by the same name
         $query_arr = array('name' => $this->name, 'assigned_user_id' => $user_id, 'is_published' => 'no');
     }
     $other_map->retrieve_by_string_fields($query_arr, false);
     if (isset($other_map->id)) {
         //.. don't do it!
         return -1;
     }
     $query = "UPDATE {$this->table_name} set is_published='{$flag}', assigned_user_id='{$user_id}' where id='" . $this->id . "'";
     $this->db->query($query, true, "Error marking import map published: ");
     return 1;
 }
コード例 #21
0
ファイル: ImportMap.php プロジェクト: sysraj86/carnivalcrm
 /**
  * Similar to retrieve_by_string_fields, but returns multiple objects instead of just one.
  *
  * @param  array $fields_array
  * @return array $obj_arr
  */
 public function retrieve_all_by_string_fields($fields_array)
 {
     $query = "SELECT *\n                    FROM {$this->table_name}\n                    " . $this->get_where($fields_array);
     $result = $this->db->query($query, true, " Error: ");
     $obj_arr = array();
     while ($row = $this->db->fetchByAssoc($result, -1, FALSE)) {
         $focus = new ImportMap();
         foreach ($this->column_fields as $field) {
             if (isset($row[$field])) {
                 $focus->{$field} = $row[$field];
             }
         }
         $focus->fill_in_additional_detail_fields();
         $obj_arr[] = $focus;
     }
     return $obj_arr;
 }
コード例 #22
0
    $bean = $import_bean_map[$_REQUEST['module']];
    require_once "modules/Import/{$bean}.php";
    $focus = new $bean();
} else {
    echo "Imports aren't set up for this module type\n";
    exit;
}
//setup the importable fields array.
$importable_fields = array();
$translated_column_fields = array();
get_importable_fields($focus, $importable_fields, $translated_column_fields);
$firstrow = $rows[0];
$field_map = $outlook_contacts_field_map;
$mapping_arr = array();
if (!empty($_REQUEST['source_id'])) {
    $mapping_file = new ImportMap();
    $mapping_file->retrieve($_REQUEST['source_id'], false);
    $mapping_content = $mapping_file->content;
    $_REQUEST['source'] = $mapping_file->source;
    if (isset($mapping_content) && $mapping_content != "") {
        $pairs = split("&", $mapping_content);
        foreach ($pairs as $pair) {
            list($name, $value) = split("=", $pair);
            $mapping_arr["{$name}"] = $value;
        }
    }
}
//$xtpl->assign("SOURCE_NAME", $source_to_name[$_REQUEST['source']] );
if (count($mapping_arr) > 0) {
    $field_map = $mapping_arr;
} else {