@ -268,90 +268,89 @@ function hex2bin($s) {
}}
if ( ! function_exists ( 'paginate_data' )) {
/**
* Automatica pagination data .
* @ brief Paginator function . Pushes relevant links in a pager array structure .
*
* Links are generated depending on the current page and the total number of items .
* Inactive links ( like " first " and " prev " on page 1 ) are given the " disabled " class .
* Current page link is given the " active " CSS class
*
* @ param App $a App instance
* @ param int $count [ optional ] item count ( used with alt pager )
* @ param int $count [ optional ] item count ( used with minim al pager )
* @ return Array data for pagination template
*/
function paginate_data ( App $a , $count = null ) {
$stripped = preg_replace ( '/([&?]page=[0-9]*)/' , '' , $a -> query_string );
function paginate_data ( App $a , $count = null ) {
$stripped = preg_replace ( '/([&?]page=[0-9]*)/' , '' , $a -> query_string );
$stripped = str_replace ( 'q=' , '' , $stripped );
$stripped = trim ( $stripped , '/' );
$stripped = str_replace ( 'q=' , '' , $stripped );
$stripped = trim ( $stripped , '/' );
$pagenum = $a -> pager [ 'page' ];
if (( $a -> page_offset != " " ) AND ! preg_match ( '/[?&].offset=/' , $stripped ))
$stripped .= " &offset= " . urlencode ( $a -> page_offset );
if (( $a -> page_offset != '' ) AND ! preg_match ( '/[?&].offset=/' , $stripped )) {
$stripped .= '&offset=' . urlencode ( $a -> page_offset );
}
$url = $stripped ;
$data = array ();
function _l ( & $d , $name , $url , $text , $class = " " ) {
if ( ! strpos ( $url , " ? " )) {
if ( $pos = strpos ( $url , " & " ))
$url = substr ( $url , 0 , $pos ) . " ? " . substr ( $url , $pos + 1 );
function _l ( & $d , $name , $url , $text , $class = '' ) {
if ( strpos ( $url , '?' ) === false && ( $pos = strpos ( $url , '&' )) !== false ) {
$url = substr ( $url , 0 , $pos ) . '?' . substr ( $url , $pos + 1 );
}
$d [ $name ] = array ( 'url' => $url , 'text' => $text , 'class' => $class );
$d [ $name ] = array ( 'url' => $url , 'text' => $text , 'class' => $class );
}
if ( ! is_null ( $count )){
// alt pager
if ( $a -> pager [ 'page' ] > 1 )
_l ( $data , " prev " , $url . '&page=' . ( $a -> pager [ 'page' ] - 1 ), t ( 'newer' ));
if ( $count > 0 )
_l ( $data , " next " , $url . '&page=' . ( $a -> pager [ 'page' ] + 1 ), t ( 'older' ));
if ( ! is_null ( $count )) {
// minimal pager (newer / older)
$data [ 'class' ] = 'pager' ;
_l ( $data , 'prev' , $url . '&page=' . ( $a -> pager [ 'page' ] - 1 ), t ( 'newer' ), 'previous' . ( $a -> pager [ 'page' ] == 1 ? ' disabled' : '' ));
_l ( $data , 'next' , $url . '&page=' . ( $a -> pager [ 'page' ] + 1 ), t ( 'older' ), 'next' . ( $count <= 0 ? ' disabled' : '' ));
} else {
// full pager
if ( $a -> pager [ 'total' ] > $a -> pager [ 'itemspage' ]) {
if ( $a -> pager [ 'page' ] != 1 )
_l ( $data , " prev " , $url . '&page=' . ( $a -> pager [ 'page' ] - 1 ), t ( 'prev' ));
_l ( $data , " first " , $url . " &page=1 " , t ( 'first' ));
// full pager (first / prev / 1 / 2 / ... / 14 / 15 / next / last)
$data [ 'class' ] = 'pagination' ;
if ( $a -> pager [ 'total' ] > $a -> pager [ 'itemspage' ]) {
_l ( $data , 'first' , $url . '&page=1' , t ( 'first' ), $a -> pager [ 'page' ] == 1 ? 'disabled' : '' );
_l ( $data , 'prev' , $url . '&page=' . ( $a -> pager [ 'page' ] - 1 ), t ( 'prev' ), $a -> pager [ 'page' ] == 1 ? 'disabled' : '' );
$numpages = $a -> pager [ 'total' ] / $a -> pager [ 'itemspage' ];
$numstart = 1 ;
$numstop = $numpages ;
if ( $numpages > 14 ) {
if ( $numpages > 14 ) {
$numstart = (( $pagenum > 7 ) ? ( $pagenum - 7 ) : 1 );
$numstop = (( $pagenum > ( $numpages - 7 )) ? $numpages : ( $numstart + 14 ));
}
$pages = array ();
for ( $i = $numstart ; $i <= $numstop ; $i ++ ){
if ( $i == $a -> pager [ 'page' ])
_l ( $pages , $i , " # " , $i , " current " );
else
_l ( $pages , $i , $url . " &page= $i " , $i , " n " );
for ( $i = $numstart ; $i <= $numstop ; $i ++ ) {
if ( $i == $a -> pager [ 'page' ]) {
_l ( $pages , $i , '#' , $i , 'current active' );
} else {
_l ( $pages , $i , $url . '&page=' . $i , $i , 'n' );
}
}
if (( $a -> pager [ 'total' ] % $a -> pager [ 'itemspage' ]) != 0 ) {
if ( $i == $a -> pager [ 'page' ])
_l ( $pages , $i , " # " , $i , " current " );
else
_l ( $pages , $i , $url . " &page= $i " , $i , " n " );
if (( $a -> pager [ 'total' ] % $a -> pager [ 'itemspage' ]) != 0 ) {
if ( $i == $a -> pager [ 'page' ]) {
_l ( $pages , $i , '#' , $i , 'current active' );
} else {
_l ( $pages , $i , $url . '&page=' . $i , $i , 'n' );
}
}
$data [ 'pages' ] = $pages ;
$lastpage = (( $numpages > intval ( $numpages )) ? intval ( $numpages ) + 1 : $numpages );
_l ( $data , " last " , $url . " &page= $lastpage " , t ( 'last' ));
if (( $a -> pager [ 'total' ] - ( $a -> pager [ 'itemspage' ] * $a -> pager [ 'page' ])) > 0 )
_l ( $data , " next " , $url . " &page= " . ( $a -> pager [ 'page' ] + 1 ), t ( 'next' ));
_l ( $data , 'next' , $url . '&page=' . ( $a -> pager [ 'page' ] + 1 ), t ( 'next' ), $a -> pager [ 'page' ] == $lastpage ? 'disabled' : '' );
_l ( $data , 'last' , $url . '&page=' . $lastpage , t ( 'last' ), $a -> pager [ 'page' ] == $lastpage ? 'disabled' : '' );
}
}
return $data ;
}}
return $data ;
}
if ( ! function_exists ( 'paginate' )) {
/**