loadPlugin('smarty_block_self_link');
$selected = false ;
if (! empty($params['_selected'])) {
if ($params['_selected'] == 'y') {
$selected = true;
if (! empty($params['_selected_class'])) {
$params['_class'] = $params['_selected_class'];
} else {
$params['_class'] = 'selected';
}
if (! empty($params['_selected_text'])) {
$params['_text'] = $params['_selected_text'];
}
if (! empty($params['_selected_title'])) {
$params['_title'] = $params['_selected_title'];
}
if (! empty($params['_selected_icon'])) {
$params['_icon'] = $params['_selected_icon'];
}
if (! empty($params['_selected_icon_name'])) {
$params['_icon_name'] = $params['_selected_icon_name'];
}
}
}
$disabled = false ;
//check if it's a wiki page in format ((Page Name)) and check permission
if (isset($params['href']) && preg_match('|^\(\((.+?)\)\)$|', $params['href'], $matches)) {
$params['href'] = rawurlencode($matches[1]);
$perms = Perms::get(['type' => 'wiki page', 'object' => $matches[1]]);
if (! ($perms->view && $perms->wiki_view_ref)) {
$disabled = true;
$params['_title'] = tr('You don\'t have permission to view the linked page');
}
}
if (! empty($params['_disabled'])) {
if ($params['_disabled'] == 'y') {
$disabled = true;
if (! empty($params['_disabled_class'])) {
$params['_class'] = $params['_disabled_class'];
} else {
$params['_class'] = 'disabled';
}
if (! empty($params['_disabled_text'])) {
$params['_text'] = $params['_disabled_text'];
}
if (! empty($params['_disabled_title'])) {
$params['_title'] = $params['_disabled_title'];
}
if (! empty($params['_disabled_icon'])) {
$params['_icon'] = $params['_disabled_icon'];
}
if (! empty($params['_disabled_icon_name'])) {
$params['_icon_name'] = $params['_disabled_icon_name'];
}
}
unset($params['_disabled']);
}
//apply class only to the button
if (! empty($params['_class'])) {
$class = $params['_class'];
}
if (! empty($params['_id'])) {
$id = ' id="' . $params['_id'] . '"';
} else {
$id = '';
}
unset($params['_class']);
//target parameter
if (! empty($params['_target'])) {
$target = $params['_target'];
} else {
$target = '';
}
unset($params['_target']);
if (! $disabled) {
$flip_id = '';
if (! empty($params['_flip_id'])) {
$params['_onclick'] = "flip('"
. $params['_flip_id']
. "');flip('"
. $params['_flip_id']
. "_close','inline');return false;";
if (! empty($params['_escape']) && $params['_escape'] === 'y') {
$params['_onclick'] = addslashes($params['_onclick']);
}
if (! isset($params['_flip_hide_text']) || $params['_flip_hide_text'] != 'n') {
$cookie_key = 'show_' . $params['_flip_id'];
$params['_text'] .= ' (' . tra('Hide') . ')';
}
}
$auto_query_args_orig = $auto_query_args;
if (! empty($params['_auto_args'])) {
if ($params['_auto_args'] != '*') {
if (! isset($auto_query_args)) {
$auto_query_args = null;
}
$auto_query_args = explode(',', $params['_auto_args']);
}
} else {
$params['_noauto'] = 'y';
}
// Remove params that does not start with a '_', since we don't want them to modify the URL except when in auto_query_args
if (! isset($params['_keepall']) || $params['_keepall'] != 'y') {
foreach ($params as $k => $v) {
if (
$k[0] != '_'
&& $k != 'href'
&& $k != 'data'
&& (empty($auto_query_args) || ! in_array($k, $auto_query_args))
) {
unset($params[$k]);
}
}
}
$url_args = [];
if (! empty($params['href'])) {
// Handle anchors
if (strpos($params['href'], '#')) {
list($params['href'], $params['_anchor']) = explode('#', $params['href'], 2);
}
// Handle script and URL arguments
if (( $pos = strpos($params['href'], '?') ) !== false) {
$params['_script'] = substr($params['href'], 0, $pos);
parse_str($tikilib->htmldecode(substr($params['href'], $pos + 1)), $url_args);
$params = array_merge($params, $url_args);
} else {
$params['_script'] = $params['href'];
}
unset($params['href']);
}
if (! isset($params['_text'])) { // avoid NOTICE (E_NOTICE): Undefined index
$params['_text'] = '';
}
$html = smarty_block_self_link(
$params,
$params['_text'],
$smarty
);
$url = str_replace('+', ' ', str_replace('&', '&', urldecode($_SERVER['REQUEST_URI'])));
$dom = new DOMDocument();
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('a') as $link) {
if ($url == $link->getAttribute('href')) {
$selected = true;
if ($class === null) {
$class = 'active';
}
}
}
} else {
$params['_disabled'] = 'y';
$html = smarty_block_self_link(
$params,
$params['_text'],
$smarty
);
}
$type = isset($params['_type']) ? $params['_type'] : 'primary';
$auto_query_args = $auto_query_args_orig;
$html = preg_replace('/