ここの情報は古いです。ご理解頂いた上でお取り扱いください。

source: OpenPNE/branches/stable-2.12.x/webapp/lib/smarty_plugins/modifier.t_url2a_ktai.php @ 7557

Last change on this file since 7557 was 7557, checked in by ebihara, 13 years ago

#2634:t_url2a_ktai で SNS内のURLかどうかを判定する際、ポート番号などを考慮していなかったのを修正

File size: 1.7 KB
Line 
1<?php
2/**
3 * @copyright 2005-2008 OpenPNE Project
4 * @license   http://www.php.net/license/3_01.txt PHP License 3.01
5 */
6
7/**
8 * Smarty t_url2a_ktai modifier plugin
9 *
10 * @param  string $string
11 * @return string
12 */
13function smarty_modifier_t_url2a_ktai($string)
14{
15    $url_pattern = sprintf('/(%s|%s)(?:index.php)?\?m=pc&amp;a=(\w+)((?:[a-zA-Z0-9_=]|&amp;)*)/', preg_quote(OPENPNE_URL, '/'), preg_quote(OPENPNE_SSL_URL, '/'));
16    return preg_replace_callback($url_pattern, 'smarty_modifier_t_url2a_ktai_callback', $string);
17}
18
19function smarty_modifier_t_url2a_ktai_callback($matches)
20{
21    $raw_url    = $matches[0];
22    $host       = $matches[1];
23    $raw_action = $matches[2];
24    $param      = $matches[3];
25
26    //自動リンクのアクションリストにない場合は変換なし
27    if (empty($GLOBALS['_OPENPNE_PC2KTAI_LINK_ACTION_LIST'][$raw_action])) {
28        return $raw_url;
29    }
30
31    $converted_action = $GLOBALS['_OPENPNE_PC2KTAI_LINK_ACTION_LIST'][$raw_action];
32    $param = str_replace('&amp;', '&', $param);
33
34    // 携帯用URLに置換、ksid 追加
35    $ktai_url = $host . '?m=ktai&a=' . $converted_action . $param . '&' . $GLOBALS['KTAI_URL_TAIL'];
36
37    // page_ より後ろを最大50文字に縮めて表示
38    $urlstr = $converted_action . $param;
39    $urlstr = preg_replace('/^page_/', '', $urlstr);
40
41    $length = 50;
42    $etc = '..';
43
44    if (strlen($urlstr) > $length) {
45        $length -= strlen($etc);
46        $urlstr = substr($urlstr, 0, $length) . $etc;
47    }
48
49    $ktai_url = htmlspecialchars($ktai_url, ENT_QUOTES, 'UTF-8');
50    $urlstr = htmlspecialchars($urlstr, ENT_QUOTES, 'UTF-8');
51
52    return sprintf('<a href="%s">%s</a>', $ktai_url, $urlstr);
53}
54
55?>
Note: See TracBrowser for help on using the repository browser.