7 * LICENSE: This source file is licensed under the terms of the GNU General Public License.
9 * @package Magic3 Framework
10 * @author 平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
11 * @copyright Copyright 2006-2012 Magic3 Project.
12 * @license http://www.gnu.org/copyleft/gpl.html GPL License
13 * @version SVN: $Id: wikiParam.php 4952 2012-06-09 09:56:59Z fishbone $
14 * @link http://www.magic3.org
16 require_once($gEnvManager->getCurrentWidgetDbPath() . '/wiki_mainDb.php');
20 private static $db = null; // DBオブジェクト
21 private static $_init; // 初期化完了フラグ
22 private static $cmd; // コマンド
23 private static $plugin; // プラグイン
24 private static $page; // ページ値
25 private static $msg; // 編集データ値
26 //private static $original; // 編集元データ値
27 private static $refer;
28 private static $digest;
29 private static $arg; // URLパラメータ
30 private static $ignoreParams = array(M3_REQUEST_PARAM_PAGE_SUB_ID); // 受け付けないパラメータ
31 private static $subId = ''; // Magic3のページサブID指定
36 function __construct()
44 public static function _init()
46 global $gRequestManager;
50 if (self::$_init) return;
52 // ##### パラメータ初期化 #####
53 self::$cmd = $gRequestManager->trimValueOf('wcmd');
54 self::$plugin = $gRequestManager->trimValueOf('plugin');
55 self::$page = strip_bracket($gRequestManager->trimValueOf('page'));
56 self::$msg = str_replace("\r", '', $gRequestManager->valueOf('msg'));
57 //self::$original = str_replace("\r", '', $gRequestManager->valueOf('original'));
58 //self::$digest = $gRequestManager->trimValueOf('digest');
59 self::$refer = $gRequestManager->trimValueOf('refer');
60 self::$arg = $_SERVER['QUERY_STRING'];
61 /*if (PKWK_QUERY_STRING_MAX && strlen(self::$arg) > PKWK_QUERY_STRING_MAX){ // 文字列長のチェック
64 self::$arg = self::_input_filter(self::$arg);
68 $args = explode('&', self::$arg);// 「&」で分割
69 for ($i = 0; $i < count($args); $i++){
71 $pos = strpos($line, '=');
72 if ($pos){ // 「=」が存在するとき
73 list($key, $value) = explode('=', $line);
74 if (!in_array($key, self::$ignoreParams)) $newArg .= $line . '&';
75 //if ($key == M3_REQUEST_PARAM_PAGE_SUB_ID) self::$subId = $line; // ページサブIDを保存
77 $newArg .= $line . '&';
80 self::$arg = trim($newArg, '&');
82 // ページサブIDがデフォルトでないときは強制的に設定
84 if ($gEnvManager->getCurrentPageSubId() != $gEnvManager->getDefaultPageSubId()) self::$subId = M3_REQUEST_PARAM_PAGE_SUB_ID . '=' . $gEnvManager->getCurrentPageSubId();
92 * @param string,array $param クリーニング対象値
93 * @return string,array クリーニングした値
95 public static function _input_filter($param)
97 static $magic_quotes_gpc = NULL;
98 if ($magic_quotes_gpc === NULL)
99 $magic_quotes_gpc = get_magic_quotes_gpc();
101 if (is_array($param)) {
102 return array_map('input_filter', $param);
104 $result = str_replace("\0", '', $param);
105 if ($magic_quotes_gpc) $result = stripslashes($result);
112 * @param object $db DBオブジェクト
115 public static function init($db)
123 * @return bool true=正常、false=異常
125 public static function checkParam()
130 // コマンドとプラグイン両方のパラメータが設定されている場合はエラー
131 if (!empty(self::$cmd) && !empty(self::$plugin)) return false;
134 if (!empty(self::$cmd) && !preg_match('/^[a-zA-Z][a-zA-Z0-9_]*$/', self::$cmd)) return false;
135 if (!empty(self::$plugin) && !preg_match('/^[a-zA-Z][a-zA-Z0-9_]*$/', self::$plugin)) return false;
141 * @return string コマンド値
143 public static function getCmd()
150 * @param string $value 設定値
153 public static function setCmd($value)
160 * @return string プラグイン値
162 public static function getPlugin()
164 return self::$plugin;
169 * @return string ページ値
171 public static function getPage()
178 * @param string $value 設定値
181 public static function setPage($value)
183 self::$page = $value;
188 * @return string メッセージ値
190 public static function getMsg()
197 * @param string $value 設定値
200 public static function setMsg($value)
207 * @return string レファラー値
209 public static function getRefer()
216 * @param string $value 設定値
219 public static function setRefer($value)
221 self::$refer = $value;
226 * @return string 編集元データ値
228 /* public static function getOriginal()
230 return self::$original;
235 * @return string ダイジェスト値
237 public static function getDigest()
239 return self::$digest;
244 * @param string $value 設定値
247 public static function setDigest($value)
249 self::$digest = $value;
254 * @return string 全パラメータ
256 public static function getArg()
261 * ブラケットをはずした全パラメータ文字列を取得
263 * @return string 全パラメータ文字列
265 public static function getUnbraketArg()
267 $arg = rawurldecode(self::$arg);
268 $arg = strip_bracket($arg);
271 /*$arg = array($arg);
272 //mb_convert_variables(SOURCE_ENCODING, 'auto', $arg);
273 mb_convert_variables(SOURCE_ENCODING, 'UTF-8,SJIS-win,ASCII', $arg);
275 $arg = mb_convert_encoding($arg, SOURCE_ENCODING, 'UTF-8,SJIS-win,ASCII'); // 出力するコードに変換
279 * Magic3用サブページIDパラメータの取得
281 * @return string パラメータ
283 /*public static function getSubId()
290 * @param string $srcStr 変換対象文字列
291 * @param bool $encode URLエンコードを行うかどうか
292 * @return string 変換後文字列
294 public static function convQuery($srcStr = '?', $encode = true)
300 // cmdをMagic3のWikiコマンド「wcmd」に変換
301 $destStr = preg_replace_callback('/[a-z]*cmd=/', array(self, "_replace_query_callback"), $destStr);
303 // Wikiページ名のみの場合はページサブIDを付加しない
304 $pos = strpos($destStr, '=');
305 if ($pos){ // 「=」が存在するとき
307 if (!empty(self::$subId)){
308 if (strEndsWith($destStr, '?')){ // 最後が「?」のとき
309 $destStr .= self::$subId;
311 if ($encode){ // URLエンコードする場合
312 $destStr .= '&' . self::$subId;
314 $destStr .= '&' . self::$subId;
318 } else { // 最後が「?」または「?Wikiページ名」のとき
319 // 最後が「?」のときはページサブIDを追加
320 if (strEndsWith($destStr, '?')) $destStr .= self::$subId;
322 if ($destStr == '?') $destStr = '';
328 * @param array $matchData 検索マッチデータ
329 * @return string 変換後データ
331 static function _replace_query_callback($matchData)
333 $destStr = $matchData[0];
334 if ($destStr == 'cmd=') $destStr = M3_REQUEST_PARAM_OPERATION_WIKI_COMMAND . '=';
340 * @return string コマンドキー値
342 public static function getCmdKey()
344 return M3_REQUEST_PARAM_OPERATION_WIKI_COMMAND;
349 * @return string スクリプトURL
351 public static function getScript()
353 return get_script_uri();
358 * @param string $key 取得キー
361 public static function getVar($key)
363 global $gRequestManager;
364 return $gRequestManager->trimValueOf($key);
369 * @param string $key 取得キー
372 public static function getPostVar($key)
374 global $gRequestManager;
375 return $gRequestManager->trimValueOfPost($key);
380 * @param string $key 取得キー
383 public static function getSrcVar($key)
385 global $gRequestManager;
386 return $gRequestManager->valueOf($key);