Changeset 22796 for branches/version-2_12-dev/data/class/util/SC_Utils.php
- Timestamp:
- 2013/05/02 18:11:36 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_12-dev/data/class/util/SC_Utils.php
r22603 r22796 33 33 * @version $Id:SC_Utils.php 15532 2007-08-31 14:39:46Z nanasess $ 34 34 */ 35 class SC_Utils 36 { 35 class SC_Utils { 37 36 38 37 // インストール初期処理 39 function sfInitInstall() 40 { 38 function sfInitInstall() { 41 39 // インストール済みが定義されていない。 42 40 if (!defined('ECCUBE_INSTALL')) { … … 66 64 * @return string インストーラの URL 67 65 */ 68 function searchInstallerPath($path) 69 { 66 function searchInstallerPath($path) { 70 67 $installer = 'install/' . DIR_INDEX_PATH; 71 68 … … 104 101 * @return string $url を絶対パスに変換した URL 105 102 */ 106 function getRealURL($url) 107 { 103 function getRealURL($url) { 108 104 $parse = parse_url($url); 109 105 $tmp = explode('/', $parse['path']); … … 124 120 125 121 // 装飾付きエラーメッセージの表示 126 function sfErrorHeader($mess, $print = false) 127 { 122 function sfErrorHeader($mess, $print = false) { 128 123 global $GLOBAL_ERR; 129 124 $GLOBAL_ERR.= '<div id="errorHeader">'; … … 136 131 137 132 /* エラーページの表示 */ 138 function sfDispError($type) 139 { 133 function sfDispError($type) { 140 134 141 135 require_once CLASS_EX_REALDIR . 'page_extends/error/LC_Page_Error_DispError_Ex.php'; … … 150 144 151 145 /* サイトエラーページの表示 */ 152 function sfDispSiteError($type, $objSiteSess = '', $return_top = false, $err_msg = '') 153 { 146 function sfDispSiteError($type, $objSiteSess = '', $return_top = false, $err_msg = '') { 154 147 155 148 require_once CLASS_EX_REALDIR . 'page_extends/error/LC_Page_Error_Ex.php'; … … 172 165 * @deprecated 2.12.0 trigger_error($debugMsg, E_USER_ERROR) を使用すること 173 166 */ 174 function sfDispException($debugMsg = null) 175 { 167 function sfDispException($debugMsg = null) { 176 168 trigger_error('前方互換用メソッドが使用されました。', E_USER_WARNING); 177 169 trigger_error($debugMsg, E_USER_ERROR); … … 179 171 180 172 /* 認証の可否判定 */ 181 function sfIsSuccess($objSess, $disp_error = true) 182 { 173 function sfIsSuccess($objSess, $disp_error = true) { 183 174 $ret = $objSess->IsSuccess(); 184 175 if ($ret != SUCCESS) { … … 215 206 * @return string アスタリスクへ変換した文字列 216 207 */ 217 function sfPassLen($passlen) 218 { 208 function sfPassLen($passlen) { 219 209 $ret = ''; 220 210 for ($i=0;$i<$passlen;true) { … … 230 220 * @return bool 231 221 */ 232 function sfIsHTTPS() 233 { 222 function sfIsHTTPS() { 234 223 // HTTPS時には$_SERVER['HTTPS']には空でない値が入る 235 224 // $_SERVER['HTTPS'] != 'off' はIIS用 … … 247 236 * @return bool 248 237 */ 249 function sfIsValidTransition($objSess) 250 { 238 function sfIsValidTransition($objSess) { 251 239 // 前画面からPOSTされるuniqidが正しいものかどうかをチェック 252 240 $uniqid = $objSess->getUniqId(); … … 259 247 260 248 /* DB用日付文字列取得 */ 261 function sfGetTimestamp($year, $month, $day, $last = false) 262 { 249 function sfGetTimestamp($year, $month, $day, $last = false) { 263 250 if ($year != '' && $month != '' && $day != '') { 264 251 if ($last) { … … 283 270 */ 284 271 // 285 function sfIsInt($value) 286 { 272 function sfIsInt($value) { 287 273 if (strlen($value) >= 1 && strlen($value) <= INT_LEN && is_numeric($value)) { 288 274 return true; … … 297 283 * @return boolean 0で埋められている 298 284 */ 299 function sfIsZeroFilling($value) 300 { 285 function sfIsZeroFilling($value) { 301 286 if (strlen($value) > 1 && $value{0} === '0') 302 287 return true; … … 304 289 } 305 290 306 function sfGetCSVData($data, $prefix = '') 307 { 291 function sfGetCSVData($data, $prefix = '') { 308 292 if ($prefix == '') { 309 293 $dir_name = SC_Utils_Ex::sfUpDirName(); … … 322 306 323 307 /* 1階層上のディレクトリ名を取得する */ 324 function sfUpDirName() 325 { 308 function sfUpDirName() { 326 309 $path = $_SERVER['SCRIPT_NAME']; 327 310 $arrVal = explode('/', $path); … … 334 317 * @deprecated 335 318 */ 336 function sfMergeCBValue($keyname, $max) 337 { 319 function sfMergeCBValue($keyname, $max) { 338 320 $conv = ''; 339 321 $cnt = 1; … … 352 334 * @deprecated 353 335 */ 354 function sfMergeCheckBoxes($array, $max) 355 { 336 function sfMergeCheckBoxes($array, $max) { 356 337 $ret = ''; 357 338 $arrTmp = array(); … … 375 356 * @deprecated 376 357 */ 377 function sfMergeParamCheckBoxes($array) 378 { 358 function sfMergeParamCheckBoxes($array) { 379 359 $ret = ''; 380 360 if (is_array($array)) { … … 396 376 * @deprecated 397 377 */ 398 function sfSearchCheckBoxes($array) 399 { 378 function sfSearchCheckBoxes($array) { 400 379 $max = max($array); 401 380 $ret = ''; … … 413 392 * @deprecated 414 393 */ 415 function sfSplitCheckBoxes($val) 416 { 394 function sfSplitCheckBoxes($val) { 417 395 $arrRet = array(); 418 396 $len = strlen($val); … … 429 407 * @deprecated 430 408 */ 431 function sfMergeCBSearchValue($keyname, $max) 432 { 409 function sfMergeCBSearchValue($keyname, $max) { 433 410 $conv = ''; 434 411 $cnt = 1; … … 447 424 * @deprecated 448 425 */ 449 function sfSplitCBValue($val, $keyname = '') 450 { 426 function sfSplitCBValue($val, $keyname = '') { 451 427 $arr = array(); 452 428 $len = strlen($val); … … 464 440 465 441 // キーと値をセットした配列を取得 466 function sfArrKeyValue($arrList, $keyname, $valname, $len_max = '', $keysize = '') 467 { 442 function sfArrKeyValue($arrList, $keyname, $valname, $len_max = '', $keysize = '') { 468 443 $arrRet = array(); 469 444 $max = count($arrList); … … 490 465 491 466 // キーと値をセットした配列を取得(値が複数の場合) 492 function sfArrKeyValues($arrList, $keyname, $valname, $len_max = '', $keysize = '', $connect = '') 493 { 467 function sfArrKeyValues($arrList, $keyname, $valname, $len_max = '', $keysize = '', $connect = '') { 494 468 495 469 $max = count($arrList); … … 518 492 519 493 // 配列の値をカンマ区切りで返す。 520 function sfGetCommaList($array, $space=true, $arrPop = array()) 521 { 494 function sfGetCommaList($array, $space=true, $arrPop = array()) { 522 495 if (count($array) > 0) { 523 496 $line = ''; … … 544 517 545 518 /* 配列の要素をCSVフォーマットで出力する。*/ 546 function sfGetCSVList($array) 547 { 519 function sfGetCSVList($array) { 548 520 $line = ''; 549 521 if (count($array) > 0) { … … 568 540 /* 3.エラー (0 = OK, 1 = NG) 569 541 /*-----------------------------------------------------------------*/ 570 function sfCheckSetTerm($start_year, $start_month, $start_day, $end_year, $end_month, $end_day) 571 { 542 function sfCheckSetTerm($start_year, $start_month, $start_day, $end_year, $end_month, $end_day) { 572 543 573 544 // 期間指定 … … 592 563 593 564 // エラー箇所の背景色を変更するためのfunction SC_Viewで読み込む 594 function sfSetErrorStyle() 595 { 565 function sfSetErrorStyle() { 596 566 return 'style="background-color:'.ERR_COLOR.'"'; 597 567 } 598 568 599 569 // 一致した値のキー名を取得 600 function sfSearchKey($array, $word, $default) 601 { 570 function sfSearchKey($array, $word, $default) { 602 571 foreach ($array as $key => $val) { 603 572 if ($val == $word) { … … 608 577 } 609 578 610 function sfGetErrorColor($val) 611 { 579 function sfGetErrorColor($val) { 612 580 if ($val != '') { 613 581 return 'background-color:' . ERR_COLOR; … … 616 584 } 617 585 618 function sfGetEnabled($val) 619 { 586 function sfGetEnabled($val) { 620 587 if (! $val) { 621 588 return ' disabled="disabled"'; … … 624 591 } 625 592 626 function sfGetChecked($param, $value) 627 { 593 function sfGetChecked($param, $value) { 628 594 if ((string)$param === (string)$value) { 629 595 return 'checked="checked"'; … … 632 598 } 633 599 634 function sfTrim($str) 635 { 600 function sfTrim($str) { 636 601 $ret = mb_ereg_replace("^[ \n\r]*", '', $str); 637 602 $ret = mb_ereg_replace("[ \n\r]*$", '', $ret); … … 650 615 * @return integer 税金額 651 616 */ 652 function sfTax($price, $tax, $tax_rule) 653 { 617 function sfTax($price, $tax, $tax_rule) { 654 618 $real_tax = $tax / 100; 655 619 $ret = $price * $real_tax; … … 686 650 * @return integer 税金付与した金額 687 651 */ 688 function sfCalcIncTax($price, $tax, $tax_rule) 689 { 652 function sfCalcIncTax($price, $tax, $tax_rule) { 690 653 return $price + SC_Utils_Ex::sfTax($price, $tax, $tax_rule); 691 654 } 692 655 693 656 // 桁数を指定して四捨五入 694 function sfRound($value, $pow = 0) 695 { 657 function sfRound($value, $pow = 0) { 696 658 $adjust = pow(10 ,$pow-1); 697 659 … … 715 677 * @return int 716 678 */ 717 function sfPrePoint($price, $point_rate, $rule = POINT_RULE, $product_id = '') 718 { 679 function sfPrePoint($price, $point_rate, $rule = POINT_RULE, $product_id = '') { 719 680 $real_point = $point_rate / 100; 720 681 $ret = $price * $real_point; … … 741 702 742 703 /* 規格分類の件数取得 */ 743 function sfGetClassCatCount() 744 { 704 function sfGetClassCatCount() { 745 705 $sql = 'select count(dtb_class.class_id) as count, dtb_class.class_id '; 746 706 $sql.= 'from dtb_class inner join dtb_classcategory on dtb_class.class_id = dtb_classcategory.class_id '; … … 756 716 757 717 /** 758 * 商品IDとカテゴリIDから商品規格IDを取得する718 * $classcategory_id1 と $classcategory_id2 が使用されていない。 759 719 * @param int $product_id 760 * @param int $classcategory_id1 デフォルト値0761 * @param int $classcategory_id2 デフォルト値0720 * @param int $classcategory_id1 721 * @param int $classcategory_id2 762 722 * @return int 763 723 */ 764 function sfGetProductClassId($product_id, $classcategory_id1=0, $classcategory_id2=0) 765 { 766 $where = 'product_id = ? AND classcategory_id1 = ? AND classcategory_id2 = ?'; 767 if (!$classcategory_id1) { //NULLが入ってきた場合への対策 768 $classcategory_id1 = 0; 769 } 770 if (!$classcategory_id2) { 771 $classcategory_id2 = 0; 772 } 724 function sfGetProductClassId($product_id, $classcategory_id1, $classcategory_id2) { 725 $where = 'product_id = ?'; 773 726 $objQuery =& SC_Query_Ex::getSingletonInstance(); 774 $ret = $objQuery->get('product_class_id', 'dtb_products_class', $where, Array($product_id , $classcategory_id1, $classcategory_id2));727 $ret = $objQuery->get('product_class_id', 'dtb_products_class', $where, Array($product_id)); 775 728 return $ret; 776 729 } 777 730 778 731 /* 文末の「/」をなくす */ 779 function sfTrimURL($url) 780 { 732 function sfTrimURL($url) { 781 733 $ret = rtrim($url, '/'); 782 734 return $ret; … … 784 736 785 737 /* DBから取り出した日付の文字列を調整する。*/ 786 function sfDispDBDate($dbdate, $time = true) 787 { 738 function sfDispDBDate($dbdate, $time = true) { 788 739 list($y, $m, $d, $H, $M) = preg_split('/[- :]/', $dbdate); 789 740 … … 801 752 802 753 /* 配列をキー名ごとの配列に変更する */ 803 function sfSwapArray($array, $isColumnName = true) 804 { 754 function sfSwapArray($array, $isColumnName = true) { 805 755 $arrRet = array(); 806 756 foreach ($array as $key1 => $arr1) { … … 827 777 * @return array 連想配列の値のみの配列 828 778 */ 829 function getHash2Array($hash, $requires = array()) 830 { 779 function getHash2Array($hash, $requires = array()) { 831 780 $array = array(); 832 781 $i = 0; … … 846 795 847 796 /* かけ算をする(Smarty用) */ 848 function sfMultiply($num1, $num2) 849 { 797 function sfMultiply($num1, $num2) { 850 798 return $num1 * $num2; 851 799 } … … 861 809 * @return integer 加算ポイント 862 810 */ 863 function sfGetAddPoint($totalpoint, $use_point, $point_rate) 864 { 811 function sfGetAddPoint($totalpoint, $use_point, $point_rate) { 865 812 // 購入商品の合計ポイントから利用したポイントのポイント換算価値を引く方式 866 813 $add_point = $totalpoint - intval($use_point * ($point_rate / 100)); … … 873 820 874 821 /* 一意かつ予測されにくいID */ 875 function sfGetUniqRandomId($head = '') 876 { 822 function sfGetUniqRandomId($head = '') { 877 823 // 予測されないようにランダム文字列を付与する。 878 824 $random = GC_Utils_Ex::gfMakePassword(8); … … 883 829 884 830 // 二回以上繰り返されているスラッシュ[/]を一つに変換する。 885 function sfRmDupSlash($istr) 886 { 831 function sfRmDupSlash($istr) { 887 832 if (preg_match('|^http://|', $istr)) { 888 833 $str = substr($istr, 7); … … 916 861 * @return string 変換後のテキストファイルのパス 917 862 */ 918 function sfEncodeFile($filepath, $enc_type, $out_dir) 919 { 863 function sfEncodeFile($filepath, $enc_type, $out_dir) { 920 864 $ifp = fopen($filepath, 'r'); 921 865 … … 945 889 } 946 890 947 function sfCutString($str, $len, $byte = true, $commadisp = true) 948 { 891 function sfCutString($str, $len, $byte = true, $commadisp = true) { 949 892 if ($byte) { 950 893 if (strlen($str) > ($len + 2)) { … … 994 937 995 938 // 年、月、締め日から、先月の締め日+1、今月の締め日を求める。 996 function sfTermMonth($year, $month, $close_day) 997 { 939 function sfTermMonth($year, $month, $close_day) { 998 940 $end_year = $year; 999 941 $end_month = $month; … … 1037 979 1038 980 // 再帰的に多段配列を検索して一次元配列(Hidden引渡し用配列)に変換する。 1039 function sfMakeHiddenArray($arrSrc, $arrDst = array(), $parent_key = '') 1040 { 981 function sfMakeHiddenArray($arrSrc, $arrDst = array(), $parent_key = '') { 1041 982 if (is_array($arrSrc)) { 1042 983 foreach ($arrSrc as $key => $val) { … … 1057 998 1058 999 // DB取得日時をタイムに変換 1059 function sfDBDatetoTime($db_date) 1060 { 1000 function sfDBDatetoTime($db_date) { 1061 1001 $date = preg_replace("|\..*$|",'',$db_date); 1062 1002 $time = strtotime($date); … … 1069 1009 * XXX この関数を使っている箇所は、ほぼ設計誤りと思われる。変数にフェッチするか、出力時のエンコーディングで対応すべきと見受ける。 1070 1010 */ 1071 function sfMbConvertEncoding($str, $encode = CHAR_CODE) 1072 { 1011 function sfMbConvertEncoding($str, $encode = CHAR_CODE) { 1073 1012 return mb_convert_encoding($str, $encode); 1074 1013 } 1075 1014 1076 1015 // 2つの配列を用いて連想配列を作成する 1077 function sfArrCombine($arrKeys, $arrValues) 1078 { 1016 function sfArrCombine($arrKeys, $arrValues) { 1079 1017 1080 1018 if (count($arrKeys) <= 0 and count($arrValues) <= 0) return array(); … … 1093 1031 } 1094 1032 1033 /* 階層構造のテーブルから与えられたIDの兄弟を取得する */ 1034 function sfGetBrothersArray($arrData, $pid_name, $id_name, $arrPID) { 1035 $max = count($arrData); 1036 1037 $arrBrothers = array(); 1038 foreach ($arrPID as $id) { 1039 // 親IDを検索する 1040 for ($i = 0; $i < $max; $i++) { 1041 if ($arrData[$i][$id_name] == $id) { 1042 $parent = $arrData[$i][$pid_name]; 1043 break; 1044 } 1045 } 1046 // 兄弟IDを検索する 1047 for ($i = 0; $i < $max; $i++) { 1048 if ($arrData[$i][$pid_name] == $parent) { 1049 $arrBrothers[] = $arrData[$i][$id_name]; 1050 } 1051 } 1052 } 1053 return $arrBrothers; 1054 } 1055 1095 1056 /* 階層構造のテーブルから与えられたIDの直属の子を取得する */ 1096 function sfGetUnderChildrenArray($arrData, $pid_name, $id_name, $parent) 1097 { 1057 function sfGetUnderChildrenArray($arrData, $pid_name, $id_name, $parent) { 1098 1058 $max = count($arrData); 1099 1059 … … 1112 1072 * @deprecated SC_Query::quote() を使用すること 1113 1073 */ 1114 function sfQuoteSmart($in) 1115 { 1074 function sfQuoteSmart($in) { 1116 1075 1117 1076 if (is_int($in) || is_double($in)) { … … 1127 1086 1128 1087 // ディレクトリを再帰的に生成する 1129 function sfMakeDir($path) 1130 { 1088 function sfMakeDir($path) { 1131 1089 static $count = 0; 1132 1090 $count++; // 無限ループ回避 … … 1155 1113 1156 1114 // ディレクトリ以下のファイルを再帰的にコピー 1157 function sfCopyDir($src, $des, $mess = '', $override = false) 1158 { 1115 function sfCopyDir($src, $des, $mess = '', $override = false) { 1159 1116 if (!is_dir($src)) { 1160 1117 return false; … … 1213 1170 * @return void 1214 1171 */ 1215 function sfFlush($output = false, $sleep = 0) 1216 { 1172 function sfFlush($output = false, $sleep = 0) { 1217 1173 // 出力をバッファリングしない(==日本語自動変換もしない) 1218 1174 while (@ob_end_flush()); … … 1236 1192 1237 1193 // @versionの記載があるファイルからバージョンを取得する。 1238 function sfGetFileVersion($path) 1239 { 1194 function sfGetFileVersion($path) { 1240 1195 if (file_exists($path)) { 1241 1196 $src_fp = fopen($path, 'rb'); … … 1262 1217 * @see mb_convert_kana 1263 1218 */ 1264 function mbConvertKanaWithArray($array, $arrConvList) 1265 { 1219 function mbConvertKanaWithArray($array, $arrConvList) { 1266 1220 foreach ($arrConvList as $key => $val) { 1267 1221 if (isset($array[$key])) { … … 1279 1233 * @return array 添字を定義した配列 1280 1234 */ 1281 function arrayDefineIndexes($array, $defineIndexes) 1282 { 1235 function arrayDefineIndexes($array, $defineIndexes) { 1283 1236 foreach ($defineIndexes as $key) { 1284 1237 if (!isset($array[$key])) $array[$key] = ''; … … 1296 1249 * @return array 1297 1250 */ 1298 function sfArrayIntersectKeys($arrSrc, $arrKey) 1299 { 1251 function sfArrayIntersectKeys($arrSrc, $arrKey) { 1300 1252 $arrRet = array(); 1301 1253 foreach ($arrKey as $key) { … … 1310 1262 * @deprecated 2.12.0 GC_Utils_Ex::printXMLDeclaration を使用すること 1311 1263 */ 1312 function printXMLDeclaration() 1313 { 1264 function printXMLDeclaration() { 1314 1265 trigger_error('前方互換用メソッドが使用されました。', E_USER_WARNING); 1315 1266 GC_Utils_Ex::printXMLDeclaration(); … … 1321 1272 * @return string 1322 1273 */ 1323 function getTableTag($array) 1324 { 1274 function getTableTag($array) { 1325 1275 $html = '<table>'; 1326 1276 $html.= '<tr>'; … … 1348 1298 * @return string 1349 1299 */ 1350 function sfNoImageMainList($filename = '') 1351 { 1300 function sfNoImageMainList($filename = '') { 1352 1301 if (strlen($filename) == 0 || substr($filename, -1, 1) == '/') { 1353 1302 $filename .= 'noimage_main_list.jpg'; … … 1362 1311 * @return string 1363 1312 */ 1364 function sfNoImageMain($filename = '') 1365 { 1313 function sfNoImageMain($filename = '') { 1366 1314 if (strlen($filename) == 0 || substr($filename, -1, 1) == '/') { 1367 1315 $filename .= 'noimage_main.png'; … … 1371 1319 1372 1320 /* デバッグ用 ------------------------------------------------------------------------------------------------*/ 1373 function sfPrintR($obj) 1374 { 1321 function sfPrintR($obj) { 1375 1322 echo '<div style="font-size: 12px;color: #00FF00;">' . "\n"; 1376 1323 echo '<strong>**デバッグ中**</strong><br />' . "\n"; … … 1387 1334 * @return string ランダムな文字列 1388 1335 */ 1389 function sfGetRandomString($length = 1) 1390 { 1336 function sfGetRandomString($length = 1) { 1391 1337 return Text_Password::create($length); 1392 1338 } … … 1397 1343 * @deprecated 2.12.0 GC_Utils_Ex::getUrl を使用すること 1398 1344 */ 1399 function sfGetUrl() 1400 { 1345 function sfGetUrl() { 1401 1346 trigger_error('前方互換用メソッドが使用されました。', E_USER_WARNING); 1402 1347 return GC_Utils_Ex::getUrl(); … … 1408 1353 * @deprecated 2.12.0 GC_Utils_Ex::toStringBacktrace を使用すること 1409 1354 */ 1410 function sfBacktraceToString($arrBacktrace) 1411 { 1355 function sfBacktraceToString($arrBacktrace) { 1412 1356 trigger_error('前方互換用メソッドが使用されました。', E_USER_WARNING); 1413 1357 return GC_Utils_Ex::toStringBacktrace($arrBacktrace); … … 1419 1363 * @deprecated 2.12.0 GC_Utils_Ex::isAdminFunction を使用すること 1420 1364 */ 1421 function sfIsAdminFunction() 1422 { 1365 function sfIsAdminFunction() { 1423 1366 trigger_error('前方互換用メソッドが使用されました。', E_USER_WARNING); 1424 1367 return GC_Utils_Ex::isAdminFunction(); … … 1430 1373 * @deprecated 2.12.0 GC_Utils_Ex::isFrontFunction を使用すること 1431 1374 */ 1432 function sfIsFrontFunction() 1433 { 1375 function sfIsFrontFunction() { 1434 1376 trigger_error('前方互換用メソッドが使用されました。', E_USER_WARNING); 1435 1377 return GC_Utils_Ex::isFrontFunction(); … … 1441 1383 * @deprecated 2.12.0 GC_Utils_Ex::isInstallFunction を使用すること 1442 1384 */ 1443 function sfIsInstallFunction() 1444 { 1385 function sfIsInstallFunction() { 1445 1386 trigger_error('前方互換用メソッドが使用されました。', E_USER_WARNING); 1446 1387 return GC_Utils_Ex::isInstallFunction(); … … 1448 1389 1449 1390 // 郵便番号から住所の取得 1450 function sfGetAddress($zipcode) 1451 { 1391 function sfGetAddress($zipcode) { 1452 1392 1453 1393 $objQuery =& SC_Query_Ex::getSingletonInstance(); … … 1495 1435 * @deprecated 2.12.0 microtime(true) を使用する。 1496 1436 */ 1497 function sfMicrotimeFloat() 1498 { 1437 function sfMicrotimeFloat() { 1499 1438 trigger_error('前方互換用メソッドが使用されました。', E_USER_WARNING); 1500 1439 return microtime(true); … … 1522 1461 * @return boolean $val が空白と判断された場合 true 1523 1462 */ 1524 function isBlank($val, $greedy = true) 1525 { 1463 function isBlank($val, $greedy = true) { 1526 1464 if (is_array($val)) { 1527 1465 if ($greedy) { … … 1565 1503 * @return boolean 1566 1504 */ 1567 function sfIsInternalDomain($url) 1568 { 1505 function sfIsInternalDomain($url) { 1569 1506 $netURL = new Net_URL(HTTP_URL); 1570 1507 $host = $netURL->host; … … 1582 1519 * @return string ハッシュ暗号化された文字列 1583 1520 */ 1584 function sfGetHashString($str, $salt) 1585 { 1521 function sfGetHashString($str, $salt) { 1586 1522 $res = ''; 1587 1523 if ($salt == '') { … … 1604 1540 * @return boolean 一致判定 1605 1541 */ 1606 function sfIsMatchHashPassword($pass, $hashpass, $salt) 1607 { 1542 function sfIsMatchHashPassword($pass, $hashpass, $salt) { 1608 1543 $res = false; 1609 1544 if ($hashpass != '') { … … 1636 1571 * @return integer 1ページあたりの最大表示件数 1637 1572 */ 1638 function sfGetSearchPageMax($search_page_max) 1639 { 1573 function sfGetSearchPageMax($search_page_max) { 1640 1574 if (SC_Utils_Ex::sfIsInt($search_page_max) && $search_page_max > 0) { 1641 1575 $page_max = intval($search_page_max); … … 1658 1592 * @see Services_JSON::encode() 1659 1593 */ 1660 function jsonEncode($value) 1661 { 1594 function jsonEncode($value) { 1662 1595 if (function_exists('json_encode')) { 1663 1596 return json_encode($value); … … 1681 1614 * @see Services_JSON::decode() 1682 1615 */ 1683 function jsonDecode($json) 1684 { 1616 function jsonDecode($json) { 1685 1617 if (function_exists('json_decode')) { 1686 1618 return json_decode($json); … … 1701 1633 * @return boolean 絶対パスの場合 true 1702 1634 */ 1703 function isAbsoluteRealPath($realpath) 1704 { 1635 function isAbsoluteRealPath($realpath) { 1705 1636 if (strpos(PHP_OS, 'WIN') === false) { 1706 1637 return substr($realpath, 0, 1) == '/'; … … 1720 1651 * @see http://jp.php.net/mkdir 1721 1652 */ 1722 function recursiveMkdir($pathname, $mode = 0777) 1723 { 1653 function recursiveMkdir($pathname, $mode = 0777) { 1724 1654 /* 1725 1655 * SC_Utils_Ex への再帰は無限ループやメモリリークの懸念 … … 1730 1660 } 1731 1661 1732 function isAppInnerUrl($url) 1733 { 1662 function isAppInnerUrl($url) { 1734 1663 $pattern = '/^(' . preg_quote(HTTP_URL, '/') . '|' . preg_quote(HTTPS_URL, '/') . ')/'; 1735 1664 return preg_match($pattern, $url) >= 1; … … 1744 1673 * @return boolean 成功=true, 失敗=false 1745 1674 */ 1746 function extendTimeOut($seconds = null) 1747 { 1675 function extendTimeOut($seconds = null) { 1748 1676 $safe_mode = (boolean)ini_get('safe_mode'); 1749 1677 if ($safe_mode) return false; … … 1767 1695 * @return void 1768 1696 */ 1769 function clearCompliedTemplate() 1770 { 1697 function clearCompliedTemplate() { 1771 1698 // コンパイルファイルの削除処理 1772 1699 SC_Helper_FileManager_Ex::deleteFile(COMPILE_REALDIR, false); … … 1782 1709 * @return void 1783 1710 */ 1784 function copyDirectory($source_path, $dest_path) 1785 { 1711 function copyDirectory($source_path, $dest_path) { 1786 1712 1787 1713 $handle=opendir($source_path); … … 1809 1735 * @return string 1810 1736 */ 1811 function repeatStrWithSeparator($input, $multiplier, $separator = ',') 1812 { 1737 function repeatStrWithSeparator($input, $multiplier, $separator = ',') { 1813 1738 return implode($separator, array_fill(0, $multiplier, $input)); 1814 1739 } … … 1821 1746 * @return string RFC3986エンコード文字列 1822 1747 */ 1823 function encodeRFC3986($str) 1824 { 1748 function encodeRFC3986($str) { 1825 1749 return str_replace('%7E', '~', rawurlencode($str)); 1826 1750 } … … 1833 1757 * @return string 変更後の文字列 1834 1758 */ 1835 static function trim($str, $charlist = null) 1836 { 1759 static function trim($str, $charlist = null) { 1837 1760 $re = SC_Utils_Ex::getTrimPregPattern($charlist); 1838 1761 return preg_replace('/(^' . $re . ')|(' . $re . '$)/us', '', $str); … … 1846 1769 * @return string 変更後の文字列 1847 1770 */ 1848 static function ltrim($str, $charlist = null) 1849 { 1771 static function ltrim($str, $charlist = null) { 1850 1772 $re = SC_Utils_Ex::getTrimPregPattern($charlist); 1851 1773 return preg_replace('/^' . $re . '/us', '', $str); … … 1859 1781 * @return string 変更後の文字列 1860 1782 */ 1861 static function rtrim($str, $charlist = null) 1862 { 1783 static function rtrim($str, $charlist = null) { 1863 1784 $re = SC_Utils_Ex::getTrimPregPattern($charlist); 1864 1785 return preg_replace('/' . $re . '$/us', '', $str); … … 1871 1792 * @return string パターン 1872 1793 */ 1873 static function getTrimPregPattern($charlist = null) 1874 { 1794 static function getTrimPregPattern($charlist = null) { 1875 1795 if (is_null($charlist)) { 1876 1796 return '\s+'; … … 1879 1799 } 1880 1800 } 1881 1882 /**1883 * データ量の単位を付与する1884 *1885 * @param int $data1886 * @return string1887 */1888 function getUnitDataSize($data)1889 {1890 1891 if($data < 1000){1892 $return = $data . "KB";1893 }elseif($data < 1000000){1894 $return = $data/1000 . "MB";1895 }else{1896 $return = $data/1000000 . "GB";1897 }1898 return $return;1899 }1900 1901 /**1902 * カテゴリーツリー状の配列を作成.1903 *1904 * @param string $primary_key1905 * @param string $glue_key1906 * @param integer $max_depth1907 * @param array $correction1908 * @param integer $root_id1909 * @return array ツリーの配列1910 */1911 public static function buildTree($primary_key, $glue_key, $max_depth, $correction = array(), $root_id = 0)1912 {1913 $children = array();1914 foreach ($correction as $child) {1915 $children[$child[$glue_key]][] = $child;1916 }1917 $arrTree = $children[$root_id];1918 foreach ($arrTree as &$child) {1919 SC_Utils_Ex::addChild($child, $primary_key, 1, $max_depth, $children);1920 }1921 return $arrTree;1922 }1923 1924 /**1925 * ツリーの親子をつなげるルーチン.1926 *1927 * @param array $target 親1928 * @param string $primary_key 主キーの識別子1929 * @param integer $level 親の階層1930 * @param integer $max_depth 階層の深さの最大値1931 * @param array $children 子の配列(キーが親ID)1932 * @return void1933 */1934 public static function addChild(&$target, $primary_key, $level, $max_depth, &$children = array())1935 {1936 if (isset($children[$target[$primary_key]])) {1937 $target['children'] = $children[$target[$primary_key]];1938 if ($level + 1 < $max_depth) {1939 foreach ($target['children'] as &$child) {1940 SC_Utils_Ex::addChild($child, $primary_key, $level++, $max_depth, $children);1941 }1942 }1943 }1944 }1945 1946 /**1947 * 配列のキーをIDにした配列を作成.1948 *1949 * @param string $ID_name IDが格納されているキー名1950 * @param array $correction 元の配列1951 * @return array1952 */1953 public static function makeArrayIDToKey($ID_name, $correction = array())1954 {1955 $arrTmp = array();1956 foreach ($correction as $item) {1957 $arrTmp[$item[$ID_name]] = $item;1958 }1959 $return =& $arrTmp;1960 unset($arrTmp);1961 return $return;1962 }1963 1964 /**1965 * 階層情報が含まれている配列から親ID配列を取得する.1966 *1967 * @param integer $start_id 取得起点1968 * @param string $primary_key 主キー名1969 * @param string $glue_key 親IDキー名1970 * @param array $correction 階層構造が含まれている配列1971 * @param boolean $cid_is_key キーがIDの配列の場合はtrue1972 * @param integer $root_id ルートID1973 * @param boolean $id_only IDだけの配列を返す場合はtrue1974 * @return array 親ID配列1975 */1976 public static function getTreeTrail($start_id, $primary_key, $glue_key, $correction = array(), $cid_is_key = FALSE, $root_id = 0, $id_only = TRUE)1977 {1978 if ($cid_is_key) {1979 $arrIDToKay = $correction;1980 } else {1981 $arrIDToKay = SC_Utils_Ex::makeArrayIDToKey($primary_key, $correction);1982 }1983 $id = $start_id;1984 $arrTrail = array();1985 while ($id != $root_id && !SC_Utils_Ex::isBlank($id)) {1986 if ($id_only) {1987 $arrTrail[] = $id;1988 } else {1989 $arrTrail[] = $arrIDToKay[$id];1990 }1991 if (isset($arrIDToKay[$id][$glue_key])) {1992 $id = $arrIDToKay[$id][$glue_key];1993 } else {1994 $id = $root_id;1995 }1996 }1997 return array_reverse($arrTrail);1998 }1999 1801 }
Note: See TracChangeset
for help on using the changeset viewer.