Exemplo n.º 1
0
 /**
  * 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;
 }
Exemplo n.º 2
0
 /**
  * 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>";
     }
 }
Exemplo n.º 3
0
Arquivo: P2Util.php Projeto: poppen/p2
 function addSIDToUri($uri, $sepa = '&', $force = false)
 {
     return UriUtil::addSIDToUri($uri, $sepa, $force);
 }