setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); } catch(PDOException $e) { die($e->getMessage()); } ?> prepare($sql); if ($debug == 1) { print $sql; print_r($values); } foreach ($values as $f => $v) { $stmt->bindValue(':' . $f, $v); } $stmt->execute(); return $stmt; } function oneRowQuery($sql, $dbh, $values = array(), $resultado = PDO::FETCH_NUM, $debug=0) { $sth = doQuery($sql, $dbh, $values, $resultado, $debug); return $sth->fetch($resultado); } function hacerQuery($sql, $dbh, $values = array(), $resultado = PDO::FETCH_NUM, $debug=0) { $sth = doQuery($sql, $dbh, $values, $resultado, $debug); return $sth->fetchAll($resultado); } function ejecutar_insert($dbh, $tabla, $values = array(), $debug = 0) { foreach ($values as $field => $v) { $ins[] = ':' . $field; } $ins = implode(',', $ins); $fields = implode(',', array_keys($values)); $sql = "INSERT INTO $tabla ($fields) VALUES ($ins)"; $sth = doQuery($sql, $dbh, $values, $debug); return $sth; } function ejecutar_replace($dbh, $tabla, $values = array(), $debug = 0) { foreach ($values as $field => $v) { $ins[] = ':' . $field; } $ins = implode(',', $ins); $fields = implode(',', array_keys($values)); $sql = "REPLACE INTO $tabla ($fields) VALUES ($ins)"; $sth = doQuery($sql, $dbh, $values, $debug); return $sth; } function ejecutar_delete($dbh, $tabla, $values = array(), $debug = 0) { $where = ""; foreach ($values as $field => $v) { if ($where != "") { $where .= " AND "; } $where .= "$field = $v"; } $sql = "DELETE FROM $tabla WHERE $where"; $sth = doQuery($sql, $dbh, $values, $debug); return $sth; } function ejecutar_update($dbh, $tabla, $values = array(), $wheres = array(), $debug = 0) { $sql = "UPDATE $tabla SET "; $set_vals = ""; foreach ($values as $field => $v) { if ($set_vals != "") { $set_vals .= ", "; } $set_vals .= "$field = :" . $field; } $where_vals = ""; foreach ($wheres as $where => $cond) { if ($where_vals != "") { $where_vals .= " AND "; } else { $where_vals = " WHERE " ; } $where_vals .= $where . " = :" . $where; } $sql .= $set_vals . $where_vals; if ($debug) { print $sql; print_r($values); print_r($wheres); } $sth = $dbh->prepare($sql); foreach ($values as $f => $v) { $sth->bindValue(':' . $f, $v); } foreach ($wheres as $f => $v) { $sth->bindValue(':' . $f, $v); } $sth->execute(); return $sth; } ?> " . $valor[1] . ""; } return $lista; } // dado un array bidimensional me devuelve una lista html (SELECT) con todas las opciones cargadas y si quiero puedo tener una pre-seleccionada ($selected) function selectFromArray($nombre, $array, $selected = "") { $lista = ""; return $lista; } // generador de queries berreta. asumo que todas las tablas son en plural (alumnos) y tienen un id que se llama como la tabla en singular (idalumno) function genQuery($nombre) { return "SELECT id" . $nombre . ", nombre FROM " . $nombre . "s "; // ORDER BY 2"; } // devuelve una lista HTML (select) con todos los ayudantes. util :) function selectAyudantes($dbh, $selected = "") { $nombre = "ayudante"; $sql = genQuery($nombre) . " WHERE nivel = 1"; return selectFromArray("id" . $nombre, hacerQuery($sql, $dbh), $selected); } // si tengo una tabla alumnos y cada alumno tiene un idalumno esto me devuelve una lista HTML (select) con todos los alumnos y cuando selecciono uno // puedo obtener su id desde la property HTML value function selectFromQuery($dbh, $nombre, $selected = "") { $sql = genQuery($nombre); return selectFromArray("id" . $nombre, hacerQuery($sql, $dbh), $selected); } // "wrapper" para solicitar datos a Github mediante la API REST function gitHubApiRequest($access_token, $solicitud) { $url = 'https://api.github.com' . $solicitud .'?access_token=' . $access_token; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla 5.0"); $response = curl_exec($ch); $json= json_decode($response, true); curl_close($ch); return $json; } // sin comentarios function nota_texto($nro) { $letras = array("cero", "uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve", "diez"); return $letras[$nro]; } // cosa rara. dado un idgrupo me devuelve una tabla HTML con los datos de los integrantes, el nombre de grupo ($grupo) y el email de todos ($email) function crear_tabla_grupo($dbh, $idgrupo, &$grupo, &$email) { $sql = "SELECT a.legajo, a.nombre, a.apellido, a.curso, a.email, g.nombre FROM alumnos a, grupos g, asignaciones s WHERE a.idAlumno = s.idAlumno AND g.idGrupo=s.idGrupo and g.idGrupo = :idgrupo"; $alumnos = hacerQuery($sql, $dbh, array("idgrupo" => "$idgrupo")); $tabla = ""; $i = 0; $email = ""; foreach($alumnos as $a) { $tabla .= ""; $email .= $sep . $a[4] ; if (!$i) { $i=1; $grupo = $a[5]; $sep = ", "; } } $tabla .= "
LegajoNombreApellidoCursoE-Mail
" .$a[0] . "" . $a[1] . "" . $a[2]. "" . $a[3] . "" .$a[4] . "
"; return $tabla; } function nombre_foto($idalumno) { return md5('miabuelitaplancharesortes-' . $idalumno . ".jpg") . ".jpg" ; } function word_inscripcion ($tipo) { if ($tipo == 1) { return "Presencial - requiere inscripción"; } else { return "No presencial"; } } function in_date($inicio, $fin, $qfecha) { $fecha = date('Y-m-d', strtotime($qfecha)); $dateinicio= date('Y-m-d', strtotime($inicio)); $datefin = date('Y-m-d', strtotime($fin)); if (($fecha >= $dateinicio) && ($fecha <= $datefin)) { return 1 ; } else { return 0; } } function stringEndsWith($haystack, $needle) { return $needle === "" || substr($haystack, -strlen($needle)) === $needle; } function validEmail($email) { return !stringEndsWith($email, "users.noreply.github.com") && !stringEndsWith($email, "@est.frba.utn.edu.ar"); } function sessionValidEmails() { $emails = array(); if (is_array($_SESSION['email']) ) { $j = 0; for ($i = 0; $i < count($_SESSION['email']); $i++ ) { if ((validEmail($_SESSION['email'][$i]['email'])) && ($_SESSION['email'][$i]['verified']) ) { $emails[$j++] = $_SESSION['email'][$i]['email']; } } } else { if (validEmail($_SESSION['email'])) { array_push($emails, $_SESSION['email']); } } return $emails; } function hasEmailEndingWith($string) { if (is_array($_SESSION['email'])) { $i = 0; for ($i = 0; $i < count($_SESSION['email']); $i++ ) { if (stringEndsWith($_SESSION['email'][$i]['email'], $string)) { return true; } } return false; } else { return stringEndsWith($_SESSION['email'], $string); } } function resizepic($pics, $newwidth, $newheight, $file) { if(preg_match("/.jpg/i", "$pics")) { list($width, $height) = getimagesize($pics); if($width > $height && $newheight < $height){ $newheight = $height / ($width / $newwidth); } else if ($width < $height && $newwidth < $width) { $newwidth = $width / ($height / $newheight); } else { $newwidth = $width; $newheight = $height; } if ($source = imagecreatefromjpeg($pics)) { $thumb = imagecreatetruecolor($newwidth, $newheight); imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); if ($file != "") { return imagejpeg($thumb, $file); } else { return imagejpeg($thumb); } } else { return 0; } } } function grupo_para_cambio($invitationCode, $dbh) { $sql = "SELECT a.legajo, a.nombre, a.apellido, a.email, a.curso, g.nombre, a.idalumno, g.idgrupo FROM alumnos a LEFT JOIN asignaciones s ON a.idAlumno = s.idAlumno LEFT JOIN grupos g ON g.idGrupo = s.idGrupo WHERE g.inviteCode = :inviteCode ORDER BY 8, 6, 7 DESC"; $datos = hacerQuery($sql, $dbh, array("inviteCode" => $invitationCode)); if(!empty($datos)) { $respuesta = array('nombre' => $datos[0][5]); $miembros = array(); foreach($datos as $dato) { $miembros[] = array('nombre' => $dato[1]." ".$dato[2], 'legajo' => $dato[0], 'foto' => nombre_foto($dato[6])); } $respuesta["miembros"] = $miembros; return json_encode($respuesta); } else { return json_encode(array("error" => "No se encontro grupo con codigo de invitacion ".$invitationCode)); } } ?>