}
    $res = c_usuario::problemasIntentados($user);
    if (SUCCESS($res)) {
        $intentados = $res["problemas"];
    }
}
if (SUCCESS($result)) {
    $problemas = $result["problemas"];
    for ($i = 0; $i < sizeof($problemas); $i++) {
        $prob = $problemas[$i];
        if ($i % 2 == 0) {
            echo "<TR style='background:#e7e7e7;' align=center>";
        } else {
            echo "<TR align=center>";
        }
        if (c_sesion::isLoggedIn() || isset($_GET["userID"])) {
            echo "<TD >";
            if (in_array($prob['probID'], $resueltos)) {
                echo "<img title=\"Problema resuelto\" src=\"img/10.png\">";
            } elseif (in_array($prob['probID'], $intentados)) {
                echo "<img title=\"Problema intentado\" src=\"img/12.png\">";
            }
            echo "</td>";
        }
        echo "<TD align='center' >" . $prob['probID'] . "</TD>";
        echo "<TD align='left' ><a href='verProblema.php?id=" . $prob['probID'] . "'>" . $prob['titulo'] . "</a> </TD>";
        echo "<TD align='center' >" . $prob['vistas'] . " </TD>";
        echo "<TD align='center' >" . $prob['aceptados'] . " </TD>";
        echo "<TD align='center' >" . $prob['intentos'] . " </TD>";
        if ($prob['intentos'] != 0) {
            printf("<TD align='center' >%2.2f%%</TD>", $prob['aceptados'] / $prob['intentos'] * 100);
<?php

if (c_sesion::isLoggedIn()) {
    ?>
	<div class="post">
		<div class="navcenter" align=center>
			<table border=0 style="width:100%">
				<tr class="navcenter">
					<td colspan=1>
						<a href="runs.php?user=<?php 
    echo $_SESSION['userID'];
    ?>
">
							<img id="avatar" src="https://secure.gravatar.com/avatar/<?php 
    $res = c_sesion::usuarioActual();
    if (SUCCESS($res)) {
        $user = $res["user"];
        echo md5($user['mail']);
    }
    ?>
?s=140" alt="" width="20" height="20"  />
						<b><?php 
    echo $_SESSION['userID'];
    ?>
</b> !<br>
						</a>
					</td>
					<td>
						<a href="editprofile.php"><img src="img/71.png" > Editar tu perfil</a>
					</td>
					<td id="mailbox_menu">
Esempio n. 3
0
 /**
  * @param id_problema int el id del problema a resolver
  * @param id_concurso int el id del concurso si es que este run pertenece a un concurso
  * @param lang String el identificador del lenguaje ( c,cpp,java,py,php,pl)
  * @param plain_source String 
  *
  * */
 public static function nuevo($request)
 {
     if (!c_sesion::isLoggedIn()) {
         Logger::warn("Se intento enviar una ejecucion sin sesion");
         return array("result" => "error", "reason" => "Debes iniciar sesion para poder enviar problemas.");
     }
     if (!(isset($request['id_problema']) && isset($request['lang']))) {
         return array("result" => "error", "reason" => "Faltan parametros (id_problema y lang)");
     }
     if (empty($_FILES) && !isset($request["plain_source"])) {
         return array("result" => "error", "reason" => "No se envio el codigo fuente.");
     }
     $usuarioArray = c_sesion::usuarioActual();
     $usuario = $usuarioArray["userID"];
     $id_problema = stripslashes($request["id_problema"]);
     $lang = stripslashes($request["lang"]);
     if (isset($request["id_concurso"])) {
         $id_concurso = stripslashes($request["id_concurso"]);
     } else {
         $id_concurso = null;
     }
     // Revisar que pueda escribir el codigo fuente
     if (!is_dir(TEDDY_CODIGOS_PATH)) {
         return array("result" => "error", "reason" => "El directorio de codigos no existe.");
     }
     if (!is_writable(TEDDY_CODIGOS_PATH)) {
         return array("result" => "error", "reason" => "No se puede escribir en el directorio de codigos.");
     }
     global $db;
     $sql = "select probID from Problema where BINARY ( probID = ?) ";
     $inputarray = array($request["id_problema"]);
     $resultado = $db->Execute($sql, $inputarray);
     if ($resultado->RecordCount() == 0) {
         return array("result" => "error", "reason" => "El problema no existe.");
     }
     // si el concurso no es public,
     // solo un admin puede enviar problemas
     //
     $lang_desc = null;
     switch ($lang) {
         case "java":
             $lang_desc = "JAVA";
             break;
         case "c":
             $lang_desc = "C";
             break;
         case "cpp":
             $lang_desc = "C++";
             break;
         case "py":
             $lang_desc = "Python";
             break;
         case "cs":
             $lang_desc = "C#";
             break;
         case "pl":
             $lang_desc = "Perl";
             break;
         case "php":
             $lang_desc = "Php";
             break;
         default:
             return array("result" => "error", "reason" => "\"" . $lang . "\" no es un lenguaje reconocido por Teddy.");
     }
     if (isset($_SERVER["REMOTE_ADDR"])) {
         $ip = $_SERVER["REMOTE_ADDR"];
     } else {
         $ip = "0.0.0.0";
     }
     /**
      * @todo
      * - vamos a ver si estoy en un concurso, y si estoy en un concurso, que ese problema pertenesca a ese concurso 
      * - vamos a ver que no haya enviado hace menos de 5 min si esta en un concurso
      * - insertar un nuevo run y obtener el id insertado, como estado, hay que ponerle uploading
      **/
     if ($id_concurso === null) {
         $sql = "INSERT INTO Ejecucion (`userID`, `status`, `probID` , `remoteIP`, `LANG`, `fecha`  ) \n\t\t\t\t\t\t\t\t\tVALUES (?, 'WAITING', ?, ?, ?, ?);";
         $inputarray = array($usuario, $id_problema, $ip, $lang_desc, date("Y-m-d H:i:s", mktime(date("H"), date("i"))));
     } else {
         $sql = "INSERT INTO Ejecucion (`userID` ,`status`, `probID` , `remoteIP`, `LANG`, `Concurso`, `fecha`  ) \n\t\t\t\t\t\t\t\t\tVALUES (?, 'WAITING', ?, ?, ?, ?, ?);";
         $inputarray = array($usuario, $id_problema, $ip, $lang_desc, $id_concurso, date("Y-m-d H:i:s", mktime(date("H"), date("i"))));
     }
     $result = $db->Execute($sql, $inputarray);
     // Si hacemos esto $execID = $db->Insert_ID( ); hay un Overflow porque los ids son muy grandes
     $sql = "select execID from Ejecucion where ( userId = ? ) order by fecha DESC LIMIT 1";
     $inputarray = array($usuario);
     try {
         $resultado = $db->Execute($sql, $inputarray)->GetArray();
         $execID = $resultado[0]["execID"];
     } catch (exception $e) {
         Logger::error($e);
         return array("result" => "error", "reason" => "Error al hacer la consulta");
     }
     if (!empty($_FILES)) {
         if (!move_uploaded_file($_FILES['Filedata']['tmp_name'], TEDDY_CODIGOS_PATH . $execID . "." . $lang)) {
             return array("result" => "error", "reason" => "Error al subir el archivo");
         }
     } else {
         // Crear un archivo y escribir el contenido
         if (file_put_contents(TEDDY_CODIGOS_PATH . $execID . "." . $lang, $request['plain_source']) === false) {
             return array("result" => "error");
         }
     }
     Logger::info("Nueva ejecucion " . $execID);
     return array("result" => "ok", "execID" => $execID);
 }