Changeset 11730 for branches/comu/data/lib
- Timestamp:
- 2007/03/11 06:27:25 (16 years ago)
- Location:
- branches/comu/data/lib
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/comu/data/lib/gdthumb.php
r11729 r11730 2 2 /* 3 3 4 ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆ 5 GD 自動サムネイル作成 + 中川修正2006/02/034 ¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡ 5 GD¼«Æ°¥µ¥à¥Í¥¤¥ëºîÀ® + ÃæÀÀµ2006/02/03 6 6 7 7 Copyright 2002- Akihiro Asai. All rights reserved. … … 10 10 aki@mx3.adam.ne.jp 11 11 12 ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆ 13 14 □ 機能概要 15 ・指定されたイメージのサムネイルを表示します。 16 ・出力する大きさを指定する事ができます。 17 ・出力されるイメージのアスペクト比は維持されます。 18 19 □ 使用方法 20 指定はgdthumb.php?path=xxx/xxx.[ jpg | png | gif ]&mw=xx&mh=xx21 ※ passの部分には画像へのパスを指定 22 ※ mwに表示画像の最大横幅、mhに表示画像の最大横幅を外部より指定可能。 23 ※ 指定しなかった場合はデフォルトの設定値を採用。 24 ★クラスとして使用する場合は、「クラスとして使用する場合には・・・」以降をコメントアウトして下さい。 25 26 □ 更新履歴 27 2002/08/19 最大縦幅の部分を一部手直し28 2003/01/31 デフォルトでアスペクト比が固定29 2003/04/11 最大横幅と最大縦幅を外部より指定可能30 2003/04/25 GD2 用に関数変更31 2003/06/21 GD1/2 をバージョンに応じて変更できるように修正32 2003/06/25 imageCopyResampled の部分を修正33 2004/01/28 スクリプト全体を書き直し。引数「pass」を「path」に変更。34 2005/12/08 関数の自動判別 gif形式に対応 透過gif・透過pngに対応(GD2.0.1以降)12 ¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡ 13 14 ¢¢ µ¡Ç½³µÍ× 15 ¡¦»ØÄꤵ¤ì¤¿¥¤¥á¡¼¥¸¤Î¥µ¥à¥Í¥¤¥ë¤òɽ¼¨¤·¤Þ¤¹¡£ 16 ¡¦½ÐÎϤ¹¤ëÂ礤µ¤ò»ØÄꤹ¤ë»ö¤¬¤Ç¤¤Þ¤¹¡£ 17 ¡¦½ÐÎϤµ¤ì¤ë¥¤¥á¡¼¥¸¤Î¥¢¥¹¥Ú¥¯¥ÈÈæ¤Ï°Ý»ý¤µ¤ì¤Þ¤¹¡£ 18 19 ¢¢ »ÈÍÑÊýË¡ 20 »ØÄê¤Ï gdthumb.php?path=xxx/xxx.[ jpg | png | gif ]&mw=xx&mh=xx 21 ¢¨ pass¤ÎÉôʬ¤Ë¤Ï²èÁü¤Ø¤Î¥Ñ¥¹¤ò»ØÄê 22 ¢¨ mw¤Ëɽ¼¨²èÁü¤ÎºÇÂç²£Éý¡¢mh¤Ëɽ¼¨²èÁü¤ÎºÇÂç²£Éý¤ò³°Éô¤è¤ê»ØÄê²Äǽ¡£ 23 ¢¨ »ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¥Ç¥Õ¥©¥ë¥È¤ÎÀßÄêÃͤòºÎÍÑ¡£ 24 ¡ú¥¯¥é¥¹¤È¤·¤Æ»ÈÍѤ¹¤ë¾ì¹ç¤Ï¡¢¡Ö¥¯¥é¥¹¤È¤·¤Æ»ÈÍѤ¹¤ë¾ì¹ç¤Ë¤Ï¡¦¡¦¡¦¡×°Ê¹ß¤ò¥³¥á¥ó¥È¥¢¥¦¥È¤·¤Æ²¼¤µ¤¤¡£ 25 26 ¢¢ ¹¹¿·ÍúÎò 27 2002/08/19 ºÇÂç½ÄÉý¤ÎÉôʬ¤ò°ìÉô¼êľ¤· 28 2003/01/31 ¥Ç¥Õ¥©¥ë¥È¤Ç¥¢¥¹¥Ú¥¯¥ÈÈæ¤¬¸ÇÄê 29 2003/04/11 ºÇÂç²£Éý¤ÈºÇÂç½ÄÉý¤ò³°Éô¤è¤ê»ØÄê²Äǽ 30 2003/04/25 GD2ÍѤ˴ؿôÊѹ¹ 31 2003/06/21 GD1/2¤ò¥Ð¡¼¥¸¥ç¥ó¤Ë±þ¤¸¤ÆÊѹ¹¤Ç¤¤ë¤è¤¦¤Ë½¤Àµ 32 2003/06/25 imageCopyResampled¤ÎÉôʬ¤ò½¤Àµ 33 2004/01/28 ¥¹¥¯¥ê¥×¥ÈÁ´ÂΤò½ñ¤Ä¾¤·¡£°ú¿ô¡Öpass¡×¤ò¡Öpath¡×¤ËÊѹ¹¡£ 34 2005/12/08 ´Ø¿ô¤Î¼«Æ°È½ÊÌ gif·Á¼°¤ËÂбþ Æ©²ágif¡¦Æ©²ápng¤ËÂбþ¡ÊGD2.0.1°Ê¹ß¡Ë 35 35 */ 36 36 37 // クラスとして使用する場合には、以下の6行をコメントアウト37 // ¥¯¥é¥¹¤È¤·¤Æ»ÈÍѤ¹¤ë¾ì¹ç¤Ë¤Ï¡¢°Ê²¼¤Î6¹Ô¤ò¥³¥á¥ó¥È¥¢¥¦¥È 38 38 /* 39 39 $objg = new gdthumb(); 40 40 list($Ck, $Msg) = $objg->Main($_GET["path"], $_GET["mw"], $_GET["mh"]); 41 if(!$Ck) { // エラーの場合41 if(!$Ck) { // ¥¨¥é¡¼¤Î¾ì¹ç 42 42 header("Content-Type: text/html; charset=" . CHAR_CODE); 43 43 print $Msg; … … 52 52 53 53 /* 54 * コンストラクタ54 * ¥³¥ó¥¹¥È¥é¥¯¥¿ 55 55 */ 56 56 function gdthumb() { 57 57 58 // スクリプトのデフォルト設定59 60 // 画像の最大横幅61 $this->imgMaxWidth = 240; // 1 以上の値62 63 // 画像の最大縦幅64 $this->imgMaxHeight = 0; // 指定しない場合は0 指定する場合は1以上の値58 // ¥¹¥¯¥ê¥×¥È¤Î¥Ç¥Õ¥©¥ë¥ÈÀßÄê 59 60 // ²èÁü¤ÎºÇÂç²£Éý 61 $this->imgMaxWidth = 240; // 1°Ê¾å¤ÎÃÍ 62 63 // ²èÁü¤ÎºÇÂç½ÄÉý 64 $this->imgMaxHeight = 0; // »ØÄꤷ¤Ê¤¤¾ì¹ç¤Ï0 »ØÄꤹ¤ë¾ì¹ç¤Ï1°Ê¾å¤ÎÃÍ 65 65 66 66 } 67 67 68 68 /* 69 * サムネイル画像の作成69 * ¥µ¥à¥Í¥¤¥ë²èÁü¤ÎºîÀ® 70 70 * string $path 71 71 * integer $width … … 75 75 76 76 if(!isset($path)) { 77 return array(0, " イメージのパスが設定されていません。");77 return array(0, "¥¤¥á¡¼¥¸¤Î¥Ñ¥¹¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£"); 78 78 } 79 79 80 80 if(!file_exists($path)) { 81 return array(0, " 指定されたパスにファイルが見つかりません。");82 } 83 84 // 画像の大きさをセット81 return array(0, "»ØÄꤵ¤ì¤¿¥Ñ¥¹¤Ë¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£"); 82 } 83 84 // ²èÁü¤ÎÂ礤µ¤ò¥»¥Ã¥È 85 85 if($width) $this->imgMaxWidth = $width; 86 86 if($height) $this->imgMaxHeight = $height; … … 89 89 $re_size = $size; 90 90 91 // アスペクト比固定処理91 //¥¢¥¹¥Ú¥¯¥ÈÈæ¸ÇÄê½èÍý 92 92 if($this->imgMaxWidth != 0) { 93 93 $tmp_w = $size[0] / $this->imgMaxWidth; … … 120 120 switch($size[2]) { 121 121 122 // gif 形式122 // gif·Á¼° 123 123 case "1": 124 124 if(function_exists("imagecreatefromgif")) { … … 139 139 if(function_exists("imagegif")) { 140 140 141 // 画像出力141 // ²èÁü½ÐÎÏ 142 142 if($header){ 143 143 header("Content-Type: image/gif"); … … 152 152 imagedestroy($dst_im); 153 153 } else { 154 // 画像出力154 // ²èÁü½ÐÎÏ 155 155 if($header){ 156 156 header("Content-Type: image/png"); … … 165 165 } 166 166 } else { 167 // サムネイル作成不可の場合(旧バージョン対策)167 // ¥µ¥à¥Í¥¤¥ëºîÀ®ÉԲĤξì¹ç¡Êµì¥Ð¡¼¥¸¥ç¥óÂкö¡Ë 168 168 $dst_im = imageCreate($re_size[0], $re_size[1]); 169 imageColorAllocate($dst_im, 255, 255, 214); // 背景色170 171 // 枠線と文字色の設定169 imageColorAllocate($dst_im, 255, 255, 214); //ÇØ·Ê¿§ 170 171 // ÏÈÀþ¤Èʸ»ú¿§¤ÎÀßÄê 172 172 $black = imageColorAllocate($dst_im, 0, 0, 0); 173 173 $red = imageColorAllocate($dst_im, 255, 0, 0); … … 176 176 imageRectangle ($dst_im, 0, 0, ($re_size[0]-1), ($re_size[1]-1), $black); 177 177 178 // 画像出力178 // ²èÁü½ÐÎÏ 179 179 if($header){ 180 180 header("Content-Type: image/png"); … … 190 190 break; 191 191 192 // jpg 形式192 // jpg·Á¼° 193 193 case "2": 194 194 … … 197 197 $imageresize( $dst_im, $src_im, 0, 0, 0, 0, $re_size[0], $re_size[1], $size[0], $size[1]); 198 198 199 // 画像出力199 // ²èÁü½ÐÎÏ 200 200 if($header){ 201 201 header("Content-Type: image/jpeg"); … … 212 212 break; 213 213 214 // png 形式214 // png·Á¼° 215 215 case "3": 216 216 … … 233 233 } 234 234 235 // 画像出力235 // ²èÁü½ÐÎÏ 236 236 if($header){ 237 237 header("Content-Type: image/png"); … … 248 248 249 249 default: 250 return array(0, " イメージの形式が不明です。");250 return array(0, "¥¤¥á¡¼¥¸¤Î·Á¼°¤¬ÉÔÌÀ¤Ç¤¹¡£"); 251 251 } 252 252 -
branches/comu/data/lib/glib.php
r11729 r11730 7 7 8 8 /*---------------------------------------------------------------------- 9 * [ 名称] gfDownloadCsv10 * [ 概要] 引数データをCSVとして、クライアントにダウンロードさせる11 * [ 引数] 1:ヘッダ文字列 2:CSVデータ12 * [ 戻値] -13 * [ 依存] -14 * [ 注釈] 引数は1,2ともカンマ区切りになっていること9 * [̾¾Î] gfDownloadCsv 10 * [³µÍ×] °ú¿ô¥Ç¡¼¥¿¤òCSV¤È¤·¤Æ¡¢¥¯¥é¥¤¥¢¥ó¥È¤Ë¥À¥¦¥ó¥í¡¼¥É¤µ¤»¤ë 11 * [°ú¿ô] 1:¥Ø¥Ã¥Àʸ»úÎó 2:CSV¥Ç¡¼¥¿ 12 * [ÌáÃÍ] - 13 * [°Í¸] - 14 * [Ãí¼á] °ú¿ô¤Ï£±¡¤£²¤È¤â¥«¥ó¥Þ¶èÀÚ¤ê¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤³¤È 15 15 *----------------------------------------------------------------------*/ 16 16 function gfDownloadCsv($header, $contents){ … … 18 18 $fiest_name = date("YmdHis") .".csv"; 19 19 20 /* HTTP ヘッダの出力*/20 /* HTTP¥Ø¥Ã¥À¤Î½ÐÎÏ */ 21 21 Header("Content-disposition: attachment; filename=${fiest_name}"); 22 22 Header("Content-type: application/octet-stream; name=${fiest_name}"); 23 23 24 24 $return = $header.$contents; 25 if (mb_detect_encoding($return) == CHAR_CODE){ // 文字コード変換25 if (mb_detect_encoding($return) == CHAR_CODE){ //ʸ»ú¥³¡¼¥ÉÊÑ´¹ 26 26 $return = mb_convert_encoding($return,'SJIS',CHAR_CODE); 27 $return = str_replace( array( "\r\n", "\r" ), "\n", $return); // 改行方法の統一27 $return = str_replace( array( "\r\n", "\r" ), "\n", $return); // ²þ¹ÔÊýË¡¤ÎÅý°ì 28 28 } 29 29 echo $return; … … 31 31 32 32 /*---------------------------------------------------------------------- 33 * [ 名称] gfSetCsv34 * [ 概要] 引数の配列をCSV形式に変換する35 * [ 引数] 1:CSVにする配列 2:引数1が連想配列時の添え字を指定した配列36 * [ 戻値] CSVデータ37 * [ 依存] -38 * [ 注釈] -33 * [̾¾Î] gfSetCsv 34 * [³µÍ×] °ú¿ô¤ÎÇÛÎó¤òCSV·Á¼°¤ËÊÑ´¹¤¹¤ë 35 * [°ú¿ô] 1:CSV¤Ë¤¹¤ëÇÛÎó 2:°ú¿ô1¤¬Ï¢ÁÛÇÛÎó»þ¤Îꤍ»ú¤ò»ØÄꤷ¤¿ÇÛÎó 36 * [ÌáÃÍ] CSV¥Ç¡¼¥¿ 37 * [°Í¸] - 38 * [Ãí¼á] - 39 39 *----------------------------------------------------------------------*/ 40 40 function gfSetCsv( $array, $arrayIndex = "" ){ 41 // 引数$arrayIndexは、$arrayが連想配列のときに添え字を指定してやるために使用する41 //°ú¿ô$arrayIndex¤Ï¡¢$array¤¬Ï¢ÁÛÇÛÎó¤Î¤È¤¤Ëꤍ»ú¤ò»ØÄꤷ¤Æ¤ä¤ë¤¿¤á¤Ë»ÈÍѤ¹¤ë 42 42 43 43 $return = ""; … … 48 48 $return .= "\""; 49 49 if ( $arrayIndex ){ 50 $return .= mb_ereg_replace("<"," <",mb_ereg_replace( "\"","\"\"",$array[$i][$arrayIndex[$j]] )) ."\"";50 $return .= mb_ereg_replace("<","¡ã",mb_ereg_replace( "\"","\"\"",$array[$i][$arrayIndex[$j]] )) ."\""; 51 51 } else { 52 $return .= mb_ereg_replace("<"," <",mb_ereg_replace( "\"","\"\"",$array[$i][$j] )) ."\"";52 $return .= mb_ereg_replace("<","¡ã",mb_ereg_replace( "\"","\"\"",$array[$i][$j] )) ."\""; 53 53 } 54 54 } … … 60 60 61 61 /*---------------------------------------------------------------------- 62 * [ 名称] gfGetAge63 * [ 概要] 日付より年齢を計算する。64 * [ 引数] 1:日付文字列(yyyy/mm/dd、yyyy-mm-dd hh:mm:ss等)65 * [ 戻値] 年齢の数値66 * [ 依存] -67 * [ 注釈] -62 * [̾¾Î] gfGetAge 63 * [³µÍ×] ÆüÉÕ¤è¤êǯÎð¤ò·×»»¤¹¤ë¡£ 64 * [°ú¿ô] 1:ÆüÉÕʸ»úÎó(yyyy/mm/dd¡¢yyyy-mm-dd hh:mm:ssÅù) 65 * [ÌáÃÍ] ǯÎð¤Î¿ôÃÍ 66 * [°Í¸] - 67 * [Ãí¼á] - 68 68 *----------------------------------------------------------------------*/ 69 69 function gfGetAge($dbdate) … … 79 79 80 80 /*---------------------------------------------------------------------- 81 * [ 名称] gfDebugLog82 * [ 概要] ログファイルに変数の詳細を出力する。83 * [ 引数] 対象となる変数84 * [ 戻値] なし85 * [ 依存] gfPrintLog86 * [ 注釈] -81 * [̾¾Î] gfDebugLog 82 * [³µÍ×] ¥í¥°¥Õ¥¡¥¤¥ë¤ËÊÑ¿ô¤Î¾ÜºÙ¤ò½ÐÎϤ¹¤ë¡£ 83 * [°ú¿ô] ÂоݤȤʤëÊÑ¿ô 84 * [ÌáÃÍ] ¤Ê¤· 85 * [°Í¸] gfPrintLog 86 * [Ãí¼á] - 87 87 *----------------------------------------------------------------------*/ 88 88 function gfDebugLog($obj){ … … 97 97 gfPrintLog("*** end Debug ***"); 98 98 99 // ログテーション99 // ¥í¥°¥Æ¡¼¥·¥ç¥ó 100 100 gfLogRotation(MAX_LOG_QUANTITY, MAX_LOG_SIZE, LOG_PATH); 101 101 } 102 102 103 103 /*---------------------------------------------------------------------- 104 * [ 名称] gfPrintLog105 * [ 概要] ログファイルに日時、処理ファイル名、メッセージを出力106 * [ 引数] 表示したいメッセージ107 * [ 戻値] なし108 * [ 依存] なし109 * [ 注釈] -104 * [̾¾Î] gfPrintLog 105 * [³µÍ×] ¥í¥°¥Õ¥¡¥¤¥ë¤ËÆü»þ¡¢½èÍý¥Õ¥¡¥¤¥ë̾¡¢¥á¥Ã¥»¡¼¥¸¤ò½ÐÎÏ 106 * [°ú¿ô] ɽ¼¨¤·¤¿¤¤¥á¥Ã¥»¡¼¥¸ 107 * [ÌáÃÍ] ¤Ê¤· 108 * [°Í¸] ¤Ê¤· 109 * [Ãí¼á] - 110 110 *----------------------------------------------------------------------*/ 111 111 function gfPrintLog($mess, $path = '') { 112 // 日付の取得112 // ÆüÉդμèÆÀ 113 113 $today = date("Y/m/d H:i:s"); 114 // 出力パスの作成114 // ½ÐÎϥѥ¹¤ÎºîÀ® 115 115 if ($path == "") { 116 116 $path = LOG_PATH; 117 117 } 118 118 119 // エスケープされている文字をもとに戻す119 // ¥¨¥¹¥±¡¼¥×¤µ¤ì¤Æ¤¤¤ëʸ»ú¤ò¤â¤È¤ËÌ᤹ 120 120 $trans_tbl = get_html_translation_table (HTML_ENTITIES); 121 121 $trans_tbl = array_flip ($trans_tbl); … … 128 128 } 129 129 130 // ログテーション130 // ¥í¥°¥Æ¡¼¥·¥ç¥ó 131 131 gfLogRotation(MAX_LOG_QUANTITY, MAX_LOG_SIZE, $path); 132 132 } 133 133 134 134 /** 135 * ログローテーション機能135 * ¥í¥°¥í¡¼¥Æ¡¼¥·¥ç¥óµ¡Ç½ 136 136 * 137 * @param integer $max_log 最大ファイル数138 * @param integer $max_size 最大サイズ139 * @param string $path ファイルパス140 * @return void なし137 * @param integer $max_log ºÇÂç¥Õ¥¡¥¤¥ë¿ô 138 * @param integer $max_size ºÇÂ祵¥¤¥º 139 * @param string $path ¥Õ¥¡¥¤¥ë¥Ñ¥¹ 140 * @return void ¤Ê¤· 141 141 */ 142 142 function gfLogRotation($max_log, $max_size, $path) { 143 143 144 // ディレクトリ名を取得144 // ¥Ç¥£¥ì¥¯¥È¥ê̾¤ò¼èÆÀ 145 145 $dirname = dirname($path); 146 // ファイル名を取得146 // ¥Õ¥¡¥¤¥ë̾¤ò¼èÆÀ 147 147 $basename = basename($path); 148 148 149 // ファイルが最大サイズを超えていないかチェック149 // ¥Õ¥¡¥¤¥ë¤¬ºÇÂ祵¥¤¥º¤òͤ¨¤Æ¤¤¤Ê¤¤¤«¥Á¥§¥Ã¥¯ 150 150 if(filesize($path) > $max_size) { 151 151 if ($dh = opendir($dirname)) { 152 152 while (($file = readdir($dh)) !== false) { 153 // ログローテーションにて作成されたファイルを取得153 // ¥í¥°¥í¡¼¥Æ¡¼¥·¥ç¥ó¤Ë¤ÆºîÀ®¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò¼èÆÀ 154 154 if(ereg("^". $basename . "\." , $file)) { 155 155 $arrLog[] = $file; … … 157 157 } 158 158 159 // ファイルログが最大個数なら以上なら古いファイルから削除する159 // ¥Õ¥¡¥¤¥ë¥í¥°¤¬ºÇÂç¸Ä¿ô¤Ê¤é°Ê¾å¤Ê¤é¸Å¤¤¥Õ¥¡¥¤¥ë¤«¤éºï½ü¤¹¤ë 160 160 $count = count($arrLog); 161 161 if($count >= $max_log) { … … 166 166 } 167 167 168 // ログファイルの添え字をずらす168 // ¥í¥°¥Õ¥¡¥¤¥ë¤Îꤍ»ú¤ò¤º¤é¤¹ 169 169 $count = count($arrLog); 170 170 for($i = $count; 1 <= $i; $i--) { … … 177 177 $ret = copy($path, "$path.1"); 178 178 179 // 新規ログファイルを作成179 // ¿·µ¬¥í¥°¥Õ¥¡¥¤¥ë¤òºîÀ® 180 180 if($ret) { 181 181 unlink($path); … … 187 187 188 188 /*---------------------------------------------------------------------- 189 * [ 名称] gfMakePassword190 * [ 概要] ランダムパスワード生成(英数字)191 * [ 引数] パスワードの桁数192 * [ 戻値] ランダム生成されたパスワード193 * [ 依存] なし194 * [ 注釈] -189 * [̾¾Î] gfMakePassword 190 * [³µÍ×] ¥é¥ó¥À¥à¥Ñ¥¹¥ï¡¼¥ÉÀ¸À®¡Ê±Ñ¿ô»ú¡Ë 191 * [°ú¿ô] ¥Ñ¥¹¥ï¡¼¥É¤Î·å¿ô 192 * [ÌáÃÍ] ¥é¥ó¥À¥àÀ¸À®¤µ¤ì¤¿¥Ñ¥¹¥ï¡¼¥É 193 * [°Í¸] ¤Ê¤· 194 * [Ãí¼á] - 195 195 *----------------------------------------------------------------------*/ 196 196 function gfMakePassword($pwLength) { 197 197 198 // 乱数表のシードを決定198 // Íð¿ôɽ¤Î¥·¡¼¥É¤ò·èÄê 199 199 srand((double)microtime() * 54234853); 200 200 201 // パスワード文字列の配列を作成201 // ¥Ñ¥¹¥ï¡¼¥Éʸ»úÎó¤ÎÇÛÎó¤òºîÀ® 202 202 $character = "abcdefghkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ2345679"; 203 203 $pw = preg_split("//", $character, 0, PREG_SPLIT_NO_EMPTY); … … 212 212 213 213 /*---------------------------------------------------------------------- 214 * [ 名称] sf_explodeExt215 * [ 概要] ファイルの拡張子取得216 * [ 引数] ファイル名217 * [ 戻値] 拡張子218 * [ 依存] なし219 * [ 注釈] -214 * [̾¾Î] sf_explodeExt 215 * [³µÍ×] ¥Õ¥¡¥¤¥ë¤Î³ÈÄ¥»Ò¼èÆÀ 216 * [°ú¿ô] ¥Õ¥¡¥¤¥ë̾ 217 * [ÌáÃÍ] ³ÈÄ¥»Ò 218 * [°Í¸] ¤Ê¤· 219 * [Ãí¼á] - 220 220 *----------------------------------------------------------------------*/ 221 221 function gf_explodeExt($fileName) { … … 228 228 229 229 /*---------------------------------------------------------------------------------------------------------------------- 230 * [ 名称] gfMailHeaderAddr231 * [ 概要] 入力されたメールアドレスをメール関数用の宛先に変換232 * [ 引数] 「メールアドレス」または「名前<メールアドレス>」、複数アドレス指定時はカンマ区切りで指定する。233 * [ 戻値] 「メールアドレス」または「JIS_MIMEにコード変換した名前 <メールアドレス>」、複数アドレス指定時はカンマ区切りで返却する。234 * [ 依存] なし235 * [ 注釈] -230 * [̾¾Î] gfMailHeaderAddr 231 * [³µÍ×] ÆþÎϤµ¤ì¤¿¥á¡¼¥ë¥¢¥É¥ì¥¹¤ò¥á¡¼¥ë´Ø¿ôÍѤΰ¸Àè¤ËÊÑ´¹ 232 * [°ú¿ô] ¡Ö¥á¡¼¥ë¥¢¥É¥ì¥¹¡×¤Þ¤¿¤Ï¡Ö̾Á°<¥á¡¼¥ë¥¢¥É¥ì¥¹>¡×¡¢Ê£¿ô¥¢¥É¥ì¥¹»ØÄê»þ¤Ï¥«¥ó¥Þ¶èÀÚ¤ê¤Ç»ØÄꤹ¤ë¡£ 233 * [ÌáÃÍ] ¡Ö¥á¡¼¥ë¥¢¥É¥ì¥¹¡×¤Þ¤¿¤Ï¡ÖJIS_MIME¤Ë¥³¡¼¥ÉÊÑ´¹¤·¤¿Ì¾Á° <¥á¡¼¥ë¥¢¥É¥ì¥¹>¡×¡¢Ê£¿ô¥¢¥É¥ì¥¹»ØÄê»þ¤Ï¥«¥ó¥Þ¶èÀÚ¤ê¤ÇÊֵѤ¹¤ë¡£ 234 * [°Í¸] ¤Ê¤· 235 * [Ãí¼á] - 236 236 *----------------------------------------------------------------------------------------------------------------------*/ 237 237 238 238 function gfMailHeaderAddr($str) { 239 $addrs = explode(",", $str); // アドレスを配列に入れる239 $addrs = explode(",", $str); //¥¢¥É¥ì¥¹¤òÇÛÎó¤ËÆþ¤ì¤ë 240 240 foreach ($addrs as $addr) { 241 241 if (preg_match("/^(.+)<(.+)>$/", $addr, $matches)) { 242 // 引数が「名前<メールアドレス>」の場合242 //°ú¿ô¤¬¡Ö̾Á°<¥á¡¼¥ë¥¢¥É¥ì¥¹>¡×¤Î¾ì¹ç 243 243 $mailaddrs[] = mb_encode_mimeheader(trim($matches[1]))." <".trim($matches[2]).">"; 244 244 } else { 245 // メールアドレスのみの場合245 //¥á¡¼¥ë¥¢¥É¥ì¥¹¤Î¤ß¤Î¾ì¹ç 246 246 $mailaddrs[] = trim($addr); 247 247 } 248 248 } 249 return implode(", ", $mailaddrs); // 複数アドレスはカンマ区切りにする249 return implode(", ", $mailaddrs); //Ê£¿ô¥¢¥É¥ì¥¹¤Ï¥«¥ó¥Þ¶èÀÚ¤ê¤Ë¤¹¤ë 250 250 } 251 251 ?> -
branches/comu/data/lib/slib.php
r11729 r11730 6 6 */ 7 7 8 //--- このファイルのパスを指定8 //---¤³¤Î¥Õ¥¡¥¤¥ë¤Î¥Ñ¥¹¤ò»ØÄê 9 9 $INC_PATH = realpath( dirname( __FILE__) ); 10 10 require_once( $INC_PATH ."/../conf/conf.php" ); … … 14 14 require_once( $INC_PATH ."/../include/session.inc" ); 15 15 16 // 全ページ共通エラー16 // Á´¥Ú¡¼¥¸¶¦ÄÌ¥¨¥é¡¼ 17 17 $GLOBAL_ERR = ""; 18 18 19 // インストール初期処理19 // ¥¤¥ó¥¹¥È¡¼¥ë½é´ü½èÍý 20 20 sfInitInstall(); 21 21 22 /* データベースのバージョン所得*/22 /* ¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥Ð¡¼¥¸¥ç¥ó½êÆÀ */ 23 23 function sfGetDBVersion($dsn = "") { 24 24 if($dsn == "") { … … 44 44 } 45 45 46 /* テーブルの存在チェック*/46 /* ¥Æ¡¼¥Ö¥ë¤Î¸ºß¥Á¥§¥Ã¥¯ */ 47 47 function sfTabaleExists($table_name, $dsn = "") { 48 48 if($dsn == "") { … … 55 55 56 56 $objQuery = new SC_Query($dsn, true, true); 57 // 正常に接続されている場合57 // Àµ¾ï¤ËÀܳ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç 58 58 if(!$objQuery->isError()) { 59 59 list($db_type) = split(":", $dsn); 60 // postgresql とmysqlとで処理を分ける60 // postgresql¤Èmysql¤È¤Ç½èÍý¤òʬ¤±¤ë 61 61 if ($db_type == "pgsql") { 62 62 $sql = "SELECT … … 84 84 } 85 85 86 // カラムの存在チェック86 // ¥«¥é¥à¤Î¸ºß¥Á¥§¥Ã¥¯ 87 87 function sfColumnExists($table_name, $col_name, $col_type = "", $dsn = "", $add = false) { 88 88 if($dsn == "") { … … 94 94 } 95 95 96 // テーブルが無ければエラー96 // ¥Æ¡¼¥Ö¥ë¤¬Ìµ¤±¤ì¤Ð¥¨¥é¡¼ 97 97 if(!sfTabaleExists($table_name, $dsn)) return false; 98 98 99 99 $objQuery = new SC_Query($dsn, true, true); 100 // 正常に接続されている場合100 // Àµ¾ï¤ËÀܳ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç 101 101 if(!$objQuery->isError()) { 102 102 list($db_type) = split(":", $dsn); 103 103 104 // カラムリストを取得104 // ¥«¥é¥à¥ê¥¹¥È¤ò¼èÆÀ 105 105 $arrRet = sfGetColumnList($table_name, $objQuery, $db_type); 106 106 if(count($arrRet) > 0) { … … 111 111 } 112 112 113 // カラムを追加する113 // ¥«¥é¥à¤òÄɲ乤ë 114 114 if($add){ 115 115 $objQuery->query("ALTER TABLE $table_name ADD $col_name $col_type "); … … 120 120 } 121 121 122 // データの存在チェック122 // ¥Ç¡¼¥¿¤Î¸ºß¥Á¥§¥Ã¥¯ 123 123 function sfDataExists($table_name, $where, $arrval, $dsn = "", $sql = "", $add = false) { 124 124 if($dsn == "") { … … 137 137 $ret = false; 138 138 } 139 // データを追加する139 // ¥Ç¡¼¥¿¤òÄɲ乤ë 140 140 if(!$ret && $add) { 141 141 $objQuery->exec($sql); … … 145 145 } 146 146 147 // テーブルのカラム一覧を取得する147 // ¥Æ¡¼¥Ö¥ë¤Î¥«¥é¥à°ìÍ÷¤ò¼èÆÀ¤¹¤ë 148 148 function sfGetColumnList($table_name, $objQuery = "", $db_type = DB_TYPE){ 149 149 if($objQuery == "") $objQuery = new SC_Query(); 150 150 $arrRet = array(); 151 151 152 // postgresql とmysqlとで処理を分ける152 // postgresql¤Èmysql¤È¤Ç½èÍý¤òʬ¤±¤ë 153 153 if ($db_type == "pgsql") { 154 154 $sql = "SELECT a.attname FROM pg_class c, pg_attribute a WHERE c.relname=? AND c.oid=a.attrelid AND a.attnum > 0 ORDER BY a.attnum"; … … 165 165 } 166 166 167 // インストール初期処理167 // ¥¤¥ó¥¹¥È¡¼¥ë½é´ü½èÍý 168 168 function sfInitInstall() { 169 // インストール済みが定義されていない。169 // ¥¤¥ó¥¹¥È¡¼¥ëºÑ¤ß¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£ 170 170 if(!defined('ECCUBE_INSTALL')) { 171 171 if(!ereg("/install/", $_SERVER['PHP_SELF'])) { … … 175 175 $path = HTML_PATH . "install/index.php"; 176 176 if(file_exists($path)) { 177 sfErrorHeader(">> /install/index.php は、インストール完了後にファイルを削除してください。");178 } 179 180 // 旧バージョンのinstall.incのチェック177 sfErrorHeader(">> /install/index.php¤Ï¡¢¥¤¥ó¥¹¥È¡¼¥ë´°Î»¸å¤Ë¥Õ¥¡¥¤¥ë¤òºï½ü¤·¤Æ¤¯¤À¤µ¤¤¡£"); 178 } 179 180 // µì¥Ð¡¼¥¸¥ç¥ó¤Îinstall.inc¤Î¥Á¥§¥Ã¥¯ 181 181 $path = HTML_PATH . "install.inc"; 182 182 if(file_exists($path)) { 183 sfErrorHeader(">> /install.inc はセキュリティーホールとなります。削除してください。");183 sfErrorHeader(">> /install.inc¤Ï¥»¥¥å¥ê¥Æ¥£¡¼¥Û¡¼¥ë¤È¤Ê¤ê¤Þ¤¹¡£ºï½ü¤·¤Æ¤¯¤À¤µ¤¤¡£"); 184 184 } 185 185 } 186 186 } 187 187 188 // アップデートで生成されたPHPを読み出し188 // ¥¢¥Ã¥×¥Ç¡¼¥È¤ÇÀ¸À®¤µ¤ì¤¿PHP¤òÆÉ¤ß½Ð¤· 189 189 function sfLoadUpdateModule() { 190 // URL 設定ディレクトリを削除190 // URLÀßÄê¥Ç¥£¥ì¥¯¥È¥ê¤òºï½ü 191 191 $main_php = ereg_replace(URL_DIR, "", $_SERVER['PHP_SELF']); 192 192 $extern_php = UPDATE_PATH . $main_php; … … 197 197 198 198 function sf_getBasisData() { 199 //DB から設定情報を取得199 //DB¤«¤éÀßÄê¾ðÊó¤ò¼èÆÀ 200 200 $objConn = new SC_DbConn(DEFAULT_DSN); 201 201 $result = $objConn->getAll("SELECT * FROM dtb_baseinfo"); … … 208 208 } 209 209 210 // 装飾付きエラーメッセージの表示210 // Áõ¾þÉÕ¤¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤Îɽ¼¨ 211 211 function sfErrorHeader($mess, $print = false) { 212 212 global $GLOBAL_ERR; … … 227 227 } 228 228 229 /* エラーページの表示*/229 /* ¥¨¥é¡¼¥Ú¡¼¥¸¤Îɽ¼¨ */ 230 230 function sfDispError($type) { 231 231 … … 233 233 function LC_ErrorPage() { 234 234 $this->tpl_mainpage = 'login_error.tpl'; 235 $this->tpl_title = ' エラー';235 $this->tpl_title = '¥¨¥é¡¼'; 236 236 } 237 237 } … … 242 242 switch ($type) { 243 243 case LOGIN_ERROR: 244 $objPage->tpl_error=" IDまたはパスワードが正しくありません。<br />もう一度ご確認のうえ、再度入力してください。";244 $objPage->tpl_error="£É£Ä¤Þ¤¿¤Ï¥Ñ¥¹¥ï¡¼¥É¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£<br />¤â¤¦°ìÅÙ¤´³Îǧ¤Î¤¦¤¨¡¢ºÆÅÙÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£"; 245 245 break; 246 246 case ACCESS_ERROR: 247 $objPage->tpl_error=" ログイン認証の有効期限切れの可能性があります。<br />もう一度ご確認のうえ、再度ログインしてください。";247 $objPage->tpl_error="¥í¥°¥¤¥óǧ¾Ú¤Î͸ú´ü¸ÂÀÚ¤ì¤Î²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£<br />¤â¤¦°ìÅÙ¤´³Îǧ¤Î¤¦¤¨¡¢ºÆÅÙ¥í¥°¥¤¥ó¤·¤Æ¤¯¤À¤µ¤¤¡£"; 248 248 break; 249 249 case AUTH_ERROR: 250 $objPage->tpl_error=" このファイルにはアクセス権限がありません。<br />もう一度ご確認のうえ、再度ログインしてください。";250 $objPage->tpl_error="¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï¥¢¥¯¥»¥¹¸¢¸Â¤¬¤¢¤ê¤Þ¤»¤ó¡£<br />¤â¤¦°ìÅÙ¤´³Îǧ¤Î¤¦¤¨¡¢ºÆÅÙ¥í¥°¥¤¥ó¤·¤Æ¤¯¤À¤µ¤¤¡£"; 251 251 break; 252 252 case PAGE_ERROR: 253 $objPage->tpl_error=" 不正なページ移動です。<br />もう一度ご確認のうえ、再度入力してください。";253 $objPage->tpl_error="ÉÔÀµ¤Ê¥Ú¡¼¥¸°Üư¤Ç¤¹¡£<br />¤â¤¦°ìÅÙ¤´³Îǧ¤Î¤¦¤¨¡¢ºÆÅÙÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£"; 254 254 break; 255 255 default: 256 $objPage->tpl_error=" エラーが発生しました。<br />もう一度ご確認のうえ、再度ログインしてください。";256 $objPage->tpl_error="¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£<br />¤â¤¦°ìÅÙ¤´³Îǧ¤Î¤¦¤¨¡¢ºÆÅÙ¥í¥°¥¤¥ó¤·¤Æ¤¯¤À¤µ¤¤¡£"; 257 257 break; 258 258 } … … 264 264 } 265 265 266 /* サイトエラーページの表示*/266 /* ¥µ¥¤¥È¥¨¥é¡¼¥Ú¡¼¥¸¤Îɽ¼¨ */ 267 267 function sfDispSiteError($type, $objSiteSess = "", $return_top = false, $err_msg = "") { 268 268 global $objCampaignSess; … … 276 276 $this->tpl_mainpage = 'error.tpl'; 277 277 $this->tpl_css = URL_DIR.'css/layout/error.css'; 278 $this->tpl_title = ' エラー';278 $this->tpl_title = '¥¨¥é¡¼'; 279 279 } 280 280 } … … 285 285 switch ($type) { 286 286 case PRODUCT_NOT_FOUND: 287 $objPage->tpl_error=" ご指定のページはございません。";287 $objPage->tpl_error="¤´»ØÄê¤Î¥Ú¡¼¥¸¤Ï¤´¤¶¤¤¤Þ¤»¤ó¡£"; 288 288 break; 289 289 case PAGE_ERROR: 290 $objPage->tpl_error=" 不正なページ移動です。";290 $objPage->tpl_error="ÉÔÀµ¤Ê¥Ú¡¼¥¸°Üư¤Ç¤¹¡£"; 291 291 break; 292 292 case CART_EMPTY: 293 $objPage->tpl_error=" カートに商品ががありません。";293 $objPage->tpl_error="¥«¡¼¥È¤Ë¾¦Éʤ¬¤¬¤¢¤ê¤Þ¤»¤ó¡£"; 294 294 break; 295 295 case CART_ADD_ERROR: 296 $objPage->tpl_error=" 購入処理中は、カートに商品を追加することはできません。";296 $objPage->tpl_error="¹ØÆþ½èÍýÃæ¤Ï¡¢¥«¡¼¥È¤Ë¾¦ÉʤòÄɲ乤뤳¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£"; 297 297 break; 298 298 case CANCEL_PURCHASE: 299 $objPage->tpl_error=" この手続きは無効となりました。以下の要因が考えられます。<br />・セッション情報の有効期限が切れてる場合<br />・購入手続き中に新しい購入手続きを実行した場合<br />・すでに購入手続きを完了している場合";299 $objPage->tpl_error="¤³¤Î¼ê³¤¤Ï̵¸ú¤È¤Ê¤ê¤Þ¤·¤¿¡£°Ê²¼¤ÎÍ×°ø¤¬¹Í¤¨¤é¤ì¤Þ¤¹¡£<br />¡¦¥»¥Ã¥·¥ç¥ó¾ðÊó¤Î͸ú´ü¸Â¤¬ÀÚ¤ì¤Æ¤ë¾ì¹ç<br />¡¦¹ØÆþ¼ê³¤Ãæ¤Ë¿·¤·¤¤¹ØÆþ¼ê³¤¤ò¼Â¹Ô¤·¤¿¾ì¹ç<br />¡¦¤¹¤Ç¤Ë¹ØÆþ¼ê³¤¤ò´°Î»¤·¤Æ¤¤¤ë¾ì¹ç"; 300 300 break; 301 301 case CATEGORY_NOT_FOUND: 302 $objPage->tpl_error=" ご指定のカテゴリは存在しません。";302 $objPage->tpl_error="¤´»ØÄê¤Î¥«¥Æ¥´¥ê¤Ï¸ºß¤·¤Þ¤»¤ó¡£"; 303 303 break; 304 304 case SITE_LOGIN_ERROR: 305 $objPage->tpl_error=" メールアドレスもしくはパスワードが正しくありません。";305 $objPage->tpl_error="¥á¡¼¥ë¥¢¥É¥ì¥¹¤â¤·¤¯¤Ï¥Ñ¥¹¥ï¡¼¥É¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£"; 306 306 break; 307 307 case TEMP_LOGIN_ERROR: 308 $objPage->tpl_error=" メールアドレスもしくはパスワードが正しくありません。<br />本登録がお済みでない場合は、仮登録メールに記載されている<br />URLより本登録を行ってください。";308 $objPage->tpl_error="¥á¡¼¥ë¥¢¥É¥ì¥¹¤â¤·¤¯¤Ï¥Ñ¥¹¥ï¡¼¥É¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£<br />ËÜÅÐÏ¿¤¬¤ªºÑ¤ß¤Ç¤Ê¤¤¾ì¹ç¤Ï¡¢²¾ÅÐÏ¿¥á¡¼¥ë¤ËµºÜ¤µ¤ì¤Æ¤¤¤ë<br />URL¤è¤êËÜÅÐÏ¿¤ò¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡£"; 309 309 break; 310 310 case CUSTOMER_ERROR: 311 $objPage->tpl_error=" 不正なアクセスです。";311 $objPage->tpl_error="ÉÔÀµ¤Ê¥¢¥¯¥»¥¹¤Ç¤¹¡£"; 312 312 break; 313 313 case SOLD_OUT: 314 $objPage->tpl_error=" 申し訳ございませんが、ご購入の直前で売り切れた商品があります。この手続きは無効となりました。";314 $objPage->tpl_error="¿½¤·Ìõ¤´¤¶¤¤¤Þ¤»¤ó¤¬¡¢¤´¹ØÆþ¤ÎľÁ°¤ÇÇä¤êÀڤ줿¾¦Éʤ¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¼ê³¤¤Ï̵¸ú¤È¤Ê¤ê¤Þ¤·¤¿¡£"; 315 315 break; 316 316 case CART_NOT_FOUND: 317 $objPage->tpl_error=" 申し訳ございませんが、カート内の商品情報の取得に失敗しました。この手続きは無効となりました。";317 $objPage->tpl_error="¿½¤·Ìõ¤´¤¶¤¤¤Þ¤»¤ó¤¬¡¢¥«¡¼¥ÈÆâ¤Î¾¦ÉʾðÊó¤Î¼èÆÀ¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£¤³¤Î¼ê³¤¤Ï̵¸ú¤È¤Ê¤ê¤Þ¤·¤¿¡£"; 318 318 break; 319 319 case LACK_POINT: 320 $objPage->tpl_error=" 申し訳ございませんが、ポイントが不足しております。この手続きは無効となりました。";320 $objPage->tpl_error="¿½¤·Ìõ¤´¤¶¤¤¤Þ¤»¤ó¤¬¡¢¥Ý¥¤¥ó¥È¤¬ÉÔ¤·¤Æ¤ª¤ê¤Þ¤¹¡£¤³¤Î¼ê³¤¤Ï̵¸ú¤È¤Ê¤ê¤Þ¤·¤¿¡£"; 321 321 break; 322 322 case FAVORITE_ERROR: 323 $objPage->tpl_error=" 既にお気に入りに追加されている商品です。";323 $objPage->tpl_error="´û¤Ë¤ªµ¤¤ËÆþ¤ê¤ËÄɲäµ¤ì¤Æ¤¤¤ë¾¦ÉʤǤ¹¡£"; 324 324 break; 325 325 case EXTRACT_ERROR: 326 $objPage->tpl_error=" ファイルの解凍に失敗しました。\n指定のディレクトリに書き込み権限が与えられていない可能性があります。";326 $objPage->tpl_error="¥Õ¥¡¥¤¥ë¤Î²òÅà¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£\n»ØÄê¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë½ñ¤¹þ¤ß¸¢¸Â¤¬Í¿¤¨¤é¤ì¤Æ¤¤¤Ê¤¤²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£"; 327 327 break; 328 328 case FTP_DOWNLOAD_ERROR: 329 $objPage->tpl_error=" ファイルのFTPダウンロードに失敗しました。";329 $objPage->tpl_error="¥Õ¥¡¥¤¥ë¤ÎFTP¥À¥¦¥ó¥í¡¼¥É¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£"; 330 330 break; 331 331 case FTP_LOGIN_ERROR: 332 $objPage->tpl_error="FTP ログインに失敗しました。";332 $objPage->tpl_error="FTP¥í¥°¥¤¥ó¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£"; 333 333 break; 334 334 case FTP_CONNECT_ERROR: 335 $objPage->tpl_error="FTP ログインに失敗しました。";335 $objPage->tpl_error="FTP¥í¥°¥¤¥ó¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£"; 336 336 break; 337 337 case CREATE_DB_ERROR: 338 $objPage->tpl_error="DB の作成に失敗しました。\n指定のユーザーには、DB作成の権限が与えられていない可能性があります。";338 $objPage->tpl_error="DB¤ÎºîÀ®¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£\n»ØÄê¤Î¥æ¡¼¥¶¡¼¤Ë¤Ï¡¢DBºîÀ®¤Î¸¢¸Â¤¬Í¿¤¨¤é¤ì¤Æ¤¤¤Ê¤¤²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£"; 339 339 break; 340 340 case DB_IMPORT_ERROR: 341 $objPage->tpl_error=" データベース構造のインポートに失敗しました。\nsqlファイルが壊れている可能性があります。";341 $objPage->tpl_error="¥Ç¡¼¥¿¥Ù¡¼¥¹¹½Â¤¤Î¥¤¥ó¥Ý¡¼¥È¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£\nsql¥Õ¥¡¥¤¥ë¤¬²õ¤ì¤Æ¤¤¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£"; 342 342 break; 343 343 case FILE_NOT_FOUND: 344 $objPage->tpl_error=" 指定のパスに、設定ファイルが存在しません。";344 $objPage->tpl_error="»ØÄê¤Î¥Ñ¥¹¤Ë¡¢ÀßÄê¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Þ¤»¤ó¡£"; 345 345 break; 346 346 case WRITE_FILE_ERROR: 347 $objPage->tpl_error=" 設定ファイルに書き込めません。\n設定ファイルに書き込み権限を与えてください。";347 $objPage->tpl_error="ÀßÄê¥Õ¥¡¥¤¥ë¤Ë½ñ¤¹þ¤á¤Þ¤»¤ó¡£\nÀßÄê¥Õ¥¡¥¤¥ë¤Ë½ñ¤¹þ¤ß¸¢¸Â¤òÍ¿¤¨¤Æ¤¯¤À¤µ¤¤¡£"; 348 348 break; 349 349 case FREE_ERROR_MSG: … … 351 351 break; 352 352 default: 353 $objPage->tpl_error=" エラーが発生しました。";353 $objPage->tpl_error="¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£"; 354 354 break; 355 355 } … … 360 360 361 361 if(is_object($objCampaignSess)) { 362 // フレームを選択(キャンペーンページから遷移なら変更)362 // ¥Õ¥ì¡¼¥à¤òÁªÂò(¥¥ã¥ó¥Ú¡¼¥ó¥Ú¡¼¥¸¤«¤éÁ«°Ü¤Ê¤éÊѹ¹) 363 363 $objCampaignSess->pageView($objView); 364 364 } else { … … 368 368 } 369 369 370 /* 認証の可否判定*/370 /* ǧ¾Ú¤Î²ÄÈÝȽÄê */ 371 371 function sfIsSuccess($objSess, $disp_error = true) { 372 372 $ret = $objSess->IsSuccess(); 373 373 if($ret != SUCCESS) { 374 374 if($disp_error) { 375 // エラーページの表示375 // ¥¨¥é¡¼¥Ú¡¼¥¸¤Îɽ¼¨ 376 376 sfDispError($ret); 377 377 } … … 381 381 } 382 382 383 /* 前のページで正しく登録が行われたか判定*/383 /* Á°¤Î¥Ú¡¼¥¸¤ÇÀµ¤·¤¯ÅÐÏ¿¤¬¹Ô¤ï¤ì¤¿¤«È½Äê */ 384 384 function sfIsPrePage($objSiteSess) { 385 385 $ret = $objSiteSess->isPrePage(); 386 386 if($ret != true) { 387 // エラーページの表示387 // ¥¨¥é¡¼¥Ú¡¼¥¸¤Îɽ¼¨ 388 388 sfDispSiteError(PAGE_ERROR, $objSiteSess); 389 389 } … … 391 391 392 392 function sfCheckNormalAccess($objSiteSess, $objCartSess) { 393 // ユーザユニークIDの取得393 // ¥æ¡¼¥¶¥æ¥Ë¡¼¥¯ID¤Î¼èÆÀ 394 394 $uniqid = $objSiteSess->getUniqId(); 395 // 購入ボタンを押した時のカート内容がコピーされていない場合のみコピーする。395 // ¹ØÆþ¥Ü¥¿¥ó¤ò²¡¤·¤¿»þ¤Î¥«¡¼¥ÈÆâÍÆ¤¬¥³¥Ô¡¼¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Î¤ß¥³¥Ô¡¼¤¹¤ë¡£ 396 396 $objCartSess->saveCurrentCart($uniqid); 397 // POST のユニークIDとセッションのユニークIDを比較(ユニークIDがPOSTされていない場合はスルー)397 // POST¤Î¥æ¥Ë¡¼¥¯ID¤È¥»¥Ã¥·¥ç¥ó¤Î¥æ¥Ë¡¼¥¯ID¤òÈæ³Ó(¥æ¥Ë¡¼¥¯ID¤¬POST¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¥¹¥ë¡¼) 398 398 $ret = $objSiteSess->checkUniqId(); 399 399 if($ret != true) { 400 // エラーページの表示400 // ¥¨¥é¡¼¥Ú¡¼¥¸¤Îɽ¼¨ 401 401 sfDispSiteError(CANCEL_PURCHASE, $objSiteSess); 402 402 } 403 403 404 // カート内が空でないか || 購入ボタンを押してから変化がないか404 // ¥«¡¼¥ÈÆâ¤¬¶õ¤Ç¤Ê¤¤¤« || ¹ØÆþ¥Ü¥¿¥ó¤ò²¡¤·¤Æ¤«¤éÊѲ½¤¬¤Ê¤¤¤« 405 405 $quantity = $objCartSess->getTotalQuantity(); 406 406 $ret = $objCartSess->checkChangeCart(); 407 407 if($ret == true || !($quantity > 0)) { 408 // カート情報表示に強制移動する408 // ¥«¡¼¥È¾ðÊóɽ¼¨¤Ë¶¯À©°Üư¤¹¤ë 409 409 header("Location: ".URL_CART_TOP); 410 410 exit; … … 413 413 } 414 414 415 /* DB 用日付文字列取得*/415 /* DBÍÑÆüÉÕʸ»úÎó¼èÆÀ */ 416 416 function sfGetTimestamp($year, $month, $day, $last = false) { 417 417 if($year != "" && $month != "" && $day != "") { … … 428 428 } 429 429 430 // INT 型の数値チェック430 // INT·¿¤Î¿ôÃÍ¥Á¥§¥Ã¥¯ 431 431 function sfIsInt($value) { 432 432 if($value != "" && strlen($value) <= INT_LEN && is_numeric($value)) { … … 445 445 } 446 446 447 /* HTTP ヘッダの出力*/447 /* HTTP¥Ø¥Ã¥À¤Î½ÐÎÏ */ 448 448 Header("Content-disposition: attachment; filename=${file_name}"); 449 449 Header("Content-type: application/octet-stream; name=${file_name}"); … … 451 451 Header("Pragma: "); 452 452 453 /* i18n ~ だと正常に動作しないため、mb~ に変更453 /* i18n¢· ¤À¤ÈÀµ¾ï¤Ëưºî¤·¤Ê¤¤¤¿¤á¡¢mb¢· ¤ËÊѹ¹ 454 454 if (i18n_discover_encoding($data) == CHAR_CODE){ 455 455 $data = i18n_convert($data,'SJIS',CHAR_CODE); … … 460 460 } 461 461 462 /* データを出力*/462 /* ¥Ç¡¼¥¿¤ò½ÐÎÏ */ 463 463 echo $data; 464 464 } 465 465 466 /* 1 階層上のディレクトリ名を取得する*/466 /* 1³¬Áؾå¤Î¥Ç¥£¥ì¥¯¥È¥ê̾¤ò¼èÆÀ¤¹¤ë */ 467 467 function sfUpDirName() { 468 468 $path = $_SERVER['PHP_SELF']; … … 472 472 } 473 473 474 // 現在のサイトを更新(ただしポストは行わない)474 // ¸½ºß¤Î¥µ¥¤¥È¤ò¹¹¿·¡Ê¤¿¤À¤·¥Ý¥¹¥È¤Ï¹Ô¤ï¤Ê¤¤¡Ë 475 475 function sfReload($get = "") { 476 476 if ($_SERVER["SERVER_PORT"] == "443" ){ … … 488 488 } 489 489 490 // ランキングを上げる。490 // ¥é¥ó¥¥ó¥°¤ò¾å¤²¤ë¡£ 491 491 function sfRankUp($table, $colname, $id, $andwhere = "") { 492 492 $objQuery = new SC_Query(); … … 496 496 $where.= " AND $andwhere"; 497 497 } 498 // 対象項目のランクを取得498 // ÂоݹàÌܤΥé¥ó¥¯¤ò¼èÆÀ 499 499 $rank = $objQuery->get($table, "rank", $where, array($id)); 500 // ランクの最大値を取得500 // ¥é¥ó¥¯¤ÎºÇÂçÃͤò¼èÆÀ 501 501 $maxrank = $objQuery->max($table, "rank", $andwhere); 502 // ランクが最大値よりも小さい場合に実行する。502 // ¥é¥ó¥¯¤¬ºÇÂçÃͤè¤ê¤â¾®¤µ¤¤¾ì¹ç¤Ë¼Â¹Ô¤¹¤ë¡£ 503 503 if($rank < $maxrank) { 504 // ランクが一つ上のIDを取得する。504 // ¥é¥ó¥¯¤¬°ì¤Ä¾å¤ÎID¤ò¼èÆÀ¤¹¤ë¡£ 505 505 $where = "rank = ?"; 506 506 if($andwhere != "") { … … 509 509 $uprank = $rank + 1; 510 510 $up_id = $objQuery->get($table, $colname, $where, array($uprank)); 511 // ランク入れ替えの実行511 // ¥é¥ó¥¯Æþ¤ìÂØ¤¨¤Î¼Â¹Ô 512 512 $sqlup = "UPDATE $table SET rank = ?, update_date = Now() WHERE $colname = ?"; 513 513 $objQuery->exec($sqlup, array($rank + 1, $id)); … … 517 517 } 518 518 519 // ランキングを下げる。519 // ¥é¥ó¥¥ó¥°¤ò²¼¤²¤ë¡£ 520 520 function sfRankDown($table, $colname, $id, $andwhere = "") { 521 521 $objQuery = new SC_Query(); … … 525 525 $where.= " AND $andwhere"; 526 526 } 527 // 対象項目のランクを取得527 // ÂоݹàÌܤΥé¥ó¥¯¤ò¼èÆÀ 528 528 $rank = $objQuery->get($table, "rank", $where, array($id)); 529 529 530 // ランクが1(最小値)よりも大きい場合に実行する。530 // ¥é¥ó¥¯¤¬1(ºÇ¾®ÃÍ)¤è¤ê¤âÂ礤¤¾ì¹ç¤Ë¼Â¹Ô¤¹¤ë¡£ 531 531 if($rank > 1) { 532 // ランクが一つ下のIDを取得する。532 // ¥é¥ó¥¯¤¬°ì¤Ä²¼¤ÎID¤ò¼èÆÀ¤¹¤ë¡£ 533 533 $where = "rank = ?"; 534 534 if($andwhere != "") { … … 537 537 $downrank = $rank - 1; 538 538 $down_id = $objQuery->get($table, $colname, $where, array($downrank)); 539 // ランク入れ替えの実行539 // ¥é¥ó¥¯Æþ¤ìÂØ¤¨¤Î¼Â¹Ô 540 540 $sqlup = "UPDATE $table SET rank = ?, update_date = Now() WHERE $colname = ?"; 541 541 $objQuery->exec($sqlup, array($rank - 1, $id)); … … 545 545 } 546 546 547 //---- 指定順位へ移動547 //----¡¡»ØÄê½ç°Ì¤Ø°Üư 548 548 function sfMoveRank($tableName, $keyIdColumn, $keyId, $pos, $where = "") { 549 549 $objQuery = new SC_Query(); 550 550 $objQuery->begin(); 551 551 552 // 自身のランクを取得する552 // ¼«¿È¤Î¥é¥ó¥¯¤ò¼èÆÀ¤¹¤ë 553 553 $rank = $objQuery->get($tableName, "rank", "$keyIdColumn = ?", array($keyId)); 554 554 $max = $objQuery->max($tableName, "rank", $where); 555 555 556 // 値の調整(逆順)556 // ÃͤÎÄ´À°¡ÊµÕ½ç¡Ë 557 557 if($pos > $max) { 558 558 $position = 1; … … 563 563 } 564 564 565 if( $position > $rank ) $term = "rank - 1"; // 入れ替え先の順位が入れ換え元の順位より大きい場合566 if( $position < $rank ) $term = "rank + 1"; // 入れ替え先の順位が入れ換え元の順位より小さい場合567 568 //-- 指定した順位の商品から移動させる商品までのrankを1つずらす565 if( $position > $rank ) $term = "rank - 1"; //Æþ¤ìÂØ¤¨Àè¤Î½ç°Ì¤¬Æþ¤ì´¹¤¨¸µ¤Î½ç°Ì¤è¤êÂ礤¤¾ì¹ç 566 if( $position < $rank ) $term = "rank + 1"; //Æþ¤ìÂØ¤¨Àè¤Î½ç°Ì¤¬Æþ¤ì´¹¤¨¸µ¤Î½ç°Ì¤è¤ê¾®¤µ¤¤¾ì¹ç 567 568 //--¡¡»ØÄꤷ¤¿½ç°Ì¤Î¾¦Éʤ«¤é°Üư¤µ¤»¤ë¾¦ÉʤޤǤÎrank¤ò£±¤Ä¤º¤é¤¹ 569 569 $sql = "UPDATE $tableName SET rank = $term, update_date = NOW() WHERE rank BETWEEN ? AND ? AND del_flg = 0"; 570 570 if($where != "") { … … 575 575 if( $position < $rank ) $objQuery->exec( $sql, array( $position, $rank - 1 )); 576 576 577 //-- 指定した順位へrankを書き換える。577 //-- »ØÄꤷ¤¿½ç°Ì¤Ørank¤ò½ñ¤´¹¤¨¤ë¡£ 578 578 $sql = "UPDATE $tableName SET rank = ?, update_date = NOW() WHERE $keyIdColumn = ? AND del_flg = 0 "; 579 579 if($where != "") { … … 585 585 } 586 586 587 // ランクを含むレコードの削除588 // レコードごと削除する場合は、$deleteをtrueにする。587 // ¥é¥ó¥¯¤ò´Þ¤à¥ì¥³¡¼¥É¤Îºï½ü 588 // ¥ì¥³¡¼¥É¤´¤Èºï½ü¤¹¤ë¾ì¹ç¤Ï¡¢$delete¤òtrue¤Ë¤¹¤ë¡£ 589 589 function sfDeleteRankRecord($table, $colname, $id, $andwhere = "", $delete = false) { 590 590 $objQuery = new SC_Query(); 591 591 $objQuery->begin(); 592 // 削除レコードのランクを取得する。592 // ºï½ü¥ì¥³¡¼¥É¤Î¥é¥ó¥¯¤ò¼èÆÀ¤¹¤ë¡£ 593 593 $where = "$colname = ?"; 594 594 if($andwhere != "") { … … 598 598 599 599 if(!$delete) { 600 // ランクを最下位にする、DELフラグON600 // ¥é¥ó¥¯¤òºÇ²¼°Ì¤Ë¤¹¤ë¡¢DEL¥Õ¥é¥°ON 601 601 $sqlup = "UPDATE $table SET rank = 0, del_flg = 1, update_date = Now() "; 602 602 $sqlup.= "WHERE $colname = ?"; 603 // UPDATE の実行603 // UPDATE¤Î¼Â¹Ô 604 604 $objQuery->exec($sqlup, array($id)); 605 605 } else { … … 607 607 } 608 608 609 // 追加レコードのランクより上のレコードを一つずらす。609 // Äɲå쥳¡¼¥É¤Î¥é¥ó¥¯¤è¤ê¾å¤Î¥ì¥³¡¼¥É¤ò°ì¤Ä¤º¤é¤¹¡£ 610 610 $where = "rank > ?"; 611 611 if($andwhere != "") { … … 617 617 } 618 618 619 // レコードの存在チェック619 // ¥ì¥³¡¼¥É¤Î¸ºß¥Á¥§¥Ã¥¯ 620 620 function sfIsRecord($table, $col, $arrval, $addwhere = "") { 621 621 $objQuery = new SC_Query(); … … 645 645 } 646 646 647 // チェックボックスの値をマージ647 // ¥Á¥§¥Ã¥¯¥Ü¥Ã¥¯¥¹¤ÎÃͤò¥Þ¡¼¥¸ 648 648 function sfMergeCBValue($keyname, $max) { 649 649 $conv = ""; … … 659 659 } 660 660 661 // html_checkboxes の値をマージして2進数形式に変更する。661 // html_checkboxes¤ÎÃͤò¥Þ¡¼¥¸¤·¤Æ2¿Ê¿ô·Á¼°¤ËÊѹ¹¤¹¤ë¡£ 662 662 function sfMergeCheckBoxes($array, $max) { 663 663 $ret = ""; … … 678 678 679 679 680 // html_checkboxes の値をマージして「-」でつなげる。680 // html_checkboxes¤ÎÃͤò¥Þ¡¼¥¸¤·¤Æ¡Ö-¡×¤Ç¤Ä¤Ê¤²¤ë¡£ 681 681 function sfMergeParamCheckBoxes($array) { 682 682 if(is_array($array)) { … … 694 694 } 695 695 696 // html_checkboxes の値をマージしてSQL検索用に変更する。696 // html_checkboxes¤ÎÃͤò¥Þ¡¼¥¸¤·¤ÆSQL¸¡º÷ÍѤËÊѹ¹¤¹¤ë¡£ 697 697 function sfSearchCheckBoxes($array) { 698 698 $max = 0; … … 718 718 } 719 719 720 // 2 進数形式の値をhtml_checkboxes対応の値に切り替える720 // 2¿Ê¿ô·Á¼°¤ÎÃͤòhtml_checkboxesÂбþ¤ÎÃͤËÀÚ¤êÂØ¤¨¤ë 721 721 function sfSplitCheckBoxes($val) { 722 722 $len = strlen($val); … … 729 729 } 730 730 731 // チェックボックスの値をマージ731 // ¥Á¥§¥Ã¥¯¥Ü¥Ã¥¯¥¹¤ÎÃͤò¥Þ¡¼¥¸ 732 732 function sfMergeCBSearchValue($keyname, $max) { 733 733 $conv = ""; … … 743 743 } 744 744 745 // チェックボックスの値を分解745 // ¥Á¥§¥Ã¥¯¥Ü¥Ã¥¯¥¹¤ÎÃͤòʬ²ò 746 746 function sfSplitCBValue($val, $keyname = "") { 747 747 $len = strlen($val); … … 758 758 } 759 759 760 // キーと値をセットした配列を取得760 // ¥¡¼¤ÈÃͤò¥»¥Ã¥È¤·¤¿ÇÛÎó¤ò¼èÆÀ 761 761 function sfArrKeyValue($arrList, $keyname, $valname, $len_max = "", $keysize = "") { 762 762 … … 783 783 } 784 784 785 // キーと値をセットした配列を取得(値が複数の場合)785 // ¥¡¼¤ÈÃͤò¥»¥Ã¥È¤·¤¿ÇÛÎó¤ò¼èÆÀ(Ãͤ¬Ê£¿ô¤Î¾ì¹ç) 786 786 function sfArrKeyValues($arrList, $keyname, $valname, $len_max = "", $keysize = "", $connect = "") { 787 787 … … 809 809 } 810 810 811 // 配列の値をカンマ区切りで返す。811 // ÇÛÎó¤ÎÃͤò¥«¥ó¥Þ¶èÀÚ¤ê¤ÇÊÖ¤¹¡£ 812 812 function sfGetCommaList($array, $space=true) { 813 813 if (count($array) > 0) { … … 831 831 } 832 832 833 /* 配列の要素をCSVフォーマットで出力する。*/833 /* ÇÛÎó¤ÎÍ×ÁǤòCSV¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç½ÐÎϤ¹¤ë¡£*/ 834 834 function sfGetCSVList($array) { 835 835 if (count($array) > 0) { … … 845 845 } 846 846 847 /* 配列の要素をPDFフォーマットで出力する。*/847 /* ÇÛÎó¤ÎÍ×ÁǤòPDF¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç½ÐÎϤ¹¤ë¡£*/ 848 848 function sfGetPDFList($array) { 849 849 foreach($array as $key => $val) { … … 858 858 /*-----------------------------------------------------------------*/ 859 859 /* check_set_term 860 /* 年月日に別れた2つの期間の妥当性をチェックし、整合性と期間を返す861 /* 引数 (開始年,開始月,開始日,終了年,終了月,終了日)862 /* 戻値 array(1,2,3)863 /* 1.開始年月日(YYYY/MM/DD 000000)864 /* 2.終了年月日(YYYY/MM/DD 235959)865 /* 3.エラー( 0 = OK, 1 = NG )860 /* ǯ·îÆü¤ËÊ̤줿2¤Ä¤Î´ü´Ö¤ÎÂÅÅöÀ¤ò¥Á¥§¥Ã¥¯¤·¡¢À°¹çÀ¤È´ü´Ö¤òÊÖ¤¹ 861 /*¡¡°ú¿ô (³«»Ïǯ,³«»Ï·î,³«»ÏÆü,½ªÎ»Ç¯,½ªÎ»·î,½ªÎ»Æü) 862 /*¡¡ÌáÃÍ array(£±¡¤£²¡¤£³¡Ë 863 /* £±¡¥³«»Ïǯ·îÆü (YYYY/MM/DD 000000) 864 /* £²¡¥½ªÎ»Ç¯·îÆü (YYYY/MM/DD 235959) 865 /* £³¡¥¥¨¥é¡¼ ( 0 = OK, 1 = NG ) 866 866 /*-----------------------------------------------------------------*/ 867 867 function sfCheckSetTerm ( $start_year, $start_month, $start_day, $end_year, $end_month, $end_day ) { 868 868 869 // 期間指定869 // ´ü´Ö»ØÄê 870 870 $error = 0; 871 871 if ( $start_month || $start_day || $start_year){ … … 887 887 } 888 888 889 // エラー箇所の背景色を変更するためのfunction SC_Viewで読み込む889 // ¥¨¥é¡¼²Õ½ê¤ÎÇØ·Ê¿§¤òÊѹ¹¤¹¤ë¤¿¤á¤Îfunction SC_View¤ÇÆÉ¤ß¹þ¤à 890 890 function sfSetErrorStyle(){ 891 891 return 'style="background-color:'.ERR_COLOR.'"'; 892 892 } 893 893 894 /* DB に渡す数値のチェック895 * 10 桁以上はオーバーフローエラーを起こすので。894 /* DB¤ËÅϤ¹¿ôÃͤΥÁ¥§¥Ã¥¯ 895 * 10·å°Ê¾å¤Ï¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¥¨¥é¡¼¤òµ¯¤³¤¹¤Î¤Ç¡£ 896 896 */ 897 897 function sfCheckNumLength( $value ){ … … 907 907 } 908 908 909 // 一致した値のキー名を取得909 // °ìÃפ·¤¿ÃͤΥ¡¼Ì¾¤ò¼èÆÀ 910 910 function sfSearchKey($array, $word, $default) { 911 911 foreach($array as $key => $val) { … … 917 917 } 918 918 919 // カテゴリツリーの取得($products_check:true商品登録済みのものだけ取得)919 // ¥«¥Æ¥´¥ê¥Ä¥ê¡¼¤Î¼èÆÀ($products_check:true¾¦ÉÊÅÐÏ¿ºÑ¤ß¤Î¤â¤Î¤À¤±¼èÆÀ) 920 920 function sfGetCategoryList($addwhere = "", $products_check = false, $head = CATEGORY_HEAD) { 921 921 $objQuery = new SC_Query(); … … 946 946 /* 947 947 for($n = 1; $n < $arrRet[$cnt]['level']; $n++) { 948 $arrList[$id].= " 948 $arrList[$id].= "¡¡"; 949 949 } 950 950 */ … … 957 957 } 958 958 959 // カテゴリツリーの取得(親カテゴリのValue:0)959 // ¥«¥Æ¥´¥ê¥Ä¥ê¡¼¤Î¼èÆÀ¡Ê¿Æ¥«¥Æ¥´¥ê¤ÎValue:0) 960 960 function sfGetLevelCatList($parent_zero = true) { 961 961 $objQuery = new SC_Query(); … … 980 980 /* 981 981 for($n = 1; $n < $arrRet[$cnt]['level']; $n++) { 982 $arrOutput[$cnt].= " 982 $arrOutput[$cnt].= "¡¡"; 983 983 } 984 984 */ … … 1013 1013 } 1014 1014 1015 // SELECT ボックス用リストの作成1015 // SELECT¥Ü¥Ã¥¯¥¹Íѥꥹ¥È¤ÎºîÀ® 1016 1016 function sfGetIDValueList($table, $keyname, $valname) { 1017 1017 $objQuery = new SC_Query(); … … 1030 1030 1031 1031 function sfTrim($str) { 1032 $ret = ereg_replace("^[ 1033 $ret = ereg_replace("[ 1032 $ret = ereg_replace("^[¡¡ \n\r]*", "", $str); 1033 $ret = ereg_replace("[¡¡ \n\r]*$", "", $ret); 1034 1034 return $ret; 1035 1035 } 1036 1036 1037 /* 所属するすべての階層の親IDを配列で返す*/1037 /* ½ê°¤¹¤ë¤¹¤Ù¤Æ¤Î³¬ÁؤοÆID¤òÇÛÎó¤ÇÊÖ¤¹ */ 1038 1038 function sfGetParents($objQuery, $table, $pid_name, $id_name, $id) { 1039 1039 $arrRet = sfGetParentsArray($table, $pid_name, $id_name, $id); 1040 // 配列の先頭1つを削除する。1040 // ÇÛÎó¤ÎÀèÆ¬1¤Ä¤òºï½ü¤¹¤ë¡£ 1041 1041 array_shift($arrRet); 1042 1042 return $arrRet; … … 1044 1044 1045 1045 1046 /* 親IDの配列を元に特定のカラムを取得する。*/1046 /* ¿ÆID¤ÎÇÛÎó¤ò¸µ¤ËÆÃÄê¤Î¥«¥é¥à¤ò¼èÆÀ¤¹¤ë¡£*/ 1047 1047 function sfGetParentsCol($objQuery, $table, $id_name, $col_name, $arrId ) { 1048 1048 $col = $col_name; … … 1063 1063 } 1064 1064 1065 /* 子IDの配列を返す*/1065 /* »ÒID¤ÎÇÛÎó¤òÊÖ¤¹ */ 1066 1066 function sfGetChildsID($table, $pid_name, $id_name, $id) { 1067 1067 $arrRet = sfGetChildrenArray($table, $pid_name, $id_name, $id); … … 1069 1069 } 1070 1070 1071 /* カテゴリ変更時の移動処理*/1071 /* ¥«¥Æ¥´¥êÊѹ¹»þ¤Î°Üư½èÍý */ 1072 1072 function sfMoveCatRank($objQuery, $table, $id_name, $cat_name, $old_catid, $new_catid, $id) { 1073 1073 if ($old_catid == $new_catid) { 1074 1074 return; 1075 1075 } 1076 // 旧カテゴリでのランク削除処理1077 // 移動レコードのランクを取得する。1076 // µì¥«¥Æ¥´¥ê¤Ç¤Î¥é¥ó¥¯ºï½ü½èÍý 1077 // °Üư¥ì¥³¡¼¥É¤Î¥é¥ó¥¯¤ò¼èÆÀ¤¹¤ë¡£ 1078 1078 $where = "$id_name = ?"; 1079 1079 $rank = $objQuery->get($table, "rank", $where, array($id)); 1080 // 削除レコードのランクより上のレコードを一つ下にずらす。1080 // ºï½ü¥ì¥³¡¼¥É¤Î¥é¥ó¥¯¤è¤ê¾å¤Î¥ì¥³¡¼¥É¤ò°ì¤Ä²¼¤Ë¤º¤é¤¹¡£ 1081 1081 $where = "rank > ? AND $cat_name = ?"; 1082 1082 $sqlup = "UPDATE $table SET rank = (rank - 1) WHERE $where"; 1083 1083 $objQuery->exec($sqlup, array($rank, $old_catid)); 1084 // 新カテゴリでの登録処理1085 // 新カテゴリの最大ランクを取得する。1084 // ¿·¥«¥Æ¥´¥ê¤Ç¤ÎÅÐÏ¿½èÍý 1085 // ¿·¥«¥Æ¥´¥ê¤ÎºÇÂç¥é¥ó¥¯¤ò¼èÆÀ¤¹¤ë¡£ 1086 1086 $max_rank = $objQuery->max($table, "rank", "$cat_name = ?", array($new_catid)) + 1; 1087 1087 $where = "$id_name = ?"; … … 1090 1090 } 1091 1091 1092 /* 税金計算*/1092 /* ÀǶâ·×»» */ 1093 1093 function sfTax($price, $tax, $tax_rule) { 1094 1094 $real_tax = $tax / 100; 1095 1095 $ret = $price * $real_tax; 1096 1096 switch($tax_rule) { 1097 // 四捨五入1097 // »Í¼Î¸ÞÆþ 1098 1098 case 1: 1099 1099 $ret = round($ret); 1100 1100 break; 1101 // 切り捨て1101 // ÀÚ¤ê¼Î¤Æ 1102 1102 case 2: 1103 1103 $ret = floor($ret); 1104 1104 break; 1105 // 切り上げ1105 // ÀÚ¤ê¾å¤² 1106 1106 case 3: 1107 1107 $ret = ceil($ret); 1108 1108 break; 1109 // デフォルト:切り上げ1109 // ¥Ç¥Õ¥©¥ë¥È:ÀÚ¤ê¾å¤² 1110 1110 default: 1111 1111 $ret = ceil($ret); … … 1115 1115 } 1116 1116 1117 /* 税金付与*/1117 /* ÀǶâÉÕÍ¿ */ 1118 1118 function sfPreTax($price, $tax, $tax_rule) { 1119 1119 $real_tax = $tax / 100; … … 1121 1121 1122 1122 switch($tax_rule) { 1123 // 四捨五入1123 // »Í¼Î¸ÞÆþ 1124 1124 case 1: 1125 1125 $ret = round($ret); 1126 1126 break; 1127 // 切り捨て1127 // ÀÚ¤ê¼Î¤Æ 1128 1128 case 2: 1129 1129 $ret = floor($ret); 1130 1130 break; 1131 // 切り上げ1131 // ÀÚ¤ê¾å¤² 1132 1132 case 3: 1133 1133 $ret = ceil($ret); 1134 1134 break; 1135 // デフォルト:切り上げ1135 // ¥Ç¥Õ¥©¥ë¥È:ÀÚ¤ê¾å¤² 1136 1136 default: 1137 1137 $ret = ceil($ret); … … 1141 1141 } 1142 1142 1143 // 桁数を指定して四捨五入1143 // ·å¿ô¤ò»ØÄꤷ¤Æ»Í¼Î¸ÞÆþ 1144 1144 function sfRound($value, $pow = 0){ 1145 1145 $adjust = pow(10 ,$pow-1); 1146 1146 1147 // 整数且つ0出なければ桁数指定を行う1147 // À°¿ô³î¤Ä0½Ð¤Ê¤±¤ì¤Ð·å¿ô»ØÄê¤ò¹Ô¤¦ 1148 1148 if(sfIsInt($adjust) and $pow > 1){ 1149 1149 $ret = (round($value * $adjust)/$adjust); … … 1155 1155 } 1156 1156 1157 /* ポイント付与*/1157 /* ¥Ý¥¤¥ó¥ÈÉÕÍ¿ */ 1158 1158 function sfPrePoint($price, $point_rate, $rule = POINT_RULE, $product_id = "") { 1159 1159 if(sfIsInt($product_id)) { … … 1163 1163 1164 1164 $where .= "del_flg = 0 AND campaign_id IN (SELECT campaign_id FROM dtb_campaign_detail where product_id = ? )"; 1165 // 登録(更新)日付順1165 //ÅÐÏ¿(¹¹¿·)ÆüÉÕ½ç 1166 1166 $objQuery->setorder('update_date DESC'); 1167 // キャンペーンポイントの取得1167 //¥¥ã¥ó¥Ú¡¼¥ó¥Ý¥¤¥ó¥È¤Î¼èÆÀ 1168 1168 $arrRet = $objQuery->select("campaign_name, campaign_point_rate", "dtb_campaign", $where, array($product_id)); 1169 1169 } 1170 // 複数のキャンペーンに登録されている商品は、最新のキャンペーンからポイントを取得1170 //Ê£¿ô¤Î¥¥ã¥ó¥Ú¡¼¥ó¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¾¦Éʤϡ¢ºÇ¿·¤Î¥¥ã¥ó¥Ú¡¼¥ó¤«¤é¥Ý¥¤¥ó¥È¤ò¼èÆÀ 1171 1171 if($arrRet[0]['campaign_point_rate'] != "") { 1172 1172 $campaign_point_rate = $arrRet[0]['campaign_point_rate']; … … 1177 1177 $ret = $price * $real_point; 1178 1178 switch($rule) { 1179 // 四捨五入1179 // »Í¼Î¸ÞÆþ 1180 1180 case 1: 1181 1181 $ret = round($ret); 1182 1182 break; 1183 // 切り捨て1183 // ÀÚ¤ê¼Î¤Æ 1184 1184 case 2: 1185 1185 $ret = floor($ret); 1186 1186 break; 1187 // 切り上げ1187 // ÀÚ¤ê¾å¤² 1188 1188 case 3: 1189 1189 $ret = ceil($ret); 1190 1190 break; 1191 // デフォルト:切り上げ1191 // ¥Ç¥Õ¥©¥ë¥È:ÀÚ¤ê¾å¤² 1192 1192 default: 1193 1193 $ret = ceil($ret); 1194 1194 break; 1195 1195 } 1196 // キャンペーン商品の場合1196 //¥¥ã¥ó¥Ú¡¼¥ó¾¦Éʤξì¹ç 1197 1197 if($campaign_point_rate != "") { 1198 $ret = "(".$arrRet[0]['campaign_name']." ポイント率".$campaign_point_rate."%)".$ret;1198 $ret = "(".$arrRet[0]['campaign_name']."¥Ý¥¤¥ó¥ÈΨ".$campaign_point_rate."%)".$ret; 1199 1199 } 1200 1200 return $ret; 1201 1201 } 1202 1202 1203 /* 規格分類の件数取得*/1203 /* µ¬³ÊʬÎà¤Î·ï¿ô¼èÆÀ */ 1204 1204 function sfGetClassCatCount() { 1205 1205 $sql = "select count(dtb_class.class_id) as count, dtb_class.class_id "; … … 1209 1209 $objQuery = new SC_Query(); 1210 1210 $arrList = $objQuery->getall($sql); 1211 // キーと値をセットした配列を取得1211 // ¥¡¼¤ÈÃͤò¥»¥Ã¥È¤·¤¿ÇÛÎó¤ò¼èÆÀ 1212 1212 $arrRet = sfArrKeyValue($arrList, 'class_id', 'count'); 1213 1213 … … 1215 1215 } 1216 1216 1217 /* 規格の登録*/1217 /* µ¬³Ê¤ÎÅÐÏ¿ */ 1218 1218 function sfInsertProductClass($objQuery, $arrList, $product_id) { 1219 // すでに規格登録があるかどうかをチェックする。1219 // ¤¹¤Ç¤Ëµ¬³ÊÅÐÏ¿¤¬¤¢¤ë¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£ 1220 1220 $where = "product_id = ? AND classcategory_id1 <> 0 AND classcategory_id1 <> 0"; 1221 1221 $count = $objQuery->count("dtb_products_class", $where, array($product_id)); 1222 1222 1223 // すでに規格登録がない場合1223 // ¤¹¤Ç¤Ëµ¬³ÊÅÐÏ¿¤¬¤Ê¤¤¾ì¹ç 1224 1224 if($count == 0) { 1225 // 既存規格の削除1225 // ´û¸µ¬³Ê¤Îºï½ü 1226 1226 $where = "product_id = ?"; 1227 1227 $objQuery->delete("dtb_products_class", $where, array($product_id)); … … 1241 1241 } 1242 1242 1243 // INSERT の実行1243 // INSERT¤Î¼Â¹Ô 1244 1244 $objQuery->insert("dtb_products_class", $sqlval); 1245 1245 } … … 1253 1253 } 1254 1254 1255 /* 文末の「/」をなくす*/1255 /* ʸËö¤Î¡Ö/¡×¤ò¤Ê¤¯¤¹ */ 1256 1256 function sfTrimURL($url) { 1257 1257 $ret = ereg_replace("[/]+$", "", $url); … … 1259 1259 } 1260 1260 1261 /* 商品規格情報の取得*/1261 /* ¾¦Éʵ¬³Ê¾ðÊó¤Î¼èÆÀ */ 1262 1262 function sfGetProductsClass($arrID) { 1263 1263 list($product_id, $classcategory_id1, $classcategory_id2) = $arrID; … … 1270 1270 } 1271 1271 1272 // 商品規格取得1272 // ¾¦Éʵ¬³Ê¼èÆÀ 1273 1273 $objQuery = new SC_Query(); 1274 1274 $col = "product_id, deliv_fee, name, product_code, main_list_image, main_image, price01, price02, point_rate, product_class_id, classcategory_id1, classcategory_id2, class_id1, class_id2, stock, stock_unlimited, sale_limit, sale_unlimited"; … … 1280 1280 } 1281 1281 1282 /* 集計情報を元に最終計算*/1282 /* ½¸·×¾ðÊó¤ò¸µ¤ËºÇ½ª·×»» */ 1283 1283 function sfTotalConfirm($arrData, $objPage, $objCartSess, $arrInfo, $objCustomer = "") { 1284 // 商品の合計個数1284 // ¾¦Éʤιç·×¸Ä¿ô 1285 1285 $total_quantity = $objCartSess->getTotalQuantity(true); 1286 1286 1287 // 税金の取得1287 // ÀǶâ¤Î¼èÆÀ 1288 1288 $arrData['tax'] = $objPage->tpl_total_tax; 1289 // 小計の取得1289 // ¾®·×¤Î¼èÆÀ 1290 1290 $arrData['subtotal'] = $objPage->tpl_total_pretax; 1291 1291 1292 // 合計送料の取得1292 // ¹ç·×Á÷ÎÁ¤Î¼èÆÀ 1293 1293 $arrData['deliv_fee'] = 0; 1294 1294 1295 // 商品ごとの送料が有効の場合1295 // ¾¦Éʤ´¤È¤ÎÁ÷ÎÁ¤¬Í¸ú¤Î¾ì¹ç 1296 1296 if (OPTION_PRODUCT_DELIV_FEE == 1) { 1297 1297 $arrData['deliv_fee']+= $objCartSess->getAllProductsDelivFee(); 1298 1298 } 1299 1299 1300 // 配送業者の送料が有効の場合1300 // ÇÛÁ÷¶È¼Ô¤ÎÁ÷ÎÁ¤¬Í¸ú¤Î¾ì¹ç 1301 1301 if (OPTION_DELIV_FEE == 1) { 1302 // 送料の合計を計算する1302 // Á÷ÎÁ¤Î¹ç·×¤ò·×»»¤¹¤ë 1303 1303 $arrData['deliv_fee']+= sfGetDelivFee($arrData['deliv_pref'], $arrData['payment_id']); 1304 1304 } 1305 1305 1306 // 送料無料の購入数が設定されている場合1306 // Á÷ÎÁ̵ÎÁ¤Î¹ØÆþ¿ô¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç 1307 1307 if(DELIV_FREE_AMOUNT > 0) { 1308 1308 if($total_quantity >= DELIV_FREE_AMOUNT) { … … 1311 1311 } 1312 1312 1313 // 送料無料条件が設定されている場合1313 // Á÷ÎÁ̵ÎÁ¾ò·ï¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç 1314 1314 if($arrInfo['free_rule'] > 0) { 1315 // 小計が無料条件を超えている場合1315 // ¾®·×¤¬ÌµÎÁ¾ò·ï¤òͤ¨¤Æ¤¤¤ë¾ì¹ç 1316 1316 if($arrData['subtotal'] >= $arrInfo['free_rule']) { 1317 1317 $arrData['deliv_fee'] = 0; … … 1319 1319 } 1320 1320 1321 // 合計の計算1322 $arrData['total'] = $objPage->tpl_total_pretax; // 商品合計1323 $arrData['total']+= $arrData['deliv_fee']; // 送料1324 $arrData['total']+= $arrData['charge']; // 手数料1325 // お支払い合計1321 // ¹ç·×¤Î·×»» 1322 $arrData['total'] = $objPage->tpl_total_pretax; // ¾¦Éʹç·× 1323 $arrData['total']+= $arrData['deliv_fee']; // Á÷ÎÁ 1324 $arrData['total']+= $arrData['charge']; // ¼ê¿ôÎÁ 1325 // ¤ª»Ùʧ¤¤¹ç·× 1326 1326 $arrData['payment_total'] = $arrData['total'] - ($arrData['use_point'] * POINT_VALUE); 1327 // 加算ポイントの計算1327 // ²Ã»»¥Ý¥¤¥ó¥È¤Î·×»» 1328 1328 $arrData['add_point'] = sfGetAddPoint($objPage->tpl_total_point, $arrData['use_point'], $arrInfo); 1329 1329 1330 1330 if($objCustomer != "") { 1331 // 誕生日月であった場合1331 // ÃÂÀ¸Æü·î¤Ç¤¢¤Ã¤¿¾ì¹ç 1332 1332 if($objCustomer->isBirthMonth()) { 1333 1333 $arrData['birth_point'] = BIRTH_MONTH_POINT; … … 1343 1343 } 1344 1344 1345 /* カート内商品の集計処理*/1345 /* ¥«¡¼¥ÈÆâ¾¦Éʤν¸·×½èÍý */ 1346 1346 function sfTotalCart($objPage, $objCartSess, $arrInfo) { 1347 // 規格名一覧1347 // µ¬³Ê̾°ìÍ÷ 1348 1348 $arrClassName = sfGetIDValueList("dtb_class", "class_id", "name"); 1349 // 規格分類名一覧1349 // µ¬³ÊʬÎà̾°ìÍ÷ 1350 1350 $arrClassCatName = sfGetIDValueList("dtb_classcategory", "classcategory_id", "name"); 1351 1351 1352 $objPage->tpl_total_pretax = 0; // 費用合計(税込み)1353 $objPage->tpl_total_tax = 0; // 消費税合計1354 $objPage->tpl_total_point = 0; // ポイント合計1355 1356 // カート内情報の取得1352 $objPage->tpl_total_pretax = 0; // ÈñÍѹç·×(Àǹþ¤ß) 1353 $objPage->tpl_total_tax = 0; // ¾ÃÈñÀǹç·× 1354 $objPage->tpl_total_point = 0; // ¥Ý¥¤¥ó¥È¹ç·× 1355 1356 // ¥«¡¼¥ÈÆâ¾ðÊó¤Î¼èÆÀ 1357 1357 $arrCart = $objCartSess->getCartList(); 1358 1358 $max = count($arrCart); … … 1360 1360 1361 1361 for ($i = 0; $i < $max; $i++) { 1362 // 商品規格情報の取得1362 // ¾¦Éʵ¬³Ê¾ðÊó¤Î¼èÆÀ 1363 1363 $arrData = sfGetProductsClass($arrCart[$i]['id']); 1364 1364 $limit = ""; 1365 // DB に存在する商品1365 // DB¤Ë¸ºß¤¹¤ë¾¦ÉÊ 1366 1366 if (count($arrData) > 0) { 1367 1367 1368 // 購入制限数を求める。1368 // ¹ØÆþÀ©¸Â¿ô¤òµá¤á¤ë¡£ 1369 1369 if ($arrData['stock_unlimited'] != '1' && $arrData['sale_unlimited'] != '1') { 1370 1370 if($arrData['sale_limit'] < $arrData['stock']) { … … 1383 1383 1384 1384 if($limit != "" && $limit < $arrCart[$i]['quantity']) { 1385 // カート内商品数を制限に合わせる1385 // ¥«¡¼¥ÈÆâ¾¦ÉÊ¿ô¤òÀ©¸Â¤Ë¹ç¤ï¤»¤ë 1386 1386 $objCartSess->setProductValue($arrCart[$i]['id'], 'quantity', $limit); 1387 1387 $quantity = $limit; 1388 $objPage->tpl_message = " ※「" . $arrData['name'] . "」は販売制限しております、一度にこれ以上の購入はできません。";1388 $objPage->tpl_message = "¢¨¡Ö" . $arrData['name'] . "¡×¤ÏÈÎÇäÀ©¸Â¤·¤Æ¤ª¤ê¤Þ¤¹¡¢°ìÅ٤ˤ³¤ì°Ê¾å¤Î¹ØÆþ¤Ï¤Ç¤¤Þ¤»¤ó¡£"; 1389 1389 } else { 1390 1390 $quantity = $arrCart[$i]['quantity']; … … 1399 1399 $objPage->arrProductsClass[$cnt]['classcategory_name2'] = $arrClassCatName[$arrData['classcategory_id2']]; 1400 1400 1401 // 画像サイズ1401 // ²èÁü¥µ¥¤¥º 1402 1402 list($image_width, $image_height) = getimagesize(IMAGE_SAVE_DIR . basename($objPage->arrProductsClass[$cnt]["main_image"])); 1403 1403 $objPage->arrProductsClass[$cnt]["tpl_image_width"] = $image_width + 60; 1404 1404 $objPage->arrProductsClass[$cnt]["tpl_image_height"] = $image_height + 80; 1405 1405 1406 // 価格の登録1406 // ²Á³Ê¤ÎÅÐÏ¿ 1407 1407 if ($arrData['price02'] != "") { 1408 1408 $objCartSess->setProductValue($arrCart[$i]['id'], 'price', $arrData['price02']); … … 1412 1412 $objPage->arrProductsClass[$cnt]['uniq_price'] = $arrData['price01']; 1413 1413 } 1414 // ポイント付与率の登録1414 // ¥Ý¥¤¥ó¥ÈÉÕͿΨ¤ÎÅÐÏ¿ 1415 1415 $objCartSess->setProductValue($arrCart[$i]['id'], 'point_rate', $arrData['point_rate']); 1416 // 商品ごとの合計金額1416 // ¾¦Éʤ´¤È¤Î¹ç·×¶â³Û 1417 1417 $objPage->arrProductsClass[$cnt]['total_pretax'] = $objCartSess->getProductTotal($arrInfo, $arrCart[$i]['id']); 1418 // 送料の合計を計算する1418 // Á÷ÎÁ¤Î¹ç·×¤ò·×»»¤¹¤ë 1419 1419 $objPage->tpl_total_deliv_fee+= ($arrData['deliv_fee'] * $arrCart[$i]['quantity']); 1420 1420 $cnt++; 1421 1421 } else { 1422 // DB に商品が見つからない場合はカート商品の削除1422 // DB¤Ë¾¦Éʤ¬¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¤Ï¥«¡¼¥È¾¦Éʤκï½ü 1423 1423 $objCartSess->delProductKey('id', $arrCart[$i]['id']); 1424 1424 } 1425 1425 } 1426 1426 1427 // 全商品合計金額(税込み)1427 // Á´¾¦Éʹç·×¶â³Û(Àǹþ¤ß) 1428 1428 $objPage->tpl_total_pretax = $objCartSess->getAllProductsTotal($arrInfo); 1429 // 全商品合計消費税1429 // Á´¾¦Éʹç·×¾ÃÈñÀÇ 1430 1430 $objPage->tpl_total_tax = $objCartSess->getAllProductsTax($arrInfo); 1431 // 全商品合計ポイント1431 // Á´¾¦Éʹç·×¥Ý¥¤¥ó¥È 1432 1432 $objPage->tpl_total_point = $objCartSess->getAllProductsPoint(); 1433 1433 … … 1435 1435 } 1436 1436 1437 /* DB から取り出した日付の文字列を調整する。*/1437 /* DB¤«¤é¼è¤ê½Ð¤·¤¿ÆüÉÕ¤Îʸ»úÎó¤òÄ´À°¤¹¤ë¡£*/ 1438 1438 function sfDispDBDate($dbdate, $time = true) { 1439 1439 list($y, $m, $d, $H, $M) = split("[- :]", $dbdate); … … 1472 1472 1473 1473 1474 // 都道府県、支払い方法から配送料金を取得する1474 // ÅÔÆ»Éܸ©¡¢»Ùʧ¤¤ÊýË¡¤«¤éÇÛÁ÷ÎÁ¶â¤ò¼èÆÀ¤¹¤ë 1475 1475 function sfGetDelivFee($pref, $payment_id = "") { 1476 1476 $objQuery = new SC_Query(); … … 1478 1478 $deliv_id = ""; 1479 1479 1480 // 支払い方法が指定されている場合は、対応した配送業者を取得する1480 // »Ùʧ¤¤ÊýË¡¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢Âбþ¤·¤¿ÇÛÁ÷¶È¼Ô¤ò¼èÆÀ¤¹¤ë 1481 1481 if($payment_id != "") { 1482 1482 $where = "del_flg = 0 AND payment_id = ?"; 1483 1483 $arrRet = $objQuery->select("deliv_id", "dtb_payment", $where, array($payment_id)); 1484 1484 $deliv_id = $arrRet[0]['deliv_id']; 1485 // 支払い方法が指定されていない場合は、先頭の配送業者を取得する1485 // »Ùʧ¤¤ÊýË¡¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢ÀèÆ¬¤ÎÇÛÁ÷¶È¼Ô¤ò¼èÆÀ¤¹¤ë 1486 1486 } else { 1487 1487 $where = "del_flg = 0"; … … 1492 1492 } 1493 1493 1494 // 配送業者から配送料を取得1494 // ÇÛÁ÷¶È¼Ô¤«¤éÇÛÁ÷ÎÁ¤ò¼èÆÀ 1495 1495 if($deliv_id != "") { 1496 1496 1497 // 都道府県が指定されていない場合は、東京都の番号を指定しておく1497 // ÅÔÆ»Éܸ©¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢ÅìµþÅÔ¤ÎÈÖ¹æ¤ò»ØÄꤷ¤Æ¤ª¤¯ 1498 1498 if($pref == "") { 1499 1499 $pref = 13; … … 1507 1507 } 1508 1508 1509 /* 支払い方法の取得*/1509 /* »Ùʧ¤¤ÊýË¡¤Î¼èÆÀ */ 1510 1510 function sfGetPayment() { 1511 1511 $objQuery = new SC_Query(); 1512 // 購入金額が条件額以下の項目を取得1512 // ¹ØÆþ¶â³Û¤¬¾ò·ï³Û°Ê²¼¤Î¹àÌܤò¼èÆÀ 1513 1513 $where = "del_flg = 0"; 1514 1514 $objQuery->setorder("fix, rank DESC"); … … 1517 1517 } 1518 1518 1519 /* 配列をキー名ごとの配列に変更する*/1519 /* ÇÛÎó¤ò¥¡¼Ì¾¤´¤È¤ÎÇÛÎó¤ËÊѹ¹¤¹¤ë */ 1520 1520 function sfSwapArray($array) { 1521 1521 $max = count($array); … … 1528 1528 } 1529 1529 1530 /* かけ算をする(Smarty用) */1530 /* ¤«¤±»»¤ò¤¹¤ë¡ÊSmartyÍÑ) */ 1531 1531 function sfMultiply($num1, $num2) { 1532 1532 return ($num1 * $num2); 1533 1533 } 1534 1534 1535 /* DB に登録されたテンプレートメールの送信*/1535 /* DB¤ËÅÐÏ¿¤µ¤ì¤¿¥Æ¥ó¥×¥ì¡¼¥È¥á¡¼¥ë¤ÎÁ÷¿® */ 1536 1536 function sfSendTemplateMail($to, $to_name, $template_id, $objPage) { 1537 1537 global $arrMAILTPLPATH; 1538 1538 $objQuery = new SC_Query(); 1539 // メールテンプレート情報の取得1539 // ¥á¡¼¥ë¥Æ¥ó¥×¥ì¡¼¥È¾ðÊó¤Î¼èÆÀ 1540 1540 $where = "template_id = ?"; 1541 1541 $arrRet = $objQuery->select("subject, header, footer", "dtb_mailtemplate", $where, array($template_id)); … … 1548 1548 1549 1549 $objMailView = new SC_SiteView(); 1550 // メール本文の取得1550 // ¥á¡¼¥ëËÜʸ¤Î¼èÆÀ 1551 1551 $objMailView->assignobj($objPage); 1552 1552 $body = $objMailView->fetch($arrMAILTPLPATH[$template_id]); 1553 1553 1554 // メール送信処理1554 // ¥á¡¼¥ëÁ÷¿®½èÍý 1555 1555 $objSendMail = new GC_SendMail(); 1556 1556 $from = $arrInfo['email03']; … … 1559 1559 $objSendMail->setItem('', $tosubject, $body, $from, $arrInfo['shop_name'], $from, $error, $error); 1560 1560 $objSendMail->setTo($to, $to_name); 1561 $objSendMail->sendMail(); // メール送信1562 } 1563 1564 /* 受注完了メール送信*/1561 $objSendMail->sendMail(); // ¥á¡¼¥ëÁ÷¿® 1562 } 1563 1564 /* ¼õÃí´°Î»¥á¡¼¥ëÁ÷¿® */ 1565 1565 function sfSendOrderMail($order_id, $template_id, $subject = "", $header = "", $footer = "", $send = true) { 1566 1566 global $arrMAILTPLPATH; … … 1574 1574 1575 1575 if($subject == "" && $header == "" && $footer == "") { 1576 // メールテンプレート情報の取得1576 // ¥á¡¼¥ë¥Æ¥ó¥×¥ì¡¼¥È¾ðÊó¤Î¼èÆÀ 1577 1577 $where = "template_id = ?"; 1578 1578 $arrRet = $objQuery->select("subject, header, footer", "dtb_mailtemplate", $where, array('1')); … … 1586 1586 } 1587 1587 1588 // 受注情報の取得1588 // ¼õÃí¾ðÊó¤Î¼èÆÀ 1589 1589 $where = "order_id = ?"; 1590 1590 $arrRet = $objQuery->select("*", "dtb_order", $where, array($order_id)); … … 1594 1594 $objPage->Message_tmp = $arrOrder['message']; 1595 1595 1596 // 顧客情報の取得1596 // ¸ÜµÒ¾ðÊó¤Î¼èÆÀ 1597 1597 $customer_id = $arrOrder['customer_id']; 1598 1598 $arrRet = $objQuery->select("point", "dtb_customer", "customer_id = ?", array($customer_id)); … … 1602 1602 $objPage->arrOrder = $arrOrder; 1603 1603 1604 // その他決済情報1604 //¤½¤Î¾·èºÑ¾ðÊó 1605 1605 if($arrOrder['memo02'] != "") { 1606 1606 $arrOther = unserialize($arrOrder['memo02']); … … 1615 1615 } 1616 1616 1617 // 都道府県変換1617 // ÅÔÆ»Éܸ©ÊÑ´¹ 1618 1618 global $arrPref; 1619 1619 $objPage->arrOrder['deliv_pref'] = $arrPref[$objPage->arrOrder['deliv_pref']]; … … 1625 1625 1626 1626 $objMailView = new SC_SiteView(); 1627 // メール本文の取得1627 // ¥á¡¼¥ëËÜʸ¤Î¼èÆÀ 1628 1628 $objMailView->assignobj($objPage); 1629 1629 $body = $objMailView->fetch($arrMAILTPLPATH[$template_id]); 1630 1630 1631 // メール送信処理1631 // ¥á¡¼¥ëÁ÷¿®½èÍý 1632 1632 $objSendMail = new GC_SendMail(); 1633 1633 $bcc = $arrInfo['email01']; … … 1638 1638 1639 1639 $objSendMail->setItem('', $tosubject, $body, $from, $arrInfo['shop_name'], $from, $error, $error, $bcc); 1640 $objSendMail->setTo($arrOrder["order_email"], $arrOrder["order_name01"] . " ". $arrOrder["order_name02"] ." 様");1641 1642 1643 // 送信フラグ:trueの場合は、送信する。1640 $objSendMail->setTo($arrOrder["order_email"], $arrOrder["order_name01"] . " ". $arrOrder["order_name02"] ." ÍÍ"); 1641 1642 1643 // Á÷¿®¥Õ¥é¥°:true¤Î¾ì¹ç¤Ï¡¢Á÷¿®¤¹¤ë¡£ 1644 1644 if($send) { 1645 1645 if ($objSendMail->sendMail()) { … … 1651 1651 } 1652 1652 1653 // テンプレートを使用したメールの送信1653 // ¥Æ¥ó¥×¥ì¡¼¥È¤ò»ÈÍѤ·¤¿¥á¡¼¥ë¤ÎÁ÷¿® 1654 1654 function sfSendTplMail($to, $subject, $tplpath, $objPage) { 1655 1655 $objMailView = new SC_SiteView(); 1656 1656 $objSiteInfo = new SC_SiteInfo(); 1657 1657 $arrInfo = $objSiteInfo->data; 1658 // メール本文の取得1658 // ¥á¡¼¥ëËÜʸ¤Î¼èÆÀ 1659 1659 $objPage->tpl_shopname=$arrInfo['shop_name']; 1660 1660 $objPage->tpl_infoemail = $arrInfo['email02']; 1661 1661 $objMailView->assignobj($objPage); 1662 1662 $body = $objMailView->fetch($tplpath); 1663 // メール送信処理1663 // ¥á¡¼¥ëÁ÷¿®½èÍý 1664 1664 $objSendMail = new GC_SendMail(); 1665 1665 $to = mb_encode_mimeheader($to); … … 1671 1671 } 1672 1672 1673 // 通常のメール送信1673 // Ä̾ï¤Î¥á¡¼¥ëÁ÷¿® 1674 1674 function sfSendMail($to, $subject, $body) { 1675 1675 $objSiteInfo = new SC_SiteInfo(); 1676 1676 $arrInfo = $objSiteInfo->data; 1677 // メール送信処理1677 // ¥á¡¼¥ëÁ÷¿®½èÍý 1678 1678 $objSendMail = new GC_SendMail(); 1679 1679 $bcc = $arrInfo['email01']; … … 1684 1684 } 1685 1685 1686 // 件名にテンプレートを用いる1686 //·ï̾¤Ë¥Æ¥ó¥×¥ì¡¼¥È¤òÍѤ¤¤ë 1687 1687 function sfMakeSubject($subject){ 1688 1688 … … 1701 1701 } 1702 1702 1703 // メール配信履歴への登録1703 // ¥á¡¼¥ëÇÛ¿®ÍúÎò¤Ø¤ÎÅÐÏ¿ 1704 1704 function sfSaveMailHistory($order_id, $template_id, $subject, $body) { 1705 1705 $sqlval['subject'] = $subject; … … 1718 1718 } 1719 1719 1720 /* 会員情報を一時受注テーブルへ*/1720 /* ²ñ°÷¾ðÊó¤ò°ì»þ¼õÃí¥Æ¡¼¥Ö¥ë¤Ø */ 1721 1721 function sfGetCustomerSqlVal($uniqid, $sqlval) { 1722 1722 $objCustomer = new SC_Customer(); 1723 // 会員情報登録処理1723 // ²ñ°÷¾ðÊóÅÐÏ¿½èÍý 1724 1724 if ($objCustomer->isLoginSuccess()) { 1725 // 登録データの作成1725 // ÅÐÏ¿¥Ç¡¼¥¿¤ÎºîÀ® 1726 1726 $sqlval['order_temp_id'] = $uniqid; 1727 1727 $sqlval['update_date'] = 'Now()'; … … 1747 1747 } 1748 1748 1749 // 受注一時テーブルへの書き込み処理1749 // ¼õÃí°ì»þ¥Æ¡¼¥Ö¥ë¤Ø¤Î½ñ¤¹þ¤ß½èÍý 1750 1750 function sfRegistTempOrder($uniqid, $sqlval) { 1751 1751 if($uniqid != "") { 1752 // 既存データのチェック1752 // ´û¸¥Ç¡¼¥¿¤Î¥Á¥§¥Ã¥¯ 1753 1753 $objQuery = new SC_Query(); 1754 1754 $where = "order_temp_id = ?"; 1755 1755 $cnt = $objQuery->count("dtb_order_temp", $where, array($uniqid)); 1756 // 既存データがない場合1756 // ´û¸¥Ç¡¼¥¿¤¬¤Ê¤¤¾ì¹ç 1757 1757 if ($cnt == 0) { 1758 // 初回書き込み時に会員の登録済み情報を取り込む1758 // ½é²ó½ñ¤¹þ¤ß»þ¤Ë²ñ°÷¤ÎÅÐÏ¿ºÑ¤ß¾ðÊó¤ò¼è¤ê¹þ¤à 1759 1759 $sqlval = sfGetCustomerSqlVal($uniqid, $sqlval); 1760 1760 $sqlval['create_date'] = "now()"; … … 1766 1766 } 1767 1767 1768 /* 会員のメルマガ登録があるかどうかのチェック(仮会員を含まない) */1768 /* ²ñ°÷¤Î¥á¥ë¥Þ¥¬ÅÐÏ¿¤¬¤¢¤ë¤«¤É¤¦¤«¤Î¥Á¥§¥Ã¥¯(²¾²ñ°÷¤ò´Þ¤Þ¤Ê¤¤) */ 1769 1769 function sfCheckCustomerMailMaga($email) { 1770 1770 $col = "T1.email, T1.mail_flag, T2.customer_id"; … … 1773 1773 $objQuery = new SC_Query(); 1774 1774 $arrRet = $objQuery->select($col, $from, $where, array($email)); 1775 // 会員のメールアドレスが登録されている1775 // ²ñ°÷¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤¬ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë 1776 1776 if($arrRet[0]['customer_id'] != "") { 1777 1777 return true; … … 1780 1780 } 1781 1781 1782 // カードの処理結果を返す1782 // ¥«¡¼¥É¤Î½èÍý·ë²Ì¤òÊÖ¤¹ 1783 1783 function sfGetAuthonlyResult($dir, $file_name, $name01, $name02, $card_no, $card_exp, $amount, $order_id, $jpo_info = "10"){ 1784 1784 1785 $path = $dir .$file_name; // cgi ファイルのフルパス生成1786 $now_dir = getcwd(); // require がうまくいかないので、cgi実行ディレクトリに移動する1785 $path = $dir .$file_name; // cgi¥Õ¥¡¥¤¥ë¤Î¥Õ¥ë¥Ñ¥¹À¸À® 1786 $now_dir = getcwd(); // require¤¬¤¦¤Þ¤¯¤¤¤«¤Ê¤¤¤Î¤Ç¡¢cgi¼Â¹Ô¥Ç¥£¥ì¥¯¥È¥ê¤Ë°Üư¤¹¤ë 1787 1787 chdir($dir); 1788 1788 1789 // パイプ渡しでコマンドラインからcgi起動1789 // ¥Ñ¥¤¥×ÅϤ·¤Ç¥³¥Þ¥ó¥É¥é¥¤¥ó¤«¤écgiµ¯Æ° 1790 1790 $cmd = "$path card_no=$card_no name01=$name01 name02=$name02 card_exp=$card_exp amount=$amount order_id=$order_id jpo_info=$jpo_info"; 1791 1791 1792 1792 $tmpResult = popen($cmd, "r"); 1793 1793 1794 // 結果取得1794 // ·ë²Ì¼èÆÀ 1795 1795 while( ! FEOF ( $tmpResult ) ) { 1796 1796 $result .= FGETS($tmpResult); 1797 1797 } 1798 pclose($tmpResult); // パイプを閉じる1799 chdir($now_dir); // 元にいたディレクトリに帰る1800 1801 // 結果を連想配列へ格納1798 pclose($tmpResult); // ¥Ñ¥¤¥×¤òÊĤ¸¤ë 1799 chdir($now_dir); //¡¡¸µ¤Ë¤¤¤¿¥Ç¥£¥ì¥¯¥È¥ê¤Ëµ¢¤ë 1800 1801 // ·ë²Ì¤òÏ¢ÁÛÇÛÎ󤨳ÊǼ 1802 1802 $result = ereg_replace("&$", "", $result); 1803 1803 foreach (explode("&",$result) as $data) { … … 1809 1809 } 1810 1810 1811 // 受注一時テーブルから情報を取得する1811 // ¼õÃí°ì»þ¥Æ¡¼¥Ö¥ë¤«¤é¾ðÊó¤ò¼èÆÀ¤¹¤ë 1812 1812 function sfGetOrderTemp($order_temp_id) { 1813 1813 $objQuery = new SC_Query(); … … 1817 1817 } 1818 1818 1819 // カテゴリID取得判定用のグローバル変数(一度取得されていたら再取得しないようにする)1819 // ¥«¥Æ¥´¥êID¼èÆÀȽÄêÍѤΥ°¥í¡¼¥Ð¥ëÊÑ¿ô(°ìÅÙ¼èÆÀ¤µ¤ì¤Æ¤¤¤¿¤éºÆ¼èÆÀ¤·¤Ê¤¤¤è¤¦¤Ë¤¹¤ë) 1820 1820 $g_category_on = false; 1821 1821 $g_category_id = ""; 1822 1822 1823 /* 選択中のカテゴリを取得する*/1823 /* ÁªÂòÃæ¤Î¥«¥Æ¥´¥ê¤ò¼èÆÀ¤¹¤ë */ 1824 1824 function sfGetCategoryId($product_id, $category_id) { 1825 1825 global $g_category_on; … … 1835 1835 $g_category_id = $category_id; 1836 1836 } else { 1837 // 不正な場合は、0を返す。1837 // ÉÔÀµ¤Ê¾ì¹ç¤Ï¡¢0¤òÊÖ¤¹¡£ 1838 1838 $g_category_id = 0; 1839 1839 } … … 1842 1842 } 1843 1843 1844 // ROOTID 取得判定用のグローバル変数(一度取得されていたら再取得しないようにする)1844 // ROOTID¼èÆÀȽÄêÍѤΥ°¥í¡¼¥Ð¥ëÊÑ¿ô(°ìÅÙ¼èÆÀ¤µ¤ì¤Æ¤¤¤¿¤éºÆ¼èÆÀ¤·¤Ê¤¤¤è¤¦¤Ë¤¹¤ë) 1845 1845 $g_root_on = false; 1846 1846 $g_root_id = ""; 1847 1847 1848 /* 選択中のアイテムのルートカテゴリIDを取得する*/1848 /* ÁªÂòÃæ¤Î¥¢¥¤¥Æ¥à¤Î¥ë¡¼¥È¥«¥Æ¥´¥êID¤ò¼èÆÀ¤¹¤ë */ 1849 1849 function sfGetRootId() { 1850 1850 global $g_root_on; … … 1854 1854 $objQuery = new SC_Query(); 1855 1855 if($_GET['product_id'] != "" || $_GET['category_id'] != "") { 1856 // 選択中のカテゴリIDを判定する1856 // ÁªÂòÃæ¤Î¥«¥Æ¥´¥êID¤òȽÄꤹ¤ë 1857 1857 $category_id = sfGetCategoryId($_GET['product_id'], $_GET['category_id']); 1858 // ROOT カテゴリIDの取得1858 // ROOT¥«¥Æ¥´¥êID¤Î¼èÆÀ 1859 1859 $arrRet = sfGetParents($objQuery, 'dtb_category', 'parent_category_id', 'category_id', $category_id); 1860 1860 $root_id = $arrRet[0]; 1861 1861 } else { 1862 // ROOT カテゴリIDをなしに設定する1862 // ROOT¥«¥Æ¥´¥êID¤ò¤Ê¤·¤ËÀßÄꤹ¤ë 1863 1863 $root_id = ""; 1864 1864 } … … 1868 1868 } 1869 1869 1870 /* カテゴリから商品を検索する場合のWHERE文と値を返す*/1870 /* ¥«¥Æ¥´¥ê¤«¤é¾¦Éʤò¸¡º÷¤¹¤ë¾ì¹ç¤ÎWHEREʸ¤ÈÃͤòÊÖ¤¹ */ 1871 1871 function sfGetCatWhere($category_id) { 1872 // 子カテゴリIDの取得1872 // »Ò¥«¥Æ¥´¥êID¤Î¼èÆÀ 1873 1873 $arrRet = sfGetChildsID("dtb_category", "parent_category_id", "category_id", $category_id); 1874 1874 $tmp_where = ""; … … 1885 1885 } 1886 1886 1887 /* 加算ポイントの計算式*/1887 /* ²Ã»»¥Ý¥¤¥ó¥È¤Î·×»»¼° */ 1888 1888 function sfGetAddPoint($totalpoint, $use_point, $arrInfo) { 1889 // 購入商品の合計ポイントから利用したポイントのポイント換算価値を引く方式1889 // ¹ØÆþ¾¦Éʤιç·×¥Ý¥¤¥ó¥È¤«¤éÍøÍѤ·¤¿¥Ý¥¤¥ó¥È¤Î¥Ý¥¤¥ó¥È´¹»»²ÁÃͤò°ú¤¯Êý¼° 1890 1890 $add_point = $totalpoint - intval($use_point * ($arrInfo['point_rate'] / 100)); 1891 1891 … … 1896 1896 } 1897 1897 1898 /* 一意かつ予測されにくいID */1898 /* °ì°Õ¤«¤Äͽ¬¤µ¤ì¤Ë¤¯¤¤ID */ 1899 1899 function sfGetUniqRandomId($head = "") { 1900 // 予測されないようにランダム文字列を付与する。1900 // ͽ¬¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¥é¥ó¥À¥àʸ»úÎó¤òÉÕÍ¿¤¹¤ë¡£ 1901 1901 $random = gfMakePassword(8); 1902 // 同一ホスト内で一意なIDを生成1902 // Ʊ°ì¥Û¥¹¥ÈÆâ¤Ç°ì°Õ¤ÊID¤òÀ¸À® 1903 1903 $id = uniqid($head); 1904 1904 return ($id . $random); 1905 1905 } 1906 1906 1907 // カテゴリ別オススメ品の取得1907 // ¥«¥Æ¥´¥êÊÌ¥ª¥¹¥¹¥áÉʤμèÆÀ 1908 1908 function sfGetBestProducts( $conn, $category_id = 0){ 1909 // 既に登録されている内容を取得する1909 // ´û¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤ëÆâÍÆ¤ò¼èÆÀ¤¹¤ë 1910 1910 $sql = "SELECT name, main_image, main_list_image, price01_min, price01_max, price02_min, price02_max, point_rate, 1911 1911 A.product_id, A.comment FROM dtb_best_products as A LEFT JOIN vw_products_allclass AS allcls … … 1916 1916 } 1917 1917 1918 // 特殊制御文字の手動エスケープ1918 // ÆÃ¼ìÀ©¸æÊ¸»ú¤Î¼êư¥¨¥¹¥±¡¼¥× 1919 1919 function sfManualEscape($data) { 1920 // 配列でない場合1920 // ÇÛÎó¤Ç¤Ê¤¤¾ì¹ç 1921 1921 if(!is_array($data)) { 1922 1922 if (DB_TYPE == "pgsql") { … … 1930 1930 } 1931 1931 1932 // 配列の場合1932 // ÇÛÎó¤Î¾ì¹ç 1933 1933 foreach($data as $val) { 1934 1934 if (DB_TYPE == "pgsql") { … … 1946 1946 } 1947 1947 1948 // 受注番号、利用ポイント、加算ポイントから最終ポイントを取得1948 // ¼õÃíÈÖ¹æ¡¢ÍøÍѥݥ¤¥ó¥È¡¢²Ã»»¥Ý¥¤¥ó¥È¤«¤éºÇ½ª¥Ý¥¤¥ó¥È¤ò¼èÆÀ 1949 1949 function sfGetCustomerPoint($order_id, $use_point, $add_point) { 1950 1950 $objQuery = new SC_Query(); … … 1962 1962 } 1963 1963 1964 /* ドメイン間で有効なセッションのスタート*/1964 /* ¥É¥á¥¤¥ó´Ö¤Ç͸ú¤Ê¥»¥Ã¥·¥ç¥ó¤Î¥¹¥¿¡¼¥È */ 1965 1965 function sfDomainSessionStart() { 1966 1966 $ret = session_id(); 1967 1967 /* 1968 ヘッダーを送信していてもsession_start()が必要なページがあるので1969 コメントアウトしておく1968 ¥Ø¥Ã¥À¡¼¤òÁ÷¿®¤·¤Æ¤¤¤Æ¤âsession_start()¤¬É¬Íפʥڡ¼¥¸¤¬¤¢¤ë¤Î¤Ç 1969 ¥³¥á¥ó¥È¥¢¥¦¥È¤·¤Æ¤ª¤¯ 1970 1970 if($ret == "" && !headers_sent()) { 1971 1971 */ 1972 1972 if($ret == "") { 1973 /* セッションパラメータの指定1974 ・ブラウザを閉じるまで有効1975 ・すべてのパスで有効1976 ・同じドメイン間で共有*/1973 /* ¥»¥Ã¥·¥ç¥ó¥Ñ¥é¥á¡¼¥¿¤Î»ØÄê 1974 ¡¦¥Ö¥é¥¦¥¶¤òÊĤ¸¤ë¤Þ¤Ç͸ú 1975 ¡¦¤¹¤Ù¤Æ¤Î¥Ñ¥¹¤Ç͸ú 1976 ¡¦Æ±¤¸¥É¥á¥¤¥ó´Ö¤Ç¶¦Í */ 1977 1977 session_set_cookie_params (0, "/", DOMAIN_NAME); 1978 1978 1979 1979 if(!ini_get("session.auto_start")){ 1980 // セッション開始1980 // ¥»¥Ã¥·¥ç¥ó³«»Ï 1981 1981 session_start(); 1982 1982 } … … 1984 1984 } 1985 1985 1986 /* 文字列に強制的に改行を入れる*/1986 /* ʸ»úÎó¤Ë¶¯À©Åª¤Ë²þ¹Ô¤òÆþ¤ì¤ë */ 1987 1987 function sfPutBR($str, $size) { 1988 1988 $i = 0; … … 2006 2006 } 2007 2007 2008 // 二回以上繰り返されているスラッシュ[/]を一つに変換する。2008 // Æó²ó°Ê¾å·«¤êÊÖ¤µ¤ì¤Æ¤¤¤ë¥¹¥é¥Ã¥·¥å[/]¤ò°ì¤Ä¤ËÊÑ´¹¤¹¤ë¡£ 2009 2009 function sfRmDupSlash($istr){ 2010 2010 if(ereg("^http://", $istr)) { … … 2064 2064 } 2065 2065 2066 // 年、月、締め日から、先月の締め日+1、今月の締め日を求める。2066 // ǯ¡¢·î¡¢Äù¤áÆü¤«¤é¡¢Àè·î¤ÎÄù¤áÆü+1¡¢º£·î¤ÎÄù¤áÆü¤òµá¤á¤ë¡£ 2067 2067 function sfTermMonth($year, $month, $close_day) { 2068 2068 $end_year = $year; 2069 2069 $end_month = $month; 2070 2070 2071 // 開始月が終了月と同じか否か2071 // ³«»Ï·î¤¬½ªÎ»·î¤ÈƱ¤¸¤«Èݤ« 2072 2072 $same_month = false; 2073 2073 2074 // 該当月の末日を求める。2074 // ³ºÅö·î¤ÎËöÆü¤òµá¤á¤ë¡£ 2075 2075 $end_last_day = date("d", mktime(0, 0, 0, $month + 1, 0, $year)); 2076 2076 2077 // 月の末日が締め日より少ない場合2077 // ·î¤ÎËöÆü¤¬Äù¤áÆü¤è¤ê¾¯¤Ê¤¤¾ì¹ç 2078 2078 if($end_last_day < $close_day) { 2079 // 締め日を月末日に合わせる2079 // Äù¤áÆü¤ò·îËöÆü¤Ë¹ç¤ï¤»¤ë 2080 2080 $end_day = $end_last_day; 2081 2081 } else { … … 2083 2083 } 2084 2084 2085 // 前月の取得2085 // Á°·î¤Î¼èÆÀ 2086 2086 $tmp_year = date("Y", mktime(0, 0, 0, $month, 0, $year)); 2087 2087 $tmp_month = date("m", mktime(0, 0, 0, $month, 0, $year)); 2088 // 前月の末日を求める。2088 // Á°·î¤ÎËöÆü¤òµá¤á¤ë¡£ 2089 2089 $start_last_day = date("d", mktime(0, 0, 0, $month, 0, $year)); 2090 2090 2091 // 前月の末日が締め日より少ない場合2091 // Á°·î¤ÎËöÆü¤¬Äù¤áÆü¤è¤ê¾¯¤Ê¤¤¾ì¹ç 2092 2092 if ($start_last_day < $close_day) { 2093 // 月末日に合わせる2093 // ·îËöÆü¤Ë¹ç¤ï¤»¤ë 2094 2094 $tmp_day = $start_last_day; 2095 2095 } else { … … 2097 2097 } 2098 2098 2099 // 先月の末日の翌日を取得する2099 // Àè·î¤ÎËöÆü¤ÎÍâÆü¤ò¼èÆÀ¤¹¤ë 2100 2100 $start_year = date("Y", mktime(0, 0, 0, $tmp_month, $tmp_day + 1, $tmp_year)); 2101 2101 $start_month = date("m", mktime(0, 0, 0, $tmp_month, $tmp_day + 1, $tmp_year)); 2102 2102 $start_day = date("d", mktime(0, 0, 0, $tmp_month, $tmp_day + 1, $tmp_year)); 2103 2103 2104 // 日付の作成2104 // ÆüÉդκîÀ® 2105 2105 $start_date = sprintf("%d/%d/%d 00:00:00", $start_year, $start_month, $start_day); 2106 2106 $end_date = sprintf("%d/%d/%d 23:59:59", $end_year, $end_month, $end_day); … … 2109 2109 } 2110 2110 2111 // PDF 用のRGBカラーを返す2111 // PDFÍѤÎRGB¥«¥é¡¼¤òÊÖ¤¹ 2112 2112 function sfGetPdfRgb($hexrgb) { 2113 2113 $hex = substr($hexrgb, 0, 2); … … 2123 2123 } 2124 2124 2125 // メルマガ仮登録とメール配信2125 //¥á¥ë¥Þ¥¬²¾ÅÐÏ¿¤È¥á¡¼¥ëÇÛ¿® 2126 2126 function sfRegistTmpMailData($mail_flag, $email){ 2127 2127 $objQuery = new SC_Query(); … … 2136 2136 $arrRegistMailMagazine["update_date"] = 'now()'; 2137 2137 2138 // メルマガ仮登録用フラグ2138 //¥á¥ë¥Þ¥¬²¾ÅÐÏ¿Íѥե饰 2139 2139 $flag = $objQuery->count("dtb_customer_mail_temp", "email=?", array($email)); 2140 2140 $objConn->query("BEGIN"); … … 2149 2149 } 2150 2150 $objConn->query("COMMIT"); 2151 $subject = sfMakeSubject(' メルマガ仮登録が完了しました。');2151 $subject = sfMakeSubject('¥á¥ë¥Þ¥¬²¾ÅÐÏ¿¤¬´°Î»¤·¤Þ¤·¤¿¡£'); 2152 2152 $objPage->tpl_url = SSL_URL."mailmagazine/regist.php?temp_id=".$arrRegistMailMagazine['temp_id']; 2153 2153 switch ($mail_flag){ 2154 2154 case '1': 2155 $objPage->tpl_name = " 登録";2155 $objPage->tpl_name = "ÅÐÏ¿"; 2156 2156 $objPage->tpl_kindname = "HTML"; 2157 2157 break; 2158 2158 2159 2159 case '2': 2160 $objPage->tpl_name = " 登録";2161 $objPage->tpl_kindname = " テキスト";2160 $objPage->tpl_name = "ÅÐÏ¿"; 2161 $objPage->tpl_kindname = "¥Æ¥¥¹¥È"; 2162 2162 break; 2163 2163 2164 2164 case '3': 2165 $objPage->tpl_name = " 解除";2165 $objPage->tpl_name = "²ò½ü"; 2166 2166 break; 2167 2167 } … … 2170 2170 } 2171 2171 2172 // 再帰的に多段配列を検索して一次元配列(Hidden引渡し用配列)に変換する。2172 // ºÆµ¢Åª¤Ë¿ÃÊÇÛÎó¤ò¸¡º÷¤·¤Æ°ì¼¡¸µÇÛÎó(Hidden°úÅϤ·ÍÑÇÛÎó)¤ËÊÑ´¹¤¹¤ë¡£ 2173 2173 function sfMakeHiddenArray($arrSrc, $arrDst = array(), $parent_key = "") { 2174 2174 if(is_array($arrSrc)) { … … 2189 2189 } 2190 2190 2191 // DB 取得日時をタイムに変換2191 // DB¼èÆÀÆü»þ¤ò¥¿¥¤¥à¤ËÊÑ´¹ 2192 2192 function sfDBDatetoTime($db_date) { 2193 2193 $date = ereg_replace("\..*$","",$db_date); … … 2196 2196 } 2197 2197 2198 // 出力の際にテンプレートを切り替えられる2198 // ½ÐÎϤκݤ˥ƥó¥×¥ì¡¼¥È¤òÀÚ¤êÂØ¤¨¤é¤ì¤ë 2199 2199 /* 2200 2200 index.php?tpl=test.tpl … … 2230 2230 } 2231 2231 2232 // 会員編集登録処理2232 //²ñ°÷ÊÔ½¸ÅÐÏ¿½èÍý 2233 2233 function sfEditCustomerData($array, $arrRegistColumn) { 2234 2234 $objQuery = new SC_Query(); … … 2249 2249 } 2250 2250 2251 //-- パスワードの更新がある場合は暗号化。(更新がない場合はUPDATE文を構成しない)2251 //-- ¥Ñ¥¹¥ï¡¼¥É¤Î¹¹¿·¤¬¤¢¤ë¾ì¹ç¤Ï°Å¹æ²½¡£¡Ê¹¹¿·¤¬¤Ê¤¤¾ì¹ç¤ÏUPDATEʸ¤ò¹½À®¤·¤Ê¤¤¡Ë 2252 2252 if ($array["password"] != DEFAULT_PASSWORD) $arrRegist["password"] = sha1($array["password"] . ":" . AUTH_MAGIC); 2253 2253 $arrRegist["update_date"] = "NOW()"; … … 2257 2257 $sqlval['email'] = $array['email']; 2258 2258 $sqlval['mail_flag'] = $array['mail_flag']; 2259 //-- 編集登録実行2259 //-- ÊÔ½¸ÅÐÏ¿¼Â¹Ô 2260 2260 $objQuery->begin(); 2261 2261 $objQuery->update("dtb_customer", $arrRegist, "customer_id = ? ", array($array['customer_id'])); … … 2265 2265 } 2266 2266 2267 // PHP のmb_convert_encoding関数をSmartyでも使えるようにする2267 // PHP¤Îmb_convert_encoding´Ø¿ô¤òSmarty¤Ç¤â»È¤¨¤ë¤è¤¦¤Ë¤¹¤ë 2268 2268 function sf_mb_convert_encoding($str, $encode = 'CHAR_CODE') { 2269 2269 return mb_convert_encoding($str, $encode); 2270 2270 } 2271 2271 2272 // PHP のmktime関数をSmartyでも使えるようにする2272 // PHP¤Îmktime´Ø¿ô¤òSmarty¤Ç¤â»È¤¨¤ë¤è¤¦¤Ë¤¹¤ë 2273 2273 function sf_mktime($format, $hour=0, $minute=0, $second=0, $month=1, $day=1, $year=1999) { 2274 2274 return date($format,mktime($hour, $minute, $second, $month, $day, $year)); 2275 2275 } 2276 2276 2277 // PHP のdate関数をSmartyでも使えるようにする2277 // PHP¤Îdate´Ø¿ô¤òSmarty¤Ç¤â»È¤¨¤ë¤è¤¦¤Ë¤¹¤ë 2278 2278 function sf_date($format, $timestamp = '') { 2279 2279 return date( $format, $timestamp); 2280 2280 } 2281 2281 2282 // チェックボックスの型を変換する2282 // ¥Á¥§¥Ã¥¯¥Ü¥Ã¥¯¥¹¤Î·¿¤òÊÑ´¹¤¹¤ë 2283 2283 function sfChangeCheckBox($data , $tpl = false){ 2284 2284 if ($tpl) { … … 2300 2300 $sql = ""; 2301 2301 2302 // テーブル内容の削除2302 //¥Æ¡¼¥Ö¥ëÆâÍÆ¤Îºï½ü 2303 2303 $objQuery->query("DELETE FROM dtb_category_count"); 2304 2304 $objQuery->query("DELETE FROM dtb_category_total_count"); 2305 2305 2306 // 各カテゴリ内の商品数を数えて格納2306 //³Æ¥«¥Æ¥´¥êÆâ¤Î¾¦ÉÊ¿ô¤ò¿ô¤¨¤Æ³ÊǼ 2307 2307 $sql = " INSERT INTO dtb_category_count(category_id, product_count, create_date) "; 2308 2308 $sql .= " SELECT T1.category_id, count(T2.category_id), now() FROM dtb_category AS T1 LEFT JOIN dtb_products AS T2 "; … … 2312 2312 $objQuery->query($sql); 2313 2313 2314 // 子カテゴリ内の商品数を集計する2314 //»Ò¥«¥Æ¥´¥êÆâ¤Î¾¦ÉÊ¿ô¤ò½¸·×¤¹¤ë 2315 2315 $arrCat = $objQuery->getAll("SELECT * FROM dtb_category"); 2316 2316 … … 2318 2318 foreach($arrCat as $key => $val){ 2319 2319 2320 // 子ID一覧を取得2320 // »ÒID°ìÍ÷¤ò¼èÆÀ 2321 2321 $arrRet = sfGetChildrenArray('dtb_category', 'parent_category_id', 'category_id', $val['category_id']); 2322 2322 $line = sfGetCommaList($arrRet); … … 2330 2330 } 2331 2331 2332 // 2 つの配列を用いて連想配列を作成する2332 // 2¤Ä¤ÎÇÛÎó¤òÍѤ¤¤ÆÏ¢ÁÛÇÛÎó¤òºîÀ®¤¹¤ë 2333 2333 function sfarrCombine($arrKeys, $arrValues) { 2334 2334 … … 2348 2348 } 2349 2349 2350 /* 階層構造のテーブルから子ID配列を取得する*/2350 /* ³¬Áع½Â¤¤Î¥Æ¡¼¥Ö¥ë¤«¤é»ÒIDÇÛÎó¤ò¼èÆÀ¤¹¤ë */ 2351 2351 function sfGetChildrenArray($table, $pid_name, $id_name, $id) { 2352 2352 $objQuery = new SC_Query(); … … 2369 2369 } 2370 2370 2371 /* 親ID直下の子IDをすべて取得する*/2371 /* ¿ÆIDľ²¼¤Î»ÒID¤ò¤¹¤Ù¤Æ¼èÆÀ¤¹¤ë */ 2372 2372 function sfGetChildrenArraySub($arrData, $pid_name, $id_name, $arrPID) { 2373 2373 $arrChildren = array(); … … 2385 2385 2386 2386 2387 /* 階層構造のテーブルから親ID配列を取得する*/2387 /* ³¬Áع½Â¤¤Î¥Æ¡¼¥Ö¥ë¤«¤é¿ÆIDÇÛÎó¤ò¼èÆÀ¤¹¤ë */ 2388 2388 function sfGetParentsArray($table, $pid_name, $id_name, $id) { 2389 2389 $objQuery = new SC_Query(); … … 2407 2407 } 2408 2408 2409 /* 子ID所属する親IDを取得する*/2409 /* »ÒID½ê°¤¹¤ë¿ÆID¤ò¼èÆÀ¤¹¤ë */ 2410 2410 function sfGetParentsArraySub($arrData, $pid_name, $id_name, $child) { 2411 2411 $max = count($arrData); … … 2420 2420 } 2421 2421 2422 /* 階層構造のテーブルから与えられたIDの兄弟を取得する*/2422 /* ³¬Áع½Â¤¤Î¥Æ¡¼¥Ö¥ë¤«¤éÍ¿¤¨¤é¤ì¤¿ID¤Î·»Äï¤ò¼èÆÀ¤¹¤ë */ 2423 2423 function sfGetBrothersArray($arrData, $pid_name, $id_name, $arrPID) { 2424 2424 $max = count($arrData); … … 2426 2426 $arrBrothers = array(); 2427 2427 foreach($arrPID as $id) { 2428 // 親IDを検索する2428 // ¿ÆID¤ò¸¡º÷¤¹¤ë 2429 2429 for($i = 0; $i < $max; $i++) { 2430 2430 if($arrData[$i][$id_name] == $id) { … … 2433 2433 } 2434 2434 } 2435 // 兄弟IDを検索する2435 // ·»ÄïID¤ò¸¡º÷¤¹¤ë 2436 2436 for($i = 0; $i < $max; $i++) { 2437 2437 if($arrData[$i][$pid_name] == $parent) { … … 2443 2443 } 2444 2444 2445 /* 階層構造のテーブルから与えられたIDの直属の子を取得する*/2445 /* ³¬Áع½Â¤¤Î¥Æ¡¼¥Ö¥ë¤«¤éÍ¿¤¨¤é¤ì¤¿ID¤Îľ°¤Î»Ò¤ò¼èÆÀ¤¹¤ë */ 2446 2446 function sfGetUnderChildrenArray($arrData, $pid_name, $id_name, $parent) { 2447 2447 $max = count($arrData); 2448 2448 2449 2449 $arrChildren = array(); 2450 // 子IDを検索する2450 // »ÒID¤ò¸¡º÷¤¹¤ë 2451 2451 for($i = 0; $i < $max; $i++) { 2452 2452 if($arrData[$i][$pid_name] == $parent) { … … 2458 2458 2459 2459 2460 // カテゴリツリーの取得2460 // ¥«¥Æ¥´¥ê¥Ä¥ê¡¼¤Î¼èÆÀ 2461 2461 function sfGetCatTree($parent_category_id, $count_check = false) { 2462 2462 $objQuery = new SC_Query(); … … 2473 2473 $col .= " ttl.product_count"; 2474 2474 $from = "dtb_category as cat left join dtb_category_total_count as ttl on ttl.category_id = cat.category_id"; 2475 // 登録商品数のチェック2475 // ÅÐÏ¿¾¦ÉÊ¿ô¤Î¥Á¥§¥Ã¥¯ 2476 2476 if($count_check) { 2477 2477 $where = "del_flg = 0 AND product_count > 0"; … … 2496 2496 } 2497 2497 2498 // 親カテゴリーを連結した文字列を取得する2498 // ¿Æ¥«¥Æ¥´¥ê¡¼¤òÏ¢·ë¤·¤¿Ê¸»úÎó¤ò¼èÆÀ¤¹¤ë 2499 2499 function sfGetCatCombName($category_id){ 2500 // 商品が属するカテゴリIDを縦に取得2500 // ¾¦Éʤ¬Â°¤¹¤ë¥«¥Æ¥´¥êID¤ò½Ä¤Ë¼èÆÀ 2501 2501 $objQuery = new SC_Query(); 2502 2502 $arrCatID = sfGetParents($objQuery, "dtb_category", "parent_category_id", "category_id", $category_id); 2503 2503 $ConbName = ""; 2504 2504 2505 // カテゴリー名称を取得する2505 // ¥«¥Æ¥´¥ê¡¼Ì¾¾Î¤ò¼èÆÀ¤¹¤ë 2506 2506 foreach($arrCatID as $key => $val){ 2507 2507 $sql = "SELECT category_name FROM dtb_category WHERE category_id = ?"; … … 2510 2510 $ConbName .= $CatName . ' | '; 2511 2511 } 2512 // 最後の | をカットする2512 // ºÇ¸å¤Î ¡Ã ¤ò¥«¥Ã¥È¤¹¤ë 2513 2513 $ConbName = substr_replace($ConbName, "", strlen($ConbName) - 2, 2); 2514 2514 … … 2516 2516 } 2517 2517 2518 // 指定したカテゴリーIDの大カテゴリーを取得する2518 // »ØÄꤷ¤¿¥«¥Æ¥´¥ê¡¼ID¤ÎÂ祫¥Æ¥´¥ê¡¼¤ò¼èÆÀ¤¹¤ë 2519 2519 function GetFirstCat($category_id){ 2520 // 商品が属するカテゴリIDを縦に取得2520 // ¾¦Éʤ¬Â°¤¹¤ë¥«¥Æ¥´¥êID¤ò½Ä¤Ë¼èÆÀ 2521 2521 $objQuery = new SC_Query(); 2522 2522 $arrRet = array(); … … 2524 2524 $arrRet['id'] = $arrCatID[0]; 2525 2525 2526 // カテゴリー名称を取得する2526 // ¥«¥Æ¥´¥ê¡¼Ì¾¾Î¤ò¼èÆÀ¤¹¤ë 2527 2527 $sql = "SELECT category_name FROM dtb_category WHERE category_id = ?"; 2528 2528 $arrVal = array($arrRet['id']); … … 2532 2532 } 2533 2533 2534 //MySQL 用のSQL文に変更する2534 //MySQLÍѤÎSQLʸ¤ËÊѹ¹¤¹¤ë 2535 2535 function sfChangeMySQL($sql){ 2536 // 改行、タブを1スペースに変換2536 // ²þ¹Ô¡¢¥¿¥Ö¤ò1¥¹¥Ú¡¼¥¹¤ËÊÑ´¹ 2537 2537 $sql = preg_replace("/[\r\n\t]/"," ",$sql); 2538 2538 2539 $sql = sfChangeView($sql); // view 表をインラインビューに変換する2540 $sql = sfChangeILIKE($sql); // ILIKE 検索をLIKE検索に変換する2541 $sql = sfChangeRANDOM($sql); // RANDOM() をRAND()に変換する2539 $sql = sfChangeView($sql); // viewɽ¤ò¥¤¥ó¥é¥¤¥ó¥Ó¥å¡¼¤ËÊÑ´¹¤¹¤ë 2540 $sql = sfChangeILIKE($sql); // ILIKE¸¡º÷¤òLIKE¸¡º÷¤ËÊÑ´¹¤¹¤ë 2541 $sql = sfChangeRANDOM($sql); // RANDOM()¤òRAND()¤ËÊÑ´¹¤¹¤ë 2542 2542 2543 2543 return $sql; 2544 2544 } 2545 2545 2546 // SQL の中にviewが存在しているかチェックを行う。2546 // SQL¤ÎÃæ¤Ëview¤¬Â¸ºß¤·¤Æ¤¤¤ë¤«¥Á¥§¥Ã¥¯¤ò¹Ô¤¦¡£ 2547 2547 function sfInArray($sql){ 2548 2548 global $arrView; … … 2557 2557 } 2558 2558 2559 // SQL シングルクォート対応2559 // SQL¥·¥ó¥°¥ë¥¯¥©¡¼¥ÈÂбþ 2560 2560 function sfQuoteSmart($in){ 2561 2561 … … 2571 2571 } 2572 2572 2573 // view 表をインラインビューに変換する2573 // viewɽ¤ò¥¤¥ó¥é¥¤¥ó¥Ó¥å¡¼¤ËÊÑ´¹¤¹¤ë 2574 2574 function sfChangeView($sql){ 2575 2575 global $arrView; … … 2578 2578 $arrViewTmp = $arrView; 2579 2579 2580 // view のwhereを変換2580 // view¤Îwhere¤òÊÑ´¹ 2581 2581 foreach($arrViewTmp as $key => $val){ 2582 2582 $arrViewTmp[$key] = strtr($arrViewTmp[$key], $arrViewWhere); 2583 2583 } 2584 2584 2585 // view を変換2585 // view¤òÊÑ´¹ 2586 2586 $changesql = strtr($sql, $arrViewTmp); 2587 2587 … … 2589 2589 } 2590 2590 2591 // ILIKE 検索をLIKE検索に変換する2591 // ILIKE¸¡º÷¤òLIKE¸¡º÷¤ËÊÑ´¹¤¹¤ë 2592 2592 function sfChangeILIKE($sql){ 2593 2593 $changesql = eregi_replace("(ILIKE )", "LIKE BINARY ", $sql); … … 2595 2595 } 2596 2596 2597 // RANDOM() をRAND()に変換する2597 // RANDOM()¤òRAND()¤ËÊÑ´¹¤¹¤ë 2598 2598 function sfChangeRANDOM($sql){ 2599 2599 $changesql = eregi_replace("( RANDOM)", " RAND", $sql); … … 2601 2601 } 2602 2602 2603 // view のwhereを置換する2603 // view¤Îwhere¤òÃÖ´¹¤¹¤ë 2604 2604 function sfViewWhere($target, $where = "", $arrval = array(), $option = ""){ 2605 2605 global $arrViewWhere; … … 2612 2612 } 2613 2613 2614 // ディレクトリ以下のファイルを再帰的にコピー2614 // ¥Ç¥£¥ì¥¯¥È¥ê°Ê²¼¤Î¥Õ¥¡¥¤¥ë¤òºÆµ¢Åª¤Ë¥³¥Ô¡¼ 2615 2615 function sfCopyDir($src, $des, $mess, $override = false){ 2616 2616 if(!is_dir($src)){ … … 2621 2621 $mod= stat($src); 2622 2622 2623 // ディレクトリがなければ作成する2623 // ¥Ç¥£¥ì¥¯¥È¥ê¤¬¤Ê¤±¤ì¤ÐºîÀ®¤¹¤ë 2624 2624 if(!file_exists($des)) { 2625 2625 if(!mkdir($des, $mod[2])) { … … 2630 2630 $fileArray=glob( $src."*" ); 2631 2631 foreach( $fileArray as $key => $data_ ){ 2632 // CVS 管理ファイルはコピーしない2632 // CVS´ÉÍý¥Õ¥¡¥¤¥ë¤Ï¥³¥Ô¡¼¤·¤Ê¤¤ 2633 2633 if(ereg("/CVS/Entries", $data_)) { 2634 2634 break; … … 2647 2647 }else{ 2648 2648 if(!$override && file_exists($des.$data)) { 2649 $mess.= $des.$data . " :ファイルが存在します\n";2649 $mess.= $des.$data . "¡§¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Þ¤¹\n"; 2650 2650 } else { 2651 2651 if(@copy( $data_, $des.$data)) { 2652 $mess.= $des.$data . " :コピー成功\n";2652 $mess.= $des.$data . "¡§¥³¥Ô¡¼À®¸ù\n"; 2653 2653 } else { 2654 $mess.= $des.$data . " :コピー失敗\n";2654 $mess.= $des.$data . "¡§¥³¥Ô¡¼¼ºÇÔ\n"; 2655 2655 } 2656 2656 } … … 2662 2662 } 2663 2663 2664 // 指定したフォルダ内のファイルを全て削除する2664 // »ØÄꤷ¤¿¥Õ¥©¥ë¥ÀÆâ¤Î¥Õ¥¡¥¤¥ë¤òÁ´¤Æºï½ü¤¹¤ë 2665 2665 function sfDelFile($dir){ 2666 2666 $dh = opendir($dir); 2667 // フォルダ内のファイルを削除2667 // ¥Õ¥©¥ë¥ÀÆâ¤Î¥Õ¥¡¥¤¥ë¤òºï½ü 2668 2668 while($file = readdir($dh)){ 2669 2669 if ($file == "." or $file == "..") continue; … … 2679 2679 } 2680 2680 } 2681 // フォルダを削除2681 // ¥Õ¥©¥ë¥À¤òºï½ü 2682 2682 return rmdir($dir); 2683 2683 … … 2685 2685 2686 2686 /* 2687 * 関数名:sfWriteFile2688 * 引数1 :書き込むデータ2689 * 引数2 :ファイルパス2690 * 引数3 :書き込みタイプ2691 * 引数4 :パーミッション2692 * 戻り値:結果フラグ 成功なら true 失敗ならfalse2693 * 説明 :ファイル書き出し2687 * ´Ø¿ô̾¡§sfWriteFile 2688 * °ú¿ô1 ¡§½ñ¤¹þ¤à¥Ç¡¼¥¿ 2689 * °ú¿ô2 ¡§¥Õ¥¡¥¤¥ë¥Ñ¥¹ 2690 * °ú¿ô3 ¡§½ñ¤¹þ¤ß¥¿¥¤¥× 2691 * °ú¿ô4 ¡§¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó 2692 * Ìá¤êÃÍ¡§·ë²Ì¥Õ¥é¥° À®¸ù¤Ê¤é true ¼ºÇԤʤé false 2693 * ÀâÌÀ¡¡¡§¥Õ¥¡¥¤¥ë½ñ¤½Ð¤· 2694 2694 */ 2695 2695 function sfWriteFile($str, $path, $type, $permission = "") { 2696 // ファイルを開く2696 //¥Õ¥¡¥¤¥ë¤ò³«¤¯ 2697 2697 if (!($file = fopen ($path, $type))) { 2698 2698 return false; 2699 2699 } 2700 2700 2701 // ファイルロック2701 //¥Õ¥¡¥¤¥ë¥í¥Ã¥¯ 2702 2702 flock ($file, LOCK_EX); 2703 // ファイルの書き込み2703 //¥Õ¥¡¥¤¥ë¤Î½ñ¤¹þ¤ß 2704 2704 fputs ($file, $str); 2705 // ファイルロックの解除2705 //¥Õ¥¡¥¤¥ë¥í¥Ã¥¯¤Î²ò½ü 2706 2706 flock ($file, LOCK_UN); 2707 // ファイルを閉じる2707 //¥Õ¥¡¥¤¥ë¤òÊĤ¸¤ë 2708 2708 fclose ($file); 2709 // 権限を指定2709 // ¸¢¸Â¤ò»ØÄê 2710 2710 if($permission != "") { 2711 2711 chmod($path, $permission); … … 2716 2716 2717 2717 function sfFlush($output = " ", $sleep = 0){ 2718 // 実行時間を制限しない2718 // ¼Â¹Ô»þ´Ö¤òÀ©¸Â¤·¤Ê¤¤ 2719 2719 set_time_limit(0); 2720 // 出力をバッファリングしない(==日本語自動変換もしない)2720 // ½ÐÎϤò¥Ð¥Ã¥Õ¥¡¥ê¥ó¥°¤·¤Ê¤¤(==ÆüËܸ켫ưÊÑ´¹¤â¤·¤Ê¤¤) 2721 2721 ob_end_clean(); 2722 2722 2723 // IE のために256バイト空文字出力2723 // IE¤Î¤¿¤á¤Ë256¥Ð¥¤¥È¶õʸ»ú½ÐÎÏ 2724 2724 echo str_pad('',256); 2725 2725 2726 // 出力はブランクだけでもいいと思う2726 // ½ÐÎϤϥ֥é¥ó¥¯¤À¤±¤Ç¤â¤¤¤¤¤È»×¤¦ 2727 2727 echo $output; 2728 // 出力をフラッシュする2728 // ½ÐÎϤò¥Õ¥é¥Ã¥·¥å¤¹¤ë 2729 2729 flush(); 2730 2730 … … 2732 2732 ob_start(); 2733 2733 2734 // 時間のかかる処理2734 // »þ´Ö¤Î¤«¤«¤ë½èÍý 2735 2735 sleep($sleep); 2736 2736 } 2737 2737 2738 // @version の記載があるファイルからバージョンを取得する。2738 // @version¤ÎµºÜ¤¬¤¢¤ë¥Õ¥¡¥¤¥ë¤«¤é¥Ð¡¼¥¸¥ç¥ó¤ò¼èÆÀ¤¹¤ë¡£ 2739 2739 function sfGetFileVersion($path) { 2740 2740 if(file_exists($path)) { … … 2754 2754 } 2755 2755 2756 // 指定したURLに対してPOSTでデータを送信する2756 // »ØÄꤷ¤¿URL¤ËÂФ·¤ÆPOST¤Ç¥Ç¡¼¥¿¤òÁ÷¿®¤¹¤ë 2757 2757 function sfSendPostData($url, $arrData, $arrOkCode = array()){ 2758 2758 require_once(DATA_PATH . "module/Request.php"); 2759 2759 2760 // 送信インスタンス生成2760 // Á÷¿®¥¤¥ó¥¹¥¿¥ó¥¹À¸À® 2761 2761 $req = new HTTP_Request($url); 2762 2762 2763 $req->addHeader('User-Agent', 'DoCoMo/2.0 2763 $req->addHeader('User-Agent', 'DoCoMo/2.0¡¡P2101V(c100)'); 2764 2764 $req->setMethod(HTTP_REQUEST_METHOD_POST); 2765 2765 2766 // POST データ送信2766 // POST¥Ç¡¼¥¿Á÷¿® 2767 2767 $req->addPostDataArray($arrData); 2768 2768 2769 // エラーが無ければ、応答情報を取得する2769 // ¥¨¥é¡¼¤¬Ìµ¤±¤ì¤Ð¡¢±þÅú¾ðÊó¤ò¼èÆÀ¤¹¤ë 2770 2770 if (!PEAR::isError($req->sendRequest())) { 2771 2771 2772 // レスポンスコードがエラー判定なら、空を返す2772 // ¥ì¥¹¥Ý¥ó¥¹¥³¡¼¥É¤¬¥¨¥é¡¼È½Äê¤Ê¤é¡¢¶õ¤òÊÖ¤¹ 2773 2773 $res_code = $req->getResponseCode(); 2774 2774 … … 2783 2783 } 2784 2784 2785 // POST データクリア2785 // POST¥Ç¡¼¥¿¥¯¥ê¥¢ 2786 2786 $req->clearPostData(); 2787 2787 … … 2789 2789 } 2790 2790 2791 /* デバッグ用------------------------------------------------------------------------------------------------*/2791 /* ¥Ç¥Ð¥Ã¥°ÍÑ ------------------------------------------------------------------------------------------------*/ 2792 2792 function sfPrintR($obj) { 2793 2793 print("<div style='font-size: 12px;color: #00FF00;'>\n"); 2794 print("<strong>** デバッグ中**</strong><br />\n");2794 print("<strong>**¥Ç¥Ð¥Ã¥°Ãæ**</strong><br />\n"); 2795 2795 print("<pre>\n"); 2796 2796 print_r($obj); 2797 2797 print("</pre>\n"); 2798 print("<strong>** デバッグ中**</strong></div>\n");2798 print("<strong>**¥Ç¥Ð¥Ã¥°Ãæ**</strong></div>\n"); 2799 2799 } 2800 2800 -
branches/comu/data/lib/thumb.php
r11729 r11730 1 1 <?php 2 # MakeThumb( 出力元画像パス(ファイル名まで), 出力先フォルダ(/home/hoge/ など) , 最大横幅 , 最大縦幅 , 新ファイル名)2 # MakeThumb(½ÐÎϸµ²èÁü¥Ñ¥¹¡Ê¥Õ¥¡¥¤¥ë̾¤Þ¤Ç¡Ë, ½ÐÎÏÀè¥Õ¥©¥ë¥À¡Ê/home/hoge/ ¤Ê¤É¡Ë , ºÇÂç²£Éý , ºÇÂç½ÄÉý , ¿·¥Õ¥¡¥¤¥ë̾¡Ë 3 3 function MakeThumb($FromImgPath , $ToImgPath , $tmpMW , $tmpMH, $newFileName = ''){ 4 4 5 # ◆◇◆ デフォルト値の設定 ◆◇◆6 # 必要に応じて変更して下さい。5 # ¢¡¡þ¢¡¡¡¥Ç¥Õ¥©¥ë¥ÈÃͤÎÀßÄê¡¡¢¡¡þ¢¡ 6 # ɬÍפ˱þ¤¸¤ÆÊѹ¹¤·¤Æ²¼¤µ¤¤¡£ 7 7 8 # 画像の最大横幅(単位:ピクセル)8 # ²èÁü¤ÎºÇÂç²£Éý¡Êñ°Ì¡§¥Ô¥¯¥»¥ë¡Ë 9 9 $ThmMaxWidth = 500; 10 10 11 # 画像の最大縦幅(単位:ピクセル)11 # ²èÁü¤ÎºÇÂç½ÄÉý¡Êñ°Ì¡§¥Ô¥¯¥»¥ë¡Ë 12 12 $ThmMaxHeight = 500; 13 13 14 # サムネイル画像の接頭文字14 # ¥µ¥à¥Í¥¤¥ë²èÁü¤ÎÀÜÆ¬Ê¸»ú 15 15 $PreWord = $head; 16 16 17 # ◆◇◆ 設定ここまで ◆◇◆17 # ¢¡¡þ¢¡¡¡ÀßÄꤳ¤³¤Þ¤Ç¡¡¢¡¡þ¢¡ 18 18 19 // 拡張子取得19 //³ÈÄ¥»Ò¼èÆÀ 20 20 if (!$ext) { 21 21 $array_ext = explode(".", $FromImgPath); … … 24 24 25 25 $MW = $ThmMaxWidth; 26 if($tmpMW) $MW = $tmpMW; # $MW に最大横幅セット26 if($tmpMW) $MW = $tmpMW; # $MW¤ËºÇÂç²£Éý¥»¥Ã¥È 27 27 28 28 $MH = $ThmMaxHeight; 29 if($tmpMH) $MH = $tmpMH; # $MH に最大縦幅セット29 if($tmpMH) $MH = $tmpMH; # $MH¤ËºÇÂç½ÄÉý¥»¥Ã¥È 30 30 31 if(empty($FromImgPath) || empty($ToImgPath)){ # エラー処理32 return array(0," 出力元画像パス、または出力先フォルダが指定されていません。");31 if(empty($FromImgPath) || empty($ToImgPath)){ # ¥¨¥é¡¼½èÍý 32 return array(0,"½ÐÎϸµ²èÁü¥Ñ¥¹¡¢¤Þ¤¿¤Ï½ÐÎÏÀè¥Õ¥©¥ë¥À¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£"); 33 33 } 34 34 35 if(!file_exists($FromImgPath)){ # エラー処理36 return array(0," 出力元画像が見つかりません。");35 if(!file_exists($FromImgPath)){ # ¥¨¥é¡¼½èÍý 36 return array(0,"½ÐÎϸµ²èÁü¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£"); 37 37 } 38 38 … … 40 40 $re_size = $size; 41 41 42 if(!$size[2] || $size[2] > 3){ # 画像の種類が不明or swf43 return array(0," 画像形式がサポートされていません。");42 if(!$size[2] || $size[2] > 3){ # ²èÁü¤Î¼ïÎबÉÔÌÀ or swf 43 return array(0,"²èÁü·Á¼°¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£"); 44 44 } 45 45 46 // アスペクト比固定処理46 //¥¢¥¹¥Ú¥¯¥ÈÈæ¸ÇÄê½èÍý 47 47 $tmp_w = $size[0] / $MW; 48 48 … … 68 68 } 69 69 70 # サムネイル画像ファイル名作成処理71 $tmp = array_pop(explode("/",$FromImgPath)); # / の一番最後を切り出し72 $FromFileName = array_shift(explode(".",$tmp)); # . で区切られた部分を切り出し73 $ToFile = $PreWord.$FromFileName; # 拡張子以外の部分までを作成70 # ¥µ¥à¥Í¥¤¥ë²èÁü¥Õ¥¡¥¤¥ë̾ºîÀ®½èÍý 71 $tmp = array_pop(explode("/",$FromImgPath)); # /¤Î°ìÈֺǸå¤òÀÚ¤ê½Ð¤· 72 $FromFileName = array_shift(explode(".",$tmp)); # .¤Ç¶èÀÚ¤é¤ì¤¿Éôʬ¤òÀÚ¤ê½Ð¤· 73 $ToFile = $PreWord.$FromFileName; # ³ÈÄ¥»Ò°Ê³°¤ÎÉôʬ¤Þ¤Ç¤òºîÀ® 74 74 75 75 $ImgNew = imagecreatetruecolor($re_size[0],$re_size[1]); 76 76 77 77 switch($size[2]) { 78 case "1": //gif 形式78 case "1": //gif·Á¼° 79 79 if($tmp_w <= 1 && $tmp_h <= 1){ 80 80 if ( $newFileName ) { … … 85 85 $ToFile .= ".gif"; 86 86 } 87 if(!@copy($FromImgPath , $ToImgPath.$ToFile)) { # エラー処理88 return array(0," ファイルのコピーに失敗しました。");87 if(!@copy($FromImgPath , $ToImgPath.$ToFile)) { # ¥¨¥é¡¼½èÍý 88 return array(0,"¥Õ¥¡¥¤¥ë¤Î¥³¥Ô¡¼¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£"); 89 89 } 90 90 ImageDestroy($ImgNew); … … 92 92 } 93 93 94 ImageColorAllocate($ImgNew,255,235,214); // 背景色94 ImageColorAllocate($ImgNew,255,235,214); //ÇØ·Ê¿§ 95 95 $black = ImageColorAllocate($ImgNew,0,0,0); 96 96 $red = ImageColorAllocate($ImgNew,255,0,0); … … 107 107 $TmpPath = $ToImgPath.$ToFile; 108 108 @Imagepng($ImgNew,$TmpPath); 109 if(!@file_exists($TmpPath)){ # 画像が作成されていない場合110 return array(0," 画像の出力に失敗しました。");109 if(!@file_exists($TmpPath)){ # ²èÁü¤¬ºîÀ®¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç 110 return array(0,"²èÁü¤Î½ÐÎϤ˼ºÇÔ¤·¤Þ¤·¤¿¡£"); 111 111 } 112 112 ImageDestroy($ImgNew); 113 113 return array(1,$ToFile); 114 114 115 case "2": //jpg 形式115 case "2": //jpg·Á¼° 116 116 $ImgDefault = ImageCreateFromJpeg($FromImgPath); 117 117 //ImageCopyResized( $ImgNew,$ImgDefault, 0, 0, 0, 0,$re_size[0], $re_size[1],$size[0], $size[1]); … … 127 127 $TmpPath = $ToImgPath.$ToFile; 128 128 @ImageJpeg($ImgNew,$TmpPath); 129 if(!@file_exists($TmpPath)){ # 画像が作成されていない場合130 return array(0," 画像の出力に失敗しました。<br>${ImgNew}<br>${TmpPath}");129 if(!@file_exists($TmpPath)){ # ²èÁü¤¬ºîÀ®¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç 130 return array(0,"²èÁü¤Î½ÐÎϤ˼ºÇÔ¤·¤Þ¤·¤¿¡£<br>${ImgNew}<br>${TmpPath}"); 131 131 } 132 132 $RetVal = $ToFile; 133 133 break; 134 134 135 case "3": //png 形式135 case "3": //png·Á¼° 136 136 $ImgDefault = ImageCreateFromPNG($FromImgPath); 137 137 //ImageCopyResized($ImgNew, $ImgDefault, 0, 0, 0, 0,$re_size[0], $re_size[1],$size[0], $size[1]); … … 147 147 $TmpPath = $ToImgPath.$ToFile; 148 148 @ImagePNG($ImgNew,$TmpPath ); 149 if(!@file_exists($TmpPath)){ # 画像が作成されていない場合150 return array(0," 画像の出力に失敗しました。");149 if(!@file_exists($TmpPath)){ # ²èÁü¤¬ºîÀ®¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç 150 return array(0,"²èÁü¤Î½ÐÎϤ˼ºÇÔ¤·¤Þ¤·¤¿¡£"); 151 151 } 152 152 $RetVal = $ToFile;
Note: See TracChangeset
for help on using the changeset viewer.