2556c057cd
yuchenghu@hawebs.net git-svn-id: https://svn.code.sf.net/p/hawebs/svn@611 a2543c7e-f6e9-4f8a-8bff-1ffc34733512
313 lines
9.2 KiB
PHP
313 lines
9.2 KiB
PHP
<?php
|
|
/*********************************************************************************
|
|
* The contents of this file are subject to the SugarCRM Public License Version 1.1.2
|
|
* ("License"); You may not use this file except in compliance with the
|
|
* License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL
|
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
|
* the specific language governing rights and limitations under the License.
|
|
* The Original Code is: SugarCRM Open Source
|
|
* The Initial Developer of the Original Code is SugarCRM, Inc.
|
|
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.;
|
|
* All Rights Reserved.
|
|
* Contributor(s): ______________________________________.
|
|
********************************************************************************/
|
|
/*********************************************************************************
|
|
* $Header$
|
|
* Description: TODO: To be written.
|
|
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.
|
|
* All Rights Reserved.
|
|
* Contributor(s): ______________________________________..
|
|
********************************************************************************/
|
|
|
|
require_once('Smarty_setup.php');
|
|
require_once('modules/Import/ImportLead.php');
|
|
require_once('modules/Import/ImportAccount.php');
|
|
require_once('modules/Import/ImportContact.php');
|
|
require_once('modules/Import/ImportOpportunity.php');
|
|
require_once('modules/Import/ImportProduct.php');
|
|
require_once('modules/Import/ImportMap.php');
|
|
require_once('modules/Import/ImportTicket.php');
|
|
require_once('modules/Import/ImportVendors.php');
|
|
require_once('modules/Import/UsersLastImport.php');
|
|
require_once('modules/Import/parse_utils.php');
|
|
require_once('include/ListView/ListView.php');
|
|
require_once('include/database/PearDatabase.php');
|
|
require_once('modules/Import/ImportSave.php');
|
|
|
|
function p($str){
|
|
global $adb;
|
|
$adb->println("IMP :".$str);
|
|
}
|
|
|
|
function implode_assoc($inner_delim, $outer_delim, $array){
|
|
$output = array();
|
|
foreach( $array as $key => $item ){
|
|
$output[] = $key . $inner_delim . $item;
|
|
}
|
|
return implode($outer_delim, $output);
|
|
}
|
|
|
|
global $mod_strings;
|
|
global $app_list_strings;
|
|
global $app_strings;
|
|
global $current_user;
|
|
global $import_file_name;
|
|
global $theme;
|
|
global $upload_maxsize;
|
|
global $site_URL;
|
|
|
|
$theme_path="themes/".$theme."/";
|
|
$image_path=$theme_path."images/";
|
|
|
|
$log->info("Upload Step 3");
|
|
|
|
include("include/saveMergeCriteria.php");
|
|
|
|
$delimiter = ',';
|
|
// file handle
|
|
$count = 0;
|
|
$error = "";
|
|
$col_pos_to_field = array();
|
|
$header_to_field = array();
|
|
$field_to_pos = array();
|
|
$focus = 0;
|
|
$current_bean_type = "";
|
|
$id_exists_count = 0;
|
|
$broken_ids = 0;
|
|
|
|
$delimiter = $_SESSION['import_delimiter'];
|
|
|
|
$has_header = 0;
|
|
|
|
if(isset( $_REQUEST['has_header']) && $_REQUEST['has_header'] == 'on'){
|
|
$has_header = 1;
|
|
}
|
|
|
|
if($_REQUEST['modulename'] != ''){
|
|
$_REQUEST['module'] = vtlib_purify($_REQUEST['modulename']);
|
|
}
|
|
|
|
$import_object_array = Array(
|
|
"Leads"=>"ImportLead",
|
|
"Accounts"=>"ImportAccount",
|
|
"Contacts"=>"ImportContact",
|
|
"Potentials"=>"ImportOpportunity",
|
|
"Products"=>"ImportProduct",
|
|
"HelpDesk"=>"ImportTicket",
|
|
"Vendors"=>"ImportVendors"
|
|
);
|
|
|
|
if(isset($_REQUEST['module']) && $_REQUEST['module'] != ''){
|
|
$current_bean_type = $import_object_array[$_REQUEST['module']];
|
|
// vtlib customization: Hook added to enable import for un-mapped modules
|
|
$module = $_REQUEST['module'];
|
|
if($current_bean_type == null) {
|
|
checkFileAccess("modules/$module/$module.php");
|
|
require_once("modules/$module/$module.php");
|
|
$current_bean_type = $module;
|
|
$callInitImport = true;
|
|
}
|
|
// END
|
|
}else{
|
|
$current_bean_type = "ImportContact";
|
|
}
|
|
|
|
$focus = new $current_bean_type();
|
|
// vtlib customization: Call the import initializer
|
|
if($callInitImport) $focus->initImport($module);
|
|
// END
|
|
|
|
//Constructing the custom vtiger_field Array
|
|
require_once('include/CustomFieldUtil.php');
|
|
$custFldArray = getCustomFieldArray($_REQUEST['module']);
|
|
p("IMP 3: custFldArray");
|
|
p($custFldArray);
|
|
|
|
//Initializing an empty Array to store the custom vtiger_field Column Name and Value
|
|
$resCustFldArray = Array();
|
|
|
|
p("Getting from request");
|
|
// loop through all request variables
|
|
foreach ($_REQUEST as $name=>$value){
|
|
p("name=".$name." value=".$value);
|
|
// only look for var names that start with "colnum"
|
|
if ( strncasecmp( $name, "colnum", 6) != 0 ){
|
|
continue;
|
|
}
|
|
if ($value == "-1"){
|
|
continue;
|
|
}
|
|
|
|
$user_field = $value;
|
|
$pos = substr($name,6);
|
|
|
|
if ( isset( $field_to_pos[$user_field]) ){
|
|
show_error_import($mod_strings['LBL_ERROR_MULTIPLE']);
|
|
exit;
|
|
}
|
|
|
|
p("user_field=".$user_field." if=".$focus->importable_fields[$user_field]);
|
|
|
|
if ( isset( $focus->importable_fields[$user_field] ) || isset( $custFldArray[$user_field] )){
|
|
p("user_field SET=".$user_field);
|
|
$field_to_pos[$user_field] = $pos;
|
|
$col_pos_to_field[$pos] = $user_field;
|
|
}
|
|
}
|
|
|
|
p("field_to_pos");
|
|
$adb->println($field_to_pos);
|
|
p("col_pos_to_field");
|
|
$adb->println($col_pos_to_field);
|
|
|
|
$max_lines = -1;
|
|
$ret_value = 0;
|
|
|
|
if(isset($_REQUEST['tmp_file'])) {
|
|
$_SESSION['tmp_file'] = vtlib_purify($_REQUEST['tmp_file']);
|
|
} else {
|
|
$_REQUEST['tmp_file'] = vtlib_purify($_SESSION['tmp_file']);
|
|
}
|
|
// End
|
|
|
|
if ($_REQUEST['source'] == 'act'){
|
|
$ret_value = parse_import_act($_REQUEST['tmp_file'],$delimiter,$max_lines,$has_header);
|
|
}else{
|
|
$ret_value = parse_import($_REQUEST['tmp_file'],$delimiter,$max_lines,$has_header);
|
|
}
|
|
|
|
$datarows = $ret_value['rows'];
|
|
|
|
$ret_field_count = $ret_value['field_count'];
|
|
|
|
//we have to get all picklist entries and add with the corresponding picklist table
|
|
if(isset($datarows) && is_array($datarows)){
|
|
//This file will be included only once at the first time. Will not be included when we redirect from ImportSave
|
|
include("modules/Import/picklist_addition.php");
|
|
}
|
|
|
|
$saved_ids = array();
|
|
|
|
$firstrow = 0;
|
|
|
|
if (! isset($datarows)){
|
|
$error = $mod_strings['LBL_FILE_ALREADY_BEEN_OR'];
|
|
$datarows = array();
|
|
}
|
|
|
|
if ($has_header == 1){
|
|
$firstrow = array_shift($datarows);
|
|
}
|
|
|
|
//Mark the last imported records as deleted which are imported by the current user in vtiger_users_last_import vtiger_table
|
|
if(!isset($_REQUEST['startval'])){
|
|
$seedUsersLastImport = new UsersLastImport();
|
|
$seedUsersLastImport->mark_deleted_by_user_id($current_user->id);
|
|
}
|
|
$skip_required_count = 0;
|
|
|
|
p("processing started ret_field_count=".$ret_field_count);
|
|
$adb->println($datarows);
|
|
|
|
$error = '';
|
|
$focus = new $current_bean_type();
|
|
$focus->initRequiredFields($module);
|
|
|
|
// 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'];
|
|
}
|
|
if($xrows != ''){
|
|
$datarows = $xrows;
|
|
}
|
|
if($_REQUEST['skipped_record_count'] != ''){
|
|
$skipped_record_count = vtlib_purify($_REQUEST['skipped_record_count']);
|
|
}else{
|
|
$_REQUEST['skipped_record_count'] = 0;
|
|
}
|
|
|
|
if($_REQUEST['noofrows'] != ''){
|
|
$totalnoofrows = vtlib_purify($_REQUEST['noofrows']);
|
|
}else{
|
|
$totalnoofrows = count($datarows);
|
|
}
|
|
|
|
if($_REQUEST['recordcount'] != ''){
|
|
$RECORDCOUNT = vtlib_purify($_REQUEST['recordcount']);
|
|
}else{
|
|
$RECORDCOUNT = vtlib_purify($_SESSION['recordcount']);
|
|
}
|
|
|
|
if($_REQUEST['startval'] != ''){
|
|
$START = vtlib_purify($_REQUEST['startval']);
|
|
}else{
|
|
$START = vtlib_purify($_SESSION['startval']);
|
|
}
|
|
|
|
if(($START+$RECORDCOUNT) > $totalnoofrows){
|
|
$RECORDCOUNT = $totalnoofrows - $START;
|
|
}
|
|
|
|
$loopcount = ($totalnoofrows/$RECORDCOUNT)+1;
|
|
|
|
$focus->initImportableFields($module);
|
|
if($totalnoofrows > $RECORDCOUNT && $START < $totalnoofrows){
|
|
$rows1 = Array();
|
|
for($j=$START;$j<$START+$RECORDCOUNT;$j++){
|
|
$rows1[] = $datarows[$j];
|
|
}
|
|
|
|
$res = InsertImportRecords($datarows,$rows1,$focus,$ret_field_count,$col_pos_to_field,$START,$RECORDCOUNT,vtlib_purify($_REQUEST['module']),$totalnoofrows,$skipped_record_count);
|
|
if($START != 0){
|
|
echo '<b>'.$res.'</b>';
|
|
}
|
|
|
|
$count = vtlib_purify($_REQUEST['count']);
|
|
}else{
|
|
if($START == 0){
|
|
$res = InsertImportRecords($datarows,$datarows,$focus,$ret_field_count,$col_pos_to_field,$START,$totalnoofrows,vtlib_purify($_REQUEST['module']),$totalnoofrows,$skipped_record_count);
|
|
}
|
|
}
|
|
|
|
//Display the imported records message
|
|
echo "<div align='center' width='100%'><font color='green'><b>".$_SESSION['import_display_message']."</b></font></div>";
|
|
?>
|