/** * URIにGETクエリーを追加する(真面目にURLをパースしてから追加している) * * @access public * @param string $uri * @param string|array $add_get * @param boolean $add_sid * @param string|null $sepa * @return string */ function addQueryToUri($uri, $add_get, $add_sid = false, $sepa = '&') { $sepa_def = '&'; if (is_null($sepa)) { if (!($sepa = ini_get('arg_separator.output'))) { $sepa = $sepa_def; } } else { $before = ini_get('arg_separator.output'); ini_set('arg_separator.output', $sepa); } if (is_array($add_get)) { $add_get_ar = $add_get; $add_get_st = http_build_query($add_get); } else { $qe = explode($sepa, $add_get); // array('a=1', 'b=2') $qs = array(); foreach ($qe as $v) { $e = explode('=', $v, 2); if (strlen($e[0])) { $qs[$e[0]] = urldecode($e[1]); } } $add_get_ar = $qs; $add_get_st = $add_get; } // PHP Warning: parse_url(hoge.php?url=http://example.com/): Unable to parse URL if (strlen($uri) and $uri = preg_replace('/=(http|ftp|https):/', '=$1%3A', $uri) and $parsed = parse_url($uri)) { if (isset($parsed['query'])) { $qe = explode($sepa, $parsed['query']); // array('a=1', 'b=2') $qs = array(); foreach ($qe as $v) { $e = explode('=', $v, 2); if (strlen($e[0])) { $qs[$e[0]] = urldecode($e[1]); } } $add_get_st = http_build_query(array_merge($qs, $add_get_ar)); } if ($add_get_st) { $parsed['query'] = $add_get_st; } else { unset($parsed['query']); } $uri = UriUtil::glueUri($parsed); } else { $mark = strpos($uri, '?') === false ? '?' : $sepa; if ($add_get_st) { $uri .= $mark . $add_get_st; } } if (isset($before)) { ini_set('arg_separator.output', $before); } if (true === $add_sid) { $uri = UriUtil::addSIDToUri($uri, $sepa); } return $uri; }
/** * HTMLポップアップ変換 * * @access private * @param array|string $url * @param array|string $attr * @return string HTML */ function iframePopup($url, $str, $attr = '', $mode = NULL) { global $_conf; // リンク用URLとポップアップ用URL if (is_array($url)) { $link_url = $url[0]; $pop_url = $url[1]; } else { $link_url = $url; $pop_url = $url; } // リンク文字列とポップアップの印 if (is_array($str)) { $link_str = $str[0]; $pop_str = $str[1]; } else { $link_str = $str; $pop_str = NULL; } $pop_url_sid = UriUtil::addSIDToUri($pop_url); // リンクの属性 if (is_array($attr)) { $attrFor = $attr; $attr = ''; foreach ($attrFor as $key => $value) { $attr .= sprintf(' %s="%s"', hs($key), hs($value)); } } elseif ($attr !== '' && substr($attr, 0, 1) != ' ') { $attr = ' ' . $attr; } // リンクの属性にHTMLポップアップ用のイベントハンドラを加える $pop_attr = $attr; $pop_attr .= " onmouseover=\"showHtmlPopUp('" . hs($pop_url_sid) . "', event, " . hs($_conf['iframe_popup_delay']) . ")\""; $pop_attr .= " onmouseout=\"offHtmlPopUp()\""; // 最終調整 if (is_null($mode)) { $mode = $_conf['iframe_popup']; } if ($mode == 2 && !is_null($pop_str)) { $mode = 3; } elseif ($mode == 3 && is_null($pop_str)) { global $skin, $STYLE; $custom_pop_img = "skin/{$skin}/pop.png"; if (file_exists($custom_pop_img)) { $pop_img = htmlspecialchars($custom_pop_img, ENT_QUOTES); $x = $STYLE['iframe_popup_mark_width']; $y = $STYLE['iframe_popup_mark_height']; } else { $pop_img = 'img/pop.png'; $y = $x = 12; } $pop_str = "<img src=\"{$pop_img}\" width=\"{$x}\" height=\"{$y}\" hspace=\"2\" vspace=\"0\" border=\"0\" align=\"top\">"; } /* if (preg_match('{^http}', $link_url)) { $class_snap = ' class="snap_preview"'; } else { $class_snap = ''; } */ // (p)IDポップアップで同じURLの連続呼び出しなら(p)にしない if (!empty($_GET['idpopup']) and isset($_SERVER['QUERY_STRING'])) { if (basename(UriUtil::getMyUri()) . '?' . $_SERVER['QUERY_STRING'] == $link_url) { $mode = 0; } } $link_url_hs = hs($link_url); // リンク作成 switch ($mode) { // マーク無し case 1: return "<a href=\"{$link_url_hs}\"{$pop_attr}>{$link_str}</a>"; // (p)マーク // (p)マーク case 2: return "(<a href=\"{$link_url_hs}\"{$pop_attr}>p</a>)<a href=\"{$link_url_hs}\"{$attr}>{$link_str}</a>"; // [p]画像、サムネイルなど // [p]画像、サムネイルなど case 3: return "<a href=\"{$link_url_hs}\"{$pop_attr}>{$pop_str}</a><a href=\"{$link_url_hs}\"{$attr}>{$link_str}</a>"; // ポップアップしない // ポップアップしない default: return "<a href=\"{$link_url_hs}\"{$attr}>{$link_str}</a>"; } }
function addSIDToUri($uri, $sepa = '&', $force = false) { return UriUtil::addSIDToUri($uri, $sepa, $force); }