/** * Constructor * @param {integer} $prueba Prueba ID * @param {integer} $jornada Jormada ID * @param {integer} $manga Manga ID * @throws Exception */ function __construct($prueba, $jornada, $manga) { parent::__construct('Portrait', "print_ordenDeSalida", $prueba, $jornada); if ($prueba <= 0 || $jornada <= 0 || $manga <= 0) { $this->errormsg = "printOrdenDeSalida: either prueba/jornada/ manga/orden data are invalid"; throw new Exception($this->errormsg); } // Datos de la manga $m = new Mangas("printOrdenDeSalida", $jornada); $this->manga = $m->selectByID($manga); // Datos del orden de salida $o = new OrdenSalida("printOrdenDeSalida", $manga); $os = $o->getData(); $this->orden = $os['rows']; $this->categoria = "L"; $this->cellHeader = array(_('Order'), _('Dorsal'), _('Name'), _('Breed'), _('Lic'), _('Handler'), $this->strClub, _('Heat'), _('Comments')); // obtenemos los datos de equipos de la jornada indexados por el ID del equipo $eq = new Equipos("print_ordenDeSalida", $prueba, $jornada); $this->teams = array(); foreach ($eq->getTeamsByJornada() as $team) { $this->teams[$team['ID']] = $team; } }
/** * Obtiene $after+$before+1 perros ordenados segun el orden de salida * @param $perro ID de perro tomado como referencia * if ID==0 means at begin of queue * if ID<0 means at end of queue * @param $before numero de perros a buscar que hayan salido antes del de referencia * @param $after numero de perros a introducir que tengan que salir despues del de referencia */ function videowall_windowCall($perro, $before, $after) { $this->myLogger->enter(); $nitems = $before + $after + 1; // obtenemos listado ordenado de perros de la manga $osobj = new OrdenSalida("VideoWall-ng", $this->mangaid); $os = $osobj->getData(false); // omit inserting team info rows // obtenemos categoria y grado de la tanda $catstr = Tandas::$tipo_tanda[$this->tandatype]['Categoria']; // categoria $gradostr = Tandas::$tipo_tanda[$this->tandatype]['Grado']; // grado ("-" means any grade) // componemos un array de $before+1+$after perros $result = array(); // reserve $before +1 empty slots before dog list for ($n = 0; $n < $before + 1; $n++) { array_unshift($result, $this->getEmptyData()); } $found = -1; // add dog list, setting up starting orden $orden = 0; // if dog found, mark index foreach ($os['rows'] as &$item) { if (strstr($catstr, $item['Categoria']) === false) { continue; } // category does not match, ignore if ($gradostr !== '-' && $gradostr !== $item['Grado']) { continue; } // grade differs, ignore entry // same category and (if required) grade $orden++; $item['Orden'] = $orden; array_unshift($result, $item); // if item matches requested dog, cut if ($item['Perro'] == $perro) { $found = count($result) - 1; } if ($found <= 0) { continue; } // not yet found if (count($result) - $found > $after) { break; } // enought dogs; iteration no longer needed } // fill array with $after empty rows for ($n = 0; $n < $after; $n++) { array_unshift($result, $this->getEmptyData()); // if dogID<0 means seek at end of list if ($perro >= 0) { continue; } if ($n != 0) { continue; } $found = count($result) - 1; } // if dog is not provided nor found, just assume default if ($found < 0) { $found = $before; } // and return 3 arrays: $res = array("before" => array_slice($result, -$found, $before), "current" => array_slice($result, -($found + 1), 1), "after" => array_slice($result, -($found + 1 + $after), $after)); echo json_encode($res); return 0; }
break; } $rowcount++; $orden++; } // Línea de cierre $this->Cell(array_sum($this->pos), 0, '', 'T'); $this->myLogger->leave(); } } // Consultamos la base de datos try { $prueba = http_request("Prueba", "i", 0); $jornada = http_request("Jornada", "i", 0); $manga = http_request("Manga", "i", 0); $mode = http_request("Mode", "i", 0); // Datos de la manga y su manga hermana $m = new Mangas("printEntradaDeDatos", $jornada); $mangas = $m->getHermanas($manga); // Datos del orden de salida $o = new OrdenSalida("printEntradaDeDatos", $manga); $orden = $o->getData(); // Creamos generador de documento $pdf = new EntradaDeDatos($prueba, $jornada, $mangas, $orden['rows'], $mode); $pdf->AliasNbPages(); $pdf->composeTable(); $pdf->Output("entradaDeDatos.pdf", "D"); // "D" means open download dialog } catch (Exception $e) { die("Error accessing database: " . $e->getMessage()); }
/** * Obtiene la lista ordenada de perros de esta jornada asociadas a la sesion, y tandas especificadas * @param {integer} $s session id. * 0: ANY sesion * 1: ANY BUT User defined sessions * -1: User defined sessions * n: Session number "n" * -n: Session number "n" PLUS User defined sessions * @param {number} $t Tanda ID. * $t=0; mira todos los perros de todas las tandas de la sesion indicada * $t>0; mira SOLO los perros de la tanda * $t<0; mira todos los perros A PARTIR DE la tanda (-$t) * @param {number} $pendientes Pendientes $p==0 -> muestra todos los perros; else muestra los $p primeros pendientes de salir */ private function getListaPerros($s = 0, $t = 0, $pendientes = 0) { $count = $pendientes; // contador de perros pendientes de listar $manga = 0; // variable para controlar manga "activa" $perrosmanga = null; // {array} lista de perros ordenada segun ordensalida de la manga $do_iterate = false; // indica si debe analizar los perros de la tanda $rows = array(); // donde iremos guardando los resultados $result = array(); // resultado a devolver en formato json // obtenemos la lista de tandas $lista_tandas = $this->getTandas($s); $club = new Clubes("Tandas::getListaPerros", $this->prueba->RSCE); // iteramos la lista de tandas foreach ($lista_tandas['rows'] as $tanda) { $this->myLogger->info("Analizando tanda \n" . json_encode($tanda)); // Comprobamos si debemos analizar la tanda if ($t > 0) { $do_iterate = $tanda['ID'] == abs($t) ? true : false; } // iterar solo la tanda if ($t < 0) { if ($tanda['ID'] == abs($t)) { $do_iterate = true; } } // iterar a partir de la tanda if ($t == 0) { $do_iterate = true; } // iterar TODAS las tandas if (!$do_iterate) { continue; } // this tanda is not the one we are looking for if ($tanda['Manga'] == 0) { continue; } // user defined tandas, has no manga associated // comprobamos ahora si hay cambio de manga if ($manga != $tanda['Manga']) { // cambio de manga $manga = $tanda['Manga']; // en cada manga cogemos los perros ordenados segun el orden de salida $os = new OrdenSalida("Tandas::getListaPerros()", $manga); $perrosmanga = $os->getData(false); // false: do not include extra team information rows } // OK ya tenemos la lista ordenada de los perros de cada manga // Ahora vamos a sacar la lista por cada tanda foreach ($perrosmanga['rows'] as &$perro) { // si el perro no pertenece a la tanda skip (comprobar categoria) if (strpos($tanda['Categoria'], $perro['Categoria']) === false) { continue; } $perro['Tanda'] = $tanda['Nombre']; $perro['ID'] = $tanda['ID']; // replace resultadoID por tandaID TODO: revise why if ($pendientes == 0) { // include all $perro['LogoClub'] = $club->getLogoName('NombreClub', $perro['NombreClub']); array_push($rows, $perro); continue; } if ($perro['Pendiente'] == 0) { continue; } // not pendiente: skip if ($count > 0) { // not yet at count: insert $count--; $perro['LogoClub'] = $club->getLogoName('NombreClub', $perro['NombreClub']); array_push($rows, $perro); continue; } // arriving here means that every requested dogs are filled $this->myLogger->debug("Tandas::getListaPerros() Already have {$pendientes} dogs"); // so return $result['rows'] = $rows; $result['total'] = count($rows); $this->myLogger->leave(); return $result; } // no more dogs in this tanda. go to next } $result['rows'] = $rows; $result['total'] = count($rows); $this->myLogger->leave(); return $result; }
$os = new OrdenSalida($file, $m); switch ($operation) { case "random": $am->access(PERMS_OPERATOR); $result = $os->random($mode); break; case "reverse": $am->access(PERMS_OPERATOR); $result = $os->reverse($mode); break; case "sameorder": $am->access(PERMS_OPERATOR); $result = $os->sameorder($mode); break; case "getData": $result = $os->getData($tv); break; case "getTeams": $result = $os->getTeams(); break; case "getDataByTeam": $result = $os->getDataByTeam($team); break; case "dnd": $am->access(PERMS_ASSISTANT); $result = $os->dragAndDrop($f, $t, $w); break; case "dndTeams": $am->access(PERMS_ASSISTANT); $result = $os->dragAndDropEquipos($f, $t, $w); break;