public static function Nuevo($request) { try { self::ProblemaValido($request); } catch (InvalidArgumentException $e) { Logger::warn("imposible crear nuevo problema:" . $e->getMessage()); return array("result" => "error", "reason" => $e->getMessage()); } $usuarioActual = c_sesion::usuarioActual(); if (!SUCCESS($usuarioActual)) { Logger::error("no hay permiso para crear nuevo problema"); return array("result" => "error", "reason" => "No tienes permiso de hacer esto."); } $sql = "insert into Problema (titulo, problema, tiempoLimite, usuario_redactor) values (?,?,?,?)"; $inputarray = array($request["titulo"], $request["problema"], $request["tiempoLimite"], $usuarioActual["userID"]); global $db; $res = $db->Execute($sql, $inputarray); if ($res === false) { Logger::error("TEDDY:" . $db->ErrorNo() . " " . $db->ErrorMsg()); return array("result" => "error", "reason" => "Error interno."); } $id = $db->Insert_ID(); if (!file_exists(PATH_TO_CASOS)) { Logger::error("TEDDY: " . PATH_TO_CASOS . " no existe"); return array("result" => "error", "reason" => "Error interno."); } file_put_contents(PATH_TO_CASOS . "/" . $id . ".in", $request["entrada"]); file_put_contents(PATH_TO_CASOS . "/" . $id . ".out", $request["salida"]); Logger::info("Nuevo problema creado. ProbID: " . $id . " Titulo: " . $request["titulo"]); return array("result" => "ok", "probID" => $id); }
<?php if (!c_sesion::isAdmin()) { $result = c_sesion::usuarioActual(); if (SUCCESS($result)) { Logger::warn($result["userID"] . " quiso entrar a admin y no es admin"); } ?> <div class="post_blanco"> Necesitas ser administrador . </div> <?php include_once "post_footer.php"; exit; }
<?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">
public static function ResetPassword($request) { $user = c_sesion::usuarioActual(); if (SUCCESS($user) && !is_null($user["user"])) { $request["user"] = $user["user"]["userID"]; } $sql = "update Usuario set pswd = ? where userID = ?"; $inputarray = array(crypt($request["password"]), $request["user"]); global $db; $res = $db->Execute($sql, $inputarray); return array("result" => "ok"); }
</tr> </thead> <tbody> <?php $params = array("public" => "SI"); if (isset($_GET["orden"])) { $params["orden"] = $_GET["orden"]; } $result = c_problema::lista($params); $resueltos = null; $intentados = null; if (isset($_GET["userID"]) || c_sesion::isLoggedIn()) { if (isset($_GET["userID"])) { $user = $_GET; } else { $user = c_sesion::usuarioActual(); } $res = c_usuario::problemasResueltos($user); if (SUCCESS($res)) { $resueltos = $res["problemas"]; } $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) {
/** * @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); }
<?php require_once "../serverside/bootstrap.php"; define("PAGE_TITLE", "Editar perfil"); require_once "head.php"; require_once "require_login.php"; $respuesta = c_sesion::usuarioActual(); $datos = $respuesta["user"]; ?> <div class="post_blanco" > <form action="" method="post" onsubmit="return validate()" > <p> Aqui puedes cambiar los datos de tu perfil. </p> <label for="nick"> Usuario: </label> <input type="text" id="nick" name="nick" class="text" value="<?php echo $datos['userID']; ?> " DISABLED/> <label for="nombre" class="datos"> Nombre completo : </label> <input type="text" id="nombre" name="nombre" class="text datos" value="<?php echo $datos['nombre']; ?> "/>