* Name: libertypagination
* Input:
* - numPages Number of pages in total
* - page current page
* - pgnName (optional) parameter name used by script to find page you're on. defaults to page
* - ianchor (optional) set an anchor
* - ihash (optional) you can pass in all the above as an array called ihash or secondary * items common to all links
* The ihash option allow the inclusion of additional link values as provided for smartlink navigation
* Output: url of the form: $REQUEST_URI?attribute1=value1&attribute2=value2
*
* @package Smarty
* @subpackage plugins
* @link https://www.bitweaver.org/wiki/function_libertypagination function.libertypagination
*/
/**
* Smarty {libertypagination} function plugin
*/
function smarty_function_libertypagination($params, &$gSmartyTemplate) {
global $gBitSmarty;
if( isset( $params['ihash'] ) && is_array( $params['ihash'] ) ) {
$params = array_merge( $params['ihash'], $params );
$params['ihash'] = NULL;
}
if( isset( $params['url'] ) ) {
$urlParams = '';
parse_str( preg_replace( "/.*\?/", "", $params['url'] ), $urlParams );
$params = array_merge( $urlParams, $params );
}
$pgnName = $params['pgnName'] ?? ( isset( $params['curPage'] ) ? 'curPage' : 'page' );
$pgnVars = '';
$omitParams = [ 'numPages', 'url', $pgnName, 'pgnName', 'ianchor', 'ajaxId' ];
foreach( $params as $form_param => $form_val ) {
if ( !empty( $form_val ) && !in_array( $form_param, $omitParams ) ) {
$pgnVars .= ( !empty( $params['ajaxId'] ) ? "&" : "&" ).$form_param."=".$form_val;
$pgnHidden[$form_param] = $form_val;
}
}
$pgnVars .= !empty( $params['ianchor'] ) ? '#'.$params['ianchor'] : '';
if( !empty( $params['numPages'] ) ) {
for( $pageCount = 1; $pageCount < $params['numPages']+1; $pageCount++ ) {
$pages[] = $pageCount != $params[$pgnName]
? ( !empty( $params['ajaxId'] )
? ''. $pageCount .''
: ''. $pageCount .'')
: ''.$pageCount.'';
}
$gBitSmarty->assign( 'pgnPage', $params[$pgnName] );
$gBitSmarty->assign( 'pgnName', $pgnName );
$gBitSmarty->assign( 'pgnVars', $pgnVars );
$gBitSmarty->assign( 'pgnHidden', $pgnHidden );
$gBitSmarty->assign( 'pgnPages', $pages );
$gBitSmarty->assign( 'numPages', $params['numPages'] );
if( !empty( $params['ajaxId'] ) ) {
$gBitSmarty->assign( 'ajaxId', $params['ajaxId'] );
}
return $gBitSmarty->fetch( 'bitpackage:liberty/libertypagination.tpl' );
}
}