function reservasalas_getBooking($type, $campusid, $date, $multiply, $size, $finaldate, $days, $frequency) { global $DB; if ($multiply == 1) { $times = reservasalas_daysCalculator($date, $finaldate, $days, $frequency); $timesArray = array(); foreach ($times as $time) { $timesArray[] = "'" . $time . "'"; } $date = implode(",", $timesArray); if ($size != "0") { $sizePieces = explode("-", $size); if ($sizePieces[1] == "+") { $sizePieces[1] = 1000; } // $sqlCapacityFilter = "AND rs.capacidad BETWEEN $sizePieces[0] AND $sizePieces[1]"; } } else { $date = "'" . date("Y-m-d", $date) . "'"; } $sqlDisponibility = "SELECT salaid, salanombre, moduloid, modulonombre, moduloinicio, modulofin,capacidad , MAX(ocupada) as ocupada FROM (\n\tSELECT rs.id AS salaid, \n\trs.nombre AS salanombre, \n\trs.capacidad as capacidad, \n\trm.id AS moduloid, \n\trm.nombre_modulo as modulonombre, \n\trm.hora_inicio as moduloinicio, \n\trm.hora_fin as modulofin, \n\trr.activa as status, \n\tCASE WHEN rr.id IS NULL THEN 0 ELSE 1 END AS ocupada \n\tFROM {reservasalas_salas} AS rs \n\tINNER JOIN {reservasalas_edificios} AS re ON (re.id = rs.edificios_id AND rs.tipo = ? AND re.id = ?) \n\tINNER JOIN {reservasalas_modulos} AS rm ON (rm.edificio_id = re.id AND rm.nombre_modulo not like '%B') \n\tLEFT JOIN {reservasalas_reservas} AS rr ON (rr.salas_id = rs.id AND rr.modulo = rm.id AND rr.fecha_reserva IN ({$date}) AND rr.activa=1) \n\tORDER BY rs.id, rm.nombre_modulo ASC) AS disp \n\tGROUP BY salaid, moduloid"; $data = $DB->get_recordset_sql($sqlDisponibility, array($type, $campusid)); return $data; }
$values = array(); if (!has_capability("local/reservasalas:advancesearch", context_system::instance())) { list($weekBookings, $todayBookings) = booking_availability($initialDate); if ($todayBookings == 2 || count($room) > 3 || $CFG->reservasDia - $todayBookings - count($room) + 1 < 0 && $CFG->reservasSemana - $weekBookings - count($room) + 1 < 0) { $validation = false; } else { $validation = true; } } else { $validation = true; } $reservation = array(); for ($counter = 1; $counter < count($room); $counter++) { if ($multiply == 1 && has_capability("local/reservasalas:advancesearch", context_system::instance())) { //calculate all the dates from reserves rooms (Y-m-d) $fechas = reservasalas_daysCalculator($initialDate, $enddate, $days, $frequency); foreach ($fechas as $fecha) { if (reservasalas_validationBooking($room[$counter], $moduleid[$counter], $fecha)) { $time = time(); $data = array(); $data["fecha_reserva"] = $fecha; $data["modulo"] = $moduleid[$counter]; $data["confirmado"] = 0; $data["activa"] = 1; $data["alumno_id"] = $USER->id; $data["salas_id"] = $room[$counter]; $data["fecha_creacion"] = $time; $data["nombre_evento"] = $eventname; $data["asistentes"] = $assistants; array_push($reservation, $data); $values[] = array("sala" => $room[$counter], "nombresala" => $roomname[$counter], "modulo" => $moduleid[$counter], "nombremodulo" => $modulename[$counter], "inicio" => $start[$counter], "termino" => $finish[$counter], "fecha" => $fecha);