\n\n";
}
print "\n";
break;
case "clasificacion":
print "\n".
"
\n";
fgAviso ("Clasificación de la categoria [r]".ucfirst($GLOBALS["categoria"])."[/r] de la edición de [r]".$GLOBALS["edicion"]."[/r]");
Clasificacion($GLOBALS["categoria"], $GLOBALS["edicion"], "hst");
print "
\n".
"\n";
}
/* ====================================================== */
/* ====================================================== */
function Titulo() {
print "\n";
switch($_SESSION["area"]) {
case "r":
$titulo = "Relatos";
break;
case "a":
$titulo = "Artículos";
break;
case "i":
$titulo = "Ilustraciones";
break;
case "u":
$titulo = "Gestión de usuarios";
break;
case "p":
$titulo = "Gestión de publicaciones";
break;
case "c":
$titulo = "Configuración";
break;
default:
$titulo = kVZ;
break;
}
if ($titulo != kVZ) print "
".$titulo."
\n";
}
/* ====================================================== */
/* ====================================================== */
function Configuracion($Accion) {
if ($_SESSION["Usuario_Perfil"] != "Administrador") return;
global $pIni;
switch(strToLower($Accion)):
// ----------------------------------
case "editar":
GestionUsuarios("Extraer", $GLOBALS["ini_edicion"]);
print "
\n";
gAbreMarco("50%", kVZ, kVZ);
print "
Editar configuración
\n";
print "
\n";
print "\n";
print "
\n";
gCierraMarco();
print "
\n";
break; // editar -------------------
// ----------------------------------
case "grabar":
// Detección de errores
$Fallo = kVZ;
if ($_POST["ini_edicion"] == kVZ) $Fallo = $Fallo."Falta la edición actual \n";
if ($Fallo != kVZ) {
print "
\n".
"
".$Fallo."
\n".
"\n".
"
\n";
return;
}
// arreglos
$_POST["ini_historico"] = vbReplace($_POST["ini_historico"], kS1, kVZ);
$ini = gGetFile("gestion/premio.ini.php");
for ($i = 0; $i < count($ini); ++$i) {
for ($p=0; $p < count($pIni); ++$p) {
$pI = vbReplace($pIni[$p], "*", kVZ); // Quito el asterisco del parámetro
if (strpos($ini[$i], $pI) !== false) {
$GLOBALS[$pI] = $_POST[$pI];
$cpI = $_POST[$pI];
if (strpos($pIni[$p], "*") !== false) $cpI = "\"".$cpI."\""; //Si el parámetro lleva asterisco, es que va entrecomillado.
$ini[$i] = "\$GLOBALS[\"".$pI."\"] = ".$cpI.";";
} // if
} // for $p
} // for $i
gPutFile("gestion/premio.ini.php", $ini);
print "
Configuración guardada
\n";
Configuracion("editar");
break; // editar -------------------
endswitch;
}
/* ====================================================== */
/* ====================================================== */
function NuevaEdicion($Accion) {
if ($_SESSION["Usuario_Perfil"] != "Administrador") return;
switch(strToLower($Accion)):
// ----------------------------------
case "f":
print "
\n";
gAbreMarco("300", kVZ, kVZ);
print "
Crear nueva edición
\n";
print "
\n";
print "\n";
print "
\n";
gCierraMarco();
print "
\n";
break; // Formulario -------------------
/* 20090929 por culpa del mierdoso SafeMode en el servidor esto no funciona */
// ----------------------------------
case "c":
print "
\n";
break; // cambiarclave -------------
// ----------------------------------
case "confirmarcambiarclave":
$Fallo = kVZ;
if ($_POST["ClaveActual"] == kVZ) $Fallo = $Fallo."Falta la clave actual ";
if ($_POST["NuevaClave"] != $_POST["ConfirmarClave"] || $_POST["NuevaClave"] == kVZ || $_POST["ConfirmarClave"] == kVZ):
$Fallo = $Fallo."La nueva clave no está bien confirmada ";
endif;
if ($Fallo == kVZ):
$usuarios = gGetFile($ArchUsu);
for ($u = 0; $u < count($usuarios); ++$u): // Bucle con la lista de autores
if (strrpos($usuarios[$u], "|") !== false): // Si la línea tiene el separador de campo es un registro
$campos = explode("|", $usuarios[$u]);
if ((int)$campos[$nIdUsuario] == (int)$_SESSION["Usuario_Id"]):
if ( $campos[$nClave] != md5($_POST["ClaveActual"]) ):
$Fallo = $Fallo."La clave actual no es correcta ";
else:
$campos[$nClave] = md5($_POST["NuevaClave"]);
$usuarios[$u] = implode("|", $campos);
endif;
endif;
endif;
endfor;
endif;
if ($Fallo == kVZ):
gPutFile($ArchUsu, $usuarios);
// Preparo y envio el correo con las modificaciones realizadas
$CuerpoCorreo = "Se ha cambido su clave de usuario de la web de gestión del PIEE\n\n".
"Clave: ".$_POST["NuevaClave"]."\n".
"\nNo la olvides\n";
EnviarCorreo($_SESSION["Usuario_Id"], "Modificaciones en la ficha de usuario", $CuerpoCorreo);
print "
Clave cambiada con éxito, no la olvides.
\n";
else:
print "
Error: ".$Fallo."
\n";
GestionUsuarios("CambiarClave", $aaaEdicion);
endif;
break; // confirmarcambiarclave ----
// ----------------------------------
case "grabar":
if ($_SESSION["Usuario_Perfil"] != "Administrador") return;
// Agrupación de publicaciones
for($n = 0; $n <= 2; ++$n) {
if ($_POST["IdPubJurado1"] == kVZ && $_POST["IdPubJurado2"] != kVZ) {$_POST["IdPubJurado1"] = $_POST["IdPubJurado2"]; $_POST["IdPubJurado2"] = kVZ;}
if ($_POST["IdPubJurado0"] == kVZ && $_POST["IdPubJurado1"] != kVZ) {$_POST["IdPubJurado0"] = $_POST["IdPubJurado1"]; $_POST["IdPubJurado1"] = kVZ;}
}
// Detección de errores
// ...................................
$Fallo = kVZ;
if ($_POST["Clave"] != kVZ) {
if ($_POST["ConfirmarClave"] == kVZ) $Fallo = $Fallo."No has confirmado la clave \n";
if ($_POST["Clave"] != $_POST["ConfirmarClave"]) $Fallo = $Fallo."La clave no está bien confirmada \n";
} else {
if ($_POST["Clave"] == kVZ && $_POST["IdUsuario"] == kVZ) $Fallo = $Fallo."Falta la clave del usuario \n";
}
if ($_POST["Nombre"] == kVZ) $Fallo = $Fallo."Falta el nombre del usuario \n";
if ($_POST["Apellidos"] == kVZ) $Fallo = $Fallo."Faltan los apellidos del usuario \n";
if ($_POST["IdPubJurado0"] == kVZ) $Fallo = $Fallo."Falta la publicación \n";
if ($_POST["Perfil"] == kVZ) $Fallo = $Fallo."Falta el perfil del usuario \n";
if ($_POST["Correo"] == kVZ) {
$Fallo = $Fallo."Falta el perfil del usuario \n";
} elseif (!fgVerificar($_POST["Correo"], "correo")) {
$Fallo = $Fallo.$_POST["Correo"]." no es una dirección de correo correcta \n";
}
// ...................................
// por si el usuario es nuevo
if ($_POST["IdUsuario"] == kVZ) $_POST["IdUsuario"] = "###";
// Creo la línea del registro.
//$_POST["IdPubJurado0"].($_POST["IdPubJurado1"] != kVZ ? ",". $_POST["IdPubJurado1"] : kVZ).($_POST["IdPubJurado2"] != kVZ ? ",". $_POST["IdPubJurado2"] : kVZ)."|".
$lUsuario = $_POST["IdUsuario"]."|".
$_POST["Nombre"]."|".
$_POST["Apellidos"]."|".
$_POST["IdPubJurado0"].",".$_POST["IdPubJurado1"].",". $_POST["IdPubJurado2"]."|".
$_POST["Correo"]."|".
($_POST["Clave"] != kVZ ? md5($_POST["Clave"]) : $_POST["ClAct"])."|".
$_POST["Perfil"];
$usuarios = gGetFile($ArchUsu);
$contador = -1;
foreach ($usuarios as $linea){
++$contador;
$campos = explode("|", $linea);
if (count($campos) > 1) { //Busco la línea con el id del usuario
$IdUsuario = $campos[$nIdUsuario];
if ($_POST["IdUsuario"] == $campos[$nIdUsuario]) {
$usuarios[$contador] = $lUsuario;
} else if ($_POST["Correo"] == $campos[$nCorreo]) {
$Fallo = $Fallo."El usuario ya está dado de alta \n";
break;
}
}
}
if ($Fallo != kVZ) {
print "
\n".
"
".$Fallo."
\n".
"\n".
"
\n";
return;
}
if ($_POST["IdUsuario"] == "###") {
++$IdUsuario;
$lUsuario = str_replace("###", ($IdUsuario), $lUsuario);
$usuarios[count($usuarios)+1] = $lUsuario;
} else {
$IdUsuario = $_POST["IdUsuario"];
}
gPutFile($ArchUsu, $usuarios);
// Preparo y envio el correo con las modificaciones realizadas
$GLOBALS["Publicacion0"] = GestionPublicaciones("Extraer", $_POST["IdPubJurado0"], $aaaEdicion);
$GLOBALS["Publicacion1"] = GestionPublicaciones("Extraer", $_POST["IdPubJurado1"], $aaaEdicion);
$GLOBALS["Publicacion2"] = GestionPublicaciones("Extraer", $_POST["IdPubJurado2"], $aaaEdicion);
$Usuario = explode("@", $_POST["Correo"]);
$CuerpoCorreo = "Se ha modificado su ficha de usuario de la web de gestión del PIEE\n\n".
"Queda de la siguiente manera:\n\n".
"Nombre: ".$_POST["Nombre"]."\n".
"Apellidos: ".$_POST["Apellidos"]."\n".
"Correo: ".$_POST["Correo"]."\n".
"Publicación: ".$GLOBALS["Publicacion0"]."\n".
($GLOBALS["Publicacion1"] == kVZ ? kVZ : "Publicación: ".$GLOBALS["Publicacion1"]."\n").
($GLOBALS["Publicacion2"] == kVZ ? kVZ : "Publicación: ".$GLOBALS["Publicacion2"]."\n").
"Usuario: ".$Usuario[0]."\n".
($_POST["Clave"] != kVZ ? "Clave: ".$_POST["Clave"]: "La clave se te envió en mensajes anteriores")."\n";
EnviarCorreo($IdUsuario, "Modificaciones en la ficha de usuario", $CuerpoCorreo);
GestionUsuarios("Lista", $aaaEdicion);
break; // grabar -------------------
// ----------------------------------
case "borrar":
if ($_SESSION["Usuario_Perfil"] != "Administrador") return;
GestionUsuarios("Extraer", $aaaEdicion);
print "
\n";
gAbreMarco("70%", kVZ, kVZ);
print "
\n";
print "\n";
print "
\n";
gCierraMarco();
print "
\n";
break; // borrar -------------------
// ----------------------------------
case "confirmadoborrar":
if ($_SESSION["Usuario_Perfil"] != "Administrador") return;
$contador = -1;
$usuarios = gGetFile($ArchUsu);
foreach ($usuarios as $linea) {
$linea = trim($linea);
$campos = explode("|", $linea);
if (count($campos) > 1) {
if ($campos[$nIdUsuario] != $GLOBALS["IdUsuario"]) {
$resultado[++$contador] = $linea;
} else {
$GLOBALS["Nombre"] = $campos[$nNombre];
$GLOBALS["Apellidos"] = $campos[$nApellidos];
}
} else if ($linea != kVZ) { // de paso se limpia el archivo
$resultado[++$contador] = $linea;
}
} // foreach
print "
\n";
break; // editar -------------------
// ----------------------------------
case "grabar":
if ($_SESSION["Usuario_Perfil"] != "Administrador") return;
// Detección de errores
$Fallo = kVZ;
if ($_POST["Publicacion"] == kVZ) $Fallo = $Fallo."Falta el nombre de la publicación \n";
// por si la publicación es nueva
if ($_POST["IdPublicacion"] == kVZ) $_POST["IdPublicacion"] = "###";
$lPub = $_POST["IdPublicacion"]."|".
$_POST["Publicacion"];
$pub = gGetFile($ArchPub);
$contador = -1;
foreach ($pub as $linea){
++$contador;
$campos = explode("|", $linea);
if (count($campos) > 1) { //Busco la línea con el id de la publicación
$IdPublicacion = $campos[$nIdPublicacion];
if ($_POST["IdPublicacion"] == $campos[$nIdPublicacion]) {
$pub[$contador] = $lPub;
} else if ($_POST["Publicacion"] == $campos[$nPublicacion]) {
$Fallo = $Fallo."La publicación ya está dada de alta \n";
break;
}
}
}
if ($Fallo != kVZ) {
print "
\n";
GestionPublicaciones("Lista", kVZ, $aaaEdicion);
break; // default ------------------
endswitch;
return;
} /* Gestion publicaciones */
/* ====================================================== */
/* ====================================================== */
function GestionCategorias($Accion, $Categoria, $IdObra, $aaaEdicion) {
$Categoria = strToLower($Categoria);
global $fase_0, $fase_P, $fase_E, $fase_V, $fase_R, $fase_F;
$ArchCat = "gestion/".$aaaEdicion."/cat.".$Categoria.".dat.php"; fgCrearArchivo($ArchCat);
$nIdObra = 0;
$nTitulo = 1;
$nAutor = 2;
$nIdPubObra = 3;
$nURLOrigen = 4;
$nURLEvaluacion = 5;
switch(strToLower($Accion)):
// ----------------------------------
case "lista":
$lc = strToUpper(vbLeft($Categoria, 1));
if ($GLOBALS["ini_fase_".$lc] == $fase_0) {
fgAviso ("La edición del [r]".$aaaEdicion."[/r] está en fase de preparación");
return;
} else if ($GLOBALS["ini_fase_".$lc] == $fase_P) {
fgAviso ("La categoría de [r]".$Categoria."[/r] está en fase de recepción de trabajos");
if ($_SESSION["Usuario_Perfil"] != "Administrador") return;
} else if ($GLOBALS["ini_fase_".$lc] == $fase_E) {
fgAviso ("La categoría de [r]".$Categoria."[/r] está en fase de evaluación");
} else if ($GLOBALS["ini_fase_".$lc] == $fase_V) {
fgAviso ("La categoría de [r]".$Categoria."[/r] está en fase de votación");
}
print "
\n";
gAbreMarco("800", kVZ, kVZ);
if ($IdObra != "ver"):
print "
";
foreach ($mtrzCat as $linea) {
$campos = explode("|", $linea);
if (count($campos) > 1):
GestionPublicaciones("Extraer", $campos[$nIdPubObra], $GLOBALS["ini_edicion"]);
if ($IdObra == "ver"):
print ":: ";
else:
print "[Editar]".
"[Borrar] ";
endif;
// Preparo el enlace a la copia de evaluación.
$ev = (($_SESSION["Usuario_Autorizado"] == "si" && $campos[$nURLEvaluacion] != kVZ) ?
" [Ev] " :
($_SESSION["Usuario_Autorizado"] == "si" ? " [Ev] " : kVZ));
print "".$campos[$nTitulo]."".$ev.", de ".$campos[$nAutor].": ".
"".$GLOBALS["Publicacion"]." ".
" \n";
endif;
} // foreach
print "
";
gCierraMarco();
print "
\n";
break; // Lista -------------------
// ----------------------------------
case "editar":
if ($_SESSION["Usuario_Perfil"] != "Administrador") return;
GestionCategorias("Extraer", $Categoria, $IdObra, $aaaEdicion);
print "
\n";
gAbreMarco("650", kVZ, kVZ);
print "
\n";
print "\n";
print "
\n";
gCierraMarco();
print "
\n";
break; // editar -------------------
// ----------------------------------
case "grabar":
if ($_SESSION["Usuario_Perfil"] != "Administrador") return;
// Detección de errores
$Fallo = kVZ;
if ($_POST["Titulo"] == kVZ) $Fallo = $Fallo."Falta el título \n";
if ($_POST["Autor"] == kVZ) $Fallo = $Fallo."Falta el autor \n";
if ($_POST["IdPubObra"] == kVZ) $Fallo = $Fallo."Falta la publicación \n";
if ((int)$_POST["IdPubObra"] == 1) $Fallo = $Fallo."La obra no puede ser independiente \n"; // el id de publicación 1 queda reservado.
if ($_POST["URLOrigen"] == kVZ) $Fallo = $Fallo."Falta el enlace \n";
// por si la obra nueva
if ($_POST["IdObra"] == kVZ) $_POST["IdObra"] = "###";
$lCategoria = $_POST["IdObra"]."|".
trim($_POST["Titulo"])."|".
trim($_POST["Autor"])."|".
trim($_POST["IdPubObra"])."|".
trim($_POST["URLOrigen"])."|".
trim($_POST["URLEvaluacion"]);
$mtrzCat = gGetFile($ArchCat);
$contador = -1;
foreach ($mtrzCat as $linea){
++$contador;
$campos = explode("|", $linea);
if (count($campos) > 1) { //Busco la línea con el id de la obra
$IdObra = $campos[$nIdObra];
if ($_POST["IdObra"] == $campos[$nIdObra]) {
$campos[$nTitulo] = trim($_POST["Titulo"]);
$campos[$nAutor] = trim($_POST["Autor"]);
$campos[$nIdPubObra] = trim($_POST["IdPubObra"]);
$campos[$nURLOrigen] = trim($_POST["URLOrigen"]);
$campos[$nURLEvaluacion] = trim($_POST["URLEvaluacion"]);
$mtrzCat[$contador] = implode("|", $campos);
break;
}
}
}
if ($Fallo != kVZ) {
print "
\n";
break; // votar -------------------
// ----------------------------------
case "guardarvotos":
// Comprobaciones previas
// 1 Comprobar que no se repiten los votos ni los hay vacios
$Fallo = kVZ;
$cPuntos = kVZ;
$CuerpoCorreo = kVZ;
for ($p = 0; $p <= $_POST["Obras"]; ++$p):
if ($_POST["Puntos".$p] == kVZ):
$Fallo = "No se pueden dejar puntuaciones vacias";
break;
endif;
if (fgEnLista($cPuntos, $_POST["Puntos".$p]) === True && $_POST["Puntos".$p] != "X"):
$Fallo = "La puntuación ".$_POST["Puntos".$p]." está repetida";
break;
else:
$cPuntos = $cPuntos.", ".$_POST["Puntos".$p];
endif;
endfor; // detección de errores en las puntuaciones
// si hay fallos se avisa.
if ($Fallo != kVZ):
print "
Error: ".$Fallo."
\n";
print "
\n";
return;
endif;
// Leo las categoría
$mtrzCat = gGetFile($ArchCat);
for ($p = 0; $p <= $_POST["Obras"]; ++$p): // Bucle con las obras votadas
for ($o = 0; $o < count($mtrzCat); ++$o): // Bucle del archivo
if (strrpos($mtrzCat[$o], "|") !== false): // Si la línea tiene el separador de campo es un registro
$campos = explode("|", $mtrzCat[$o]); // Descompongo el registro del relato
if ((int)$campos[$nIdObra] == (int)$_POST["Obra".$p]): // Detecto si el registro se corresponde con la obra
if (strpos($mtrzCat[$o], "|J".$_SESSION["Usuario_Id"].":") !== false): // y si el jurado ya lo ha votado
for ($c = 0; $c < count($campos); ++$c):
if (strpos($campos[$c], "J".$_SESSION["Usuario_Id"].":") !== false): // ya no existe el separador "|" en la matriz campos
$puntos = explode(":", $campos[$c]); // Descompongo el item de la puntuación del jurado
$puntos[2] = $_POST["Puntos".$p]; // pongo los puntos en el subcampo de los puntos
$campos[$c] = implode(":", $puntos); // recompongo el item de la puntuación del jurado
$mtrzCat[$o] = implode("|", $campos); // recompongo el registro del relato
$CuerpoCorreo = $CuerpoCorreo.$campos[$nTitulo].": ".($_POST["Puntos".$p] == "X" ? "N/A" : $_POST["Puntos".$p]." puntos")."\n";
break;
endif;
endfor;
else: // Si el jurado no ha votado el relato previamente se añade el voto con la consolidación a "N"
$mtrzCat[$o] = $mtrzCat[$o]."|J".$_SESSION["Usuario_Id"].":N:".$_POST["Puntos".$p];
$CuerpoCorreo = $CuerpoCorreo.$campos[$nTitulo].": ".($_POST["Puntos".$p] == "X" ? "N/A" : $_POST["Puntos".$p]." puntos")."\n";
endif; // determinación del campo del jurado
endif; // detección de la obra
endif; // detección de registro
endfor; // obras
endfor; // puntuaciones
gPutFile($ArchCat, $mtrzCat);
$x = ConsolidarVotacionesJurado($_SESSION["Usuario_Id"]);
// Preparo y envio el correo con los votos emitidos
$CuerpoCorreo = "Votos emitidos en la categoría de ".$Categoria."\n\n".
$CuerpoCorreo.
($x == true ? "\n\nYa ha votado en todas las categorías" : "\n\nAVISO: Aún tiene pendientes categorías en las que votar")."\n\n";
EnviarCorreo($_SESSION["Usuario_Id"], "Votos emitidos en la categoría de ".$Categoria, $CuerpoCorreo);
print "
\n";
GestionCategorias("Lista", $Categoria, kVZ, $aaaEdicion);
break; // default ------------------
endswitch;
return;
} /* Gestion categorías */
/* ====================================================== */
/* ====================================================== */
function EnviarCorreo($IdDestinatario, $asunto, $cuerpo) {
//if (fgServidor() == "l") return;
$cuerpo = "\n\nEste es un mensaje automático enviado desde la web de gestión del\n".
"Premio Internacional de las Editoriales Electrónicas.\n".
"Es sólo a título informativo.\n\n".
$cuerpo.
"\n".
"https://www.ciencia-ficcion.com/premios/piee/premio.php\n\n";
$GLOBALS["IdUsuario"] = $IdDestinatario;
GestionUsuarios("Extraer", $GLOBALS["ini_edicion"]);
mail($GLOBALS["Correo"],
"[Gestión PIEE] - ".$asunto,
$cuerpo,
"From: Coordinacion SdCF-Piee \r\nReply-To: Premio Internacional ");
@mail("administrador@ciencia-ficcion.com",
"[SGPIEE] - ".$asunto,
vbReplace($cuerpo, "Es sólo a título informativo", "Es sólo a título informativo (".$GLOBALS["Correo"].")"),
"From: Coordinacion SdCF-Piee ");
}
/* ====================================================== */
// extraigo de $linea los puntos que le ha adjudicado el jurado,
// de no haber votado aún, devuelve vacío.
/* ====================================================== */
function PuntosObra($IdJurado, $linea) {
$nURLOrigen = 4;
// $mtrzP Jx:[S/N]:P
$nJurado = 0;
$nConsolidado = 1;
$nPuntos = 2;
$puntos = kVZ;
$IdJ = "J".$IdJurado;
if (strpos ($linea, "|".$IdJ) === false) return $puntos;
$campos = explode("|", $linea); // los campos del registro
for ($n = $nURLOrigen; $n < count($campos); ++$n):
if (strpos($campos[$n], $IdJ.":") !== false): // false, si coincide no devuelve true sino la posición.
$mtrzP = explode(":", $campos[$n]); // los subcampos de puntuaciones
$puntos = $mtrzP[$nPuntos];
endif;
endfor;
return $puntos;
}
/* ====================================================== */
// Comprueba si el jurado ha votado en todas las categorías, y de ser así,
// consolida el voto para el posterior recuento.
// Solo se admiten para recuento los votos de los jurados que hayan votado
// todas las categorías
/* ====================================================== */
function ConsolidarVotacionesJurado($IdJurado) {
$ruta = "gestion/".$GLOBALS["ini_edicion"]."/cat.";
$IdJ = "|J".$IdJurado.":";
$VotadoR = false;
$mtrzR = gGetFile($ruta."relatos.dat.php");
for ($o = 0; $o < count($mtrzR); ++$o):
if (strpos($mtrzR[$o], $IdJ) !== false):
if (strpos($mtrzR[$o], $IdJ."S:") !== false) return; // si ya está consolidado sale sin analizar más
$VotadoR = true;
break;
endif;
endfor;
$VotadoA = false;
$mtrzA = gGetFile($ruta."articulos.dat.php");
for ($o = 0; $o < count($mtrzA); ++$o):
if (strpos($mtrzA[$o], $IdJ) !== false):
$VotadoA = true;
break;
endif;
endfor;
$VotadoI = false;
$mtrzI = gGetFile($ruta."ilustraciones.dat.php");
for ($o = 0; $o < count($mtrzI); ++$o):
if (strpos($mtrzI[$o], $IdJ) !== false):
$VotadoI = true;
break;
endif;
endfor;
// Si se ha votado en todas las categorías se consolida el voto
if ($VotadoR == true && $VotadoA == true && $VotadoI == true):
for ($o = 0; $o < count($mtrzR); ++$o):
$mtrzR[$o] = str_replace($IdJ."N:", $IdJ."S:", $mtrzR[$o]);
endfor;
for ($o = 0; $o < count($mtrzA); ++$o):
$mtrzA[$o] = str_replace($IdJ."N:", $IdJ."S:", $mtrzA[$o]);
endfor;
for ($o = 0; $o < count($mtrzI); ++$o):
$mtrzI[$o] = str_replace($IdJ."N:", $IdJ."S:", $mtrzI[$o]);
endfor;
gPutFile($ruta."relatos.dat.php", $mtrzR);
gPutFile($ruta."articulos.dat.php", $mtrzA);
gPutFile($ruta."ilustraciones.dat.php", $mtrzI);
return true;
else:
return false;
endif;
}
/* ====================================================== */
// Calcula y presenta la clasificación de las diferentes categorías.
/* ====================================================== */
function Clasificacion($Categoria, $aaaEdicion, $accion) {
$area = vbLeft(strToLower($Categoria), 1);
$AnchoMatriz = GestionUsuarios("maxId", $aaaEdicion) + 2;
$OrdernarPor = 0;
$IdObra = $AnchoMatriz - 1;
$Puntuacion = $AnchoMatriz;
$r = 0;
for ($j = 0; $j < $AnchoMatriz; ++$j) $mtrzClas[$r][$j] = 0;// relleno el registro con ceros para marcarlo como "nulo"
$mtrzClas[$r][$OrdernarPor] = "10000";
$mtrzClas[$r][$IdObra] = "I";
$mtrzClas[$r][$Puntuacion] = "10000";
// Leo el archivo de la categoría y lo vuelco a la matriz de resultados
$mtrz = gGetFile("gestion/".$aaaEdicion."/cat.".$Categoria.".dat.php");
for ($o = 0; $o < count($mtrz); ++$o):
if (strpos($mtrz[$o], "|") !== false):
++$r; $suma = 0; $votos = 0;
for ($j = 0; $j < $AnchoMatriz; ++$j) $mtrzClas[$r][$j] = 0; // relleno el registro con ceros para marcarlos como "nulos"
$campos = explode("|", $mtrz[$o]); // los campos del registro
$mtrzClas[$r][$OrdernarPor] = 0;
$mtrzClas[$r][$IdObra] = $campos[0]; // IdObra
for ($n = 6; $n < count($campos); ++$n): // En el campo 6 del registro de obra empiezan las puntuaciones
$puntos = explode(":", $campos[$n]);
if ($puntos[1] == "S"): // Solo se tienen en cuenta las puntuaciones consolidadas
$IdJurado = str_replace("J", kVZ, $puntos[0]);
$mtrzClas[0][$IdJurado] = $IdJurado; // El Id del Jurado en la primera línea.
$mtrzClas[$r][$IdJurado] = $puntos[2]; // Los puntos en su lugar del registro
// Calculos
if ($puntos[2] != "X"):
$suma = $suma + $puntos[2];
++$votos;
endif;
endif;
endfor;
if ($suma != 0 && $votos != 0) {
$mtrzClas[$r][$Puntuacion] = sprintf ("%01.2f", ($suma / $votos));
$mtrzClas[$r][$OrdernarPor] = substr("00000".($mtrzClas[$r][$Puntuacion] * 100), -5);
}
endif;
endfor;
// Ahora, dependiendo de si se piden órdenar por algún jurado, se traslada su puntuación al campo de ordenación
if ($GLOBALS["IdJurado"] != kVZ) {
for ($r = 1; $r < count($mtrzClas); ++$r):
$mtrzClas[$r][$OrdernarPor] = substr("00000".($mtrzClas[$r][$GLOBALS["IdJurado"]] * 100), -5);
endfor;
}
rsort($mtrzClas);
print "
".$_SESSION["Usuario_Nombre"].kS1.$_SESSION["Usuario_Apellidos"].", eres ".$_SESSION["Usuario_Perfil"]." ";}?>
Creado: 1 de noviembre de 2008 Última actualización: 17 de noviembre de 2008