Changeset 11729 for branches/comu/html/admin/total/index.php
- Timestamp:
- 2007/03/10 21:35:02 (20 years ago)
- File:
-
- 1 edited
-
branches/comu/html/admin/total/index.php (modified) (57 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/comu/html/admin/total/index.php
r15 r11729 26 26 global $arrWDAY; 27 27 $this->arrWDAY = $arrWDAY; 28 // ¥Ú¡¼¥¸¥¿¥¤¥È¥ë29 $this->arrTitle[''] = " ´ü´ÖÊ̽¸·×";30 $this->arrTitle['term'] = " ´ü´ÖÊ̽¸·×";31 $this->arrTitle['products'] = " ¾¦ÉÊÊ̽¸·×";32 $this->arrTitle['age'] = " ǯÂåÊ̽¸·×";33 $this->arrTitle['job'] = " ¿¦¶ÈÊ̽¸·×";34 $this->arrTitle['member'] = " ²ñ°÷Ê̽¸·×";35 36 // ¥¥ã¥Ã¥·¥å²óÈò¤Î¤¿¤á¤ËÆüÉÕ¤òÅϤ¹28 // ページタイトル 29 $this->arrTitle[''] = "期間別集計"; 30 $this->arrTitle['term'] = "期間別集計"; 31 $this->arrTitle['products'] = "商品別集計"; 32 $this->arrTitle['age'] = "年代別集計"; 33 $this->arrTitle['job'] = "職業別集計"; 34 $this->arrTitle['member'] = "会員別集計"; 35 36 // キャッシュ回避のために日付を渡す 37 37 $this->cashtime = time(); 38 38 } … … 42 42 $objView = new SC_AdminView(); 43 43 $objSess = new SC_Session(); 44 // ǧ¾Ú²ÄÈݤÎȽÄê44 // 認証可否の判定 45 45 sfIsSuccess($objSess); 46 46 47 // ÆþÎÏ´ü´Ö¤ò¥»¥Ã¥·¥ç¥ó¤ËµÏ¿¤¹¤ë47 // 入力期間をセッションに記録する 48 48 lfSaveDateSession(); 49 49 … … 54 54 } 55 55 56 // ¥Ñ¥é¥á¡¼¥¿´ÉÍý¥¯¥é¥¹56 // パラメータ管理クラス 57 57 $objFormParam = new SC_FormParam(); 58 // ¥Ñ¥é¥á¡¼¥¿¾ðÊó¤Î½é´ü²½58 // パラメータ情報の初期化 59 59 lfInitParam(); 60 60 $objFormParam->setParam($_POST); 61 61 $objFormParam->setParam($_GET); 62 62 63 // ¸¡º÷¥ï¡¼¥É¤Î°ú¤·Ñ¤®63 // 検索ワードの引き継ぎ 64 64 foreach ($_POST as $key => $val) { 65 65 if (ereg("^search_", $key)) { … … 73 73 case 'csv': 74 74 case 'search': 75 // ÆþÎÏÃͤÎÊÑ´¹75 // 入力値の変換 76 76 $objFormParam->convParam(); 77 77 $objPage->arrErr = lfCheckError($arrRet); 78 78 $arrRet = $objFormParam->getHashArray(); 79 79 80 // ÆþÎÏ¥¨¥é¡¼¤Ê¤·80 // 入力エラーなし 81 81 if (count($objPage->arrErr) == 0) { 82 82 foreach ($arrRet as $key => $val) { … … 105 105 $page = $objFormParam->getValue('page'); 106 106 switch($page) { 107 // ¾¦ÉÊÊ̽¸·×107 // 商品別集計 108 108 case 'products': 109 109 if($type == "") { … … 111 111 } 112 112 $objPage->tpl_page_type = "total/page_products.tpl"; 113 // ̤½¸·×¥Ç¡¼¥¿¤Î½¸·×¤ò¹Ô¤¦113 // 未集計データの集計を行う 114 114 if(!DAILY_BATCH_MODE) { 115 115 lfRealTimeDailyTotal($sdate, $edate); 116 116 } 117 // ¸¡º÷·ë²Ì¤Î¼èÆÀ117 // 検索結果の取得 118 118 $objPage = lfGetOrderProducts($type, $sdate, $edate, $objPage, true, $mode); 119 119 break; 120 // ¿¦¶ÈÊ̽¸·×120 // 職業別集計 121 121 case 'job': 122 122 if($type == "") { … … 124 124 } 125 125 $objPage->tpl_page_type = "total/page_job.tpl"; 126 // ̤½¸·×¥Ç¡¼¥¿¤Î½¸·×¤ò¹Ô¤¦126 // 未集計データの集計を行う 127 127 if(!DAILY_BATCH_MODE) { 128 128 lfRealTimeDailyTotal($sdate, $edate); 129 129 } 130 // ¸¡º÷·ë²Ì¤Î¼èÆÀ130 // 検索結果の取得 131 131 $objPage = lfGetOrderJob($type, $sdate, $edate, $objPage); 132 132 break; 133 // ²ñ°÷Ê̽¸·×133 // 会員別集計 134 134 case 'member': 135 135 if($type == "") { … … 137 137 } 138 138 $objPage->tpl_page_type = "total/page_member.tpl"; 139 // ̤½¸·×¥Ç¡¼¥¿¤Î½¸·×¤ò¹Ô¤¦139 // 未集計データの集計を行う 140 140 if(!DAILY_BATCH_MODE) { 141 141 lfRealTimeDailyTotal($sdate, $edate); 142 142 } 143 // ¸¡º÷·ë²Ì¤Î¼èÆÀ143 // 検索結果の取得 144 144 $objPage = lfGetOrderMember($type, $sdate, $edate, $objPage); 145 145 break; 146 // ǯÂåÊ̽¸·×146 // 年代別集計 147 147 case 'age': 148 148 if($type == "") { … … 151 151 152 152 $objPage->tpl_page_type = "total/page_age.tpl"; 153 // ̤½¸·×¥Ç¡¼¥¿¤Î½¸·×¤ò¹Ô¤¦153 // 未集計データの集計を行う 154 154 if(!DAILY_BATCH_MODE) { 155 155 lfRealTimeDailyTotal($sdate, $edate); 156 156 } 157 // ¸¡º÷·ë²Ì¤Î¼èÆÀ157 // 検索結果の取得 158 158 $objPage = lfGetOrderAge($type, $sdate, $edate, $objPage); 159 159 break; 160 // ´ü´ÖÊ̽¸·×160 // 期間別集計 161 161 default: 162 162 if($type == "") { … … 164 164 } 165 165 $objPage->tpl_page_type = "total/page_term.tpl"; 166 // ̤½¸·×¥Ç¡¼¥¿¤Î½¸·×¤ò¹Ô¤¦166 // 未集計データの集計を行う 167 167 if(!DAILY_BATCH_MODE) { 168 168 lfRealTimeDailyTotal($sdate, $edate); 169 169 } 170 // ¸¡º÷·ë²Ì¤Î¼èÆÀ170 // 検索結果の取得 171 171 $objPage = lfGetOrderTerm($type, $sdate, $edate, $objPage); 172 172 … … 175 175 176 176 if($mode == 'csv') { 177 // CSV ½ÐÎÏ¥¿¥¤¥È¥ë¹Ô¤Î¼èÆÀ177 // CSV出力タイトル行の取得 178 178 list($arrTitleCol, $arrDataCol) = lfGetCSVColum($page, $objPage->keyname); 179 179 $head = sfGetCSVList($arrTitleCol); 180 180 $data = lfGetDataColCSV($objPage->arrResults, $arrDataCol); 181 // CSV ¤òÁ÷¿®¤¹¤ë¡£181 // CSVを送信する。 182 182 sfCSVDownload($head.$data, $page."_".$type); 183 183 exit; … … 185 185 186 186 if($mode == 'pdf') { 187 // CSV ½ÐÎÏ¥¿¥¤¥È¥ë¹Ô¤Î¼èÆÀ187 // CSV出力タイトル行の取得 188 188 list($arrTitleCol, $arrDataCol, $arrColSize, $arrAlign, $title) = lfGetPDFColum($page, $type, $objPage->keyname); 189 189 $head = sfGetPDFList($arrTitleCol); 190 190 $data = lfGetDataColPDF($objPage->arrResults, $arrDataCol, 40); 191 // PDF ½ÐÎÏÍÑ191 // PDF出力用 192 192 $graph_name = basename($objPage->tpl_image); 193 193 lfPDFDownload($graph_name, $head . $data, $arrColSize, $arrAlign, $sdate, $edate, $title, $page); … … 198 198 default: 199 199 if(count($_GET) == 0) { 200 // ¥Ð¥Ã¥Á¥â¡¼¥É¤Î¾ì¹ç¤Î¤ß¼Â¹Ô¤¹¤ë200 // バッチモードの場合のみ実行する 201 201 if(DAILY_BATCH_MODE) { 202 // 1 ¥ö·îʬ¤Î½¸·×202 // 1ヶ月分の集計 203 203 lfStartDailyTotal(31,0); 204 204 } … … 207 207 } 208 208 209 // ÅÐÏ¿¡¦¹¹¿·Æü¸¡º÷ÍÑ209 // 登録・更新日検索用 210 210 $objDate = new SC_Date(); 211 211 $objDate->setStartYear(RELEASE_YEAR); … … 214 214 $objPage->arrMonth = $objDate->getMonth(); 215 215 $objPage->arrDay = $objDate->getDay(); 216 // ÆþÎÏÃͤμèÆÀ216 // 入力値の取得 217 217 $objPage->arrForm = $objFormParam->getFormParamList(); 218 218 … … 223 223 224 224 //--------------------------------------------------------------------------------------------------------------------------- 225 /* PDF ½ÐÎÏ*/225 /* PDF出力 */ 226 226 function lfPDFDownload($image, $table, $arrColSize, $arrAlign, $sdate, $edate, $title, $page = "") { 227 227 … … 229 229 $objPdf->setTableColor("CCCCCC", "F0F0F0", "D1DEFE"); 230 230 231 // ÅÚÂæ¤È¤Ê¤ëPDF¥Õ¥¡¥¤¥ë¤Î»ØÄê231 // 土台となるPDFファイルの指定 232 232 $objPdf->setTemplate(PDF_DIR . "total.pdf"); 233 233 … … 239 239 $arrImage['graph_block'] = GRAPH_DIR . $image; 240 240 241 // ʸËö¤Î\n¤òºï½ü¤¹¤ë241 // 文末の\nを削除する 242 242 $table = ereg_replace("\n$", "", $table); 243 243 $arrRet = split("\n", $table); … … 246 246 for($page = 1; $page <= $page_max; $page++) { 247 247 if($page > 1) { 248 // 2 ¥Ú¡¼¥¸°Ê¹ß248 // 2ページ以降 249 249 $start_no = 35 * ($page - 1) + 1; 250 250 } else { 251 // ³«»Ï¥Ú¡¼¥¸251 // 開始ページ 252 252 $start_no = 1; 253 253 } … … 256 256 $objPdf->setTextBlock($arrText); 257 257 $objPdf->setImageBlock($arrImage); 258 // ¥Ö¥í¥Ã¥¯ÃÍ¤ÎÆþÎÏ258 // ブロック値の入力 259 259 $objPdf->writeBlock(); 260 // ºÇ½ª¥Ú¡¼¥¸¤Î¤ß¡¢¾¦ÉÊÊ̽¸·×¤Ï¹ç·×¤¬¤Ê¤¤¤Î¤ÇºÇ½ª¹Ô¤Î¿§¤òÊѹ¹¤·¤Ê¤¤¡£260 // 最終ページのみ、商品別集計は合計がないので最終行の色を変更しない。 261 261 if($page == $page_max && $page != 'products') { 262 262 $last_color_flg = true; … … 268 268 } 269 269 270 // PDF ¤Î½ÐÎÏ270 // PDFの出力 271 271 $objPdf->output(); 272 272 } 273 273 274 /* ¥»¥Ã¥·¥ç¥ó¤ËÆþÎÏ´ü´Ö¤òµÏ¿¤¹¤ë*/274 /* セッションに入力期間を記録する */ 275 275 function lfSaveDateSession() { 276 276 if($_POST['form'] == 1) { … … 289 289 } 290 290 291 /* ¥Ç¥Õ¥©¥ë¥ÈÃͤμèÆÀ*/291 /* デフォルト値の取得 */ 292 292 function lfGetDateDefault() { 293 293 $year = date("Y"); … … 297 297 $list = $_SESSION['total']; 298 298 299 // ¥»¥Ã¥·¥ç¥ó¾ðÊó¤Ë³«»Ï·îÅÙ¤¬Êݸ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£299 // セッション情報に開始月度が保存されていない。 300 300 if($_SESSION['total']['startyear_m'] == "") { 301 301 $list['startyear_m'] = $year; … … 303 303 } 304 304 305 // ¥»¥Ã¥·¥ç¥ó¾ðÊó¤Ë³«»ÏÆüÉÕ¡¢½ªÎ»ÆüÉÕ¤¬Êݸ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£305 // セッション情報に開始日付、終了日付が保存されていない。 306 306 if($_SESSION['total']['startyear'] == "" && $_SESSION['total']['endyear'] == "") { 307 307 $list['startyear'] = $year; … … 316 316 } 317 317 318 /* ¥Ñ¥é¥á¡¼¥¿¾ðÊó¤Î½é´ü²½*/318 /* パラメータ情報の初期化 */ 319 319 function lfInitParam() { 320 320 global $objFormParam; 321 321 322 // ¥Ç¥Õ¥©¥ë¥ÈÃͤμèÆÀ322 // デフォルト値の取得 323 323 $arrList = lfGetDateDefault(); 324 324 325 // ·îÅÙ½¸·×326 $objFormParam->addParam(" ·îÅÙ", "search_startyear_m", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startyear_m']);327 $objFormParam->addParam(" ·îÅÙ", "search_startmonth_m", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startmonth_m']);328 // ´ü´Ö½¸·×329 $objFormParam->addParam(" ³«»ÏÆü", "search_startyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startyear']);330 $objFormParam->addParam(" ³«»ÏÆü", "search_startmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startmonth']);331 $objFormParam->addParam(" ³«»ÏÆü", "search_startday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startday']);332 $objFormParam->addParam(" ½ªÎ»Æü", "search_endyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['endyear']);333 $objFormParam->addParam(" ½ªÎ»Æü", "search_endmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['endmonth']);334 $objFormParam->addParam(" ½ªÎ»Æü", "search_endday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['endday']);335 336 // hidden ¥Ç¡¼¥¿¤Î¼èÆÀÍÑ325 // 月度集計 326 $objFormParam->addParam("月度", "search_startyear_m", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startyear_m']); 327 $objFormParam->addParam("月度", "search_startmonth_m", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startmonth_m']); 328 // 期間集計 329 $objFormParam->addParam("開始日", "search_startyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startyear']); 330 $objFormParam->addParam("開始日", "search_startmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startmonth']); 331 $objFormParam->addParam("開始日", "search_startday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startday']); 332 $objFormParam->addParam("終了日", "search_endyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['endyear']); 333 $objFormParam->addParam("終了日", "search_endmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['endmonth']); 334 $objFormParam->addParam("終了日", "search_endday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['endday']); 335 336 // hiddenデータの取得用 337 337 $objFormParam->addParam("", "page"); 338 338 $objFormParam->addParam("", "type"); … … 341 341 } 342 342 343 /* ÆþÎÏÆâÍÆ¤Î¥Á¥§¥Ã¥¯*/343 /* 入力内容のチェック */ 344 344 function lfCheckError() { 345 345 global $objFormParam; 346 // ÆþÎϥǡ¼¥¿¤òÅϤ¹¡£346 // 入力データを渡す。 347 347 $arrRet = $objFormParam->getHashArray(); 348 348 $objErr = new SC_CheckError($arrRet); 349 349 $objErr->arrErr = $objFormParam->checkError(); 350 350 351 // ÆÃ¼ì¹àÌÜ¥Á¥§¥Ã¥¯351 // 特殊項目チェック 352 352 if($_POST['form'] == 1) { 353 $objErr->doFunc(array(" ·îÅÙ", "search_startyear_m"), array("ONE_EXIST_CHECK"));353 $objErr->doFunc(array("月度", "search_startyear_m"), array("ONE_EXIST_CHECK")); 354 354 } 355 355 356 356 if($_POST['form'] == 2) { 357 $objErr->doFunc(array(" ´ü´Ö", "search_startyear", "search_endyear"), array("ONE_EXIST_CHECK"));357 $objErr->doFunc(array("期間", "search_startyear", "search_endyear"), array("ONE_EXIST_CHECK")); 358 358 } 359 359 360 $objErr->doFunc(array(" ·îÅÙ", "search_startyear_m", "search_startmonth_m"), array("ALL_EXIST_CHECK"));361 $objErr->doFunc(array(" ³«»ÏÆü", "search_startyear", "search_startmonth", "search_startday"), array("CHECK_DATE"));362 $objErr->doFunc(array(" ½ªÎ»Æü", "search_endyear", "search_endmonth", "search_endday"), array("CHECK_DATE"));363 $objErr->doFunc(array(" ³«»ÏÆü", "½ªÎ»Æü", "search_startyear", "search_startmonth", "search_startday", "search_endyear", "search_endmonth", "search_endday"), array("CHECK_SET_TERM"));360 $objErr->doFunc(array("月度", "search_startyear_m", "search_startmonth_m"), array("ALL_EXIST_CHECK")); 361 $objErr->doFunc(array("開始日", "search_startyear", "search_startmonth", "search_startday"), array("CHECK_DATE")); 362 $objErr->doFunc(array("終了日", "search_endyear", "search_endmonth", "search_endday"), array("CHECK_DATE")); 363 $objErr->doFunc(array("開始日", "終了日", "search_startyear", "search_startmonth", "search_startday", "search_endyear", "search_endmonth", "search_endday"), array("CHECK_SET_TERM")); 364 364 return $objErr->arrErr; 365 365 } 366 366 367 /* ÀÞ¤ìÀþ¥°¥é¥Õ¤ÎºîÀ®*/367 /* 折れ線グラフの作成 */ 368 368 function lfGetGraphLine($arrResults, $keyname, $type, $xtitle, $ytitle, $sdate, $edate) { 369 369 370 370 $ret_path = ""; 371 371 372 // ·ë²Ì¤¬0¹Ô°Ê¾å¤¢¤ë¾ì¹ç¤Î¤ß¥°¥é¥Õ¤òÀ¸À®¤¹¤ë¡£372 // 結果が0行以上ある場合のみグラフを生成する。 373 373 if(count($arrResults) > 0) { 374 374 375 // ¥°¥é¥Õ¤ÎÀ¸À®375 // グラフの生成 376 376 $arrList = sfArrKeyValue($arrResults, $keyname, "total"); 377 377 378 // °ì»þ¥Õ¥¡¥¤¥ë̾¤Î¼èÆÀ378 // 一時ファイル名の取得 379 379 $pngname = lfGetGraphPng($type); 380 380 381 381 $path = GRAPH_DIR . $pngname; 382 382 383 // ¥é¥Ù¥ëɽ¼¨¥¤¥ó¥¿¡¼¥Ð¥ë¤òµá¤á¤ë383 // ラベル表示インターバルを求める 384 384 $interval = intval(count($arrList) / 20); 385 385 if($interval < 1) { … … 389 389 $objGraphLine = new SC_GraphLine(); 390 390 391 // ÃͤΥ»¥Ã¥È391 // 値のセット 392 392 $objGraphLine->setData($arrList); 393 393 $objGraphLine->setXLabel(array_keys($arrList)); 394 394 395 // ¥é¥Ù¥ë²óž(ÆüËܸìÉÔ²Ä)395 // ラベル回転(日本語不可) 396 396 if($keyname == "key_day"){ 397 397 $objGraphLine->setXLabelAngle(45); 398 398 } 399 399 400 // ¥¿¥¤¥È¥ë¥»¥Ã¥È400 // タイトルセット 401 401 $objGraphLine->setXTitle($xtitle); 402 402 $objGraphLine->setYTitle($ytitle); 403 403 404 // ¥á¥¤¥ó¥¿¥¤¥È¥ëºîÀ®404 // メインタイトル作成 405 405 list($sy, $sm, $sd) = split("[/ ]" , $sdate); 406 406 list($ey, $em, $ed) = split("[/ ]" , $edate); 407 $start_date = $sy . " ǯ" . $sm . "·î" . $sd . "Æü";408 $end_date = $ey . " ǯ" . $em . "·î" . $ed . "Æü";409 $objGraphLine->drawTitle(" ½¸·×´ü´Ö¡§" . $start_date . " - " . $end_date);410 411 // ¥°¥é¥ÕÉÁ²è407 $start_date = $sy . "年" . $sm . "月" . $sd . "日"; 408 $end_date = $ey . "年" . $em . "月" . $ed . "日"; 409 $objGraphLine->drawTitle("集計期間:" . $start_date . " - " . $end_date); 410 411 // グラフ描画 412 412 $objGraphLine->drawGraph(); 413 413 414 // ¥°¥é¥Õ¤Î½ÐÎÏ414 // グラフの出力 415 415 if(DRAW_IMAGE){ 416 416 $objGraphLine->outputGraph(); … … 418 418 } 419 419 420 // ¥Õ¥¡¥¤¥ë¥Ñ¥¹¤òÊÖ¤¹420 // ファイルパスを返す 421 421 $ret_path = GRAPH_URL . $pngname; 422 422 } … … 424 424 } 425 425 426 // ±ß¥°¥é¥Õ¤ÎºîÀ®426 // 円グラフの作成 427 427 function lfGetGraphPie($arrResults, $keyname, $type, $title = "", $sdate = "", $edate = "") { 428 428 429 429 $ret_path = ""; 430 430 431 // ·ë²Ì¤¬0¹Ô°Ê¾å¤¢¤ë¾ì¹ç¤Î¤ß¥°¥é¥Õ¤òÀ¸À®¤¹¤ë¡£431 // 結果が0行以上ある場合のみグラフを生成する。 432 432 if(count($arrResults) > 0) { 433 // ¥°¥é¥Õ¤ÎÀ¸À®433 // グラフの生成 434 434 $arrList = sfArrKeyValue($arrResults, $keyname, "total", GRAPH_PIE_MAX, GRAPH_LABEL_MAX); 435 435 436 // °ì»þ¥Õ¥¡¥¤¥ë̾¤Î¼èÆÀ436 // 一時ファイル名の取得 437 437 $pngname = lfGetGraphPng($type); 438 438 $path = GRAPH_DIR . $pngname; … … 440 440 $objGraphPie = new SC_GraphPie(); 441 441 442 /* ¥Ç¥Ð¥Ã¥°É½¼¨ÍÑby naka442 /* デバッグ表示用 by naka 443 443 foreach($arrList as $key => $val) { 444 444 $objGraphPie->debugPrint("key:$key val:$val"); … … 446 446 */ 447 447 448 // ¥Ç¡¼¥¿¤ò¥»¥Ã¥È¤¹¤ë448 // データをセットする 449 449 $objGraphPie->setData($arrList); 450 // ËÞÎã¤ò¥»¥Ã¥È¤¹¤ë450 // 凡例をセットする 451 451 $objGraphPie->setLegend(array_keys($arrList)); 452 452 453 // ¥á¥¤¥ó¥¿¥¤¥È¥ëºîÀ®453 // メインタイトル作成 454 454 list($sy, $sm, $sd) = split("[/ ]" , $sdate); 455 455 list($ey, $em, $ed) = split("[/ ]" , $edate); 456 $start_date = $sy . " ǯ" . $sm . "·î" . $sd . "Æü";457 $end_date = $ey . " ǯ" . $em . "·î" . $ed . "Æü";458 $objGraphPie->drawTitle(" ½¸·×´ü´Ö¡§" . $start_date . " - " . $end_date);456 $start_date = $sy . "年" . $sm . "月" . $sd . "日"; 457 $end_date = $ey . "年" . $em . "月" . $ed . "日"; 458 $objGraphPie->drawTitle("集計期間:" . $start_date . " - " . $end_date); 459 459 460 // ±ß¥°¥é¥ÕÉÁ²è460 // 円グラフ描画 461 461 $objGraphPie->drawGraph(); 462 462 463 // ¥°¥é¥Õ¤Î½ÐÎÏ463 // グラフの出力 464 464 if(DRAW_IMAGE){ 465 465 $objGraphPie->outputGraph(); … … 467 467 } 468 468 469 // ¥Õ¥¡¥¤¥ë¥Ñ¥¹¤òÊÖ¤¹469 // ファイルパスを返す 470 470 $ret_path = GRAPH_URL . $pngname; 471 471 } … … 473 473 } 474 474 475 // ËÀ¥°¥é¥Õ¤ÎºîÀ®475 // 棒グラフの作成 476 476 function lfGetGraphBar($arrResults, $keyname, $type, $xtitle, $ytitle, $sdate, $edate) { 477 477 $ret_path = ""; 478 478 479 // ·ë²Ì¤¬0¹Ô°Ê¾å¤¢¤ë¾ì¹ç¤Î¤ß¥°¥é¥Õ¤òÀ¸À®¤¹¤ë¡£479 // 結果が0行以上ある場合のみグラフを生成する。 480 480 if(count($arrResults) > 0) { 481 // ¥°¥é¥Õ¤ÎÀ¸À®481 // グラフの生成 482 482 $arrList = sfArrKeyValue($arrResults, $keyname, "total", GRAPH_PIE_MAX, GRAPH_LABEL_MAX); 483 483 484 // °ì»þ¥Õ¥¡¥¤¥ë̾¤Î¼èÆÀ484 // 一時ファイル名の取得 485 485 $pngname = lfGetGraphPng($type); 486 486 $path = GRAPH_DIR . $pngname; … … 489 489 490 490 foreach(array_keys($arrList) as $val) { 491 $arrKey[] = ereg_replace(" ¡Á", "-", $val);492 } 493 494 // ¥°¥é¥ÕÉÁ²è491 $arrKey[] = ereg_replace("〜", "-", $val); 492 } 493 494 // グラフ描画 495 495 $objGraphBar->setXLabel($arrKey); 496 496 $objGraphBar->setXTitle($xtitle); … … 498 498 $objGraphBar->setData($arrList); 499 499 500 // ¥á¥¤¥ó¥¿¥¤¥È¥ëºîÀ®500 // メインタイトル作成 501 501 $arrKey = array_keys($arrList); 502 502 list($sy, $sm, $sd) = split("[/ ]" , $sdate); 503 503 list($ey, $em, $ed) = split("[/ ]" , $edate); 504 $start_date = $sy . " ǯ" . $sm . "·î" . $sd . "Æü";505 $end_date = $ey . " ǯ" . $em . "·î" . $ed . "Æü";506 $objGraphBar->drawTitle(" ½¸·×´ü´Ö¡§" . $start_date . " - " . $end_date);504 $start_date = $sy . "年" . $sm . "月" . $sd . "日"; 505 $end_date = $ey . "年" . $em . "月" . $ed . "日"; 506 $objGraphBar->drawTitle("集計期間:" . $start_date . " - " . $end_date); 507 507 508 508 $objGraphBar->drawGraph(); … … 513 513 } 514 514 515 // ¥Õ¥¡¥¤¥ë¥Ñ¥¹¤òÊÖ¤¹515 // ファイルパスを返す 516 516 $ret_path = GRAPH_URL . $pngname; 517 517 } … … 519 519 } 520 520 521 // ¥°¥é¥ÕÍѤÎPNG¥Õ¥¡¥¤¥ë̾521 // グラフ用のPNGファイル名 522 522 function lfGetGraphPng($keyname) { 523 523 if($_POST['search_startyear_m'] != "") { … … 529 529 } 530 530 531 // ²ñ°÷¡¢Èó²ñ°÷½¸·×¤ÎWHEREʬ¤ÎºîÀ®531 // 会員、非会員集計のWHERE分の作成 532 532 function lfGetWhereMember($col_date, $sdate, $edate, $type, $col_member = "customer_id") { 533 // ¼èÆÀÆüÉդλØÄê533 // 取得日付の指定 534 534 if($sdate != "") { 535 535 if ($where != "") { … … 547 547 } 548 548 549 // ²ñ°÷¡¢Èó²ñ°÷¤ÎȽÄê549 // 会員、非会員の判定 550 550 switch($type) { 551 // Á´ÂÎ551 // 全体 552 552 case 'all': 553 553 break; … … 571 571 } 572 572 573 /** ²ñ°÷Ê̽¸·×**/573 /** 会員別集計 **/ 574 574 function lfGetOrderMember($type, $sdate, $edate, $objPage, $graph = true) { 575 575 global $arrSex; … … 577 577 list($where, $arrval) = lfGetWhereMember('create_date', $sdate, $edate, $type); 578 578 579 // ²ñ°÷½¸·×¤Î¼èÆÀ579 // 会員集計の取得 580 580 $col = "COUNT(*) AS order_count, SUM(total) AS total, (AVG(total)) AS total_average, order_sex"; 581 581 $from = "dtb_order"; … … 586 586 $arrRet = $objQuery->select($col, $from, $tmp_where, $arrval); 587 587 588 // ²ñ°÷¹ØÆþ¤Ç¤¢¤ë¤³¤È¤òµÏ¿¤¹¤ë¡£588 // 会員購入であることを記録する。 589 589 $max = count($arrRet); 590 590 for($i = 0; $i < $max; $i++) { 591 $arrRet[$i]['member_name'] = ' ²ñ°÷'.$arrSex[$arrRet[$i]['order_sex']];591 $arrRet[$i]['member_name'] = '会員'.$arrSex[$arrRet[$i]['order_sex']]; 592 592 } 593 593 $objPage->arrResults = $arrRet; 594 594 595 // Èó²ñ°÷½¸·×¤Î¼èÆÀ595 // 非会員集計の取得 596 596 $tmp_where = $where . " AND customer_id = 0 AND del_flg = 0 "; 597 597 $arrRet = $objQuery->select($col, $from, $tmp_where, $arrval); 598 // Èó²ñ°÷¹ØÆþ¤Ç¤¢¤ë¤³¤È¤òµÏ¿¤¹¤ë¡£598 // 非会員購入であることを記録する。 599 599 $max = count($arrRet); 600 600 for($i = 0; $i < $max; $i++) { 601 $arrRet[$i]['member_name'] = ' Èó²ñ°÷'.$arrSex[$arrRet[$i]['order_sex']];601 $arrRet[$i]['member_name'] = '非会員'.$arrSex[$arrRet[$i]['order_sex']]; 602 602 } 603 603 604 604 $objPage->arrResults = array_merge($objPage->arrResults, $arrRet); 605 605 606 // ±ß¥°¥é¥Õ¤ÎÀ¸À®606 // 円グラフの生成 607 607 if($graph) { 608 608 $image_key = "member"; 609 $objPage->tpl_image = lfGetGraphPie($objPage->arrResults, "member_name", $image_key, "( Çä¾åÈæÎ¨)", $sdate, $edate);609 $objPage->tpl_image = lfGetGraphPie($objPage->arrResults, "member_name", $image_key, "(売上比率)", $sdate, $edate); 610 610 } 611 611 … … 613 613 } 614 614 615 /** ¾¦ÉÊÊ̽¸·×**/615 /** 商品別集計 **/ 616 616 function lfGetOrderProducts($type, $sdate, $edate, $objPage, $graph = true, $mode = "") { 617 617 list($where, $arrval) = lfGetWhereMember('create_date', $sdate, $edate, $type); … … 635 635 $objPage->arrResults = $objQuery->getall($sql, $arrval); 636 636 637 // ±ß¥°¥é¥Õ¤ÎÀ¸À®637 // 円グラフの生成 638 638 if($graph) { 639 639 $image_key = "products_" . $type; 640 $objPage->tpl_image = lfGetGraphPie($objPage->arrResults, "name", $image_key, "( Çä¾åÈæÎ¨)", $sdate, $edate);640 $objPage->tpl_image = lfGetGraphPie($objPage->arrResults, "name", $image_key, "(売上比率)", $sdate, $edate); 641 641 } 642 642 … … 644 644 } 645 645 646 /** ¿¦¶ÈÊ̽¸·×**/646 /** 職業別集計 **/ 647 647 function lfGetOrderJob($type, $sdate, $edate, $objPage, $graph = true) { 648 648 global $arrJob; … … 663 663 $objPage->arrResults[$i]['job_name'] = $arrJob[$job_key]; 664 664 } else { 665 $objPage->arrResults[$i]['job_name'] = " ̤²óÅú";666 } 667 } 668 669 // ±ß¥°¥é¥Õ¤ÎÀ¸À®665 $objPage->arrResults[$i]['job_name'] = "未回答"; 666 } 667 } 668 669 // 円グラフの生成 670 670 if($graph) { 671 671 $image_key = "job_" . $type; 672 $objPage->tpl_image = lfGetGraphPie($objPage->arrResults, "job_name", $image_key, "( Çä¾åÈæÎ¨)", $sdate, $edate);672 $objPage->tpl_image = lfGetGraphPie($objPage->arrResults, "job_name", $image_key, "(売上比率)", $sdate, $edate); 673 673 } 674 674 … … 676 676 } 677 677 678 /** ǯÂåÊ̽¸·×**/678 /** 年代別集計 **/ 679 679 function lfGetOrderAge($type, $sdate, $edate, $objPage, $graph = true) { 680 680 … … 697 697 if($start_age != "" || $end_age != "") { 698 698 if($end_age != 999) { 699 $objPage->arrResults[$i]['age_name'] = $start_age . " ¡Á" . $end_age . "ºÐ";699 $objPage->arrResults[$i]['age_name'] = $start_age . "〜" . $end_age . "歳"; 700 700 } else { 701 $objPage->arrResults[$i]['age_name'] = $start_age . " ºÐ¡Á";701 $objPage->arrResults[$i]['age_name'] = $start_age . "歳〜"; 702 702 } 703 703 } else { 704 $objPage->arrResults[$i]['age_name'] = " ̤²óÅú";705 } 706 } 707 708 // ËÀ¥°¥é¥Õ¤ÎÀ¸À®704 $objPage->arrResults[$i]['age_name'] = "未回答"; 705 } 706 } 707 708 // 棒グラフの生成 709 709 if($graph) { 710 710 $image_key = "age_" . $type; 711 $xtitle = "( ǯÎð)";712 $ytitle = "( Çä¾å¹ç·×)";711 $xtitle = "(年齢)"; 712 $ytitle = "(売上合計)"; 713 713 $objPage->tpl_image = lfGetGraphBar($objPage->arrResults, "age_name", $image_key, $xtitle, $ytitle, $sdate, $edate); 714 714 } … … 717 717 } 718 718 719 /** ´ü´ÖÊ̽¸·×**/719 /** 期間別集計 **/ 720 720 function lfGetOrderTerm($type, $sdate, $edate, $objPage, $graph = true) { 721 721 … … 727 727 728 728 switch($type) { 729 // ·îÊÌ729 // 月別 730 730 case 'month': 731 731 $col = $tmp_col . ",key_month"; … … 733 733 $objQuery->setOrder("key_month"); 734 734 $objPage->keyname = "key_month"; 735 $objPage->tpl_tail = " ·î";735 $objPage->tpl_tail = "月"; 736 736 $from = "dtb_bat_order_daily"; 737 $xtitle = "( ·îÊÌ)";738 $ytitle = "( Çä¾å¹ç·×)";739 break; 740 // ǯÊÌ737 $xtitle = "(月別)"; 738 $ytitle = "(売上合計)"; 739 break; 740 // 年別 741 741 case 'year': 742 742 $col = $tmp_col . ",key_year"; … … 744 744 $objQuery->setOrder("key_year"); 745 745 $objPage->keyname = "key_year"; 746 $objPage->tpl_tail = " ǯ";746 $objPage->tpl_tail = "年"; 747 747 $from = "dtb_bat_order_daily"; 748 $xtitle = "( ǯÊÌ)";749 $ytitle = "( Çä¾å¹ç·×)";750 break; 751 // ÍËÆüÊÌ748 $xtitle = "(年別)"; 749 $ytitle = "(売上合計)"; 750 break; 751 // 曜日別 752 752 case 'wday': 753 753 $col = $tmp_col . ",key_wday, wday"; … … 755 755 $objQuery->setOrder("wday"); 756 756 $objPage->keyname = "key_wday"; 757 $objPage->tpl_tail = " ÍËÆü";757 $objPage->tpl_tail = "曜日"; 758 758 $from = "dtb_bat_order_daily"; 759 $xtitle = "( ÍËÆüÊÌ)";760 $ytitle = "( Çä¾å¹ç·×)";761 break; 762 // »þ´ÖÊÌ759 $xtitle = "(曜日別)"; 760 $ytitle = "(売上合計)"; 761 break; 762 // 時間別 763 763 case 'hour': 764 764 $col = $tmp_col . ",hour"; … … 766 766 $objQuery->setOrder("hour"); 767 767 $objPage->keyname = "hour"; 768 $objPage->tpl_tail = " »þ";768 $objPage->tpl_tail = "時"; 769 769 $from = "dtb_bat_order_daily_hour"; 770 $xtitle = "( »þ´ÖÊÌ)";771 $ytitle = "( Çä¾å¹ç·×)";770 $xtitle = "(時間別)"; 771 $ytitle = "(売上合計)"; 772 772 break; 773 773 default: … … 776 776 $objPage->keyname = "key_day"; 777 777 $from = "dtb_bat_order_daily"; 778 $xtitle = "( ÆüÊÌ)";779 $ytitle = "( Çä¾å¹ç·×)";780 break; 781 } 782 783 784 // ¼èÆÀÆüÉդλØÄê778 $xtitle = "(日別)"; 779 $ytitle = "(売上合計)"; 780 break; 781 } 782 783 784 // 取得日付の指定 785 785 if($sdate != "") { 786 786 if ($where != "") { … … 798 798 } 799 799 800 // ¸¡º÷·ë²Ì¤Î¼èÆÀ800 // 検索結果の取得 801 801 $objPage->arrResults = $objQuery->select($col, $from, $where, $arrval); 802 802 803 // ÀÞ¤ìÀþ¥°¥é¥Õ¤ÎÀ¸À®803 // 折れ線グラフの生成 804 804 if($graph) { 805 805 $image_key = "term_" . $type; … … 807 807 } 808 808 809 // ¸¡º÷·ë²Ì¤¬0¤Ç¤Ê¤¤¾ì¹ç809 // 検索結果が0でない場合 810 810 if(count($objPage->arrResults) > 0) { 811 // ºÇ½ª½¸·×¹Ô¼èÆÀ¤¹¤ë811 // 最終集計行取得する 812 812 $col = $tmp_col; 813 813 $objQuery = new SC_Query(); 814 814 $arrRet = $objQuery->select($col, $from, $where, $arrval); 815 $arrRet[0][$objPage->keyname] = " ¹ç·×";815 $arrRet[0][$objPage->keyname] = "合計"; 816 816 $objPage->arrResults[] = $arrRet[0]; 817 817 } 818 818 819 // Ê¿¶ÑÃͤη׻»819 // 平均値の計算 820 820 $max = count($objPage->arrResults); 821 821 for($i = 0; $i < $max; $i++) {
Note: See TracChangeset
for help on using the changeset viewer.
