- Timestamp:
- 2007/07/20 15:58:59 (19 years ago)
- Location:
- branches/feature-module-update
- Files:
-
- 1 edited
- 2 copied
-
. (copied) (copied from branches/rel) (1 prop)
-
html (copied) (copied from branches/rel/html)
-
html/admin/total/index.php (modified) (58 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/feature-module-update
-
Property
svn:ignore
set to
.cache
.settings
.projectOptions
-
Property
svn:ignore
set to
-
branches/feature-module-update/html/admin/total/index.php
r13452 r15078 13 13 require_once("./class/SC_GraphBar.php"); 14 14 15 // GD ¥é¥¤¥Ö¥é¥ê¤Î¥¤¥ó¥¹¥È¡¼¥ëȽÄê15 // GDライブラリのインストール判定 16 16 $install_GD = (function_exists("gd_info"))?true:false; 17 17 … … 29 29 global $arrWDAY; 30 30 $this->arrWDAY = $arrWDAY; 31 // ¥Ú¡¼¥¸¥¿¥¤¥È¥ë32 $this->arrTitle[''] = " ´ü´ÖÊ̽¸·×";33 $this->arrTitle['term'] = " ´ü´ÖÊ̽¸·×";34 $this->arrTitle['products'] = " ¾¦ÉÊÊ̽¸·×";35 $this->arrTitle['age'] = " ǯÂåÊ̽¸·×";36 $this->arrTitle['job'] = " ¿¦¶ÈÊ̽¸·×";37 $this->arrTitle['member'] = " ²ñ°÷Ê̽¸·×";38 39 // ¥¥ã¥Ã¥·¥å²óÈò¤Î¤¿¤á¤ËÆüÉÕ¤òÅϤ¹31 // ページタイトル 32 $this->arrTitle[''] = "期間別集計"; 33 $this->arrTitle['term'] = "期間別集計"; 34 $this->arrTitle['products'] = "商品別集計"; 35 $this->arrTitle['age'] = "年代別集計"; 36 $this->arrTitle['job'] = "職業別集計"; 37 $this->arrTitle['member'] = "会員別集計"; 38 39 // キャッシュ回避のために日付を渡す 40 40 $this->cashtime = time(); 41 41 } … … 45 45 $objView = new SC_AdminView(); 46 46 $objSess = new SC_Session(); 47 // ǧ¾Ú²ÄÈݤÎȽÄê47 // 認証可否の判定 48 48 sfIsSuccess($objSess); 49 49 50 // ÆþÎÏ´ü´Ö¤ò¥»¥Ã¥·¥ç¥ó¤ËµÏ¿¤¹¤ë50 // 入力期間をセッションに記録する 51 51 lfSaveDateSession(); 52 52 … … 57 57 } 58 58 59 // ¥Ñ¥é¥á¡¼¥¿´ÉÍý¥¯¥é¥¹59 // パラメータ管理クラス 60 60 $objFormParam = new SC_FormParam(); 61 // ¥Ñ¥é¥á¡¼¥¿¾ðÊó¤Î½é´ü²½61 // パラメータ情報の初期化 62 62 lfInitParam(); 63 63 $objFormParam->setParam($_POST); 64 64 $objFormParam->setParam($_GET); 65 65 66 // ¸¡º÷¥ï¡¼¥É¤Î°ú¤·Ñ¤®66 // 検索ワードの引き継ぎ 67 67 foreach ($_POST as $key => $val) { 68 68 if (ereg("^search_", $key)) { … … 76 76 case 'csv': 77 77 case 'search': 78 // ÆþÎÏÃͤÎÊÑ´¹78 // 入力値の変換 79 79 $objFormParam->convParam(); 80 80 $objPage->arrErr = lfCheckError($arrRet); 81 81 $arrRet = $objFormParam->getHashArray(); 82 82 83 // ÆþÎÏ¥¨¥é¡¼¤Ê¤·83 // 入力エラーなし 84 84 if (count($objPage->arrErr) == 0) { 85 85 foreach ($arrRet as $key => $val) { … … 109 109 110 110 switch($page) { 111 // ¾¦ÉÊÊ̽¸·×111 // 商品別集計 112 112 case 'products': 113 113 if($type == "") { … … 115 115 } 116 116 $objPage->tpl_page_type = "total/page_products.tpl"; 117 // ̤½¸·×¥Ç¡¼¥¿¤Î½¸·×¤ò¹Ô¤¦117 // 未集計データの集計を行う 118 118 if(!DAILY_BATCH_MODE) { 119 119 lfRealTimeDailyTotal($sdate, $edate); 120 120 } 121 // ¸¡º÷·ë²Ì¤Î¼èÆÀ121 // 検索結果の取得 122 122 $objPage = lfGetOrderProducts($type, $sdate, $edate, $objPage, $install_GD, $mode); 123 123 break; 124 // ¿¦¶ÈÊ̽¸·×124 // 職業別集計 125 125 case 'job': 126 126 if($type == "") { … … 128 128 } 129 129 $objPage->tpl_page_type = "total/page_job.tpl"; 130 // ̤½¸·×¥Ç¡¼¥¿¤Î½¸·×¤ò¹Ô¤¦130 // 未集計データの集計を行う 131 131 if(!DAILY_BATCH_MODE) { 132 132 lfRealTimeDailyTotal($sdate, $edate); 133 133 } 134 // ¸¡º÷·ë²Ì¤Î¼èÆÀ134 // 検索結果の取得 135 135 $objPage = lfGetOrderJob($type, $sdate, $edate, $objPage, $install_GD); 136 136 break; 137 // ²ñ°÷Ê̽¸·×137 // 会員別集計 138 138 case 'member': 139 139 if($type == "") { … … 141 141 } 142 142 $objPage->tpl_page_type = "total/page_member.tpl"; 143 // ̤½¸·×¥Ç¡¼¥¿¤Î½¸·×¤ò¹Ô¤¦143 // 未集計データの集計を行う 144 144 if(!DAILY_BATCH_MODE) { 145 145 lfRealTimeDailyTotal($sdate, $edate); 146 146 } 147 // ¸¡º÷·ë²Ì¤Î¼èÆÀ147 // 検索結果の取得 148 148 $objPage = lfGetOrderMember($type, $sdate, $edate, $objPage, $install_GD); 149 149 break; 150 // ǯÂåÊ̽¸·×150 // 年代別集計 151 151 case 'age': 152 152 if($type == "") { … … 155 155 156 156 $objPage->tpl_page_type = "total/page_age.tpl"; 157 // ̤½¸·×¥Ç¡¼¥¿¤Î½¸·×¤ò¹Ô¤¦157 // 未集計データの集計を行う 158 158 if(!DAILY_BATCH_MODE) { 159 159 lfRealTimeDailyTotal($sdate, $edate); 160 160 } 161 // ¸¡º÷·ë²Ì¤Î¼èÆÀ161 // 検索結果の取得 162 162 $objPage = lfGetOrderAge($type, $sdate, $edate, $objPage, $install_GD); 163 163 break; 164 // ´ü´ÖÊ̽¸·×164 // 期間別集計 165 165 default: 166 166 if($type == "") { … … 168 168 } 169 169 $objPage->tpl_page_type = "total/page_term.tpl"; 170 // ̤½¸·×¥Ç¡¼¥¿¤Î½¸·×¤ò¹Ô¤¦170 // 未集計データの集計を行う 171 171 if(!DAILY_BATCH_MODE) { 172 172 lfRealTimeDailyTotal($sdate, $edate); 173 173 } 174 // ¸¡º÷·ë²Ì¤Î¼èÆÀ174 // 検索結果の取得 175 175 $objPage = lfGetOrderTerm($type, $sdate, $edate, $objPage, $install_GD); 176 176 … … 179 179 180 180 if($mode == 'csv') { 181 // CSV ½ÐÎÏ¥¿¥¤¥È¥ë¹Ô¤Î¼èÆÀ181 // CSV出力タイトル行の取得 182 182 list($arrTitleCol, $arrDataCol) = lfGetCSVColum($page, $objPage->keyname); 183 183 $head = sfGetCSVList($arrTitleCol); 184 184 $data = lfGetDataColCSV($objPage->arrResults, $arrDataCol); 185 // CSV ¤òÁ÷¿®¤¹¤ë¡£185 // CSVを送信する。 186 186 sfCSVDownload($head.$data, $page."_".$type); 187 187 exit; … … 189 189 190 190 if($mode == 'pdf') { 191 // CSV ½ÐÎÏ¥¿¥¤¥È¥ë¹Ô¤Î¼èÆÀ191 // CSV出力タイトル行の取得 192 192 list($arrTitleCol, $arrDataCol, $arrColSize, $arrAlign, $title) = lfGetPDFColum($page, $type, $objPage->keyname); 193 193 $head = sfGetPDFList($arrTitleCol); 194 194 $data = lfGetDataColPDF($objPage->arrResults, $arrDataCol, 40); 195 // PDF ½ÐÎÏÍÑ195 // PDF出力用 196 196 $graph_name = basename($objPage->tpl_image); 197 197 lfPDFDownload($graph_name, $head . $data, $arrColSize, $arrAlign, $sdate, $edate, $title, $page); … … 202 202 default: 203 203 if(count($_GET) == 0) { 204 // ¥Ð¥Ã¥Á¥â¡¼¥É¤Î¾ì¹ç¤Î¤ß¼Â¹Ô¤¹¤ë¡ÊÅöÆü¤Î½¸·×¤ò¹Ô¤¦¤¿¤á¡Ë204 // バッチモードの場合のみ実行する(当日の集計を行うため) 205 205 if(DAILY_BATCH_MODE) { 206 // 3 ÆüÁ°¤Þ¤Ç¤Î½¸·×206 // 3日前までの集計 207 207 lfStartDailyTotal(3,0); 208 208 } … … 214 214 $objPage->install_GD = $install_GD; 215 215 216 // ÅÐÏ¿¡¦¹¹¿·Æü¸¡º÷ÍÑ216 // 登録・更新日検索用 217 217 $objDate = new SC_Date(); 218 218 $objDate->setStartYear(RELEASE_YEAR); … … 221 221 $objPage->arrMonth = $objDate->getMonth(); 222 222 $objPage->arrDay = $objDate->getDay(); 223 // ÆþÎÏÃͤμèÆÀ223 // 入力値の取得 224 224 $objPage->arrForm = $objFormParam->getFormParamList(); 225 225 … … 230 230 231 231 //--------------------------------------------------------------------------------------------------------------------------- 232 /* PDF ½ÐÎÏ*/232 /* PDF出力 */ 233 233 function lfPDFDownload($image, $table, $arrColSize, $arrAlign, $sdate, $edate, $title, $page = "") { 234 234 … … 236 236 $objPdf->setTableColor("CCCCCC", "F0F0F0", "D1DEFE"); 237 237 238 // ÅÚÂæ¤È¤Ê¤ëPDF¥Õ¥¡¥¤¥ë¤Î»ØÄê238 // 土台となるPDFファイルの指定 239 239 $objPdf->setTemplate(PDF_DIR . "total.pdf"); 240 240 … … 246 246 $arrImage['graph_block'] = GRAPH_DIR . $image; 247 247 248 // ʸËö¤Î\n¤òºï½ü¤¹¤ë248 // 文末の\nを削除する 249 249 $table = ereg_replace("\n$", "", $table); 250 250 $arrRet = split("\n", $table); … … 253 253 for($page = 1; $page <= $page_max; $page++) { 254 254 if($page > 1) { 255 // 2 ¥Ú¡¼¥¸°Ê¹ß255 // 2ページ以降 256 256 $start_no = 35 * ($page - 1) + 1; 257 257 } else { 258 // ³«»Ï¥Ú¡¼¥¸258 // 開始ページ 259 259 $start_no = 1; 260 260 } … … 263 263 $objPdf->setTextBlock($arrText); 264 264 $objPdf->setImageBlock($arrImage); 265 // ¥Ö¥í¥Ã¥¯ÃÍ¤ÎÆþÎÏ265 // ブロック値の入力 266 266 $objPdf->writeBlock(); 267 // ºÇ½ª¥Ú¡¼¥¸¤Î¤ß¡¢¾¦ÉÊÊ̽¸·×¤Ï¹ç·×¤¬¤Ê¤¤¤Î¤ÇºÇ½ª¹Ô¤Î¿§¤òÊѹ¹¤·¤Ê¤¤¡£267 // 最終ページのみ、商品別集計は合計がないので最終行の色を変更しない。 268 268 if($page == $page_max && $page != 'products') { 269 269 $last_color_flg = true; … … 275 275 } 276 276 277 // PDF ¤Î½ÐÎÏ277 // PDFの出力 278 278 $objPdf->output(); 279 279 } 280 280 281 /* ¥»¥Ã¥·¥ç¥ó¤ËÆþÎÏ´ü´Ö¤òµÏ¿¤¹¤ë*/281 /* セッションに入力期間を記録する */ 282 282 function lfSaveDateSession() { 283 283 if($_POST['form'] == 1) { … … 296 296 } 297 297 298 /* ¥Ç¥Õ¥©¥ë¥ÈÃͤμèÆÀ*/298 /* デフォルト値の取得 */ 299 299 function lfGetDateDefault() { 300 300 $year = date("Y"); … … 304 304 $list = $_SESSION['total']; 305 305 306 // ¥»¥Ã¥·¥ç¥ó¾ðÊó¤Ë³«»Ï·îÅÙ¤¬Êݸ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£306 // セッション情報に開始月度が保存されていない。 307 307 if($_SESSION['total']['startyear_m'] == "") { 308 308 $list['startyear_m'] = $year; … … 310 310 } 311 311 312 // ¥»¥Ã¥·¥ç¥ó¾ðÊó¤Ë³«»ÏÆüÉÕ¡¢½ªÎ»ÆüÉÕ¤¬Êݸ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£312 // セッション情報に開始日付、終了日付が保存されていない。 313 313 if($_SESSION['total']['startyear'] == "" && $_SESSION['total']['endyear'] == "") { 314 314 $list['startyear'] = $year; … … 323 323 } 324 324 325 /* ¥Ñ¥é¥á¡¼¥¿¾ðÊó¤Î½é´ü²½*/325 /* パラメータ情報の初期化 */ 326 326 function lfInitParam() { 327 327 global $objFormParam; 328 328 329 // ¥Ç¥Õ¥©¥ë¥ÈÃͤμèÆÀ329 // デフォルト値の取得 330 330 $arrList = lfGetDateDefault(); 331 331 332 // ·îÅÙ½¸·×333 $objFormParam->addParam(" ·îÅÙ", "search_startyear_m", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startyear_m']);334 $objFormParam->addParam(" ·îÅÙ", "search_startmonth_m", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startmonth_m']);335 // ´ü´Ö½¸·×336 $objFormParam->addParam(" ³«»ÏÆü", "search_startyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startyear']);337 $objFormParam->addParam(" ³«»ÏÆü", "search_startmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startmonth']);338 $objFormParam->addParam(" ³«»ÏÆü", "search_startday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startday']);339 $objFormParam->addParam(" ½ªÎ»Æü", "search_endyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['endyear']);340 $objFormParam->addParam(" ½ªÎ»Æü", "search_endmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['endmonth']);341 $objFormParam->addParam(" ½ªÎ»Æü", "search_endday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['endday']);342 343 // hidden ¥Ç¡¼¥¿¤Î¼èÆÀÍÑ332 // 月度集計 333 $objFormParam->addParam("月度", "search_startyear_m", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startyear_m']); 334 $objFormParam->addParam("月度", "search_startmonth_m", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startmonth_m']); 335 // 期間集計 336 $objFormParam->addParam("開始日", "search_startyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startyear']); 337 $objFormParam->addParam("開始日", "search_startmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startmonth']); 338 $objFormParam->addParam("開始日", "search_startday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startday']); 339 $objFormParam->addParam("終了日", "search_endyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['endyear']); 340 $objFormParam->addParam("終了日", "search_endmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['endmonth']); 341 $objFormParam->addParam("終了日", "search_endday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['endday']); 342 343 // hiddenデータの取得用 344 344 $objFormParam->addParam("", "page"); 345 345 $objFormParam->addParam("", "type"); … … 348 348 } 349 349 350 /* ÆþÎÏÆâÍÆ¤Î¥Á¥§¥Ã¥¯*/350 /* 入力内容のチェック */ 351 351 function lfCheckError() { 352 352 global $objFormParam; 353 // ÆþÎϥǡ¼¥¿¤òÅϤ¹¡£353 // 入力データを渡す。 354 354 $arrRet = $objFormParam->getHashArray(); 355 355 $objErr = new SC_CheckError($arrRet); 356 356 $objErr->arrErr = $objFormParam->checkError(); 357 357 358 // ÆÃ¼ì¹àÌÜ¥Á¥§¥Ã¥¯358 // 特殊項目チェック 359 359 if($_POST['form'] == 1) { 360 $objErr->doFunc(array(" ·îÅÙ", "search_startyear_m"), array("ONE_EXIST_CHECK"));360 $objErr->doFunc(array("月度", "search_startyear_m"), array("ONE_EXIST_CHECK")); 361 361 } 362 362 363 363 if($_POST['form'] == 2) { 364 $objErr->doFunc(array(" ´ü´Ö", "search_startyear", "search_endyear"), array("ONE_EXIST_CHECK"));364 $objErr->doFunc(array("期間", "search_startyear", "search_endyear"), array("ONE_EXIST_CHECK")); 365 365 } 366 366 367 $objErr->doFunc(array(" ·îÅÙ", "search_startyear_m", "search_startmonth_m"), array("ALL_EXIST_CHECK"));368 $objErr->doFunc(array(" ³«»ÏÆü", "search_startyear", "search_startmonth", "search_startday"), array("CHECK_DATE"));369 $objErr->doFunc(array(" ½ªÎ»Æü", "search_endyear", "search_endmonth", "search_endday"), array("CHECK_DATE"));370 $objErr->doFunc(array(" ³«»ÏÆü", "½ªÎ»Æü", "search_startyear", "search_startmonth", "search_startday", "search_endyear", "search_endmonth", "search_endday"), array("CHECK_SET_TERM"));367 $objErr->doFunc(array("月度", "search_startyear_m", "search_startmonth_m"), array("ALL_EXIST_CHECK")); 368 $objErr->doFunc(array("開始日", "search_startyear", "search_startmonth", "search_startday"), array("CHECK_DATE")); 369 $objErr->doFunc(array("終了日", "search_endyear", "search_endmonth", "search_endday"), array("CHECK_DATE")); 370 $objErr->doFunc(array("開始日", "終了日", "search_startyear", "search_startmonth", "search_startday", "search_endyear", "search_endmonth", "search_endday"), array("CHECK_SET_TERM")); 371 371 return $objErr->arrErr; 372 372 } 373 373 374 /* ÀÞ¤ìÀþ¥°¥é¥Õ¤ÎºîÀ®*/374 /* 折れ線グラフの作成 */ 375 375 function lfGetGraphLine($arrResults, $keyname, $type, $xtitle, $ytitle, $sdate, $edate) { 376 376 377 377 $ret_path = ""; 378 378 379 // ·ë²Ì¤¬0¹Ô°Ê¾å¤¢¤ë¾ì¹ç¤Î¤ß¥°¥é¥Õ¤òÀ¸À®¤¹¤ë¡£379 // 結果が0行以上ある場合のみグラフを生成する。 380 380 if(count($arrResults) > 0) { 381 381 382 // ¥°¥é¥Õ¤ÎÀ¸À®382 // グラフの生成 383 383 $arrList = sfArrKeyValue($arrResults, $keyname, "total"); 384 384 385 // °ì»þ¥Õ¥¡¥¤¥ë̾¤Î¼èÆÀ385 // 一時ファイル名の取得 386 386 $pngname = lfGetGraphPng($type); 387 387 388 388 $path = GRAPH_DIR . $pngname; 389 389 390 // ¥é¥Ù¥ëɽ¼¨¥¤¥ó¥¿¡¼¥Ð¥ë¤òµá¤á¤ë390 // ラベル表示インターバルを求める 391 391 $interval = intval(count($arrList) / 20); 392 392 if($interval < 1) { … … 396 396 $objGraphLine = new SC_GraphLine(); 397 397 398 // ÃͤΥ»¥Ã¥È398 // 値のセット 399 399 $objGraphLine->setData($arrList); 400 400 $objGraphLine->setXLabel(array_keys($arrList)); 401 401 402 // ¥é¥Ù¥ë²óž(ÆüËܸìÉÔ²Ä)402 // ラベル回転(日本語不可) 403 403 if($keyname == "key_day"){ 404 404 $objGraphLine->setXLabelAngle(45); 405 405 } 406 406 407 // ¥¿¥¤¥È¥ë¥»¥Ã¥È407 // タイトルセット 408 408 $objGraphLine->setXTitle($xtitle); 409 409 $objGraphLine->setYTitle($ytitle); 410 410 411 // ¥á¥¤¥ó¥¿¥¤¥È¥ëºîÀ®411 // メインタイトル作成 412 412 list($sy, $sm, $sd) = split("[/ ]" , $sdate); 413 413 list($ey, $em, $ed) = split("[/ ]" , $edate); 414 $start_date = $sy . " ǯ" . $sm . "·î" . $sd . "Æü";415 $end_date = $ey . " ǯ" . $em . "·î" . $ed . "Æü";416 $objGraphLine->drawTitle(" ½¸·×´ü´Ö¡§" . $start_date . " - " . $end_date);417 418 // ¥°¥é¥ÕÉÁ²è414 $start_date = $sy . "年" . $sm . "月" . $sd . "日"; 415 $end_date = $ey . "年" . $em . "月" . $ed . "日"; 416 $objGraphLine->drawTitle("集計期間:" . $start_date . " - " . $end_date); 417 418 // グラフ描画 419 419 $objGraphLine->drawGraph(); 420 420 421 // ¥°¥é¥Õ¤Î½ÐÎÏ421 // グラフの出力 422 422 if(DRAW_IMAGE){ 423 423 $objGraphLine->outputGraph(); … … 425 425 } 426 426 427 // ¥Õ¥¡¥¤¥ë¥Ñ¥¹¤òÊÖ¤¹427 // ファイルパスを返す 428 428 $ret_path = GRAPH_URL . $pngname; 429 429 } … … 431 431 } 432 432 433 // ±ß¥°¥é¥Õ¤ÎºîÀ®433 // 円グラフの作成 434 434 function lfGetGraphPie($arrResults, $keyname, $type, $title = "", $sdate = "", $edate = "") { 435 435 436 436 $ret_path = ""; 437 437 438 // ·ë²Ì¤¬0¹Ô°Ê¾å¤¢¤ë¾ì¹ç¤Î¤ß¥°¥é¥Õ¤òÀ¸À®¤¹¤ë¡£438 // 結果が0行以上ある場合のみグラフを生成する。 439 439 if(count($arrResults) > 0) { 440 // ¥°¥é¥Õ¤ÎÀ¸À®440 // グラフの生成 441 441 $arrList = sfArrKeyValue($arrResults, $keyname, "total", GRAPH_PIE_MAX, GRAPH_LABEL_MAX); 442 442 443 // °ì»þ¥Õ¥¡¥¤¥ë̾¤Î¼èÆÀ443 // 一時ファイル名の取得 444 444 $pngname = lfGetGraphPng($type); 445 445 $path = GRAPH_DIR . $pngname; … … 447 447 $objGraphPie = new SC_GraphPie(); 448 448 449 /* ¥Ç¥Ð¥Ã¥°É½¼¨ÍÑby naka449 /* デバッグ表示用 by naka 450 450 foreach($arrList as $key => $val) { 451 451 $objGraphPie->debugPrint("key:$key val:$val"); … … 453 453 */ 454 454 455 // ¥Ç¡¼¥¿¤ò¥»¥Ã¥È¤¹¤ë455 // データをセットする 456 456 $objGraphPie->setData($arrList); 457 // ËÞÎã¤ò¥»¥Ã¥È¤¹¤ë457 // 凡例をセットする 458 458 $objGraphPie->setLegend(array_keys($arrList)); 459 459 460 // ¥á¥¤¥ó¥¿¥¤¥È¥ëºîÀ®460 // メインタイトル作成 461 461 list($sy, $sm, $sd) = split("[/ ]" , $sdate); 462 462 list($ey, $em, $ed) = split("[/ ]" , $edate); 463 $start_date = $sy . " ǯ" . $sm . "·î" . $sd . "Æü";464 $end_date = $ey . " ǯ" . $em . "·î" . $ed . "Æü";465 $objGraphPie->drawTitle(" ½¸·×´ü´Ö¡§" . $start_date . " - " . $end_date);463 $start_date = $sy . "年" . $sm . "月" . $sd . "日"; 464 $end_date = $ey . "年" . $em . "月" . $ed . "日"; 465 $objGraphPie->drawTitle("集計期間:" . $start_date . " - " . $end_date); 466 466 467 // ±ß¥°¥é¥ÕÉÁ²è467 // 円グラフ描画 468 468 $objGraphPie->drawGraph(); 469 469 470 // ¥°¥é¥Õ¤Î½ÐÎÏ470 // グラフの出力 471 471 if(DRAW_IMAGE){ 472 472 $objGraphPie->outputGraph(); … … 474 474 } 475 475 476 // ¥Õ¥¡¥¤¥ë¥Ñ¥¹¤òÊÖ¤¹476 // ファイルパスを返す 477 477 $ret_path = GRAPH_URL . $pngname; 478 478 } … … 480 480 } 481 481 482 // ËÀ¥°¥é¥Õ¤ÎºîÀ®482 // 棒グラフの作成 483 483 function lfGetGraphBar($arrResults, $keyname, $type, $xtitle, $ytitle, $sdate, $edate) { 484 484 $ret_path = ""; 485 485 486 // ·ë²Ì¤¬0¹Ô°Ê¾å¤¢¤ë¾ì¹ç¤Î¤ß¥°¥é¥Õ¤òÀ¸À®¤¹¤ë¡£486 // 結果が0行以上ある場合のみグラフを生成する。 487 487 if(count($arrResults) > 0) { 488 // ¥°¥é¥Õ¤ÎÀ¸À®488 // グラフの生成 489 489 $arrList = sfArrKeyValue($arrResults, $keyname, "total", GRAPH_PIE_MAX, GRAPH_LABEL_MAX); 490 490 491 // °ì»þ¥Õ¥¡¥¤¥ë̾¤Î¼èÆÀ491 // 一時ファイル名の取得 492 492 $pngname = lfGetGraphPng($type); 493 493 $path = GRAPH_DIR . $pngname; … … 496 496 497 497 foreach(array_keys($arrList) as $val) { 498 $arrKey[] = ereg_replace(" ¡Á", "-", $val);499 } 500 501 // ¥°¥é¥ÕÉÁ²è498 $arrKey[] = ereg_replace("〜", "-", $val); 499 } 500 501 // グラフ描画 502 502 $objGraphBar->setXLabel($arrKey); 503 503 $objGraphBar->setXTitle($xtitle); … … 505 505 $objGraphBar->setData($arrList); 506 506 507 // ¥á¥¤¥ó¥¿¥¤¥È¥ëºîÀ®507 // メインタイトル作成 508 508 $arrKey = array_keys($arrList); 509 509 list($sy, $sm, $sd) = split("[/ ]" , $sdate); 510 510 list($ey, $em, $ed) = split("[/ ]" , $edate); 511 $start_date = $sy . " ǯ" . $sm . "·î" . $sd . "Æü";512 $end_date = $ey . " ǯ" . $em . "·î" . $ed . "Æü";513 $objGraphBar->drawTitle(" ½¸·×´ü´Ö¡§" . $start_date . " - " . $end_date);511 $start_date = $sy . "年" . $sm . "月" . $sd . "日"; 512 $end_date = $ey . "年" . $em . "月" . $ed . "日"; 513 $objGraphBar->drawTitle("集計期間:" . $start_date . " - " . $end_date); 514 514 515 515 $objGraphBar->drawGraph(); … … 520 520 } 521 521 522 // ¥Õ¥¡¥¤¥ë¥Ñ¥¹¤òÊÖ¤¹522 // ファイルパスを返す 523 523 $ret_path = GRAPH_URL . $pngname; 524 524 } … … 526 526 } 527 527 528 // ¥°¥é¥ÕÍѤÎPNG¥Õ¥¡¥¤¥ë̾528 // グラフ用のPNGファイル名 529 529 function lfGetGraphPng($keyname) { 530 530 if($_POST['search_startyear_m'] != "") { … … 536 536 } 537 537 538 // ²ñ°÷¡¢Èó²ñ°÷½¸·×¤ÎWHEREʬ¤ÎºîÀ®538 // 会員、非会員集計のWHERE分の作成 539 539 function lfGetWhereMember($col_date, $sdate, $edate, $type, $col_member = "customer_id") { 540 // ¼èÆÀÆüÉդλØÄê540 // 取得日付の指定 541 541 if($sdate != "") { 542 542 if ($where != "") { … … 554 554 } 555 555 556 // ²ñ°÷¡¢Èó²ñ°÷¤ÎȽÄê556 // 会員、非会員の判定 557 557 switch($type) { 558 // Á´ÂÎ558 // 全体 559 559 case 'all': 560 560 break; … … 578 578 } 579 579 580 /** ²ñ°÷Ê̽¸·×**/580 /** 会員別集計 **/ 581 581 function lfGetOrderMember($type, $sdate, $edate, $objPage, $graph = true) { 582 582 global $arrSex; … … 584 584 list($where, $arrval) = lfGetWhereMember('create_date', $sdate, $edate, $type); 585 585 586 // ²ñ°÷½¸·×¤Î¼èÆÀ586 // 会員集計の取得 587 587 $col = "COUNT(*) AS order_count, SUM(total) AS total, (AVG(total)) AS total_average, order_sex"; 588 588 $from = "dtb_order"; … … 593 593 $arrRet = $objQuery->select($col, $from, $tmp_where, $arrval); 594 594 595 // ²ñ°÷¹ØÆþ¤Ç¤¢¤ë¤³¤È¤òµÏ¿¤¹¤ë¡£595 // 会員購入であることを記録する。 596 596 $max = count($arrRet); 597 597 for($i = 0; $i < $max; $i++) { 598 $arrRet[$i]['member_name'] = ' ²ñ°÷'.$arrSex[$arrRet[$i]['order_sex']];598 $arrRet[$i]['member_name'] = '会員'.$arrSex[$arrRet[$i]['order_sex']]; 599 599 } 600 600 $objPage->arrResults = $arrRet; 601 601 602 // Èó²ñ°÷½¸·×¤Î¼èÆÀ602 // 非会員集計の取得 603 603 $tmp_where = $where . " AND customer_id = 0 AND del_flg = 0 "; 604 604 $arrRet = $objQuery->select($col, $from, $tmp_where, $arrval); 605 // Èó²ñ°÷¹ØÆþ¤Ç¤¢¤ë¤³¤È¤òµÏ¿¤¹¤ë¡£605 // 非会員購入であることを記録する。 606 606 $max = count($arrRet); 607 607 for($i = 0; $i < $max; $i++) { 608 $arrRet[$i]['member_name'] = ' Èó²ñ°÷'.$arrSex[$arrRet[$i]['order_sex']];608 $arrRet[$i]['member_name'] = '非会員'.$arrSex[$arrRet[$i]['order_sex']]; 609 609 } 610 610 611 611 $objPage->arrResults = array_merge($objPage->arrResults, $arrRet); 612 612 613 // ±ß¥°¥é¥Õ¤ÎÀ¸À®613 // 円グラフの生成 614 614 if($graph) { 615 615 $image_key = "member"; 616 $objPage->tpl_image = lfGetGraphPie($objPage->arrResults, "member_name", $image_key, "( Çä¾åÈæÎ¨)", $sdate, $edate);616 $objPage->tpl_image = lfGetGraphPie($objPage->arrResults, "member_name", $image_key, "(売上比率)", $sdate, $edate); 617 617 } 618 618 … … 620 620 } 621 621 622 /** ¾¦ÉÊÊ̽¸·×**/622 /** 商品別集計 **/ 623 623 function lfGetOrderProducts($type, $sdate, $edate, $objPage, $graph = true, $mode = "") { 624 624 list($where, $arrval) = lfGetWhereMember('create_date', $sdate, $edate, $type); … … 644 644 $objPage->arrResults = $objQuery->getall($sql, $arrval); 645 645 646 // ±ß¥°¥é¥Õ¤ÎÀ¸À®646 // 円グラフの生成 647 647 if($graph) { 648 648 $image_key = "products_" . $type; 649 $objPage->tpl_image = lfGetGraphPie($objPage->arrResults, "name", $image_key, "( Çä¾åÈæÎ¨)", $sdate, $edate);649 $objPage->tpl_image = lfGetGraphPie($objPage->arrResults, "name", $image_key, "(売上比率)", $sdate, $edate); 650 650 } 651 651 … … 653 653 } 654 654 655 /** ¿¦¶ÈÊ̽¸·×**/655 /** 職業別集計 **/ 656 656 function lfGetOrderJob($type, $sdate, $edate, $objPage, $graph = true) { 657 657 global $arrJob; … … 672 672 $objPage->arrResults[$i]['job_name'] = $arrJob[$job_key]; 673 673 } else { 674 $objPage->arrResults[$i]['job_name'] = " ̤²óÅú";675 } 676 } 677 678 // ±ß¥°¥é¥Õ¤ÎÀ¸À®674 $objPage->arrResults[$i]['job_name'] = "未回答"; 675 } 676 } 677 678 // 円グラフの生成 679 679 if($graph) { 680 680 $image_key = "job_" . $type; 681 $objPage->tpl_image = lfGetGraphPie($objPage->arrResults, "job_name", $image_key, "( Çä¾åÈæÎ¨)", $sdate, $edate);681 $objPage->tpl_image = lfGetGraphPie($objPage->arrResults, "job_name", $image_key, "(売上比率)", $sdate, $edate); 682 682 } 683 683 … … 685 685 } 686 686 687 /** ǯÂåÊ̽¸·×**/687 /** 年代別集計 **/ 688 688 function lfGetOrderAge($type, $sdate, $edate, $objPage, $graph = true) { 689 689 … … 706 706 if($start_age != "" || $end_age != "") { 707 707 if($end_age != 999) { 708 $objPage->arrResults[$i]['age_name'] = $start_age . " ¡Á" . $end_age . "ºÐ";708 $objPage->arrResults[$i]['age_name'] = $start_age . "〜" . $end_age . "歳"; 709 709 } else { 710 $objPage->arrResults[$i]['age_name'] = $start_age . " ºÐ¡Á";710 $objPage->arrResults[$i]['age_name'] = $start_age . "歳〜"; 711 711 } 712 712 } else { 713 $objPage->arrResults[$i]['age_name'] = " ̤²óÅú";714 } 715 } 716 717 // ËÀ¥°¥é¥Õ¤ÎÀ¸À®713 $objPage->arrResults[$i]['age_name'] = "未回答"; 714 } 715 } 716 717 // 棒グラフの生成 718 718 if($graph) { 719 719 $image_key = "age_" . $type; 720 $xtitle = "( ǯÎð)";721 $ytitle = "( Çä¾å¹ç·×)";720 $xtitle = "(年齢)"; 721 $ytitle = "(売上合計)"; 722 722 $objPage->tpl_image = lfGetGraphBar($objPage->arrResults, "age_name", $image_key, $xtitle, $ytitle, $sdate, $edate); 723 723 } … … 726 726 } 727 727 728 /** ´ü´ÖÊ̽¸·×**/728 /** 期間別集計 **/ 729 729 function lfGetOrderTerm($type, $sdate, $edate, $objPage, $graph = true) { 730 730 … … 736 736 737 737 switch($type) { 738 // ·îÊÌ738 // 月別 739 739 case 'month': 740 740 $col = $tmp_col . ",key_month"; … … 742 742 $objQuery->setOrder("key_month"); 743 743 $objPage->keyname = "key_month"; 744 $objPage->tpl_tail = " ·î";744 $objPage->tpl_tail = "月"; 745 745 $from = "dtb_bat_order_daily"; 746 $xtitle = "( ·îÊÌ)";747 $ytitle = "( Çä¾å¹ç·×)";748 break; 749 // ǯÊÌ746 $xtitle = "(月別)"; 747 $ytitle = "(売上合計)"; 748 break; 749 // 年別 750 750 case 'year': 751 751 $col = $tmp_col . ",key_year"; … … 753 753 $objQuery->setOrder("key_year"); 754 754 $objPage->keyname = "key_year"; 755 $objPage->tpl_tail = " ǯ";755 $objPage->tpl_tail = "年"; 756 756 $from = "dtb_bat_order_daily"; 757 $xtitle = "( ǯÊÌ)";758 $ytitle = "( Çä¾å¹ç·×)";759 break; 760 // ÍËÆüÊÌ757 $xtitle = "(年別)"; 758 $ytitle = "(売上合計)"; 759 break; 760 // 曜日別 761 761 case 'wday': 762 762 $col = $tmp_col . ",key_wday, wday"; … … 764 764 $objQuery->setOrder("wday"); 765 765 $objPage->keyname = "key_wday"; 766 $objPage->tpl_tail = " ÍËÆü";766 $objPage->tpl_tail = "曜日"; 767 767 $from = "dtb_bat_order_daily"; 768 $xtitle = "( ÍËÆüÊÌ)";769 $ytitle = "( Çä¾å¹ç·×)";770 break; 771 // »þ´ÖÊÌ768 $xtitle = "(曜日別)"; 769 $ytitle = "(売上合計)"; 770 break; 771 // 時間別 772 772 case 'hour': 773 773 $col = $tmp_col . ",hour"; … … 775 775 $objQuery->setOrder("hour"); 776 776 $objPage->keyname = "hour"; 777 $objPage->tpl_tail = " »þ";777 $objPage->tpl_tail = "時"; 778 778 $from = "dtb_bat_order_daily_hour"; 779 $xtitle = "( »þ´ÖÊÌ)";780 $ytitle = "( Çä¾å¹ç·×)";779 $xtitle = "(時間別)"; 780 $ytitle = "(売上合計)"; 781 781 break; 782 782 default: … … 785 785 $objPage->keyname = "key_day"; 786 786 $from = "dtb_bat_order_daily"; 787 $xtitle = "( ÆüÊÌ)";788 $ytitle = "( Çä¾å¹ç·×)";789 break; 790 } 791 792 793 // ¼èÆÀÆüÉդλØÄê787 $xtitle = "(日別)"; 788 $ytitle = "(売上合計)"; 789 break; 790 } 791 792 793 // 取得日付の指定 794 794 if($sdate != "") { 795 795 if ($where != "") { … … 807 807 } 808 808 809 // ¸¡º÷·ë²Ì¤Î¼èÆÀ809 // 検索結果の取得 810 810 $objPage->arrResults = $objQuery->select($col, $from, $where, $arrval); 811 811 812 // ÀÞ¤ìÀþ¥°¥é¥Õ¤ÎÀ¸À®812 // 折れ線グラフの生成 813 813 if($graph) { 814 814 $image_key = "term_" . $type; … … 816 816 } 817 817 818 // ¸¡º÷·ë²Ì¤¬0¤Ç¤Ê¤¤¾ì¹ç818 // 検索結果が0でない場合 819 819 if(count($objPage->arrResults) > 0) { 820 // ºÇ½ª½¸·×¹Ô¼èÆÀ¤¹¤ë820 // 最終集計行取得する 821 821 $col = $tmp_col; 822 822 $objQuery = new SC_Query(); 823 823 $arrRet = $objQuery->select($col, $from, $where, $arrval); 824 $arrRet[0][$objPage->keyname] = " ¹ç·×";824 $arrRet[0][$objPage->keyname] = "合計"; 825 825 $objPage->arrResults[] = $arrRet[0]; 826 826 } 827 827 828 // Ê¿¶ÑÃͤη׻»828 // 平均値の計算 829 829 $max = count($objPage->arrResults); 830 830 for($i = 0; $i < $max; $i++) {
Note: See TracChangeset
for help on using the changeset viewer.
