define("DINEL", "http://www.dinel.us.es/");
//-----------------------
require('/www/DINEL/util/rutinas.php');
require('/www/DINEL/util/db.php');
//-----------------------
$id= $HTTP_GET_VARS['p'];
$c= $HTTP_GET_VARS['c']; // c=4 si se llama desde la página de un grupo
$d= $HTTP_GET_VARS['d'];
//-----------------------
$link= mysql_connect("localhost","dinel");
mysql_select_db("die",$link);
$result = mysql_query("SELECT nb FROM personal WHERE (id = ".$id.")", $link);
if ($result) {
$strNombre=mysql_result($result,0,0);
mysql_free_result($result);
}
mysql_close($link);
//-----------------------
require('/www/DINEL/Smarty.class.php');
$smarty=new Smarty;
require('/www/DINEL/menu.php');
$smarty->assign("menu_DirRaiz", DINEL);
$smarty->assign("menu_Fondo","fondo.jpg");
$smarty->assign("menu_Persona",$strNombre);
$ficheroRetorno= DINEL."02_componentes_1alf.php";
if ($c == 1 && d==0) $ficheroRetorno= DINEL."02_componentes.php";
if ($c == 4) { if ($d==0) $ficheroRetorno=DINEL."gte/gte_2comp.php"; else $ficheroRetorno=DINEL."gie/gie_2comp.php"; }
$smarty->assign("menu_FicheroRetorno",$ficheroRetorno."?c=".$c."&d=".$d."&p=".$id);
$smarty->display('menuPrivado.tpl');
//echo $strNombre;
?>
Dirección:
Vicente Baena Lecuyer
Departamento de Ingenieria Electrónica
Escuela Superior de Ingenieros
Camino de los Descubrimientos S/N
41092 Sevilla (SPAIN)
Docencia
Tutorías:
Martes y Miércoles de 12:00 a 14:00
Jueves de 16:00 a 18:00
Asignaturas:
Diseño de Circuitos y Sistemas Electrónicos de 4º curso de Ingeniería de Telecomunicación Web
Sistemas Electrónicos para Comunicaciones de 5º curso de Ingeniería de Telecomunicación Web
Breve Curriculum
Becario de la Asociación de Investigación y Cooperación Industrial de Andalucía (AICIA) 1996
Ingeniero de telecomunicación desde 1997
Becario FPI de 1997 a 1998
Profesor Asociado desde 1998
Doctor Ingeniero de Telecomunicación desde 2001
Publicaciones
define("RI",0);
define("RN",1);
define("CI",2);
define("CN",3);
define("CAP",4);
define("PAT",5);
define("REV",8); // RI+RN
define("CON",9); // CI+CN
//
define("GTE",22);
define("GIE",23);
//
define("ECO",1); // Hace echo de la información. En caso contrario devuelve una cadena
define("ASC",2); // Orden ascendente de Fechas
define("MAY",4); // Mayúscula (texto)
define("INB",8); // Incluye NB además del ID y separados por "=". Combo de Publicaciones
define("SAG",16); // La primera columna Sustituye el AGno por el id del articulo
define("RED",32); // Resultado reducido (Ej.: nba)
define("VAC",16); //Permite que haya una opción en el combo que sea "No tiene"
define("DPT",16); // ComboPublicaciones: publicaciones del dpto o de todo (incluye señal)
//////////////////////////////////////////////////////////////
function getMes($mes,$tipo=0)
//////////////////////////////////////////////////////////////
{
$echo= ($tipo & ECO) == ECO;
$strMes=array("Ene.","Feb.","Mar.","Abr.","May.","Jun.","Jul.","Ago.","Sep.","Oct.","Nov.","Dic.");
if (($mes < 1) OR ($mes >12)) { return " "; }
return $strMes[$mes-1];
if ($echo) echo $strMes; else return $strMes;
}
//////////////////////////////////////////////////////////////
function getAutores(&$autores, $articID, $tipo=0)
//////////////////////////////////////////////////////////////
{
$echo= ($tipo & ECO) == ECO;
$strAutores="";
// Obtención de los autores
$nMax=mysql_num_rows($autores);
if ($nMax==0)
return "";
//echo "
articID=".$articID;
if ( ($i= dicotomico($autores, $articID)) == -1)
return "";
// Se ha encontrado uno de los firmantes del artículo. Nos situamos en el primero
$i-= mysql_result($autores,$i,1)-1;
if ($i<0) return "";
//echo " x=".mysql_result($autores,$i,0);
//echo " f=".mysql_result($autores,$i,2);
for ( ; ($i < $nMax) AND (mysql_result($autores,$i,0)==$articID); $i++)
{
if ($strAutores != "") $strAutores.= ", ";
$strAutores.= mysql_result($autores,$i,2);
}
if ($echo) echo $strAutores; else return $strAutores;
}
//////////////////////////////////////////////////////////////
function tablaLineas($tipo, $strTituloCabecera="")
//////////////////////////////////////////////////////////////
{
global $result;
if (($row = db_fetch_array($result))==false) //Lee el primero
return;
// Fíjate que no le paso el párametro de arriba $tipo sino $row['tipo']. El motivo es
// que si busco un artículo de un congreso nacional, el programa empieza buscando
// en los congresos internacionales (lee una ya un primer registro) y se entra en esta
// rutina con el parámetro $tipo=CI. Pero conmutamos a $row['tipo']=CN para no perder
// ese registro. Después el programa buscará en los congresos nacionales pero ya no
// habrá más registros. Resumiendo permite conmutar de CI->CN y de RI->RN
tablaLineas_1($row['tipo'], $strTituloCabecera, $row);
}
//////////////////////////////////////////////////////////////
function tablaLineas_1($tipo, $strTituloCabecera="", &$row, $forma=ECO)
//////////////////////////////////////////////////////////////
{
global $result, $autores, $enlaces; // $row,
$forma|= ECO;
$agnoAnt=0;
$clase=false;
$strClase="3"; // para el color alternado de las celdas
if (!isset($row))
{
if (($row = db_fetch_array($result))==false)
return;
}
if ($row==false) // Llego al final y no hay nada de este tipo
return;
if ($strTituloCabecera!="" AND ($tipo == $row['tipo']))
cabeceraTabla($tipo, $strTituloCabecera,0,0,$forma);
$i=1;
$fila=0; // Super importante
do
{
if ($tipo != $row['tipo'])
break;
if ($agnoAnt != $row['agno'])
{
$agnoAnt= $row['agno'];
if ($clase == false) $strClase="3"; else $strClase="4";
$clase = !$clase;
}
UnaLineaArticulo($i++, $tipo, $strClase, $row, $autores, $enlaces, $forma);
} while ($row = db_fetch_array($result));
echo "\n"; // Se abrió en cabeceraTabla
}
//////////////////////////////////////////////////////////////
function cabeceraTabla($tipo, $strTitulo="", $agno=0, $grupo=0,$forma=ECO)
//////////////////////////////////////////////////////////////
{
if ( ($tipo == CI) OR ($tipo == CN) ) {
if ($strTitulo!="") echo $strTitulo;
}elseif (($tipo == RI) OR ($tipo == RN)) { // Revistas, cabecera
if ($strTitulo!="") echo $strTitulo;
} elseif ($tipo == CAP) { // Capítulos de libro
if ($strTitulo!="") echo $strTitulo;
} elseif ($tipo == PAT) { // Patentes
if ($strTitulo!="") echo $strTitulo;
}
echo "
";
if ( ($tipoEvento == CI) OR ($tipoEvento == CN) )
{
$vector= explode("=",$row['congreso']); // Separamos la cadena en dos elementos
if (count($vector)<2) $titulo= $vector[0]; else $titulo= $vector[1];
$str.="Título: ".$row['titulo']."";
$str.=" Autores (p.o. de firma): ".getAutores($autores,$row['n']);
$str.=" Congreso: ".$titulo;
$str.=" Páginas: ".$row['paginas'];
$str.=" Lugar: ".$row['lugar'];
$str.=" Fecha: ".getMes($vector[0]);
$str.=" ".$row['agno'];
}
elseif (($tipoEvento == RI) OR ($tipoEvento == RN)) // Revistas
{
$vector= explode("=",$row['titulo']); // Separamos la cadena en dos elementos
$str.="Título: ".$vector[1]."";
$str.=" Autores (p.o. de firma): ".getAutores($autores,$row['n']);
$str.=" Revista: ".$row['congreso'].", ".$row['paginas'];
// $str.=" Fecha: ".$row['agno'];
}
elseif ($tipoEvento==CAP)
{
$str.=getAutores($autores,$row['n']);
$str.=", ".$row['titulo'].", ".$row['paginas'];
$vector= explode("=",$row['congreso']); // Separamos la cadena en dos elementos
$str.=", ".$vector[0];
$str.=", ".$vector[1];
}
elseif ($tipoEvento==PAT)
{
$str.=getAutores($autores,$row['n']);
$str.=", ".$row['paginas'];
$str.=", ".$row['titulo']."";
}
$str.=" ";
$str.= "
\n";
if ($echo) echo $str; else return $str;
}
//////////////////////////////////////////////////////////////
function tituloPubli($tipoEv, $tipo=0)
//////////////////////////////////////////////////////////////
{
$echo= ($tipo & ECO) == ECO;
$redu= ($tipo & RED) == RED;
$tituloEvento="";
if ($redu==0) // Título no reducido
{
switch($tipoEv)
{
case RI: $tituloEvento="Revistas Internacionales "; break;
case RN: $tituloEvento="Revistas Nacionales "; break;
case CI: $tituloEvento="Congresos Internacionales "; break;
case CN: $tituloEvento="Congresos Nacionales "; break;
case CAP: $tituloEvento="Capítulos de Libro "; break;
case PAT: $tituloEvento="Patentes "; break;
}
}
else
{
switch($tipoEv)
{
case RI:
case RN: $tituloEvento="Revista"; break;
case CI:
case CN: $tituloEvento="Congreso"; break;
case CAP: $tituloEvento="Capítulo"; break;
case PAT: $tituloEvento="Patente"; break;
}
}
if ($echo) echo $tituloEvento; else return $tituloEvento;
}
//////////////////////////////////////////////////////////////
function getEnlace(&$enlaces, $articID,$orden,$agno,$grupo,$tipoEvento,$tipo=0)
//////////////////////////////////////////////////////////////
{
global $autorizado;
if (!isset($autorizado)) $autorizado=0;
$echo= ($tipo & ECO) == ECO;
$str="";
$vEventos= array("ri","rn","ci","cn","cap","pat");
$evento = $vEventos[$tipoEvento];
$strGrupo= getGrupo($grupo);
// Obtención de los enlaces
$encontrado=0;
if ($tipoEvento != PAT AND (mysql_num_rows($enlaces)>0))
{
if ( ($i= dicotomico($enlaces, $articID)) >= 0)
$encontrado=1;
}
if ($encontrado AND !$autorizado)
$str.= "'".mysql_result($enlaces,$i,1)."' target='_blank'";
elseif ($agno > 2004)
$str.= "'../pdf/$strGrupo/$evento/$articID.pdf' target='_blank'";
else
{
if ($orden < 10)
$str.= "'../pdf/$strGrupo/$evento/$strGrupo-$agno-$evento-0$orden.pdf' target='_blank'";
else
$str.= "'../pdf/$strGrupo/$evento/$strGrupo-$agno-$evento-$orden.pdf' target='_blank'";
}
if ($echo) echo $str; else return $str;
}
//////////////////////////////////////////////////////////////
function getGrupo($grupo,$tipo=0)
//////////////////////////////////////////////////////////////
{
$echo= ($tipo & ECO) == ECO;
$mayuscula= ($tipo & MAY) == MAY;
$strGrupo="";
switch($grupo)
{
case GTE: $strGrupo="gte"; break;
case GIE: $strGrupo="gie"; break;
}
if ($mayuscula)
$strGrupo= strtoupper($strGrupo);
if ($echo) echo $strGrupo; else return $strGrupo;
}
/////////////////////////////////////////////////////////////////////////////
function dicotomico(&$tabla, $datoID)
/////////////////////////////////////////////////////////////////////////////
{
// global $unavez;
// if ($unavez) return 0;
$encontrado=0;
$inf=0;
$sup= mysql_num_rows($tabla); // "nElementos": Nunca se alcanza este valor
$med=0;
$nPos=0;
//echo " nFilas=".$sup;
//echo " articID=".$datoID." ";
$x=0;
while ($inf < $sup)
{
$med=(int)(($inf+$sup)/2);
if( ($x=mysql_result($tabla,$med,0))==false) // $fila es el punto medio
return -1;
//echo " inf=".$inf;
//echo " med=".$med;
//echo " sup=".$sup;
//echo " x=".$x." ";
if ( $x == $datoID ) { $encontrado=1; break; }
if ($x < $datoID) // Si esta ordenado ascend.
$inf=$med+1;
else
$sup=$med;
}
// $unavez=1;
if (!$encontrado)
return -1;
return $med;
}
/////////////////////////////////////////////////////////////////////////////
function tituloTabla1($tipoTitulo)
/////////////////////////////////////////////////////////////////////////////
{
$str1.= "
".$tipoTitulo."
\n";
return $str1;
}
//-------------------------------
function filtroAutorGrupoAgno()
//-------------------------------
{
global $persona, $fini, $finicb, $ffin, $ffincb;
global $where, $where_autores, $where_enlaces;
global $tablas, $tablas_autores, $tablas_enlaces;
global $orden_autores, $orden_enlaces;
global $autorID;
global $strForm;
$where="";
$autorID=17;
// $autorID=6;
$where.="(AF.autor = $autorID) AND (A.repetido = 0)";
$necesitaAF=1;
//-----------------------------------------------------
$tablas="articulos A";
$tablas_autores="articulos A, artic_firmas AF, firmas F";
$tablas_enlaces="articulos A, artic_enla AE";
$where_enlaces="$where AND (AE.id = A.id)";
if ($necesitaAF)
{
$where_enlaces.= " AND (AF.id = A.id)";
$where.= " AND (AF.id = A.id)";
$tablas.= ", artic_firmas AF";
$tablas_enlaces.=", artic_firmas AF";
$where_autores= "$where AND (AF.id = AF1.id) AND (F.id = AF1.autor)"; // 1ª asignación
$tablas_autores.= ", artic_firmas AF1"; // 2ª asignación
$orden_autores= "AF1.id, AF1.posicion"; // Búsqueda dicotómica articID. "A.id" ya ordena por años
}
$orden_enlaces= "AE.id"; // 1ª asignación (Definitiva). Búsqueda dicotómica por número de artículo. "A.id" ya ordena por años
return $necesitaAF;
}
//-------------------------------
function filtro()
//-------------------------------
{
global $opcion, $titulo, $revista, $congreso; // $tipo,
global $where, $where_autores, $where_enlaces,
$tablas, $tablas_autores, $tablas_enlaces;
global $orden_autores, $orden_enlaces;
global $autorID, $autorNB;
global $strForm;
$necesitaAP=0; // Se necesitará la tabla artic_publi en el filtrado
$revist="";
$congres="";
$salida=0; // 1: revistas or 2:congresos or 4:capitulos
$_where="";
$strForm.="
\n
Artículos:
\n
Revistas+Congresos
\n
";
$salida= 3; // 00000011 (revistas y congresos)
//-----------------------------------------------------
$tablas.=", artic_publi AP";
$where.= $_where;
$where_enlaces.= $_where;
$where_autores.= $_where;
if ($necesitaAP>0)
{
$tablas_autores.= ", artic_publi AP";
$tablas_enlaces.= ", artic_publi AP";
}
else
$where.= " AND (A.publicacion = AP.id)"; // En el otro caso iba incluido en $_where
return $salida;
}
/////////////////////////////////////////////////////////////////
function tablaArtic($asunto)
//////////////////////////////////////////////////////////////////
{
global $autor; //formulario
global $autores, $link, $result, $enlaces;
global $where, $where_autores, $where_enlaces;
global $tablas, $tablas_autores,$tablas_enlaces;
global $orden, $orden_autores, $orden_enlaces;
$x="";
if ($autor==0) $x="1";
if ( ($asunto & 1)==1) // Revistas
{
$_orden="tipo, agno DESC, titulo, AP.id"; // RI y RN. titulo="05=A Low Voltage range ..."
$_where_autores= "(A.tipo <= 1) AND $where_autores";
$_where_enlaces= "(A.tipo <= 1) AND $where_enlaces"; // AND (AE.id = A.id)";
//$_where_enlaces="(AP.id = 25) AND (A.publicacion = AP.id) AND (A.tipo <= 1) AND (AE.id = A.id) AND (A.grupo = 23)";
$_where="(A.tipo <= 1) AND $where"; // AND (A.publicacion = AP.id)";
$result = db_query("SELECT A.id AS n, A.tipo, grupo, orden, agno, titulo, paginas, issn_lugar AS lugar, AP.nb AS congreso, grupo, repetido FROM $tablas WHERE $_where ORDER BY $_orden");
$autores= db_query("SELECT AF$x.id AS n, AF$x.posicion, F.nb FROM $tablas_autores WHERE $_where_autores ORDER BY $orden_autores");
$enlaces= db_query("SELECT AE.id AS n, AE.nb FROM $tablas_enlaces WHERE $_where_enlaces ORDER BY $orden_enlaces");
if (mysql_num_rows($result)>0)
{
tablaLineas(RI, tituloTabla1(tituloPubli(RI)));
tablaLineas(RN, tituloTabla1(tituloPubli(RN)));
}
mysql_free_result($result);
mysql_free_result($autores);
mysql_free_result($enlaces);
}
if ( ($asunto & 2)==2) // Congresos
{
$_orden="tipo, agno DESC, AP.nb, titulo"; // CI y CN. AP.nb= "03=DCIS'2003. Design ..."
$_where_autores= "((A.tipo = 2) OR (A.tipo = 3)) AND $where_autores";
$_where_enlaces= "((A.tipo = 2) OR (A.tipo = 3)) AND $where_enlaces"; // AND (AE.id = A.id)";
$_where="((A.tipo = 2) OR (A.tipo = 3)) AND $where"; // AND (A.publicacion = AP.id)";
$result = db_query("SELECT A.id AS n, A.tipo, grupo, orden, agno, titulo, paginas, issn_lugar AS lugar, AP.nb AS congreso, grupo, repetido FROM $tablas WHERE $_where ORDER BY $_orden");
$autores= db_query("SELECT AF$x.id AS n, AF$x.posicion, F.nb FROM $tablas_autores WHERE $_where_autores ORDER BY $orden_autores");
$enlaces= db_query("SELECT AE.id AS n, AE.nb FROM $tablas_enlaces WHERE $_where_enlaces ORDER BY $orden_enlaces");
if (mysql_num_rows($result)>0)
{
tablaLineas(CI, tituloTabla1(tituloPubli(CI)));
tablaLineas(CN, tituloTabla1(tituloPubli(CN)));
}
}
}
//////////////////////////////////////////////////////////////
function tabla($tipo, $strTitulo)
//////////////////////////////////////////////////////////////
{
global $result;
if (mysql_num_rows($result)>0)
{
cabeceraTabla($tipo, $strTitulo);
tablaLineas($tipo);
}
}
/////////////////////////////////////////////////////////////////////////////
function patentes()
/////////////////////////////////////////////////////////////////////////////
{
global $autor; //formulario
global $autores, $link, $result;
global $where, $where_autores, $tablas, $tablas_autores, $orden, $orden_autores;
//----------------
$where=""; // Importante ponerlas en blanco por si han sido utilizadas
$where_autores="";
$tablas="articulos A";
$tablas_autores="articulos A, artic_firmas AF, firmas F";
$x="";
if ($autor==0) $x="1";
//-------------------------------
filtroAutorGrupoAgno(); // Importante que reinicie variables
//-------------------------------
$orden="A.agno DESC, A.titulo";
$orden_autores= "AF$x.id, AF$x.posicion";
$where="(A.tipo = ".PAT.") AND ".$where;
$where_autores= "(A.tipo = ".PAT.") AND ".$where_autores;
$result= db_query("SELECT A.id AS n, orden, A.tipo, agno, titulo, paginas, grupo FROM $tablas WHERE $where ORDER BY $orden");
$autores= db_query("SELECT AF$x.id AS n, AF$x.posicion, F.nb FROM $tablas_autores WHERE $where_autores ORDER BY $orden_autores");
if (db_numrows($result)==0)
return false;
tabla(PAT, tituloTabla1(tituloPubli(PAT)));
/* Liberar conjunto de resultados */
mysql_free_result($result);
mysql_free_result($autores);
} // function "patentes"
/////////////////////////////////////////////////////////////////////////////
function capitulos()
/////////////////////////////////////////////////////////////////////////////
{
global $autor; //formulario
global $autores, $link, $result, $enlaces;
global $where, $where_autores;
global $tablas, $tablas_autores, $tablas_enlaces;
global $orden, $orden_autores, $orden_enlaces;
//----------------
$where=""; // Importante ponerlas en blanco por si han sido utilizadas
$where_autores="";
$tablas="articulos A";
$tablas_autores="articulos A, artic_firmas AF, firmas F";
$tablas_enlaces="articulos A, artic_enla AE";
$x="";
if ($autor==0) $x="1";
//-------------------------------
$necesitaAF=filtroAutorGrupoAgno(); // Importante que reinicie variables
//-------------------------------
$tablas.=", artic_publi AP";
$orden="A.agno DESC, A.titulo";
$orden_autores= "AF$x.id, AF$x.posicion";
$where_autores= "(A.tipo = ".CAP.") AND ".$where_autores;
$where_enlaces= "(A.tipo = ".CAP.") AND $where AND (AE.id = A.id)";
$where="(A.tipo = ".CAP.") AND $where AND (A.publicacion = AP.id)";
$result= db_query("SELECT A.tipo, grupo, A.id AS n, orden, agno, titulo, paginas, issn_lugar AS lugar, AP.nb AS congreso, grupo, repetido FROM $tablas WHERE $where ORDER BY $orden");
$autores= db_query("SELECT AF$x.id AS n, AF$x.posicion, F.nb FROM $tablas_autores WHERE $where_autores ORDER BY $orden_autores");
$enlaces= db_query("SELECT AE.id AS n, AE.nb FROM $tablas_enlaces WHERE $where_enlaces ORDER BY $orden_enlaces");
if (db_numrows($result)==0)
return false;
tabla(CAP, tituloTabla1(tituloPubli(CAP)));
/* Liberar conjunto de resultados */
mysql_free_result($result);
mysql_free_result($autores);
} // function "capitulos"
$autorNB="";
$autorID=0;
$revistaNB="";
$revistaID=0;
$strForm="";
//-------------------------------
$link= db_connect();
//-------------------------------
filtroAutorGrupoAgno(); // 1: SELECT principal necesita "artic_firmas AF"
//-------------------------------
tablaArtic( filtro() ); // Congresos + Revistas
capitulos();
patentes();
//-------------------
mysql_close($link);
//-------------------
?>
$smarty->display('fin.tpl');
/*fin*/
?>