<?php

class Paginacion {

    private function __construct() {
        
    }

    private static function getEnlace($pagina, $paginas, $url) {
        if ($pagina < 0)
            return "";
        if ($pagina > $paginas)
            return "";
        $paginaUsuario = $pagina + 1;
        return '<a class="btn btn-default" href="' . $url . 'pagina=' . $pagina . '">' . $paginaUsuario . '</a>';
    }

    public static function getEnlacesPaginacion($pagina, $nr, $nrpp, $url = "") {
        $pos = strpos($url, "?");
        if ($pos === false) {
            $url .= "?";
        } else {
            $url .= "&";
        }
        $paginas = ceil($nr / $nrpp) - 1;
        if ($pagina < 0) {
            $pagina = 0;
        }
        $ant = $pagina - 1;
        if ($ant < 0) {
            $ant = 0;
        }
        $sig = $pagina + 1;
        if ($sig >= $paginas) {
            $sig = $paginas;
        }
        if ($pagina > $paginas) {
            $pagina = $paginas;
        }
        $resultado["inicio"] = "<a class='btn btn-default'  href='" . $url . "pagina=0'>&lt;&lt;</a>";
        $resultado["anterior"] = "<a class='btn btn-default' href='" . $url . "pagina=$ant'>&lt;</a>";
        $resultado["siguiente"] = "<a class='btn btn-default' href='" . $url . "pagina=$sig'>&gt;</a>";
        $resultado["ultimo"] = "<a class='btn btn-default' href='" . $url . "pagina=$paginas'>&gt;&gt;</a>";
        if ($pagina == 0) {
            $resultado["primero"] = $pagina + 1;
            $resultado["segundo"] = self::getEnlace(1, $paginas, $url);
            $resultado["actual"] = self::getEnlace(2, $paginas, $url);
            $resultado["cuarto"] = self::getEnlace(3, $paginas, $url);
            $resultado["quinto"] = self::getEnlace(4, $paginas, $url);
        } elseif ($pagina == 1) {
            $resultado["primero"] = self::getEnlace(0, $paginas, $url);
            $resultado["segundo"] = $pagina + 1;
            $resultado["actual"] = self::getEnlace(2, $paginas, $url);
            $resultado["cuarto"] = self::getEnlace(3, $paginas, $url);
            $resultado["quinto"] = self::getEnlace(4, $paginas, $url);
        } elseif ($pagina == $paginas) {
            $resultado["primero"] = self::getEnlace($pagina - 4, $paginas, $url);
            $resultado["segundo"] = self::getEnlace($pagina - 3, $paginas, $url);
            $resultado["actual"] = self::getEnlace($pagina - 2, $paginas, $url);
            $resultado["cuarto"] = self::getEnlace($pagina - 1, $paginas, $url);
            $resultado["quinto"] = $pagina + 1;
        } elseif ($pagina + 1 == $paginas) {
            $resultado["primero"] = self::getEnlace($pagina - 3, $paginas, $url);
            $resultado["segundo"] = self::getEnlace($pagina - 2, $paginas, $url);
            $resultado["actual"] = self::getEnlace($pagina - 1, $paginas, $url);
            $resultado["cuarto"] = $pagina + 1;
            $resultado["quinto"] = self::getEnlace($pagina + 1, $paginas, $url);
        } else {
            $resultado["primero"] = self::getEnlace($pagina - 2, $paginas, $url);
            $resultado["segundo"] = self::getEnlace($pagina - 1, $paginas, $url);
            $resultado["actual"] = $pagina + 1;
            $resultado["cuarto"] = self::getEnlace($pagina + 1, $paginas, $url);
            $resultado["quinto"] = self::getEnlace($pagina + 2, $paginas, $url);
        }
        return $resultado;
    }

}
