array('message' => LAN_CONVERT_25, 'classfile' => 'import_user_class.php', 'classname' => 'user_import'), 'news' => array('message' => LAN_CONVERT_28), 'forumdefs' => array('message' => LAN_CONVERT_26), 'forumposts' => array('message' => LAN_CONVERT_48), 'polls' => array('message' => LAN_CONVERT_27) ); // See what DB-based imports are available (don't really want it here, but gets it into the header script) require_once(e_HANDLER.'file_class.php'); $fl = new e_file; $importClassList = $fl->get_files(e_PLUGIN.'import', "^.+?_import_class\.php$", "standard", 1); foreach($importClassList as $file) { $tag = str_replace('_class.php','',$file['fname']); include_once($file['path'].$file['fname']); // This will set up the variables } unset($importClassList); unset($fl); if(varset($_POST['import_source'])) { $import_source = varset($_POST['import_source'],'csv'); if(varset($_POST['classes_select'])) { $checked_class_list = implode(',',$_POST['classes_select']); } $import_delete_existing_data = varset($_POST['import_delete_existing_data'],0); $current_csv = varset($_POST['csv_format'],'default'); $csv_pw_not_encrypted = varset($_POST['csv_pw_not_encrypted'],0); $csv_data_file = varset($_POST['csv_data_file'],'import.csv'); $current_db_type = varset($_POST['db_import_type'],key($import_class_names)); } $db_blocks_to_import = array(); foreach ($db_import_blocks as $k => $v) { if (isset($_POST['import_block_'.$k])) { $db_blocks_to_import[$k] = 1; } } require_once(e_ADMIN."auth.php"); if (!is_object($e_userclass)) { require_once(e_HANDLER."userclass_class.php"); // Modified class handler $e_userclass = new user_class; } define('CSV_DEF_FILE','csv_import.txt'); // Supplementary CSV format definitions // Definitions of available CSV-based imports $csv_formats = array('default' => 'user_name,user_password'); $csv_names = array('default' => LAN_CONVERT_12); $csv_options = array('default' => 'simple'); $csv_option_settings = array( 'simple' => array('separator' => ',', 'envelope' => ''), 'simple_sq' => array('separator' => ',', 'envelope' => "'"), 'simple_dq' => array('separator' => ',', 'envelope' => '"'), 'simple_semi' => array('separator' => ',', 'envelope' => ';'), 'simple_bar' => array('separator' => ',', 'envelope' => '|') ); // See what CSV format definitions are available if (is_readable(CSV_DEF_FILE)) { $csv_temp = file(CSV_DEF_FILE); foreach ($csv_temp as $line) { $line = trim(str_replace("\n","",$line)); if ($line) { list($temp,$name,$options,$line) = explode(',',$line,4); $temp = trim($temp); $name = trim($name); $options = trim($options); $line = trim($line); if ($temp && $name && $options && $line) { $csv_formats[$temp] = $line; // Add any new definitions $csv_names[$temp] = $name; $csv_options[$temp] = $options; } } } unset($csv_temp); } $msg = ''; //====================================================== // Executive routine - actually do conversion //====================================================== if(isset($_POST['do_conversion'])) { $abandon = TRUE; switch ($import_source) { case 'csv' : if (!isset($csv_formats[$current_csv])) $msg = "CSV File format error

"; if (!is_readable($csv_data_file)) $msg = LAN_CONVERT_31; if (!isset($csv_options[$current_csv])) $msg = LAN_CONVERT_37.' '.$current_csv; if (!isset($csv_option_settings[$csv_options[$current_csv]])) $msg = LAN_CONVERT_37.' '.$csv_options[$current_csv]; if (!$msg) { $field_list = explode(',',$csv_formats[$current_csv]); $separator = $csv_option_settings[$csv_options[$current_csv]]['separator']; $enveloper = $csv_option_settings[$csv_options[$current_csv]]['envelope']; if (IMPORT_DEBUG) echo "CSV import: {$current_csv} Fields: {$csv_formats[$current_csv]}
"; require_once('import_user_class.php'); $usr = new user_import; $usr->overrideDefault('user_class',$checked_class_list); if (($source_data = file($csv_data_file)) === FALSE) $msg = LAN_CONVERT_32; if ($import_delete_existing_data) $usr->emptyTargetDB(); // Delete existing users - reasonably safe now $line_counter = 0; $error_counter = 0; $write_counter = 0; foreach ($source_data as $line) { $line_counter++; $line_error = FALSE; if ($line = trim($line)) { $usr_data = $usr->getDefaults(); // Reset user data $line_data = csv_split($line, $separator, $enveloper); $field_data = current($line_data); foreach ($field_list as $f) { if ($field_data === FALSE) $line_error = TRUE; if ($f != 'dummy') $usr_data[$f] = $field_data; $field_data = next($line_data); } if ($line_error) { if ($msg) $msg .= "
"; $msg .= LAN_CONVERT_33.$line_counter; $error_counter++; } else { if ($csv_pw_not_encrypted) { $usr_data['user_password'] = md5($usr_data['user_password']); } $line_error = $usr->saveData($usr_data); if ($line_error === TRUE) { $write_counter++; } else { $line_error = $usr->getErrorText($line_error); if ($msg) $msg .= "
"; $msg .= str_replace('--ERRNUM--',$line_error,LAN_CONVERT_34).$line_counter; $error_counter++; } } } } if ($msg) $msg .= "
"; if ($import_delete_existing_data) $msg .= LAN_CONVERT_40.'
'; $msg .= str_replace(array('--LINES--','--USERS--', '--ERRORS--'),array($line_counter,$write_counter,$error_counter),LAN_CONVERT_35); } break; case 'db' : if (IMPORT_DEBUG) echo "Importing: {$current_db_type}
"; if (!isset($_POST['dbParamHost']) || !isset($_POST['dbParamUsername']) || !isset($_POST['dbParamPassword']) || !isset($_POST['dbParamDatabase'])) { $msg = LAN_CONVERT_41; } if (!$msg) { if (class_exists($current_db_type)) { $converter = new $current_db_type; } else { $msg = LAN_CONVERT_42; } } if (!$msg) { $result = $converter->db_Connect($_POST['dbParamHost'], $_POST['dbParamUsername'], $_POST['dbParamPassword'], $_POST['dbParamDatabase'], $_POST['dbParamPrefix']); if ($result !== TRUE) { $msg = LAN_CONVERT_43.": ".$result; // db connect failed } } if (!$msg) { foreach ($db_import_blocks as $k => $v) { if (isset($db_blocks_to_import[$k])) { $loopCounter = 0; $errorCounter = 0; if (is_readable($v['classfile'])) { require_once($v['classfile']); } else { $msg = LAN_CONVERT_45.': '.$v['classfile']; // can't read class file. } if (!$msg && (varset($_POST["import_block_{$k}"],0) == 1)) { if (IMPORT_DEBUG) echo "Importing: {$k}
"; $result = $converter->setupQuery($k,!$import_delete_existing_data); if ($result !== TRUE) { $msg = LAN_CONVERT_44.' '.$k; // $msg .= "Prefix = ".$converter->DBPrefix; break; } $exporter = new $v['classname']; // Writes the output data // Do any type-specific default setting switch ($k) { case 'users' : $exporter->overrideDefault('user_class',$checked_class_list); break; } if ($import_delete_existing_data) $exporter->emptyTargetDB(); // Clean output DB - reasonably safe now while ($row = $converter->getNext($exporter->getDefaults())) { $loopCounter++; $result = $exporter->saveData($row); if ($result !== TRUE) { $errorCounter++; $line_error = $exporter->getErrorText($result); if ($msg) $msg .= "
"; $msg .= str_replace(array('--ERRNUM--','--DB--'),array($line_error,$k),LAN_CONVERT_46).$loopCounter; } } $converter->endQuery; unset($exporter); if ($msg) $msg .= "
"; $msg .= str_replace(array('--LINES--','--USERS--', '--ERRORS--','--BLOCK--'), array($loopCounter,$loopCounter-$errorCounter,$errorCounter, $k),LAN_CONVERT_47); } } } } // $msg = LAN_CONVERT_29; $abandon = FALSE; break; } if ($msg) { $emessage->add($msg, E_MESSAGE_INFO); // $ns -> tablerender(LAN_CONVERT_30, $msg); $msg = ''; } if ($abandon) { // unset($_POST['do_conversion']); $text = "
"; $ns -> tablerender(LAN_CONVERT_30, $text); require_once(e_ADMIN."footer.php"); exit; } } //====================================================== // Display front page //====================================================== if(varset($_POST['import_type']) || varset($_POST['do_conversion'])) { showImportOptions($_POST['import_type']); } else { showStartPage(); } require_once(e_ADMIN."footer.php"); exit; /* * Currently unused function - shows available import methods and capabilities */ function showStartPage() { global $ns, $emessage, $frm, $import_class_names, $import_class_support, $db_import_blocks, $import_class_comment; $text = "
".'DBLAN_10'." "; foreach($db_import_blocks as $name) // 1 column for each of users, news, forum etc. { $text .= ""; } $text.=" "; foreach ($import_class_names as $k => $title) { $text .= "\n"; foreach($db_import_blocks as $key=>$val) { $text .= "\n"; } $text .= " "; } $text .= "
".LAN_CONVERT_06."".$name['message']."".LAN_OPTIONS."
CSV ".ADMIN_TRUE_ICON."         ".$frm->radio('import_type', 'csv')."
".$title."
".$import_class_comment[$k]."
".(in_array($key,$import_class_support[$k]) ? ADMIN_TRUE_ICON : " ")." ".$frm->radio('import_type', $k)."
".$frm->admin_button('trigger_import',LAN_CONTINUE, 'execute')."
"; $ns->tablerender(LAN_CONVERT_01, $emessage->render().$text); } function showImportOptions($mode='csv') { global $text, $frm, $ns, $emessage, $csv_names, $import_class_names, $e_userclass, $db_import_blocks, $import_class_support, $import_default_prefix; $message = LAN_CONVERT_02."
".LAN_CONVERT_05.""; $emessage->add($message, E_MESSAGE_WARNING); $text = "
"; if($mode == "csv") { $text .= " "; } else { $importType = $import_class_names[$mode]; $text .= " "; } $text .= "
".LAN_CONVERT_07." \n
".LAN_CONVERT_36."
".LAN_CONVERT_17." ".LAN_CONVERT_18."
$importType ".LAN_CONVERT_19."
$importType ".LAN_CONVERT_20."
$importType ".LAN_CONVERT_21."
$importType ".LAN_CONVERT_22."
$importType ".LAN_CONVERT_23."
$importType ".LAN_CONVERT_24." "; $defCheck = (count($import_class_support[$mode])==1) ? "checked='checked'" : ""; foreach ($db_import_blocks as $k => $v) { if(in_array($k, $import_class_support[$mode])) // display only the options supported. { $text .= " ".$v['message']; $text .= "
"; } } $text .= "
".LAN_CONVERT_38." ".LAN_CONVERT_39."
".LAN_CONVERT_16." "; $text .= $e_userclass->vetted_tree('classes_select',array($e_userclass,'checkbox'), $checked_class_list,'main,admin,classes,matchclass'); $text .= "
".$frm->admin_button('do_conversion',LAN_CONTINUE, 'execute')."
"; // Now a little bit of JS to initialise some of the display divs etc $temp = ''; if ($import_source) $temp .= "disp('{$import_source}');"; if ($current_db_type) $temp .= " flagbits('{$current_db_type}');"; if ($temp) $text .= ""; $ns -> tablerender(LAN_CONVERT_01." :: ".$importType, $emessage->render().$text); } function csv_split(&$data,$delim=',',$enveloper='') { $ret_array = array(); $fldval=''; $enclosed = false; // $fldcount=0; // $linecount=0; for($i=0;$i $val) { $blocks .= "block_names[{$i}]='{$it}';\n"; $i++; } $i = 0; foreach ($import_class_support as $k => $v) { $vals .= "db_names[$i] = '{$k}';\n"; $comments .= "comment_text[$i] = '{$import_class_comment[$k]}';\n"; // $temp = $import_class_support[$k]; // Array of import types supported $j = 0; $m = 1; // Mask bit foreach ($db_import_blocks as $it => $val) { if (in_array($it,$v)) $j = $j + $m; $m = $m + $m; } $texts .= "db_options[{$i}] = {$j};\n"; $i++; } $text = " "; return $text; } ?>