L L I U R E X <--------------------------------------// // Modulo de importación/exportacion de usuarios de pmb, a partir de un fichero de texto plano function string_to_array($string) { $largo = strlen($string); //Largo de cadena $final_array = array(); for($i = 0; $i < $largo; $i++) { $caracter = $string[$i]; array_push($final_array,$caracter); } return $final_array; } function sacaCamposItaca ($archivo) { $vector = array(); $indice =0; /*Instancio la clase DOM que nos permitira operar con el XML*/ $doc = new DOMDocument(); /* Cargo el XML, En este caso es un archivo llamado llxgesc.xml, podriamos usar loadXML si desamos leer de un string*/ $doc->load( $archivo ); // Obtengo el nodo alumne (listaAlumnos) del XML a traves del metodo getElementsByTagName, retorna una lista de todos los nodos encontrados $listaAlumnos = $doc->getElementsByTagName( "alumne" ); /*Al ser $listaAlumnos una lista de nodos lo puedo recorrer y obtener todo su contenido*/ foreach( $listaAlumnos as $alumno ) { /* Obtengo el valor del primer elemento 'item(0)' de la lista $autors. Si existiera un atributo en el nodo para obtenerlo usaria $authors->getAttribute('atributo'); */ $nombres = $alumno->getElementsByTagName( "nom" ); // $authors = $book->getElementsByTagName( "author" ); $nombre = $nombres->item(0)->nodeValue; $apellidos = $alumno->getElementsByTagName( "cognoms" ); // $publishers = $book->getElementsByTagName( "publisher" ); $apellido = $apellidos->item(0)->nodeValue; // $publisher = $publishers->item(0)->nodeValue; $expedientes = $alumno->getElementsByTagName( "numeroExpedient" ); // $publishers = $book->getElementsByTagName( "publisher" ); $expediente = $expedientes->item(0)->nodeValue; // $publisher = $publishers->item(0)->nodeValue; // Eliminamos la barra del numero de expediente $expediente = trim($expediente); // Para separar el numero de expediente y extraer sólo los números tenemos que eliminar separadores que pueden ser barra, punto, espacio o sin separador $cadena=""; $expediente = string_to_array($expediente); if (count($expediente)>0) { for ($i=0; $i= "0" && $digito <="9") $cadena .= $digito; } } /* $posicionBarra = strpos ($expediente, "/"); if (!$posicionBarra) $posicionBarra = strpos ($expediente, "-"); $trozo1 = substr ( $expediente , 0, $posicionBarra ); $trozo2 = substr ( $expediente , $posicionBarra+1, strlen($expediente)-$posicionBarra); $cadena = $trozo1 . $trozo2; */ // Inicializamos el vector for ($i=$indice;$i<$indice+24;$i++) $vector[$i]= ""; // Tenemos que añadir ceros delante hasta completar un minimo de 4 digitos en el numero de expediente // con menos digitos el lector de CB no funciona $cadena=trim($cadena); if (strlen($cadena)<4) $cadena = str_pad($cadena, 4, "0", STR_PAD_LEFT); $vector[$indice] = $cadena; $vector[$indice+1] = utf8_decode(trim($apellido)); $vector[$indice+2] = utf8_decode(trim($nombre)); //$vector[$indice+17] = "va_ES"; $indice=$i; } // Pasamos profesores $listaProfesores = $doc->getElementsByTagName( "professor" ); foreach( $listaProfesores as $profesor ) { /* Obtengo el valor del primer elemento 'item(0)' de la lista $autors. Si existiera un atributo en el nodo para obtenerlo usaria $authors->getAttribute('atributo'); */ $nombres = $profesor->getElementsByTagName( "nom" ); // $authors = $book->getElementsByTagName( "author" ); $nombre = $nombres->item(0)->nodeValue; $apellidos = $profesor->getElementsByTagName( "cognoms" ); // $publishers = $book->getElementsByTagName( "publisher" ); $apellido = $apellidos->item(0)->nodeValue; // $publisher = $publishers->item(0)->nodeValue; $nifs = $profesor->getElementsByTagName( "document" ); // $publishers = $book->getElementsByTagName( "publisher" ); // Si lo que se importa es un fichero GESCEN el campo nif a parsear es distinto if ($nifs->length == 0) $nifs = $profesor->getElementsByTagName( "nif" ); $nif = $nifs->item(0)->nodeValue; // $publisher = $publishers->item(0)->nodeValue; for ($i=$indice;$i<$indice+24;$i++) $vector[$i]= ""; $tam = strlen($nif); $nif = substr(trim($nif), 1, $tam-2); if (strlen($nif)<4) $nif=str_pad($nif, 4, "0", STR_PAD_LEFT); // Comprobamos tam min 4 digitos $vector[$indice] = $nif; $vector[$indice+1] = utf8_decode(trim($apellido)); $vector[$indice+2] = utf8_decode(trim($nombre)); //$vector[$indice+17] = "va_ES"; $indice=$i; } $vector[$indice]="Campo vacio"; // Lo añadimos para hacerlo compatible con la importacion del fichero plano del GESCEN return $vector; } function fields_slashes($field) { $que = array("&", "<", ">", "\\", "/"); $por = array("&", "<", ">", "_", "_"); return addslashes(str_replace($que, $por, $field)); } $base_path="."; $base_auth = "ADMINISTRATION_AUTH"; $base_title = "\$msg[7]"; require_once ("$base_path/includes/init.inc.php"); $categor = $_GET['categor']; switch($categor){ // Selección de opciones. case 'import': { // Formulario de tablas de importacion $nomfich = "./temp/".$_FILES['fich']['name']; //nombre fichero en el cliente $tipo = $_FILES['fich']['type']; //tipo fichero $sep= $_POST['separador']; if (!strcmp($tipo, "text/xml")){ require("$base_path/includes/db_param.inc.php"); $link2 = @mysql_connect(SQL_SERVER, USER_NAME, USER_PASS) OR die("Error MySQL"); if (move_uploaded_file($_FILES['fich']['tmp_name'], $nomfich)){ //el POsT devuelve el nombre de archivo en el servidor y el segundo campo es a donde se va a mover. $tot = sacaCamposItaca($nomfich); } $num=0; $cont=0; $campos=(count($tot))-1; //total de campos, se le resta 1 debido a que coge un campo mas (vacio) if (($campos%24) != 0){ exit("Campos $campos"); exit("
$msg[usur_imp_a]
"); } while($num<$campos){ if ($tot[$num] == " ") { $tot[$num] = NULL;} if(((($num+1)%24)== 0) && ($num != 0)){//cada 24 debido a que hay 24 campos // Comprobamos si existe ya un alumno el mismo nombre y apellidos en la BD del PMB, si está actualizamos // su datos personales si no los incorporamos al PMB $sql_comp= "SELECT `empr`.`id_empr`, `empr`.`empr_login`, `empr`.`empr_password`, `empr`.`empr_location` FROM `empr` WHERE (`empr`.`empr_cb`='" . $tot[$num-23] . "' AND `empr`. `empr_nom` like '" . $tot[$num-22] . "' AND `empr`. `empr_prenom` like '" . $tot[$num-21] . "' )"; $resul1= @mysql_query($sql_comp, $link2); $fecha= date('Y-m-d'); $fecha_cad= date('Y-m-d', strtotime('+1 year')); if (trim($tot[$num-9]) != "") { $user_a=addslashes($tot[$num-9]); if (trim($tot[$num-8]) != "") $pass_a=addslashes($tot[$num-8]); else $pass_a=$tot[$num-23]; } else { $user_a=$tot[$num-23]; $pass_a=$tot[$num-23]; //echo "a".$user_a." ".$pass_a."a"; //exit(0); } if (trim($tot[$num-3]) != "") $loca=intval(($tot[$num-3])); else $loca=1; if (@mysql_num_rows($resul1) != 0) { //echo "$msg[usur_imp_b] " . $tot[$num-23] . "
"; $row1 = mysql_fetch_array($resul1); $requete = "UPDATE empr SET "; $requete .= "empr_nom='".fields_slashes($tot[$num-22])."',"; $requete .= "empr_prenom='".fields_slashes($tot[$num-21])."',"; $requete .= "empr_adr1='".fields_slashes($tot[$num-20])."',"; $requete .= "empr_adr2='".fields_slashes($tot[$num-19])."',"; $requete .= "empr_cp='".fields_slashes($tot[$num-18])."',"; $requete .= "empr_ville='".fields_slashes($tot[$num-17])."',"; $requete .= "empr_pays='".fields_slashes($tot[$num-16])."',"; $requete .= "empr_mail='".fields_slashes($tot[$num-15])."',"; $requete .= "empr_tel1='".fields_slashes($tot[$num-14])."',"; $requete .= "empr_tel2='".fields_slashes($tot[$num-13])."',"; $requete .= "empr_prof='".fields_slashes($tot[$num-12])."',"; $requete .= "empr_year=".intval(($tot[$num-11])).","; if ($row1['empr_login'] == "") { $requete .= "empr_login='".$user_a."', "; $requete .= "empr_password='".$pass_a."', "; } //$requete .= "empr_msg='".$tot[$num-7]."' "; //$requete .= "empr_lang='".$lang."', "; //$requete .= "type_abt='".$tot[$num-5]."', "; //$requete .= "last_loan_date='".$tot[$num-4]."', "; if ($row1['empr_location'] == "" || intval($row1['empr_location']) == 0) $requete .= "empr_location='".$loca."', "; //$requete .= "date_fin_blocage=$tot[$num-22],"; //$requete .= "total_loans=$tot[$num-22],"; //$requete .= "empr_statut='"$tot[$num-22]."',"; $requete .= "empr_sexe=".intval(($tot[$num-10])).""; $requete .= " WHERE id_empr=".intval($row1['id_empr'])." "; $resul2 = @mysql_query($requete, $link2); $cont++; } else{ // arreglar saltos de línea if ($tot[$num] == "") $tot[$num] = 1; $sql = "insert into empr (empr_cb, empr_nom, empr_prenom, empr_adr1, empr_adr2, empr_cp, empr_ville, empr_pays, empr_mail, empr_tel1, empr_tel2, empr_prof, empr_year, empr_sexe, empr_login, empr_password, empr_msg, empr_lang, type_abt, last_loan_date, empr_location, date_fin_blocage, total_loans, empr_statut, empr_creation, empr_modif, empr_date_adhesion, empr_date_expiration, empr_categ, empr_codestat) values ( '" . fields_slashes($tot[$num-23]) . "', '" . fields_slashes($tot[$num-22]) . "', '" . fields_slashes($tot[$num-21]) . "', '" . fields_slashes($tot[$num-20]) . "', '" . fields_slashes($tot[$num-19]) . "', '" . fields_slashes($tot[$num-18]) . "', '" . fields_slashes($tot[$num-17]) . "', '" . fields_slashes($tot[$num-16]) . "', '" . fields_slashes($tot[$num-15]) . "', '" . fields_slashes($tot[$num-14]) . "', '" . fields_slashes($tot[$num-13]) . "', '" . fields_slashes($tot[$num-12]) . "', " . intval(($tot[$num-11])) . ", " . intval(($tot[$num-10])) . ", '" . $user_a . "', '" . $pass_a . "', '" . fields_slashes($tot[$num-7]) . "', '" . $lang . "', '" . fields_slashes($tot[$num-5]) . "', '" . $tot[$num-4] . "', $loca, '" . $tot[$num-2] . "', '" . $tot[$num-1] . "', '" . $tot[$num] . "', '" . $fecha . "', '" . $fecha . "', '" . $fecha . "', '" . $fecha_cad . "', 7, 2 )"; $resul2 = @mysql_query($sql, $link2); $cont++; } } $num++; } echo "$msg[usur_imp_c] " . $cont . " $msg[usur_imp_d] "; if ($num>0){ //comparativa campos con los valores a insertar echo "

$msg[usur_imp_e]   

$msg[usur_imp_f]
$msg[usur_imp_g]
$msg[usur_imp_h]
$msg[usur_imp_i]
$msg[usur_imp_j]
$msg[usur_imp_k]
id_empr
empr_cb
empr_nom
empr_prenom
empr_adr1
empr_adr2
empr_cp
empr_ville
empr_pays
empr_mail
empr_tel1
empr_tel2
empr_prof
empr_year
empr_categ
empr_codestat
empr_creation
empr_modif
empr_sexe
empr_login
empr_password
empr_date_adhesion
empr_date_expiration
empr_msg
empr_lang
empr_ldap
type_abt
last_loan_date
empr_location
date_fin_blocage
total_loans
empr_statut
"; fclose($archivo); unlink($nomfich); break; }} else { echo "
". $nomfich ." ". $msg["usur_imp_l"]."
"; } break; } default: // Formulario para elegir fichero a importar de itaca echo "

$msg[import_usu_from_itaca_a]

"; break; } //-------------------------------------> L L I U R E X <--------------------------------------// ?>