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

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

Last change on this file since 7581 was 7581, checked in by ebihara, 15 years ago

#2634:定義していない$hostを使っていたのを修正

File size: 2.1 KB
Line 
1<?php
2/**
3 * @copyright 2005-2007 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 = '/https?:\/\/(?:[a-zA-Z0-9_\-\/.,:;~?@=+$%#!()]|&amp;)+/';
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   
23    $openpne_url = '';
24    if (strpos($raw_url, OPENPNE_URL) === 0) {
25        $openpne_url = OPENPNE_URL;
26    } elseif (OPENPNE_USE_PARTIAL_SSL && strpos($raw_url, OPENPNE_SSL_URL) === 0) {
27        $openpne_url = OPENPNE_SSL_URL;
28    }
29
30    if (!$openpne_url) {
31        return $raw_url;
32    }
33
34    $url_pattern = sprintf('/^%s(?:index.php)?\?m=pc&amp;a=(\w+)((?:[a-zA-Z0-9_=]|&amp;)*)$/', preg_quote($openpne_url, '/'));
35
36    $openpne_url_matches = array();
37    if (!preg_match($url_pattern, $raw_url, $openpne_url_matches)) {
38        return $raw_url;
39    }
40    $action = $openpne_url_matches[1];
41    $param = $openpne_url_matches[2];
42
43    //自動リンクのアクションリストにない場合は変換なし
44    if (empty($GLOBALS['_OPENPNE_PC2KTAI_LINK_ACTION_LIST'][$action])) {
45        return $raw_url;
46    }
47
48    $converted_action = $GLOBALS['_OPENPNE_PC2KTAI_LINK_ACTION_LIST'][$action];
49    $param = str_replace('&amp;', '&', $param);
50
51    // 携帯用URLに置換、ksid 追加
52    $ktai_url = $openpne_url . '?m=ktai&a=' . $converted_action . $param . '&' . $GLOBALS['KTAI_URL_TAIL'];
53
54    // 表示上は page_ 以降を最大40文字で縮める
55    $urlstr = $converted_action . $param;
56
57    $length = 40;
58    $etc = '..';
59
60    if (strlen($urlstr) > $length) {
61        $length -= strlen($etc);
62        $urlstr = substr($urlstr, 0, $length) . $etc;
63    }
64
65    $ktai_url = htmlspecialchars($ktai_url, ENT_QUOTES, 'UTF-8');
66    $urlstr = htmlspecialchars($urlstr, ENT_QUOTES, 'UTF-8');
67
68    return sprintf('<a href="%s">%s</a>', $ktai_url, $urlstr);
69}
70
71?>
Note: See TracBrowser for help on using the repository browser.