blob: 3e155710227c6b5a775c46887cba68ab2f57c163 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
<?php
namespace Bitweaver\Plugins;
/**
* Smarty {pageurl} function plugin
* @package Smarty
* @subpackage plugins
* @link https://www.bitweaver.org/wiki/function_pageurl function_pageurl
*/
/**
* Smarty {pagination} function plugin
*
* Type: function<br>
* Name: pageurl<br>
* Input:
* - <listHash>=<attribute=>value> (optional) - pass in any attributes and they will be added to the url string<br>
* Output: url of the form: $_SERVER[SCRIPT_NAME]?attribute1=value1&attribute2=value2
/* Build up URL variable string */
function smarty_function_pageurl( $params, &$gBitSmarty ) {
extract( $params );
if( !isset( $pgnUrl ) ) {
$pgnUrl = $gBitSmarty->getTemplateVars('returnURL');
if ( isset( $params['url'] ) ) {
$pgnUrl = $params['url'];
unset( $params['url'] );
}
if( empty( $pgnUrl ) ) {
$pgnUrl = $_SERVER['SCRIPT_NAME'];
}
}
$str = '';
if( !empty( $listInfo['parameters'] ) ){
$str .= pageurl_hash_to_string( $listInfo['parameters'] );
}
if( !empty( $listInfo['ihash'] ) ){
$str .= pageurl_hash_to_string( $listInfo['ihash'] );
// find can show up in two places
$foundFind = !empty( $listInfo['ihash']['find'] );
}
if( !empty( $pgnHidden ) ){
$str .= pageurl_hash_to_string( $pgnHidden );
}
if ( !empty( $listInfo['sort_mode'] ) ){
if ( is_array( $listInfo['sort_mode']) ){
foreach( $listInfo['sort_mode'] as $sort ){
$str .= "&sort_mode[]=".$sort;
}
}else{
$str .= "&sort_mode=".$listInfo['sort_mode'];
}
}
if( !$foundFind && isset($listInfo['find']) && $listInfo['find'] != '' ){
$str .= "&find=".$listInfo['find'];
}
$pageUrlVar = preg_replace( '/^\&/', '', $str );
$pageUrl = $pgnUrl . "?" . $pageUrlVar;
return $pageUrl;
}
function pageurl_hash_to_string( $pParamHash ){
$str = "";
foreach( $pParamHash as $param=>$value ){
if( is_array( $value ) ){
foreach ( $value as $v ){
if ( $value != '' ){
$str .= "&".$param."[]=".$v;
}
}
}elseif ( $value != '' ){
$str .= "&".$param."=".$value;
}
}
return $str;
}
|