Subversion Repositories php-qbpwcf

Rev

Rev 3 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3 Rev 226
Line 1... Line 1...
1
<?php
1
<?php
2
 
2
 
3
/*
3
/*
4
 
4
 
5
	QBPWCF, Quick Build PHP website Component base on Fedora Linux.
5
	QBPWCF, Quick Build PHP website Component base on Fedora Linux.
6
    Copyright (C) 2015~2025 Min-Jhin,Chen
6
    Copyright (C) 2014~2025 MIN ZHI, CHEN
7
 
7
 
8
    This file is part of QBPWCF.
8
    This file is part of QBPWCF.
9
 
9
 
10
    QBPWCF is free software: you can redistribute it and/or modify
10
    QBPWCF is free software: you can redistribute it and/or modify
11
    it under the terms of the GNU General Public License as published by
11
    it under the terms of the GNU General Public License as published by
Line 43... Line 43...
43
	#$arguments,陣列,為呼叫方法時所用的參數.
43
	#$arguments,陣列,為呼叫方法時所用的參數.
44
	#參考資料:
44
	#參考資料:
45
	#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
45
	#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
46
	*/
46
	*/
47
	public function __call($method,$arguments){
47
	public function __call($method,$arguments){
48
		
48
 
49
		#取得當前執行的函式
49
		#取得當前執行的函式
50
		$result["function"]=__FUNCTION__;
50
		$result["function"]=__FUNCTION__;
51
		
51
 
52
		#設置執行不正常
52
		#設置執行不正常
53
		$result["status"]="false";
53
		$result["status"]="false";
54
		
54
 
55
		#設置執行錯誤
55
		#設置執行錯誤
56
		$result["error"][]=__NAMESPACE__ ."/".$method."() 不存在!";
56
		$result["error"][]=__NAMESPACE__ ."/".$method."() 不存在!";
57
		
57
 
58
		#設置所丟入的參數
58
		#設置所丟入的參數
59
		$result["error"][]=$arguments;
59
		$result["error"][]=$arguments;
60
		
60
 
61
		#回傳結果
61
		#回傳結果
62
		return $result;
62
		return $result;
63
		
63
 
64
		}#function __call end
64
		}#function __call end
65
		
65
 
66
	/*
66
	/*
67
	#函式說明:
67
	#函式說明:
68
	#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
68
	#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
69
	#回傳結果:
69
	#回傳結果:
70
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
70
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 75... Line 75...
75
	#$arguments,陣列,為呼叫方法時所用的參數.
75
	#$arguments,陣列,為呼叫方法時所用的參數.
76
	#參考資料:
76
	#參考資料:
77
	#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
77
	#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
78
	*/
78
	*/
79
	public static function __callStatic($method,$arguments){
79
	public static function __callStatic($method,$arguments){
80
		
80
 
81
		#取得當前執行的函式
81
		#取得當前執行的函式
82
		$result["function"]=__FUNCTION__;
82
		$result["function"]=__FUNCTION__;
83
		
83
 
84
		#設置執行不正常
84
		#設置執行不正常
85
		$result["status"]="false";
85
		$result["status"]="false";
86
		
86
 
87
		#設置執行錯誤
87
		#設置執行錯誤
88
		$result["error"][]="欲呼叫的". __NAMESPACE__ ."/".$method."() 不存在!";
88
		$result["error"][]="欲呼叫的". __NAMESPACE__ ."/".$method."() 不存在!";
89
		
89
 
90
		#設置所丟入的參數
90
		#設置所丟入的參數
91
		$result["error"][]=$arguments;
91
		$result["error"][]=$arguments;
92
		
92
 
93
		#回傳結果
93
		#回傳結果
94
		return $result;
94
		return $result;
95
		
95
 
96
		}#function __callStatic end
96
		}#function __callStatic end
97
 
97
 
98
	/*
98
	/*
99
	#函式說明:
99
	#函式說明:
100
	#將逗號分隔的字串 "1,2,5,7" 變成 "1,1,0,0,1,0,1" 
100
	#將逗號分隔的字串 "1,2,5,7" 變成 "1,1,0,0,1,0,1"
101
	#回傳的結果:
101
	#回傳的結果:
102
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
102
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
103
	#$result["error"],錯誤訊息陣列.
103
	#$result["error"],錯誤訊息陣列.
104
	#$result["function"],當前執行的函數名稱.
104
	#$result["function"],當前執行的函數名稱.
105
	#$result["content"],分割好的字串
105
	#$result["content"],分割好的字串
Line 111... Line 111...
111
	#$conf["optionNameArray"]=array("a1,a2,a3,b1,b2,c1,d1,d2,d3,e");
111
	#$conf["optionNameArray"]=array("a1,a2,a3,b1,b2,c1,d1,d2,d3,e");
112
	#參考資料:
112
	#參考資料:
113
	#無.
113
	#無.
114
	#備註:
114
	#備註:
115
	#無
115
	#無
116
	*/		
116
	*/
117
	public static function changeMultiChoiceToSingleChoice(&$conf){
117
	public static function changeMultiChoiceToSingleChoice(&$conf){
118
 
118
 
119
		#初始化要回傳的內容
119
		#初始化要回傳的內容
120
		$result=array();
120
		$result=array();
121
		
121
 
122
		#取得當前執行的函數名稱
122
		#取得當前執行的函數名稱
123
		$result["function"]=__FUNCTION__;
123
		$result["function"]=__FUNCTION__;
124
 
124
 
125
		#初始化要回傳的內容 
125
		#初始化要回傳的內容
126
		$result["content"]="";
126
		$result["content"]="";
127
 
127
 
128
		#如果 $conf 不為陣列
128
		#如果 $conf 不為陣列
129
		if(gettype($conf)!="array"){
129
		if(gettype($conf)!="array"){
130
			
130
 
131
			#設置執行失敗
131
			#設置執行失敗
132
			$result["status"]="false";
132
			$result["status"]="false";
133
			
133
 
134
			#設置執行錯誤訊息
134
			#設置執行錯誤訊息
135
			$result["error"][]="\$conf變數須為陣列形態";
135
			$result["error"][]="\$conf變數須為陣列形態";
136
 
136
 
137
			#如果傳入的參數為 null
137
			#如果傳入的參數為 null
138
			if($conf==null){
138
			if($conf==null){
139
				
139
 
140
				#設置執行錯誤訊息
140
				#設置執行錯誤訊息
141
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
141
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
142
				
142
 
143
				}#if end
143
				}#if end
144
 
144
 
145
			#回傳結果
145
			#回傳結果
146
			return $result;
146
			return $result;
147
			
147
 
148
			}#if end
148
			}#if end
149
 
149
 
150
		#儲存那幾個選項有勾選或未勾選的字串陣列
150
		#儲存那幾個選項有勾選或未勾選的字串陣列
151
		$strArray=array();
151
		$strArray=array();
152
 
152
 
153
		#如果 $conf["stringData"] 不存在
153
		#如果 $conf["stringData"] 不存在
154
		if(!isset($conf["stringData"])){
154
		if(!isset($conf["stringData"])){
155
 
155
 
156
			#設置執行失敗
156
			#設置執行失敗
157
			$result["status"]="false";
157
			$result["status"]="false";
158
			
158
 
159
			#設置錯誤訊息
159
			#設置錯誤訊息
160
			$result["error"][]="\$conf[\"stringData\"]參數未設定";
160
			$result["error"][]="\$conf[\"stringData\"]參數未設定";
161
 
161
 
162
			#回傳錯誤訊息
162
			#回傳錯誤訊息
163
			return $result;
163
			return $result;
Line 179... Line 179...
179
		$spiledStr=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);
179
		$spiledStr=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);
180
		unset($conf["stringProcess"]["spiltString"]);
180
		unset($conf["stringProcess"]["spiltString"]);
181
 
181
 
182
		#如果分割字串失敗
182
		#如果分割字串失敗
183
		if($spiledStr["status"]=="false"){
183
		if($spiledStr["status"]=="false"){
184
			
184
 
185
			#設置執行失敗
185
			#設置執行失敗
186
			$result["status"]="false";
186
			$result["status"]="false";
187
			
187
 
188
			#設置錯誤訊息
188
			#設置錯誤訊息
189
			$result["error"]=$spiledStr;
189
			$result["error"]=$spiledStr;
190
 
190
 
191
			#回傳錯誤訊息
191
			#回傳錯誤訊息
192
			return $result;
192
			return $result;
193
			
193
 
194
			}#if end
194
			}#if end
195
 
195
 
196
		#將字串中的 " 符號去除
196
		#將字串中的 " 符號去除
197
		#有幾個選項就執行幾次
197
		#有幾個選項就執行幾次
198
		for($i=0;$i<$spiledStr["dataCounts"];$i++){
198
		for($i=0;$i<$spiledStr["dataCounts"];$i++){
199
			
199
 
200
			#涵式說明:
200
			#涵式說明:
201
			#處理字串避免網頁出錯
201
			#處理字串避免網頁出錯
202
			#回傳的結果:
202
			#回傳的結果:
203
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
203
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
204
			#$result["function"],當前執行的函數.
204
			#$result["function"],當前執行的函數.
Line 213... Line 213...
213
			$correctCharacter=stringProcess::correctCharacter($conf["stringProcess"]["correctCharacter"]);
213
			$correctCharacter=stringProcess::correctCharacter($conf["stringProcess"]["correctCharacter"]);
214
			unset($conf["stringProcess"]["correctCharacter"]);
214
			unset($conf["stringProcess"]["correctCharacter"]);
215
 
215
 
216
			#如果剔除 " 符號失敗
216
			#如果剔除 " 符號失敗
217
			if($correctCharacter["status"]=="false"){
217
			if($correctCharacter["status"]=="false"){
218
				
218
 
219
				#設置執行失敗
219
				#設置執行失敗
220
				$result["status"]="false";
220
				$result["status"]="false";
221
				
221
 
222
				#設置錯誤訊息
222
				#設置錯誤訊息
223
				$result["error"]=$correctCharacter;
223
				$result["error"]=$correctCharacter;
224
 
224
 
225
				#回傳錯誤訊息
225
				#回傳錯誤訊息
226
				return $result;
226
				return $result;
227
				
227
 
228
				}#if end
228
				}#if end
229
 
229
 
230
			#取得處理好的字串
230
			#取得處理好的字串
231
			$spiledStr["dataArray"][$i]=$correctCharacter["content"];
231
			$spiledStr["dataArray"][$i]=$correctCharacter["content"];
232
 
232
 
233
			}#for end
233
			}#for end
234
 
234
 
235
		#如果 $conf["optionNameArray"] 有設定
235
		#如果 $conf["optionNameArray"] 有設定
236
		if(isset($conf["optionNameArray"])){
236
		if(isset($conf["optionNameArray"])){
237
			
237
 
238
			#取得選項的上限數值
238
			#取得選項的上限數值
239
			$conf["maxOptionNum"]=count($conf["optionNameArray"]);
239
			$conf["maxOptionNum"]=count($conf["optionNameArray"]);
240
		
240
 
241
			#有幾個選項就執行幾次
241
			#有幾個選項就執行幾次
242
			for($i=0;$i<$spiledStr["dataCounts"];$i++){
242
			for($i=0;$i<$spiledStr["dataCounts"];$i++){
243
							
243
 
244
				#取得當前選項的位置
244
				#取得當前選項的位置
245
				#涵式說明:
245
				#涵式說明:
246
				#檢查一個數值是否與陣列裏面的元素相同,如果有相同的則會傳其變數內容。
246
				#檢查一個數值是否與陣列裏面的元素相同,如果有相同的則會傳其變數內容。
247
				#回傳的結果:
247
				#回傳的結果:
248
				#$result["status"],"true"表示執行正確,"false"表示執行錯誤.
248
				#$result["status"],"true"表示執行正確,"false"表示執行錯誤.
Line 256... Line 256...
256
				$search["getEqualVar"]=search::getEqualVar($conf["search"]["getEqualVar"]);
256
				$search["getEqualVar"]=search::getEqualVar($conf["search"]["getEqualVar"]);
257
				unset($conf["search"]["getEqualVar"]);
257
				unset($conf["search"]["getEqualVar"]);
258
 
258
 
259
				#如果取得當前選項位置失敗
259
				#如果取得當前選項位置失敗
260
				if($search["getEqualVar"]["status"]=="false"){
260
				if($search["getEqualVar"]["status"]=="false"){
261
					
261
 
262
					#設置執行失敗
262
					#設置執行失敗
263
					$result["status"]="false";
263
					$result["status"]="false";
264
					
264
 
265
					#設置錯誤訊息
265
					#設置錯誤訊息
266
					$result["error"]=$search;
266
					$result["error"]=$search;
267
 
267
 
268
					#回傳錯誤訊息
268
					#回傳錯誤訊息
269
					return $result;
269
					return $result;
270
					
270
 
271
					}#if end
271
					}#if end
272
 
272
 
273
				#var_dump($search["getEqualVar"]);
273
				#var_dump($search["getEqualVar"]);
274
 
274
 
275
				#如果 $search["getEqualVar"]["founded"] 爲 "true"
275
				#如果 $search["getEqualVar"]["founded"] 爲 "true"
Line 287... Line 287...
287
		#反之沒有設定
287
		#反之沒有設定
288
		else{
288
		else{
289
 
289
 
290
			#有幾個選項就執行幾次
290
			#有幾個選項就執行幾次
291
			for($i=0;$i<$spiledStr["dataCounts"];$i++){
291
			for($i=0;$i<$spiledStr["dataCounts"];$i++){
292
			
292
 
293
				#debug
293
				#debug
294
				#var_dump($spiledStr["dataArray"][$i]);
294
				#var_dump($spiledStr["dataArray"][$i]);
295
			
295
 
296
				#將有填寫的選項設爲1
296
				#將有填寫的選項設爲1
297
				#將 $result[["dataArray"][$i]] 設爲 1;
297
				#將 $result[["dataArray"][$i]] 設爲 1;
298
				$strArray[$spiledStr["dataArray"][$i]-1]="1";
298
				$strArray[$spiledStr["dataArray"][$i]-1]="1";
299
 
299
 
300
				}#for end
300
				}#for end
Line 342... Line 342...
342
			#$result["value"],最大值的數字.
342
			#$result["value"],最大值的數字.
343
			#必填參數:
343
			#必填參數:
344
			$conf["math"]["getMaxValue"]["rawDataArray"]=$spiledStr["dataArray"];#爲原始數據
344
			$conf["math"]["getMaxValue"]["rawDataArray"]=$spiledStr["dataArray"];#爲原始數據
345
			$maxValue=math::getMaxValue($conf["math"]["getMaxValue"]);
345
			$maxValue=math::getMaxValue($conf["math"]["getMaxValue"]);
346
			unset($conf["math"]["getMaxValue"]);
346
			unset($conf["math"]["getMaxValue"]);
347
			
347
 
348
			#如果取得 $spiledStr["dataArray"][$i] 陣列中的最大值失敗
348
			#如果取得 $spiledStr["dataArray"][$i] 陣列中的最大值失敗
349
			if($maxValue["status"]=="false"){
349
			if($maxValue["status"]=="false"){
350
				
350
 
351
				#設置執行失敗
351
				#設置執行失敗
352
				$result["status"]="false";
352
				$result["status"]="false";
353
				
353
 
354
				#設置錯誤訊息
354
				#設置錯誤訊息
355
				$result["error"]=$maxValue;
355
				$result["error"]=$maxValue;
356
 
356
 
357
				#回傳錯誤訊息
357
				#回傳錯誤訊息
358
				return $result;
358
				return $result;
359
				
359
 
360
				}#if end
360
				}#if end
361
			
361
 
362
			$maxValue=$maxValue["value"];				
362
			$maxValue=$maxValue["value"];
363
 
363
 
364
			#將最大值視爲最後一個選項的號碼
364
			#將最大值視爲最後一個選項的號碼
365
			for($i=0;$i<$maxValue;$i++){
365
			for($i=0;$i<$maxValue;$i++){
366
 
366
 
367
				#如果該key不存在
367
				#如果該key不存在
Line 377... Line 377...
377
			}#else end
377
			}#else end
378
 
378
 
379
		#將 $result 陣列轉爲逗號分隔的字串("1","3","4","7")
379
		#將 $result 陣列轉爲逗號分隔的字串("1","3","4","7")
380
		#$result陣列有幾個元素,就執行幾次
380
		#$result陣列有幾個元素,就執行幾次
381
		for($i=0;$i<count($strArray);$i++){
381
		for($i=0;$i<count($strArray);$i++){
382
		
382
 
383
			#如果是最後一個元素
383
			#如果是最後一個元素
384
			if($i==(count($strArray)-1)){
384
			if($i==(count($strArray)-1)){
385
 
385
 
386
				#串接內容
386
				#串接內容
387
				$result["content"]=$result["content"].$strArray[$i];	
387
				$result["content"]=$result["content"].$strArray[$i];
388
	
388
 
389
				}#if end
389
				}#if end
390
 
390
 
391
			#反之不是最後一個元素
391
			#反之不是最後一個元素
392
			else{
392
			else{
393
 
393
 
Line 395... Line 395...
395
				$result["content"]=$result["content"].$strArray[$i].",";
395
				$result["content"]=$result["content"].$strArray[$i].",";
396
 
396
 
397
				}#else end
397
				}#else end
398
 
398
 
399
			}#for end
399
			}#for end
400
	
400
 
401
		#設置執行正常
401
		#設置執行正常
402
		$result["status"]="true";
402
		$result["status"]="true";
403
	
403
 
404
		#回傳結果
404
		#回傳結果
405
		return $result;	
405
		return $result;
406
		
406
 
407
		}#function changeMultiChoiceToSingleChoice end 
407
		}#function changeMultiChoiceToSingleChoice end
408
 
408
 
409
	/*
409
	/*
410
	#函式說明:
410
	#函式說明:
411
	#讀取csv檔案,一列代表一個選項填寫的情況,然後交由 analyse::changeMutiChoiceToSingleChoice 處理,並將結果寫入新的檔案裏面。
411
	#讀取csv檔案,一列代表一個選項填寫的情況,然後交由 analyse::changeMutiChoiceToSingleChoice 處理,並將結果寫入新的檔案裏面。
412
	#回傳的結果:
412
	#回傳的結果:
Line 439... Line 439...
439
		#取得當前執行的函數名稱
439
		#取得當前執行的函數名稱
440
		$result["function"]=__FUNCTION__;
440
		$result["function"]=__FUNCTION__;
441
 
441
 
442
		#如果 $conf 不為陣列
442
		#如果 $conf 不為陣列
443
		if(gettype($conf)!="array"){
443
		if(gettype($conf)!="array"){
444
			
444
 
445
			#設置執行失敗
445
			#設置執行失敗
446
			$result["status"]="false";
446
			$result["status"]="false";
447
			
447
 
448
			#設置執行錯誤訊息
448
			#設置執行錯誤訊息
449
			$result["error"][]="\$conf變數須為陣列形態";
449
			$result["error"][]="\$conf變數須為陣列形態";
450
 
450
 
451
			#如果傳入的參數為 null
451
			#如果傳入的參數為 null
452
			if($conf==null){
452
			if($conf==null){
453
				
453
 
454
				#設置執行錯誤訊息
454
				#設置執行錯誤訊息
455
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
455
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
456
				
456
 
457
				}#if end
457
				}#if end
458
 
458
 
459
			#回傳結果
459
			#回傳結果
460
			return $result;
460
			return $result;
461
			
461
 
462
			}#if end
462
			}#if end
463
 
463
 
464
		#涵式說明:
464
		#涵式說明:
465
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
465
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
466
		#回傳的結果:
466
		#回傳的結果:
Line 470... Line 470...
470
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
470
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
471
		#必填參數:
471
		#必填參數:
472
		$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
472
		$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
473
		$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("oriCsvFileAddAndName","fileArgu");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
473
		$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("oriCsvFileAddAndName","fileArgu");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
474
		#可以省略的參數:
474
		#可以省略的參數:
475
		$conf["variableCheck"]["isexistMuti"]["variableType"]=array("string","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double"); 
475
		$conf["variableCheck"]["isexistMuti"]["variableType"]=array("string","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
476
		$conf["variableCheck"]["isexistMuti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
476
		$conf["variableCheck"]["isexistMuti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
477
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
477
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
478
		unset($conf["variableCheck"]["isexistMuti"]);
478
		unset($conf["variableCheck"]["isexistMuti"]);
479
 
479
 
480
		#如果檢查參數失敗
480
		#如果檢查參數失敗
481
		if($checkResult["status"]=="false"){
481
		if($checkResult["status"]=="false"){
482
			
482
 
483
			#設置執行錯誤
483
			#設置執行錯誤
484
			$result["status"]="false";
484
			$result["status"]="false";
485
			
485
 
486
			#設置錯誤訊息
486
			#設置錯誤訊息
487
			$result["error"]=$checkResult;
487
			$result["error"]=$checkResult;
488
			
488
 
489
			#回傳結果
489
			#回傳結果
490
			return $result;
490
			return $result;
491
			
491
 
492
			}#if end
492
			}#if end
493
 
493
 
494
		#如果 $checkResult["passed"] 等於 "false"
494
		#如果 $checkResult["passed"] 等於 "false"
495
		if($checkResult["passed"]=="false"){
495
		if($checkResult["passed"]=="false"){
496
			
496
 
497
			#設置執行錯誤
497
			#設置執行錯誤
498
			$result["status"]="false";
498
			$result["status"]="false";
499
			
499
 
500
			#設置錯誤訊息
500
			#設置錯誤訊息
501
			$result["error"]=$checkResult;
501
			$result["error"]=$checkResult;
502
			
502
 
503
			#回傳結果
503
			#回傳結果
504
			return $result;
504
			return $result;
505
		
505
 
506
			}#if end
506
			}#if end
507
			 
507
 
508
		#如果新檔案名稱已設置
508
		#如果新檔案名稱已設置
509
		if(isset($conf["newCsvFileAddAndName"])){
509
		if(isset($conf["newCsvFileAddAndName"])){
510
 
510
 
511
			#確認新檔案是否不存在
511
			#確認新檔案是否不存在
512
			if(file_exists($conf["newCsvFileAddAndName"])==false){
512
			if(file_exists($conf["newCsvFileAddAndName"])==false){
Line 530... Line 530...
530
				#如果 $fileCreateStatus["status"] 等於 "false"
530
				#如果 $fileCreateStatus["status"] 等於 "false"
531
				if($fileCreateStatus["status"]=="false"){
531
				if($fileCreateStatus["status"]=="false"){
532
 
532
 
533
					#設置執行錯誤
533
					#設置執行錯誤
534
					$result["status"]="false";
534
					$result["status"]="false";
535
				
535
 
536
					#設置錯誤訊息
536
					#設置錯誤訊息
537
					$result["error"]=$fileCreateStatus;
537
					$result["error"]=$fileCreateStatus;
538
				
538
 
539
					#回傳結果
539
					#回傳結果
540
					return $result;
540
					return $result;
541
 
541
 
542
					}#if end			
542
					}#if end
543
 
543
 
544
				}#if end
544
				}#if end
545
 
545
 
546
			}#if end
546
			}#if end
547
 
547
 
Line 563... Line 563...
563
			#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
563
			#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
564
			$conf["fileAccess"]["writeTextIntoFile"]["fileArgu"]=$conf["fileArgu"];
564
			$conf["fileAccess"]["writeTextIntoFile"]["fileArgu"]=$conf["fileArgu"];
565
			#可省略參數:
565
			#可省略參數:
566
			#$conf["writeMethod"]="a";#爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
566
			#$conf["writeMethod"]="a";#爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
567
			$fileCreateStatus=fileAccess::writeTextIntoFile($conf["fileAccess"]["writeTextIntoFile"]);
567
			$fileCreateStatus=fileAccess::writeTextIntoFile($conf["fileAccess"]["writeTextIntoFile"]);
568
			unset($conf["fileAccess"]["writeTextIntoFile"]);	
568
			unset($conf["fileAccess"]["writeTextIntoFile"]);
569
 
569
 
570
			#如果 $fileCreateStatus["status"] 等於 "false"
570
			#如果 $fileCreateStatus["status"] 等於 "false"
571
			if($fileCreateStatus["status"]=="false"){
571
			if($fileCreateStatus["status"]=="false"){
572
 
572
 
573
				#設置執行錯誤
573
				#設置執行錯誤
574
				$result["status"]="false";
574
				$result["status"]="false";
575
				
575
 
576
				#設置錯誤訊息
576
				#設置錯誤訊息
577
				$result["error"]=$fileCreateStatus;
577
				$result["error"]=$fileCreateStatus;
578
				
578
 
579
				#回傳結果
579
				#回傳結果
580
				return $result;
580
				return $result;
581
 
581
 
582
				}#if end			
582
				}#if end
583
 
583
 
584
			}#else end
584
			}#else end
585
 
585
 
586
		#初始化儲存處理好資訊的陣列
586
		#初始化儲存處理好資訊的陣列
587
		$processedStrArray=array();
587
		$processedStrArray=array();
Line 604... Line 604...
604
		$fileGetResult=fileAccess::getFileContent($conf["fileAccess"]["getFileContent"]);
604
		$fileGetResult=fileAccess::getFileContent($conf["fileAccess"]["getFileContent"]);
605
		unset($conf["fileAccess"]["getFileContent"]);
605
		unset($conf["fileAccess"]["getFileContent"]);
606
 
606
 
607
		#如果 $fileGetResult["status"] 等於 "false"
607
		#如果 $fileGetResult["status"] 等於 "false"
608
		if($fileGetResult["status"]=="false"){
608
		if($fileGetResult["status"]=="false"){
609
			
609
 
610
			#設置執行錯誤
610
			#設置執行錯誤
611
			$result["status"]="false";
611
			$result["status"]="false";
612
				
612
 
613
			#設置錯誤訊息
613
			#設置錯誤訊息
614
			$result["error"]=$fileGetResult;
614
			$result["error"]=$fileGetResult;
615
				
615
 
616
			#回傳結果
616
			#回傳結果
617
			return $result;
617
			return $result;
618
			
618
 
619
			}#if end
619
			}#if end
620
 
620
 
621
		#有幾行內容就執行幾次
621
		#有幾行內容就執行幾次
622
		for($i=0;$i<$fileGetResult["lineCount"];$i++){
622
		for($i=0;$i<$fileGetResult["lineCount"];$i++){
623
 
623
 
624
			#涵式說明
624
			#涵式說明
625
			#將逗號分隔的字串 "1,2,5,7" 變成 "1,1,0,0,1,0,1" 
625
			#將逗號分隔的字串 "1,2,5,7" 變成 "1,1,0,0,1,0,1"
626
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
626
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
627
			#$result["error"],錯誤訊息陣列.
627
			#$result["error"],錯誤訊息陣列.
628
			#$result["function"],當前執行的函數名稱.
628
			#$result["function"],當前執行的函數名稱.
629
			#$result["content"],分割好的字串
629
			#$result["content"],分割好的字串
630
			#必填參數:
630
			#必填參數:
631
			$conf["analyse"]["changeMutiChoiceToSingleChoice"]["stringData"]=$fileGetResult["fileContent"][$i];#類似"1,2,5,7"的字串
631
			$conf["analyse"]["changeMutiChoiceToSingleChoice"]["stringData"]=$fileGetResult["fileContent"][$i];#類似"1,2,5,7"的字串
632
			#可省略參數:
632
			#可省略參數:
633
		
633
 
634
			/* 無效的參數
634
			/* 無效的參數
635
		
635
 
636
			#如果 $conf["maxOptionNum"] 有設定
636
			#如果 $conf["maxOptionNum"] 有設定
637
			if(isset($conf["maxOptionNum"])){
637
			if(isset($conf["maxOptionNum"])){
638
 
638
 
639
				#則套用之
639
				#則套用之
640
				$conf["analyse"]["changeMutiChoiceToSingleChoice"]["maxOptionNum"]=$conf["maxOptionNum"];#最後一個問項的號碼爲?
640
				$conf["analyse"]["changeMutiChoiceToSingleChoice"]["maxOptionNum"]=$conf["maxOptionNum"];#最後一個問項的號碼爲?
641
 
641
 
642
				}#if end
642
				}#if end
643
				
643
 
644
			*/	
644
			*/
645
			
645
 
646
			#如果 $conf["optionNameArray"] 有設定
646
			#如果 $conf["optionNameArray"] 有設定
647
			if(isset($conf["optionNameArray"])){
647
			if(isset($conf["optionNameArray"])){
648
 
648
 
649
				#則套用之
649
				#則套用之
650
				$conf["analyse"]["changeMutiChoiceToSingleChoice"]["optionNameArray"]=$conf["optionNameArray"];
650
				$conf["analyse"]["changeMutiChoiceToSingleChoice"]["optionNameArray"]=$conf["optionNameArray"];
651
 
651
 
652
				}#if end
652
				}#if end
653
 
653
 
654
			$changeMultiChoiceToSingleChoice=analyse::changeMultiChoiceToSingleChoice($conf["analyse"]["changeMutiChoiceToSingleChoice"]);
654
			$changeMultiChoiceToSingleChoice=analyse::changeMultiChoiceToSingleChoice($conf["analyse"]["changeMutiChoiceToSingleChoice"]);
655
		
655
 
656
			#如果 analyse::changeMultiChoiceToSingleChoice 執行失敗
656
			#如果 analyse::changeMultiChoiceToSingleChoice 執行失敗
657
			if($changeMultiChoiceToSingleChoice["status"]=="false"){
657
			if($changeMultiChoiceToSingleChoice["status"]=="false"){
658
				
658
 
659
				#設置執行失敗
659
				#設置執行失敗
660
				$result["status"]="false";
660
				$result["status"]="false";
661
				
661
 
662
				#設置執行錯誤訊息
662
				#設置執行錯誤訊息
663
				$result["error"]=$changeMultiChoiceToSingleChoice;
663
				$result["error"]=$changeMultiChoiceToSingleChoice;
664
				
664
 
665
				#回傳結果
665
				#回傳結果
666
				return $result;
666
				return $result;
667
				
667
 
668
				}#if end
668
				}#if end
669
		
669
 
670
			#取得好的字串
670
			#取得好的字串
671
			$processedStrArray[$i]=$changeMultiChoiceToSingleChoice["content"];
671
			$processedStrArray[$i]=$changeMultiChoiceToSingleChoice["content"];
672
		
672
 
673
			#檢查變數內容
673
			#檢查變數內容
674
			#var_dump($conf["analyse"]["changeMutiChoiceToSingleChoice"]["optionNameArray"]);
674
			#var_dump($conf["analyse"]["changeMutiChoiceToSingleChoice"]["optionNameArray"]);
675
 
675
 
676
			unset($conf["analyse"]["changeMutiChoiceToSingleChoice"]);
676
			unset($conf["analyse"]["changeMutiChoiceToSingleChoice"]);
677
 
677
 
Line 699... Line 699...
699
			#如果 $fileCreateStatus["status"] 等於 "false"
699
			#如果 $fileCreateStatus["status"] 等於 "false"
700
			if($fileCreateStatus["status"]=="false"){
700
			if($fileCreateStatus["status"]=="false"){
701
 
701
 
702
				#設置執行錯誤
702
				#設置執行錯誤
703
				$result["status"]="false";
703
				$result["status"]="false";
704
				
704
 
705
				#設置錯誤訊息
705
				#設置錯誤訊息
706
				$result["error"]=$fileCreateStatus;
706
				$result["error"]=$fileCreateStatus;
707
				
707
 
708
				#回傳結果
708
				#回傳結果
709
				return $result;
709
				return $result;
710
 
710
 
711
				}#if end	
711
				}#if end
712
 
712
 
713
			}#for end
713
			}#for end
714
 
714
 
715
		#設置執行成功
715
		#設置執行成功
716
		$result["status"]="true";
716
		$result["status"]="true";
717
 
717
 
718
		#設置檔案的位置與名稱
718
		#設置檔案的位置與名稱
719
		$result["outputCsvFileAddress"]=$conf["newCsvFileAddAndName"];
719
		$result["outputCsvFileAddress"]=$conf["newCsvFileAddAndName"];
720
		
720
 
721
		#回傳結果
721
		#回傳結果
722
		return $result;
722
		return $result;
723
 
723
 
724
		}#function changeMutiChoiceToSingleChoiceFromCsvFile end
724
		}#function changeMutiChoiceToSingleChoiceFromCsvFile end
725
 
725
 
Line 748... Line 748...
748
	#無.
748
	#無.
749
	#備註:
749
	#備註:
750
	#無
750
	#無
751
	*/
751
	*/
752
	public static function mergePairedData(&$conf){
752
	public static function mergePairedData(&$conf){
753
		
753
 
754
		#初始化要回傳的變數
754
		#初始化要回傳的變數
755
		$result=array();
755
		$result=array();
756
		
756
 
757
		#取得當前執行的函數名稱
757
		#取得當前執行的函數名稱
758
		$result["function"]=__FUNCTION__;
758
		$result["function"]=__FUNCTION__;
759
		
759
 
760
		#如果 $conf 不為陣列
760
		#如果 $conf 不為陣列
761
		if(gettype($conf)!="array"){
761
		if(gettype($conf)!="array"){
762
			
762
 
763
			#設置執行失敗
763
			#設置執行失敗
764
			$result["status"]="false";
764
			$result["status"]="false";
765
			
765
 
766
			#設置執行錯誤訊息
766
			#設置執行錯誤訊息
767
			$result["error"][]="\$conf變數須為陣列形態";
767
			$result["error"][]="\$conf變數須為陣列形態";
768
 
768
 
769
			#如果傳入的參數為 null
769
			#如果傳入的參數為 null
770
			if($conf==null){
770
			if($conf==null){
771
				
771
 
772
				#設置執行錯誤訊息
772
				#設置執行錯誤訊息
773
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
773
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
774
				
774
 
775
				}#if end
775
				}#if end
776
 
776
 
777
			#回傳結果
777
			#回傳結果
778
			return $result;
778
			return $result;
779
			
779
 
780
			}#if end
780
			}#if end
781
		
781
 
782
		#涵式說明:
782
		#涵式說明:
783
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
783
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
784
		#回傳的結果:
784
		#回傳的結果:
785
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
785
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
786
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
786
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
787
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
787
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
788
		#必填參數:
788
		#必填參數:
789
		$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
789
		$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
790
		$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("csvFileA","csvFileB","compareColumnName","fileArgu");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
790
		$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("csvFileA","csvFileB","compareColumnName","fileArgu");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
791
		#可以省略的參數:
791
		#可以省略的參數:
792
		$conf["variableCheck"]["isexistMuti"]["variableType"]=array("string","string","string","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double"); 
792
		$conf["variableCheck"]["isexistMuti"]["variableType"]=array("string","string","string","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
793
		#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
793
		#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
794
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
794
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
795
		unset($conf["variableCheck"]);
795
		unset($conf["variableCheck"]);
796
		
796
 
797
		#如果檢查有誤
797
		#如果檢查有誤
798
		if($checkResult["status"]=="false"){
798
		if($checkResult["status"]=="false"){
799
			
799
 
800
			#設置執行不正常
800
			#設置執行不正常
801
			$result["status"]="false";
801
			$result["status"]="false";
802
			
802
 
803
			#設置錯誤訊息
803
			#設置錯誤訊息
804
			$result["error"]=$checkResult;
804
			$result["error"]=$checkResult;
805
			
805
 
806
			#回傳結果
806
			#回傳結果
807
			return $result;
807
			return $result;
808
			
808
 
809
			}#if end
809
			}#if end
810
		
810
 
811
		#如果檢查不通過
811
		#如果檢查不通過
812
		if($checkResult["passed"]=="false"){
812
		if($checkResult["passed"]=="false"){
813
			
813
 
814
			#設置執行不正常
814
			#設置執行不正常
815
			$result["status"]="false";
815
			$result["status"]="false";
816
			
816
 
817
			#設置錯誤訊息
817
			#設置錯誤訊息
818
			$result["error"]=$checkResult;
818
			$result["error"]=$checkResult;
819
			
819
 
820
			#回傳結果
820
			#回傳結果
821
			return $result;
821
			return $result;
822
			
822
 
823
			}#if end
823
			}#if end
824
					
824
 
825
		#涵式說明:
825
		#涵式說明:
826
		#讀取csv檔案的內容
826
		#讀取csv檔案的內容
827
		#回傳得結果:
827
		#回傳得結果:
828
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
828
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
829
		#$result["error"],錯誤訊息陣列.
829
		#$result["error"],錯誤訊息陣列.
Line 842... Line 842...
842
		#http://www.php.net/manual/en/function.str-split.php
842
		#http://www.php.net/manual/en/function.str-split.php
843
		#參考資料來源
843
		#參考資料來源
844
		#http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
844
		#http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
845
		$csvFileContentA=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
845
		$csvFileContentA=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
846
		unset($conf["csv"]);
846
		unset($conf["csv"]);
847
		
847
 
848
		#如果 $csvFileContentA["status"] 等於 "false"
848
		#如果 $csvFileContentA["status"] 等於 "false"
849
		if($csvFileContentA["status"]=="false"){
849
		if($csvFileContentA["status"]=="false"){
850
			
850
 
851
			#設置執行失敗
851
			#設置執行失敗
852
			$result["false"]="false";
852
			$result["false"]="false";
853
			
853
 
854
			#取得錯誤訊息
854
			#取得錯誤訊息
855
			$result["error"]=$csvFileContentA;
855
			$result["error"]=$csvFileContentA;
856
			
856
 
857
			#回傳結果
857
			#回傳結果
858
			return $result;
858
			return $result;
859
			
859
 
860
			}#if end
860
			}#if end
861
		
861
 
862
		#涵式說明:
862
		#涵式說明:
863
		#讀取csv檔案的內容
863
		#讀取csv檔案的內容
864
		#回傳得結果:
864
		#回傳得結果:
865
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
865
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
866
		#$result["error"],錯誤訊息陣列.
866
		#$result["error"],錯誤訊息陣列.
Line 879... Line 879...
879
		#http://www.php.net/manual/en/function.str-split.php
879
		#http://www.php.net/manual/en/function.str-split.php
880
		#參考資料來源
880
		#參考資料來源
881
		#http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
881
		#http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
882
		$csvFileContentB=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
882
		$csvFileContentB=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
883
		unset($conf["csv"]);
883
		unset($conf["csv"]);
884
		
884
 
885
		#如果 $csvFileContentB["status"] 等於 "false"
885
		#如果 $csvFileContentB["status"] 等於 "false"
886
		if($csvFileContentB["status"]=="false"){
886
		if($csvFileContentB["status"]=="false"){
887
			
887
 
888
			#設置執行失敗
888
			#設置執行失敗
889
			$result["false"]="false";
889
			$result["false"]="false";
890
			
890
 
891
			#取得錯誤訊息
891
			#取得錯誤訊息
892
			$result["error"]=$csvFileContentB;
892
			$result["error"]=$csvFileContentB;
893
			
893
 
894
			#回傳結果
894
			#回傳結果
895
			return $result;
895
			return $result;
896
			
896
 
897
			}#if end
897
			}#if end
898
		
898
 
899
		#取得csv檔案A的資料筆數
899
		#取得csv檔案A的資料筆數
900
		$DataCountA=$csvFileContentA["lineArrayCount"];
900
		$DataCountA=$csvFileContentA["lineArrayCount"];
901
		
901
 
902
		#取得csv檔案B的資料筆數
902
		#取得csv檔案B的資料筆數
903
		$DataCountB=$csvFileContentB["lineArrayCount"];
903
		$DataCountB=$csvFileContentB["lineArrayCount"];
904
		
904
 
905
		#初始化合併好的陣列變數
905
		#初始化合併好的陣列變數
906
		$mergedArray=array();
906
		$mergedArray=array();
907
		
907
 
908
		#初始化計屬的變數
908
		#初始化計屬的變數
909
		$time=0;
909
		$time=0;
910
		
910
 
911
		#針對csv檔案A的每一筆資料
911
		#針對csv檔案A的每一筆資料
912
		for($i=0;$i<$DataCountA;$i++){
912
		for($i=0;$i<$DataCountA;$i++){
913
			
913
 
914
			#針對csv檔案B的每一筆資料
914
			#針對csv檔案B的每一筆資料
915
			for($j=0;$j<$DataCountB;$j++){
915
			for($j=0;$j<$DataCountB;$j++){
916
				
916
 
917
				#如果有發現csv檔案A與檔案B相同欄位的值有相同
917
				#如果有發現csv檔案A與檔案B相同欄位的值有相同
918
				if($csvFileContentA["csvFileContent"][$i][$conf["compareColumnName"]]==$csvFileContentB["csvFileContent"][$j][$conf["compareColumnName"]]){
918
				if($csvFileContentA["csvFileContent"][$i][$conf["compareColumnName"]]==$csvFileContentB["csvFileContent"][$j][$conf["compareColumnName"]]){
919
				
919
 
920
					#則將其合併
920
					#則將其合併
921
					
921
 
922
					#針對檔案A的每一個欄位
922
					#針對檔案A的每一個欄位
923
					foreach($csvFileContentA["csvFileContent"][$i] as $key=>$value){
923
					foreach($csvFileContentA["csvFileContent"][$i] as $key=>$value){
924
						
924
 
925
						#取得每個欄位的內容
925
						#取得每個欄位的內容
926
						$mergedArray["line"][$time][$key]=$value;
926
						$mergedArray["line"][$time][$key]=$value;
927
						
927
 
928
						}#foreach end
928
						}#foreach end
929
						
929
 
930
					#針對檔案B的每一個欄位
930
					#針對檔案B的每一個欄位
931
					foreach($csvFileContentB["csvFileContent"][$j] as $key=>$value){
931
					foreach($csvFileContentB["csvFileContent"][$j] as $key=>$value){
932
						
932
 
933
						#如果不是要比較的變數欄位
933
						#如果不是要比較的變數欄位
934
						if($key!=$conf["compareColumnName"]){
934
						if($key!=$conf["compareColumnName"]){
935
							
935
 
936
							#取得每個欄位的內容
936
							#取得每個欄位的內容
937
							$mergedArray["line"][$time][$key]=$value;
937
							$mergedArray["line"][$time][$key]=$value;
938
							
938
 
939
							}#if end
939
							}#if end
940
												
940
 
941
						}#foreach end
941
						}#foreach end
942
						
942
 
943
					#計數加1
943
					#計數加1
944
					$time++;
944
					$time++;
945
					
945
 
946
					}#if end
946
					}#if end
947
				
947
 
948
				}#for end
948
				}#for end
949
			
949
 
950
			}#for end
950
			}#for end
951
			
951
 
952
		#將合併結果寫入到檔案裡面
952
		#將合併結果寫入到檔案裡面
953
		#涵式說明:
953
		#涵式說明:
954
		#快速建立一個csv檔案,並且要求使用者下載。
954
		#快速建立一個csv檔案,並且要求使用者下載。
955
		#回傳的結果:
955
		#回傳的結果:
956
		#如果有設置$conf["noDownload"]爲"true"的話,則會回傳檔案的位置
956
		#如果有設置$conf["noDownload"]爲"true"的話,則會回傳檔案的位置
957
		#必填參數:
957
		#必填參數:
958
		$conf["csv"]["create"]["dataArray"]=$mergedArray["line"];#要寫入的文字,$conf["dataArray"][$i],代表第 $i 行的內容。
958
		$conf["csv"]["create"]["dataArray"]=$mergedArray["line"];#要寫入的文字,$conf["dataArray"][$i],代表第 $i 行的內容。
959
		#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
959
		#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
960
		$conf["csv"]["create"]["fileArgu"]=$conf["fileArgu"];
960
		$conf["csv"]["create"]["fileArgu"]=$conf["fileArgu"];
961
		#可省略參數:
961
		#可省略參數:
962
		
962
 
963
		#如果有設置 $conf["csvFilePathAndName"]
963
		#如果有設置 $conf["csvFilePathAndName"]
964
		if(isset($conf["csvFilePathAndName"])){
964
		if(isset($conf["csvFilePathAndName"])){
965
			
965
 
966
			$conf["csv"]["create"]["csvFilePathAndName"]=$conf["csvFilePathAndName"];#csv檔案輸出的路徑.
966
			$conf["csv"]["create"]["csvFilePathAndName"]=$conf["csvFilePathAndName"];#csv檔案輸出的路徑.
967
			
967
 
968
			}#if end
968
			}#if end
969
		
969
 
970
		#如果有設置 $conf["noDownload"]
970
		#如果有設置 $conf["noDownload"]
971
		if(isset($conf["noDownload"])){
971
		if(isset($conf["noDownload"])){
972
			
972
 
973
			#如果其等於 "true"
973
			#如果其等於 "true"
974
			if($conf["noDownload"]=="true"){
974
			if($conf["noDownload"]=="true"){
975
				
975
 
976
				#設定不自動下載檔案
976
				#設定不自動下載檔案
977
				$conf["csv"]["create"]["noDownload"]=$conf["noDownload"];
977
				$conf["csv"]["create"]["noDownload"]=$conf["noDownload"];
978
				
978
 
979
				}#if end
979
				}#if end
980
			
980
 
981
			}#if end
981
			}#if end
982
		
982
 
983
		#$conf["csv"]["create"]["noDownload"]="true";#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
983
		#$conf["csv"]["create"]["noDownload"]="true";#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
984
		#參考資料來源:
984
		#參考資料來源:
985
		#http://php.net/manual/en/function.str-split.php
985
		#http://php.net/manual/en/function.str-split.php
986
		$csvCreateResult=csv::create($conf["csv"]["create"]);
986
		$csvCreateResult=csv::create($conf["csv"]["create"]);
987
		unset($conf["csv"]["create"]);		
987
		unset($conf["csv"]["create"]);
988
		
988
 
989
		#如果檢查有誤
989
		#如果檢查有誤
990
		if($csvCreateResult["status"]=="false"){
990
		if($csvCreateResult["status"]=="false"){
991
			
991
 
992
			#設置執行不正常
992
			#設置執行不正常
993
			$result["status"]="false";
993
			$result["status"]="false";
994
			
994
 
995
			#設置錯誤訊息
995
			#設置錯誤訊息
996
			$result["error"]=$csvCreateResult;
996
			$result["error"]=$csvCreateResult;
997
			
997
 
998
			#回傳結果
998
			#回傳結果
999
			return $result;
999
			return $result;
1000
			
1000
 
1001
			}#if end
1001
			}#if end
1002
						
1002
 
1003
		#儲存csv檔案
1003
		#儲存csv檔案
1004
		$result["content"]=$csvCreateResult["content"];
1004
		$result["content"]=$csvCreateResult["content"];
1005
		
1005
 
1006
		#設置執行正常
1006
		#設置執行正常
1007
		$result["status"]="true";
1007
		$result["status"]="true";
1008
		
1008
 
1009
		#回傳結果
1009
		#回傳結果
1010
		return $result;
1010
		return $result;
1011
					
1011
 
1012
		}#function mergePairedData end
1012
		}#function mergePairedData end
1013
		
1013
 
1014
	/*
1014
	/*
1015
	#函式說明:
1015
	#函式說明:
1016
	#刪除csv檔中多個欄位中其數值符合指定條件的資料(將該列刪除).
1016
	#刪除csv檔中多個欄位中其數值符合指定條件的資料(將該列刪除).
1017
	#回傳的結果:
1017
	#回傳的結果:
1018
	#$result["status"],執行是否成功的識別.
1018
	#$result["status"],執行是否成功的識別.
Line 1038... Line 1038...
1038
	#無.
1038
	#無.
1039
	#備註:
1039
	#備註:
1040
	#無
1040
	#無
1041
	*/
1041
	*/
1042
	public static function delSepecificData(&$conf){
1042
	public static function delSepecificData(&$conf){
1043
			
1043
 
1044
		#初始化要回傳的變數
1044
		#初始化要回傳的變數
1045
		$result=array();	
1045
		$result=array();
1046
			
1046
 
1047
		#取得當前執行的函數名稱
1047
		#取得當前執行的函數名稱
1048
		$result["function"]=__FUNCTION__;	
1048
		$result["function"]=__FUNCTION__;
1049
			
1049
 
1050
		#如果 $conf 不為陣列
1050
		#如果 $conf 不為陣列
1051
		if(gettype($conf)!="array"){
1051
		if(gettype($conf)!="array"){
1052
			
1052
 
1053
			#設置執行失敗
1053
			#設置執行失敗
1054
			$result["status"]="false";
1054
			$result["status"]="false";
1055
			
1055
 
1056
			#設置執行錯誤訊息
1056
			#設置執行錯誤訊息
1057
			$result["error"][]="\$conf變數須為陣列形態";
1057
			$result["error"][]="\$conf變數須為陣列形態";
1058
 
1058
 
1059
			#如果傳入的參數為 null
1059
			#如果傳入的參數為 null
1060
			if($conf==null){
1060
			if($conf==null){
1061
				
1061
 
1062
				#設置執行錯誤訊息
1062
				#設置執行錯誤訊息
1063
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1063
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1064
				
1064
 
1065
				}#if end
1065
				}#if end
1066
 
1066
 
1067
			#回傳結果
1067
			#回傳結果
1068
			return $result;
1068
			return $result;
1069
			
1069
 
1070
			}#if end	
1070
			}#if end
1071
			
1071
 
1072
		#涵式說明:
1072
		#涵式說明:
1073
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
1073
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
1074
		#回傳的結果:
1074
		#回傳的結果:
1075
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1075
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1076
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1076
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1077
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1077
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1078
		#必填參數:
1078
		#必填參數:
1079
		$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
1079
		$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
1080
		$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("csvFileLocation","coditionColumn","coditionValue","fileArgu");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
1080
		$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("csvFileLocation","coditionColumn","coditionValue","fileArgu");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
1081
		#可以省略的參數:
1081
		#可以省略的參數:
1082
		$conf["variableCheck"]["isexistMuti"]["variableType"]=array("string","array","string","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double"); 
1082
		$conf["variableCheck"]["isexistMuti"]["variableType"]=array("string","array","string","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
1083
		#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
1083
		#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
1084
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
1084
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
1085
		unset($conf["variableCheck"]["isexistMuti"]);
1085
		unset($conf["variableCheck"]["isexistMuti"]);
1086
		
1086
 
1087
		#如果檢查必填參數失敗
1087
		#如果檢查必填參數失敗
1088
		if($checkResult["status"]=="false"){
1088
		if($checkResult["status"]=="false"){
1089
			
1089
 
1090
			#設置執行失敗
1090
			#設置執行失敗
1091
			$result["status"]="false";
1091
			$result["status"]="false";
1092
			
1092
 
1093
			#設置錯誤訊息
1093
			#設置錯誤訊息
1094
			$result["error"]=$checkResult;
1094
			$result["error"]=$checkResult;
1095
			
1095
 
1096
			#回傳結果
1096
			#回傳結果
1097
			return $result;
1097
			return $result;
1098
			
1098
 
1099
			}#if end
1099
			}#if end
1100
		
1100
 
1101
		#如果檢查不通過
1101
		#如果檢查不通過
1102
		if($checkResult["passed"]=="false"){
1102
		if($checkResult["passed"]=="false"){
1103
				
1103
 
1104
			$result["status"]="false";
1104
			$result["status"]="false";
1105
			
1105
 
1106
			#設置錯誤訊息
1106
			#設置錯誤訊息
1107
			$result["error"]=$checkResult;
1107
			$result["error"]=$checkResult;
1108
			
1108
 
1109
			#回傳結果
1109
			#回傳結果
1110
			return $result;
1110
			return $result;
1111
				
1111
 
1112
			}#if end
1112
			}#if end
1113
			
1113
 
1114
		#涵式說明:
1114
		#涵式說明:
1115
		#讀取csv檔案的內容
1115
		#讀取csv檔案的內容
1116
		#回傳得結果:
1116
		#回傳得結果:
1117
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
1117
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
1118
		#$result["error"],錯誤訊息陣列.
1118
		#$result["error"],錯誤訊息陣列.
Line 1133... Line 1133...
1133
		#http://www.php.net/manual/en/function.str-split.php
1133
		#http://www.php.net/manual/en/function.str-split.php
1134
		#參考資料來源
1134
		#參考資料來源
1135
		#http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
1135
		#http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
1136
		$csvFileContent=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
1136
		$csvFileContent=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
1137
		unset($conf["csv"]["loadCsvFile"]);
1137
		unset($conf["csv"]["loadCsvFile"]);
1138
			
1138
 
1139
		#如果讀取csv檔案的內容失敗
1139
		#如果讀取csv檔案的內容失敗
1140
		if($csvFileContent["status"]=="false"){
1140
		if($csvFileContent["status"]=="false"){
1141
			
1141
 
1142
			#設置執行錯誤
1142
			#設置執行錯誤
1143
			$result["status"]="false";
1143
			$result["status"]="false";
1144
			
1144
 
1145
			#設置錯誤訊息
1145
			#設置錯誤訊息
1146
			$result["error"]=$csvFileContent;
1146
			$result["error"]=$csvFileContent;
1147
			
1147
 
1148
			#回傳結果
1148
			#回傳結果
1149
			return $result;
1149
			return $result;
1150
			
1150
 
1151
			}#if end	
1151
			}#if end
1152
						
1152
 
1153
		#初始化要紀錄整理好的資料
1153
		#初始化要紀錄整理好的資料
1154
		$arrayData=array();
1154
		$arrayData=array();
1155
			
1155
 
1156
		#針對每一筆資料/每一列
1156
		#針對每一筆資料/每一列
1157
		for($i=0;$i<$csvFileContent["lineArrayCount"];$i++){
1157
		for($i=0;$i<$csvFileContent["lineArrayCount"];$i++){
1158
				
1158
 
1159
			#初始化是否要移除的變數為 "false"
1159
			#初始化是否要移除的變數為 "false"
1160
			$del="false";
1160
			$del="false";
1161
				
1161
 
1162
			#如果是標題列
1162
			#如果是標題列
1163
			if($i!=0){
1163
			if($i!=0){
1164
				
1164
 
1165
				#針對每一筆資料的各個欄位
1165
				#針對每一筆資料的各個欄位
1166
				foreach($csvFileContent["csvFileContent"][$i] as $key=>$value){
1166
				foreach($csvFileContent["csvFileContent"][$i] as $key=>$value){
1167
						
1167
 
1168
					#有幾個要檢查的欄位就執行幾次
1168
					#有幾個要檢查的欄位就執行幾次
1169
					for($j=0;$j<count($conf["coditionColumn"]);$j++){
1169
					for($j=0;$j<count($conf["coditionColumn"]);$j++){
1170
							
1170
 
1171
						#如果是要檢查的欄位
1171
						#如果是要檢查的欄位
1172
						if($key==$conf["coditionColumn"][$j]){
1172
						if($key==$conf["coditionColumn"][$j]){
1173
								
1173
 
1174
							#檢查其數值是否等於 $conf["coditionValue"]
1174
							#檢查其數值是否等於 $conf["coditionValue"]
1175
							if($value==$conf["coditionValue"]){
1175
							if($value==$conf["coditionValue"]){
1176
									
1176
 
1177
								#將是否移除的變數設為"true"
1177
								#將是否移除的變數設為"true"
1178
								$del="true";
1178
								$del="true";
1179
									
1179
 
1180
								#跳出 for
1180
								#跳出 for
1181
								break;
1181
								break;
1182
									
1182
 
1183
								}#if end
1183
								}#if end
1184
								
1184
 
1185
							}#if end
1185
							}#if end
1186
							
1186
 
1187
						}#for end
1187
						}#for end
1188
						
1188
 
1189
					}#foreach end
1189
					}#foreach end
1190
						
1190
 
1191
				}#end
1191
				}#end
1192
					
1192
 
1193
			#如果 $del等於 "false"
1193
			#如果 $del等於 "false"
1194
			if($del=="false"){
1194
			if($del=="false"){
1195
					
1195
 
1196
				#紀錄該筆資料
1196
				#紀錄該筆資料
1197
				$arrayData["line"][]=$csvFileContent["csvFileContent"][$i];
1197
				$arrayData["line"][]=$csvFileContent["csvFileContent"][$i];
1198
					
1198
 
1199
				}#if end
1199
				}#if end
1200
				
1200
 
1201
			}#for end
1201
			}#for end
1202
				
1202
 
1203
		#將處理好的內容轉成csv檔
1203
		#將處理好的內容轉成csv檔
1204
		#涵式說明:
1204
		#涵式說明:
1205
		#快速建立一個csv檔案,並且要求使用者下載。
1205
		#快速建立一個csv檔案,並且要求使用者下載。
1206
		#回傳的結果:
1206
		#回傳的結果:
1207
		#$result["status"],執行是否成功,"true"代表成功,"false"代表失敗.
1207
		#$result["status"],執行是否成功,"true"代表成功,"false"代表失敗.
Line 1210... Line 1210...
1210
		#必填參數:
1210
		#必填參數:
1211
		#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
1211
		#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
1212
		$conf["csv"]["create"]["fileArgu"]=$conf["fileArgu"];
1212
		$conf["csv"]["create"]["fileArgu"]=$conf["fileArgu"];
1213
		$conf["csv"]["create"]["dataArray"]=$arrayData["line"];#要寫入的文字,$conf["dataArray"][$i],代表第 $i 行的內容。
1213
		$conf["csv"]["create"]["dataArray"]=$arrayData["line"];#要寫入的文字,$conf["dataArray"][$i],代表第 $i 行的內容。
1214
		#可省略參數:
1214
		#可省略參數:
1215
			
1215
 
1216
		#如果 $conf["csvFilePathAndName"]有設置
1216
		#如果 $conf["csvFilePathAndName"]有設置
1217
		if(isset($conf["csvFilePathAndName"])){
1217
		if(isset($conf["csvFilePathAndName"])){
1218
			
1218
 
1219
			#設置要輸出到哪個位置
1219
			#設置要輸出到哪個位置
1220
			$conf["csv"]["create"]["csvFilePathAndName"]=$conf["csvFilePathAndName"];
1220
			$conf["csv"]["create"]["csvFilePathAndName"]=$conf["csvFilePathAndName"];
1221
			
1221
 
1222
			}#if end
1222
			}#if end
1223
			
1223
 
1224
		#如果有設置 $conf["noDownload"]
1224
		#如果有設置 $conf["noDownload"]
1225
		if(isset($conf["noDownload"])){
1225
		if(isset($conf["noDownload"])){
1226
				
1226
 
1227
			#如果其等於 "true"
1227
			#如果其等於 "true"
1228
			if($conf["noDownload"]=="true"){
1228
			if($conf["noDownload"]=="true"){
1229
					
1229
 
1230
				#設定不自動下載檔案
1230
				#設定不自動下載檔案
1231
				$conf["csv"]["create"]["noDownload"]=$conf["noDownload"];
1231
				$conf["csv"]["create"]["noDownload"]=$conf["noDownload"];
1232
					
1232
 
1233
				}#if end
1233
				}#if end
1234
				
1234
 
1235
			}#if end
1235
			}#if end
1236
			
1236
 
1237
		$conf["ssv"]["create"]["csvFilePathAndName"]=$conf["csvFilePathAndName"];#要儲存到哪個位置,預設爲跟網頁檔案一樣的位置
1237
		$conf["ssv"]["create"]["csvFilePathAndName"]=$conf["csvFilePathAndName"];#要儲存到哪個位置,預設爲跟網頁檔案一樣的位置
1238
		#$conf["csv"]["create"]["noDownload"]="true";#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
1238
		#$conf["csv"]["create"]["noDownload"]="true";#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
1239
		#參考資料來源:
1239
		#參考資料來源:
1240
		#http://php.net/manual/en/function.str-split.php
1240
		#http://php.net/manual/en/function.str-split.php
1241
		$csvCreateResult=csv::create($conf["csv"]["create"]);
1241
		$csvCreateResult=csv::create($conf["csv"]["create"]);
1242
		unset($conf["csv"]["create"]);	
1242
		unset($conf["csv"]["create"]);
1243
			
1243
 
1244
		#如果 $csvCreateResult["status"] 等於 "false"
1244
		#如果 $csvCreateResult["status"] 等於 "false"
1245
		if($csvCreateResult["status"]=="false"){
1245
		if($csvCreateResult["status"]=="false"){
1246
			
1246
 
1247
			#設置錯誤識別
1247
			#設置錯誤識別
1248
			$result["status"]="false";
1248
			$result["status"]="false";
1249
			
1249
 
1250
			#設置錯誤訊息
1250
			#設置錯誤訊息
1251
			$result["error"]=$csvCreateResult;
1251
			$result["error"]=$csvCreateResult;
1252
			
1252
 
1253
			#回傳結果
1253
			#回傳結果
1254
			return $result;
1254
			return $result;
1255
			
1255
 
1256
			}#if end
1256
			}#if end
1257
			
1257
 
1258
		#設置執行正常的識別
1258
		#設置執行正常的識別
1259
		$result["status"]="true";
1259
		$result["status"]="true";
1260
		
1260
 
1261
		#取得處理好的檔案路徑
1261
		#取得處理好的檔案路徑
1262
		$result["csvFileAddress"]=$csvCreateResult["content"];
1262
		$result["csvFileAddress"]=$csvCreateResult["content"];
1263
		
1263
 
1264
		#回傳結果
1264
		#回傳結果
1265
		return $result;
1265
		return $result;
1266
			
1266
 
1267
		}#function delSepecificData end
1267
		}#function delSepecificData end
1268
	
1268
 
1269
	/*
1269
	/*
1270
	#函式說明:
1270
	#函式說明:
1271
	#將用於統計分析的原始的陣列中將一個變數分成兩個變數,並且新增在原始的陣列中
1271
	#將用於統計分析的原始的陣列中將一個變數分成兩個變數,並且新增在原始的陣列中
1272
	#回傳的結果:
1272
	#回傳的結果:
1273
	#$result["status"],執行是否正常,正常的話為"true",不正常的話為"false".
1273
	#$result["status"],執行是否正常,正常的話為"true",不正常的話為"false".
Line 1302... Line 1302...
1302
		#取得當前執行的函數名稱
1302
		#取得當前執行的函數名稱
1303
		$result["function"]=__FUNCTION__;
1303
		$result["function"]=__FUNCTION__;
1304
 
1304
 
1305
		#如果 $conf 不為陣列
1305
		#如果 $conf 不為陣列
1306
		if(gettype($conf)!="array"){
1306
		if(gettype($conf)!="array"){
1307
			
1307
 
1308
			#設置執行失敗
1308
			#設置執行失敗
1309
			$result["status"]="false";
1309
			$result["status"]="false";
1310
			
1310
 
1311
			#設置執行錯誤訊息
1311
			#設置執行錯誤訊息
1312
			$result["error"][]="\$conf變數須為陣列形態";
1312
			$result["error"][]="\$conf變數須為陣列形態";
1313
			
1313
 
1314
			#如果傳入的參數為 null
1314
			#如果傳入的參數為 null
1315
			if($conf==null){
1315
			if($conf==null){
1316
				
1316
 
1317
				#設置執行錯誤訊息
1317
				#設置執行錯誤訊息
1318
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1318
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1319
				
1319
 
1320
				}#if end
1320
				}#if end
1321
 
1321
 
1322
			#回傳結果
1322
			#回傳結果
1323
			return $result;
1323
			return $result;
1324
			
1324
 
1325
			}#if end
1325
			}#if end
1326
 
1326
 
1327
		#檢查參數
1327
		#檢查參數
1328
		#涵式說明:
1328
		#涵式說明:
1329
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
1329
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
Line 1334... Line 1334...
1334
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1334
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1335
		#必填參數:
1335
		#必填參數:
1336
		$conf["analyse"]["isexistMulti"]["varInput"]=$conf;#要檢查的陣列變數
1336
		$conf["analyse"]["isexistMulti"]["varInput"]=$conf;#要檢查的陣列變數
1337
		$conf["analyse"]["isexistMulti"]["variableCheck"]=array("varArray","addFromVar","newVarName","newVarValue","sameValueColumnName");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
1337
		$conf["analyse"]["isexistMulti"]["variableCheck"]=array("varArray","addFromVar","newVarName","newVarValue","sameValueColumnName");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
1338
		#可以省略的參數:
1338
		#可以省略的參數:
1339
		$conf["analyse"]["isexistMulti"]["variableType"]=array("string","array","string","array","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double"); 
1339
		$conf["analyse"]["isexistMulti"]["variableType"]=array("string","array","string","array","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
1340
		$conf["analyse"]["isexistMulti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
1340
		$conf["analyse"]["isexistMulti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
1341
		$checkResult=variableCheck::isexistMulti($conf["analyse"]["isexistMulti"]);
1341
		$checkResult=variableCheck::isexistMulti($conf["analyse"]["isexistMulti"]);
1342
		unset($conf["analyse"]["isexistMulti"]);
1342
		unset($conf["analyse"]["isexistMulti"]);
1343
 
1343
 
1344
		#如果 $checkResult["status"] 等於 "false"
1344
		#如果 $checkResult["status"] 等於 "false"
1345
		if($checkResult["status"]=="false"){
1345
		if($checkResult["status"]=="false"){
1346
			
1346
 
1347
			#設置錯誤識別
1347
			#設置錯誤識別
1348
			$result["status"]="false";
1348
			$result["status"]="false";
1349
			
1349
 
1350
			#設置錯誤訊息
1350
			#設置錯誤訊息
1351
			$result["error"]=$checkResult;
1351
			$result["error"]=$checkResult;
1352
			
1352
 
1353
			#回傳結果
1353
			#回傳結果
1354
			return $result;
1354
			return $result;
1355
			
1355
 
1356
			}#if end
1356
			}#if end
1357
 
1357
 
1358
		#計數用的變數
1358
		#計數用的變數
1359
		$times=0;
1359
		$times=0;
1360
 
1360
 
Line 1373... Line 1373...
1373
			#如果是在處理標題行,且有設定 $conf["firstLineVarName"]
1373
			#如果是在處理標題行,且有設定 $conf["firstLineVarName"]
1374
			if($i==0 && isset($conf["firstLineVarName"]) ){
1374
			if($i==0 && isset($conf["firstLineVarName"]) ){
1375
 
1375
 
1376
				#如果 $conf["firstLineVarName"] 等於 true
1376
				#如果 $conf["firstLineVarName"] 等於 true
1377
				if($conf["firstLineVarName"]=="true"){
1377
				if($conf["firstLineVarName"]=="true"){
1378
						
1378
 
1379
					#針對每行各欄位
1379
					#針對每行各欄位
1380
					foreach($conf["varArray"][$i] as $key=>$value){
1380
					foreach($conf["varArray"][$i] as $key=>$value){
1381
 
1381
 
1382
						#取得標題行變數
1382
						#取得標題行變數
1383
						$varTitleArray[$key]=$value;
1383
						$varTitleArray[$key]=$value;
Line 1391... Line 1391...
1391
					#取得標題列
1391
					#取得標題列
1392
					$result["content"][$times]=$varTitleArray;
1392
					$result["content"][$times]=$varTitleArray;
1393
 
1393
 
1394
					#計數加1
1394
					#計數加1
1395
					$times++;
1395
					$times++;
1396
					
1396
 
1397
					}#if end
1397
					}#if end
1398
 
1398
 
1399
				}#if end
1399
				}#if end
1400
 
1400
 
1401
			#反之代表不是標題列
1401
			#反之代表不是標題列
1402
			else{
1402
			else{
1403
		
1403
 
1404
				#針對要從哪些變數產生新變數內容的陣列
1404
				#針對要從哪些變數產生新變數內容的陣列
1405
				for($k=0;$k<count($conf["addFromVar"]);$k++){
1405
				for($k=0;$k<count($conf["addFromVar"]);$k++){
1406
			
1406
 
1407
					#針對每行各欄位
1407
					#針對每行各欄位
1408
					foreach($conf["varArray"][$i] as $key=>$value){
1408
					foreach($conf["varArray"][$i] as $key=>$value){
1409
 
1409
 
1410
						#先儲存原始的內容
1410
						#先儲存原始的內容
1411
						$tempArray[$key]=$value;
1411
						$tempArray[$key]=$value;
Line 1451... Line 1451...
1451
 
1451
 
1452
		#回傳結果
1452
		#回傳結果
1453
		return $result;
1453
		return $result;
1454
 
1454
 
1455
		}#function add2Var end
1455
		}#function add2Var end
1456
			
1456
 
1457
	/*
1457
	/*
1458
	#函式說明:
1458
	#函式說明:
1459
	#將csv檔中的一個變數變成兩個變數,並輸出成csv檔。
1459
	#將csv檔中的一個變數變成兩個變數,並輸出成csv檔。
1460
	#回傳的結果:
1460
	#回傳的結果:
1461
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1461
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 1464... Line 1464...
1464
	#$result["outputCsvFileAddress"],csv檔案輸出的位置與名稱.
1464
	#$result["outputCsvFileAddress"],csv檔案輸出的位置與名稱.
1465
	#必填參數:
1465
	#必填參數:
1466
	#$conf["csvFileLocation"],字串,csv檔案的位置.
1466
	#$conf["csvFileLocation"],字串,csv檔案的位置.
1467
	$conf["csvFileLocation"]="";
1467
	$conf["csvFileLocation"]="";
1468
	#$conf["addFromVar"],陣列,要從哪些元素來產生要新的變數內容.
1468
	#$conf["addFromVar"],陣列,要從哪些元素來產生要新的變數內容.
1469
	$conf["addFromVar"]=array("");		
1469
	$conf["addFromVar"]=array("");
1470
	#$conf["newVarName"],字串,資料是新產生的欄位(變數)名稱.
1470
	#$conf["newVarName"],字串,資料是新產生的欄位(變數)名稱.
1471
	$conf["newVarName"]="";
1471
	$conf["newVarName"]="";
1472
	#$conf["sameValueColumnName"],字串,使用舊有資料的新欄位(變數)名稱.
1472
	#$conf["sameValueColumnName"],字串,使用舊有資料的新欄位(變數)名稱.
1473
	$conf["sameValueColumnName"]="";
1473
	$conf["sameValueColumnName"]="";
1474
	#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
1474
	#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
Line 1484... Line 1484...
1484
	#無.
1484
	#無.
1485
	#備註:
1485
	#備註:
1486
	#可能需要優化效能
1486
	#可能需要優化效能
1487
	*/
1487
	*/
1488
	public static function build2VarForm1(&$conf){
1488
	public static function build2VarForm1(&$conf){
1489
			
1489
 
1490
		#初始化要回傳的變數
1490
		#初始化要回傳的變數
1491
		$result=array();
1491
		$result=array();
1492
			
1492
 
1493
		#取得當前執行的函數名稱
1493
		#取得當前執行的函數名稱
1494
		$result["function"]=__FUNCTION__;
1494
		$result["function"]=__FUNCTION__;
1495
			
1495
 
1496
		#如果 $conf 不為陣列
1496
		#如果 $conf 不為陣列
1497
		if(gettype($conf)!="array"){
1497
		if(gettype($conf)!="array"){
1498
			
1498
 
1499
			#設置執行失敗
1499
			#設置執行失敗
1500
			$result["status"]="false";
1500
			$result["status"]="false";
1501
			
1501
 
1502
			#設置執行錯誤訊息
1502
			#設置執行錯誤訊息
1503
			$result["error"][]="\$conf變數須為陣列形態";
1503
			$result["error"][]="\$conf變數須為陣列形態";
1504
 
1504
 
1505
			#如果傳入的參數為 null
1505
			#如果傳入的參數為 null
1506
			if($conf==null){
1506
			if($conf==null){
1507
				
1507
 
1508
				#設置執行錯誤訊息
1508
				#設置執行錯誤訊息
1509
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1509
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1510
				
1510
 
1511
				}#if end
1511
				}#if end
1512
 
1512
 
1513
			#回傳結果
1513
			#回傳結果
1514
			return $result;
1514
			return $result;
1515
			
1515
 
1516
			}#if end	
1516
			}#if end
1517
			
1517
 
1518
		#涵式說明:
1518
		#涵式說明:
1519
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
1519
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
1520
		#回傳的結果:
1520
		#回傳的結果:
1521
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1521
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1522
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1522
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1523
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1523
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1524
		#必填參數:
1524
		#必填參數:
1525
		$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
1525
		$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
1526
		$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("csvFileLocation","addFromVar","newVarName","sameValueColumnName","fileArgu");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
1526
		$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("csvFileLocation","addFromVar","newVarName","sameValueColumnName","fileArgu");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
1527
		#可以省略的參數:
1527
		#可以省略的參數:
1528
		$conf["variableCheck"]["isexistMuti"]["variableType"]=array("string","array","string","string","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double"); 
1528
		$conf["variableCheck"]["isexistMuti"]["variableType"]=array("string","array","string","string","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
1529
		#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
1529
		#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
1530
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
1530
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
1531
		unset($conf["variableCheck"]["isexistMuti"]);
1531
		unset($conf["variableCheck"]["isexistMuti"]);
1532
			
1532
 
1533
		#如果檢查不通過
1533
		#如果檢查不通過
1534
		if($checkResult["passed"]=="false"){
1534
		if($checkResult["passed"]=="false"){
1535
			
1535
 
1536
			#設置錯誤識別
1536
			#設置錯誤識別
1537
			$result["status"]="false";
1537
			$result["status"]="false";
1538
			
1538
 
1539
			#設置錯誤訊息
1539
			#設置錯誤訊息
1540
			$result["error"]=$checkResult;
1540
			$result["error"]=$checkResult;
1541
			
1541
 
1542
			#回傳結果
1542
			#回傳結果
1543
			return $result;
1543
			return $result;
1544
				
1544
 
1545
			}#if end
1545
			}#if end
1546
		
1546
 
1547
		#涵式說明:
1547
		#涵式說明:
1548
		#讀取csv檔案的內容
1548
		#讀取csv檔案的內容
1549
		#回傳得結果:
1549
		#回傳得結果:
1550
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
1550
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
1551
		#$result["error"],錯誤訊息陣列.
1551
		#$result["error"],錯誤訊息陣列.
Line 1564... Line 1564...
1564
		#http://www.php.net/manual/en/function.str-split.php
1564
		#http://www.php.net/manual/en/function.str-split.php
1565
		#參考資料來源
1565
		#參考資料來源
1566
		#http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
1566
		#http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
1567
		$csvFileContent=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
1567
		$csvFileContent=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
1568
		unset($conf["csv"]["loadCsvFile"]);
1568
		unset($conf["csv"]["loadCsvFile"]);
1569
		
1569
 
1570
		#檢查變數內容
1570
		#檢查變數內容
1571
		#var_dump($csvFileContent);
1571
		#var_dump($csvFileContent);
1572
		
1572
 
1573
		#如果讀取csv檔案失敗
1573
		#如果讀取csv檔案失敗
1574
		if($csvFileContent["status"]=="false"){
1574
		if($csvFileContent["status"]=="false"){
1575
			
1575
 
1576
			#設置錯誤識別
1576
			#設置錯誤識別
1577
			$result["status"]="false";
1577
			$result["status"]="false";
1578
			
1578
 
1579
			#設置錯誤訊息
1579
			#設置錯誤訊息
1580
			$result["error"]=$csvFileContent;
1580
			$result["error"]=$csvFileContent;
1581
			
1581
 
1582
			#回傳結果
1582
			#回傳結果
1583
			return $result;
1583
			return $result;
1584
			
1584
 
1585
			}#if end
1585
			}#if end
1586
		
1586
 
1587
		#如果 $conf["newVarValue"] 沒有設定
1587
		#如果 $conf["newVarValue"] 沒有設定
1588
		if(!isset($conf["newVarValue"])){
1588
		if(!isset($conf["newVarValue"])){
1589
			
1589
 
1590
			#則 $conf["newVarValue"] 設為 $conf["addFromVar"]
1590
			#則 $conf["newVarValue"] 設為 $conf["addFromVar"]
1591
			$conf["newVarValue"]=$conf["addFromVar"];
1591
			$conf["newVarValue"]=$conf["addFromVar"];
1592
			
1592
 
1593
			}#if end
1593
			}#if end
1594
		
1594
 
1595
		#涵式說明:
1595
		#涵式說明:
1596
		#從原始的陣列中將一個變數分成兩個變數,並且新增在原始的陣列中
1596
		#從原始的陣列中將一個變數分成兩個變數,並且新增在原始的陣列中
1597
		#回傳的結果:
1597
		#回傳的結果:
1598
		#$result["status"],執行是否正常,正常的話為"true",不正常的話為"false".
1598
		#$result["status"],執行是否正常,正常的話為"true",不正常的話為"false".
1599
		#$result["error"],錯誤訊息.
1599
		#$result["error"],錯誤訊息.
1600
		#$result["content"],過增加兩個欄位(統計學上的變數)後的陣列變數
1600
		#$result["content"],過增加兩個欄位(統計學上的變數)後的陣列變數
1601
			#$result["content"][n1][n2],爲第n1行的n2欄位數值內容
1601
			#$result["content"][n1][n2],爲第n1行的n2欄位數值內容
1602
		#必填參數:
1602
		#必填參數:
1603
		$conf["math"]["add2Var"]["varArray"]=$csvFileContent["csvFileContent"];#要處理的陣列變數
1603
		$conf["math"]["add2Var"]["varArray"]=$csvFileContent["csvFileContent"];#要處理的陣列變數
1604
		$conf["math"]["add2Var"]["addFromVar"]=$conf["addFromVar"];#要從哪些元素來產生要新的變數內容		
1604
		$conf["math"]["add2Var"]["addFromVar"]=$conf["addFromVar"];#要從哪些元素來產生要新的變數內容
1605
		$conf["math"]["add2Var"]["newVarName"]=$conf["newVarName"];#要新增的變數(欄位)名稱
1605
		$conf["math"]["add2Var"]["newVarName"]=$conf["newVarName"];#要新增的變數(欄位)名稱
1606
		$conf["math"]["add2Var"]["newVarValue"]=$conf["newVarValue"];#要增加變數的數值內容陣列,須與$conf["addFromVar"]的元素數量相同。
1606
		$conf["math"]["add2Var"]["newVarValue"]=$conf["newVarValue"];#要增加變數的數值內容陣列,須與$conf["addFromVar"]的元素數量相同。
1607
		$conf["math"]["add2Var"]["sameValueColumnName"]=$conf["sameValueColumnName"];#要新增的變數(欄位)名稱
1607
		$conf["math"]["add2Var"]["sameValueColumnName"]=$conf["sameValueColumnName"];#要新增的變數(欄位)名稱
1608
		#可省略參數:
1608
		#可省略參數:
1609
		$conf["math"]["add2Var"]["firstLineVarName"]="true";#第一行是否爲變數名稱(各個欄位的名稱)
1609
		$conf["math"]["add2Var"]["firstLineVarName"]="true";#第一行是否爲變數名稱(各個欄位的名稱)
1610
		$addedCsvFile=analyse::add2Var($conf["math"]["add2Var"]);
1610
		$addedCsvFile=analyse::add2Var($conf["math"]["add2Var"]);
1611
		unset($conf["math"]["add2Var"]);
1611
		unset($conf["math"]["add2Var"]);
1612
 
1612
 
1613
		#如果analyse::add2Var執行失敗
1613
		#如果analyse::add2Var執行失敗
1614
		if($addedCsvFile["status"]=="false"){
1614
		if($addedCsvFile["status"]=="false"){
1615
			
1615
 
1616
			#設置錯誤識別
1616
			#設置錯誤識別
1617
			$result["status"]="false";
1617
			$result["status"]="false";
1618
			
1618
 
1619
			#設置錯誤訊息
1619
			#設置錯誤訊息
1620
			$result["error"]=$addedCsvFile;
1620
			$result["error"]=$addedCsvFile;
1621
			
1621
 
1622
			#回傳結果
1622
			#回傳結果
1623
			return $result;
1623
			return $result;
1624
			
1624
 
1625
			}#if end
1625
			}#if end
1626
 
1626
 
1627
		#將處理好的內容轉成csv檔
1627
		#將處理好的內容轉成csv檔
1628
		#涵式說明:
1628
		#涵式說明:
1629
		#快速建立一個csv檔案,並且要求使用者下載。
1629
		#快速建立一個csv檔案,並且要求使用者下載。
Line 1634... Line 1634...
1634
		#必填參數:
1634
		#必填參數:
1635
		#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
1635
		#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
1636
		$conf["csv"]["create"]["fileArgu"]=$conf["fileArgu"];
1636
		$conf["csv"]["create"]["fileArgu"]=$conf["fileArgu"];
1637
		$conf["csv"]["create"]["dataArray"]=$addedCsvFile["content"];#要寫入的文字,$conf["dataArray"][$i],代表第 $i 行的內容。
1637
		$conf["csv"]["create"]["dataArray"]=$addedCsvFile["content"];#要寫入的文字,$conf["dataArray"][$i],代表第 $i 行的內容。
1638
		#可省略參數:
1638
		#可省略參數:
1639
		
1639
 
1640
		#如果有設置 $conf["outputCsvFilePathAndName"]
1640
		#如果有設置 $conf["outputCsvFilePathAndName"]
1641
		if(isset($conf["outputCsvFilePathAndName"])){
1641
		if(isset($conf["outputCsvFilePathAndName"])){
1642
			
1642
 
1643
			#將輸出目錄與名稱設為 $conf["outputCsvFilePathAndName"]
1643
			#將輸出目錄與名稱設為 $conf["outputCsvFilePathAndName"]
1644
			$conf["csv"]["create"]["csvFilePathAndName"]=$conf["outputCsvFilePathAndName"];#輸出的csv檔案路徑與名稱,預設爲系統時間,副檔名"csv"會自動加上.
1644
			$conf["csv"]["create"]["csvFilePathAndName"]=$conf["outputCsvFilePathAndName"];#輸出的csv檔案路徑與名稱,預設爲系統時間,副檔名"csv"會自動加上.
1645
			
1645
 
1646
			}#if end
1646
			}#if end
1647
			
1647
 
1648
		#如果有設置 $conf["noDownload"]
1648
		#如果有設置 $conf["noDownload"]
1649
		if(isset($conf["noDownload"])){
1649
		if(isset($conf["noDownload"])){
1650
				
1650
 
1651
			#如果其等於 "true"
1651
			#如果其等於 "true"
1652
			if($conf["noDownload"]=="true"){
1652
			if($conf["noDownload"]=="true"){
1653
					
1653
 
1654
				#設定自動下載檔案
1654
				#設定自動下載檔案
1655
				$conf["csv"]["create"]["noDownload"]=$conf["noDownload"];
1655
				$conf["csv"]["create"]["noDownload"]=$conf["noDownload"];
1656
					
1656
 
1657
				}#if end
1657
				}#if end
1658
				
1658
 
1659
			}#if end
1659
			}#if end
1660
			
1660
 
1661
		#$conf["csv"]["create"]["noDownload"]="true";#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
1661
		#$conf["csv"]["create"]["noDownload"]="true";#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
1662
		#參考資料來源:
1662
		#參考資料來源:
1663
		#http://php.net/manual/en/function.str-split.php
1663
		#http://php.net/manual/en/function.str-split.php
1664
		$csvFileCreateResult=csv::create($conf["csv"]["create"]);
1664
		$csvFileCreateResult=csv::create($conf["csv"]["create"]);
1665
		unset($conf["csv"]["create"]);	
1665
		unset($conf["csv"]["create"]);
1666
						
1666
 
1667
		#如果 $csvFileCreateResult["status"] 等於 "false"
1667
		#如果 $csvFileCreateResult["status"] 等於 "false"
1668
		if($csvFileCreateResult["status"]=="false"){
1668
		if($csvFileCreateResult["status"]=="false"){
1669
			
1669
 
1670
			#設置錯誤識別
1670
			#設置錯誤識別
1671
			$result["status"]="false";
1671
			$result["status"]="false";
1672
			
1672
 
1673
			#設置錯誤訊息
1673
			#設置錯誤訊息
1674
			$result["error"]=$csvFileCreateResult;
1674
			$result["error"]=$csvFileCreateResult;
1675
			
1675
 
1676
			#回傳結果
1676
			#回傳結果
1677
			return $result;
1677
			return $result;
1678
			
1678
 
1679
			}#if end
1679
			}#if end
1680
							
1680
 
1681
		#執行到這邊代表執行正常
1681
		#執行到這邊代表執行正常
1682
		$result["status"]="true";
1682
		$result["status"]="true";
1683
		
1683
 
1684
		#儲存csv檔輸出的路徑
1684
		#儲存csv檔輸出的路徑
1685
		$result["outputCsvFileAddress"]=$csvFileCreateResult["content"];
1685
		$result["outputCsvFileAddress"]=$csvFileCreateResult["content"];
1686
		
1686
 
1687
		#回傳結果
1687
		#回傳結果
1688
		return $result;
1688
		return $result;
1689
									
1689
 
1690
		}#function addSample end
1690
		}#function addSample end
1691
		
1691
 
1692
	/*
1692
	/*
1693
	#函式說明:
1693
	#函式說明:
1694
	#將單一欄格式為"a1,a2,a3,b1,b4,c5,c6,d1"且
1694
	#將單一欄格式為"a1,a2,a3,b1,b4,c5,c6,d1"且
1695
		#a的選項有a1,a2,a3.
1695
		#a的選項有a1,a2,a3.
1696
		#b的選項有b1,b2,b3.b4,b5
1696
		#b的選項有b1,b2,b3.b4,b5
Line 1702... Line 1702...
1702
	#$result["error"],錯誤訊息陣列.
1702
	#$result["error"],錯誤訊息陣列.
1703
	#$result["content"],處理好的字串.
1703
	#$result["content"],處理好的字串.
1704
	#$result["function"],當前執行的函數名稱.
1704
	#$result["function"],當前執行的函數名稱.
1705
	#必填參數:
1705
	#必填參數:
1706
	#$conf["inputStr"],要處理的字串.
1706
	#$conf["inputStr"],要處理的字串.
1707
	$conf["inputStr"]=""; 
1707
	$conf["inputStr"]="";
1708
	#$conf["leaderWordArray"],字串陣列,為代表某一類的代號陣列,請按照順序排列.
1708
	#$conf["leaderWordArray"],字串陣列,為代表某一類的代號陣列,請按照順序排列.
1709
	$conf["leaderWordArray"]=array("a","b","c");
1709
	$conf["leaderWordArray"]=array("a","b","c");
1710
	#$conf["leaderWordOptionCountArray"],字串陣列,每類代號的選項數目,請按照順序排列.
1710
	#$conf["leaderWordOptionCountArray"],字串陣列,每類代號的選項數目,請按照順序排列.
1711
	$conf["leaderWordOptionCountArray"]=array("3","5","6");
1711
	$conf["leaderWordOptionCountArray"]=array("3","5","6");
1712
	#可省略參數:
1712
	#可省略參數:
Line 1715... Line 1715...
1715
	#無.
1715
	#無.
1716
	#備註:
1716
	#備註:
1717
	#無
1717
	#無
1718
	*/
1718
	*/
1719
	public static function changeToNumberList(&$conf){
1719
	public static function changeToNumberList(&$conf){
1720
		
1720
 
1721
		#初始化要回傳的內容
1721
		#初始化要回傳的內容
1722
		$result=array();
1722
		$result=array();
1723
		
1723
 
1724
		#取得當前執行的函數名稱
1724
		#取得當前執行的函數名稱
1725
		$result["function"]=__FUNCTION__;
1725
		$result["function"]=__FUNCTION__;
1726
		
1726
 
1727
		#如果 $conf 不為陣列
1727
		#如果 $conf 不為陣列
1728
		if(gettype($conf)!="array"){
1728
		if(gettype($conf)!="array"){
1729
			
1729
 
1730
			#設置執行失敗
1730
			#設置執行失敗
1731
			$result["status"]="false";
1731
			$result["status"]="false";
1732
			
1732
 
1733
			#設置執行錯誤訊息
1733
			#設置執行錯誤訊息
1734
			$result["error"][]="\$conf變數須為陣列形態";
1734
			$result["error"][]="\$conf變數須為陣列形態";
1735
 
1735
 
1736
			#如果傳入的參數為 null
1736
			#如果傳入的參數為 null
1737
			if($conf==null){
1737
			if($conf==null){
1738
				
1738
 
1739
				#設置執行錯誤訊息
1739
				#設置執行錯誤訊息
1740
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1740
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1741
				
1741
 
1742
				}#if end
1742
				}#if end
1743
 
1743
 
1744
			#回傳結果
1744
			#回傳結果
1745
			return $result;
1745
			return $result;
1746
			
1746
 
1747
			}#if end
1747
			}#if end
1748
		
1748
 
1749
		#檢查參數
1749
		#檢查參數
1750
		#涵式說明:
1750
		#涵式說明:
1751
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
1751
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
1752
		#回傳的結果:
1752
		#回傳的結果:
1753
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1753
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 1756... Line 1756...
1756
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1756
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1757
		#必填參數:
1757
		#必填參數:
1758
		$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
1758
		$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
1759
		$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("inputStr","leaderWordArray","leaderWordOptionCountArray");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
1759
		$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("inputStr","leaderWordArray","leaderWordOptionCountArray");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
1760
		#可以省略的參數:
1760
		#可以省略的參數:
1761
		$conf["variableCheck"]["isexistMuti"]["variableType"]=array("string","array","array");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double"); 
1761
		$conf["variableCheck"]["isexistMuti"]["variableType"]=array("string","array","array");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
1762
		$conf["variableCheck"]["isexistMuti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
1762
		$conf["variableCheck"]["isexistMuti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
1763
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
1763
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
1764
		unset($conf["variableCheck"]["isexistMuti"]);
1764
		unset($conf["variableCheck"]["isexistMuti"]);
1765
		
1765
 
1766
		#如果 $checkResult["status"] 等於 "fasle"
1766
		#如果 $checkResult["status"] 等於 "fasle"
1767
		if($checkResult["status"]=="false"){
1767
		if($checkResult["status"]=="false"){
1768
			
1768
 
1769
			#設置錯誤識別
1769
			#設置錯誤識別
1770
			$result["status"]="false";
1770
			$result["status"]="false";
1771
			
1771
 
1772
			#設置錯誤訊息
1772
			#設置錯誤訊息
1773
			$result["error"]=$checkResult;
1773
			$result["error"]=$checkResult;
1774
			
1774
 
1775
			#回傳結果
1775
			#回傳結果
1776
			return $result;
1776
			return $result;
1777
			
1777
 
1778
			}#if end
1778
			}#if end
1779
			
1779
 
1780
		#如果 $checkResult["passed"] 等於 "fasle"
1780
		#如果 $checkResult["passed"] 等於 "fasle"
1781
		if($checkResult["passed"]=="false"){
1781
		if($checkResult["passed"]=="false"){
1782
			
1782
 
1783
			#設置錯誤識別
1783
			#設置錯誤識別
1784
			$result["status"]="false";
1784
			$result["status"]="false";
1785
			
1785
 
1786
			#設置錯誤訊息
1786
			#設置錯誤訊息
1787
			$result["error"]=$checkResult;
1787
			$result["error"]=$checkResult;
1788
			
1788
 
1789
			#回傳結果
1789
			#回傳結果
1790
			return $result;
1790
			return $result;
1791
			
1791
 
1792
			}#if end
1792
			}#if end
1793
			
1793
 
1794
		#初始化編號對應的號碼順序陣列
1794
		#初始化編號對應的號碼順序陣列
1795
		$pairedTable=array();
1795
		$pairedTable=array();
1796
		
1796
 
1797
		#有幾個非數字開頭的編號前置字串,就執行幾次.
1797
		#有幾個非數字開頭的編號前置字串,就執行幾次.
1798
		for($i=0;$i<count($conf["leaderWordArray"]);$i++){
1798
		for($i=0;$i<count($conf["leaderWordArray"]);$i++){
1799
			
1799
 
1800
			#針對每個非數字開頭編號前置字串的選項數量
1800
			#針對每個非數字開頭編號前置字串的選項數量
1801
			for($j=0;$j<$conf["leaderWordOptionCountArray"][$i];$j++){
1801
			for($j=0;$j<$conf["leaderWordOptionCountArray"][$i];$j++){
1802
				
1802
 
1803
				#儲存編號對應的數字順序號碼
1803
				#儲存編號對應的數字順序號碼
1804
				$pairedTable[]=$conf["leaderWordArray"][$i].(string)($j+1);
1804
				$pairedTable[]=$conf["leaderWordArray"][$i].(string)($j+1);
1805
				
1805
 
1806
				#var_dump($pairedTable);
1806
				#var_dump($pairedTable);
1807
				
1807
 
1808
				}#for end
1808
				}#for end
1809
			
1809
 
1810
			}#for end
1810
			}#for end
1811
			
1811
 
1812
		#var_dump($pairedTable);
1812
		#var_dump($pairedTable);
1813
			
1813
 
1814
		#將輸入字串用「,」分隔
1814
		#將輸入字串用「,」分隔
1815
		#涵式說明:
1815
		#涵式說明:
1816
		#將固定格式的字串分開,並回傳分開的結果。
1816
		#將固定格式的字串分開,並回傳分開的結果。
1817
		#回傳的參數:
1817
		#回傳的參數:
1818
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1818
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 1823... Line 1823...
1823
		#必填參數:
1823
		#必填參數:
1824
		$conf["stringProcess"]["spiltString"]["stringIn"]=$conf["inputStr"];#要處理的字串。
1824
		$conf["stringProcess"]["spiltString"]["stringIn"]=$conf["inputStr"];#要處理的字串。
1825
		$conf["stringProcess"]["spiltString"]["spiltSymbol"]=",";#爲以哪個符號作爲分割
1825
		$conf["stringProcess"]["spiltString"]["spiltSymbol"]=",";#爲以哪個符號作爲分割
1826
		$spiltedStr=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);
1826
		$spiltedStr=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);
1827
		unset($conf["stringProcess"]["spiltString"]);
1827
		unset($conf["stringProcess"]["spiltString"]);
1828
		
1828
 
1829
		#如果 $spiltedStr["status"] 等於 "false"
1829
		#如果 $spiltedStr["status"] 等於 "false"
1830
		if($spiltedStr["status"]=="false"){
1830
		if($spiltedStr["status"]=="false"){
1831
			
1831
 
1832
			#設置錯誤識別
1832
			#設置錯誤識別
1833
			$result["status"]="false";
1833
			$result["status"]="false";
1834
			
1834
 
1835
			#設置錯誤訊息
1835
			#設置錯誤訊息
1836
			$result["error"]=$spiltedStr;
1836
			$result["error"]=$spiltedStr;
1837
			
1837
 
1838
			#回傳結果
1838
			#回傳結果
1839
			return $result;
1839
			return $result;
1840
			
1840
 
1841
			}#if end
1841
			}#if end
1842
		
1842
 
1843
		#初始化編號轉換過後對應的號碼順序陣列
1843
		#初始化編號轉換過後對應的號碼順序陣列
1844
		$transformedNumber=array();
1844
		$transformedNumber=array();
1845
			
1845
 
1846
		#針對輸入有幾個編號
1846
		#針對輸入有幾個編號
1847
		for($i=0;$i<$spiltedStr["dataCounts"];$i++){
1847
		for($i=0;$i<$spiltedStr["dataCounts"];$i++){
1848
			
1848
 
1849
			#判斷編號對應的數字為何
1849
			#判斷編號對應的數字為何
1850
			#涵式說明:
1850
			#涵式說明:
1851
			#檢查一個數值是否與陣列裏面的元素相同
1851
			#檢查一個數值是否與陣列裏面的元素相同
1852
			#回傳的結果:
1852
			#回傳的結果:
1853
			#$result["status"],"true"表示執行正確,"false"表示執行錯誤.
1853
			#$result["status"],"true"表示執行正確,"false"表示執行錯誤.
Line 1859... Line 1859...
1859
			#必填參數:
1859
			#必填參數:
1860
			$conf["search"]["getEqualVar"]["conditionElement"]=$spiltedStr["dataArray"][$i];#條件元素,要等於的元素內容。
1860
			$conf["search"]["getEqualVar"]["conditionElement"]=$spiltedStr["dataArray"][$i];#條件元素,要等於的元素內容。
1861
			$conf["search"]["getEqualVar"]["compareElements"]=$pairedTable;#要比對的陣列變數內容。
1861
			$conf["search"]["getEqualVar"]["compareElements"]=$pairedTable;#要比對的陣列變數內容。
1862
			$searchResult=search::getEqualVar($conf["search"]["getEqualVar"]);
1862
			$searchResult=search::getEqualVar($conf["search"]["getEqualVar"]);
1863
			unset($conf["search"]["getEqualVar"]);
1863
			unset($conf["search"]["getEqualVar"]);
1864
			
1864
 
1865
			#如果搜尋出錯
1865
			#如果搜尋出錯
1866
			if($searchResult["status"]=="false"){
1866
			if($searchResult["status"]=="false"){
1867
				
1867
 
1868
				#設置錯誤識別
1868
				#設置錯誤識別
1869
				$result["status"]="false";
1869
				$result["status"]="false";
1870
				
1870
 
1871
				#設置錯誤訊息
1871
				#設置錯誤訊息
1872
				$result["error"]=$searchResult;
1872
				$result["error"]=$searchResult;
1873
				
1873
 
1874
				#回傳結果
1874
				#回傳結果
1875
				return $result;
1875
				return $result;
1876
				
1876
 
1877
				}#if end
1877
				}#if end
1878
				
1878
 
1879
			#如果沒有找到編號對應的數字
1879
			#如果沒有找到編號對應的數字
1880
			if($searchResult["founded"]=="false"){
1880
			if($searchResult["founded"]=="false"){
1881
				
1881
 
1882
				#設置錯誤識別
1882
				#設置錯誤識別
1883
				$result["status"]="false";
1883
				$result["status"]="false";
1884
				
1884
 
1885
				#設置錯誤訊息
1885
				#設置錯誤訊息
1886
				$result["error"]=$searchResult;
1886
				$result["error"]=$searchResult;
1887
				
1887
 
1888
				#回傳結果
1888
				#回傳結果
1889
				return $result;
1889
				return $result;
1890
				
1890
 
1891
				}#if end
1891
				}#if end
1892
				
1892
 
1893
			#儲存編號對應到的數字號碼
1893
			#儲存編號對應到的數字號碼
1894
			$transformedNumber[]=$searchResult["equalVarName"]+1;
1894
			$transformedNumber[]=$searchResult["equalVarName"]+1;
1895
			
1895
 
1896
			}#for end
1896
			}#for end
1897
			
1897
 
1898
		#將轉換好的數字陣列變成用「,」分隔字串
1898
		#將轉換好的數字陣列變成用「,」分隔字串
1899
		#函式說明:
1899
		#函式說明:
1900
		#將陣列裡的元素內容用特定符號連接在一起變成字串. 
1900
		#將陣列裡的元素內容用特定符號連接在一起變成字串.
1901
		#回傳的結果:
1901
		#回傳的結果:
1902
		#$result["statu"],執行是否正常,"true"代表執行正常,"false"代表執行失敗
1902
		#$result["statu"],執行是否正常,"true"代表執行正常,"false"代表執行失敗
1903
		#$result["error"],錯誤訊息陣列.
1903
		#$result["error"],錯誤訊息陣列.
1904
		#$result["content"],處理過後的字串.
1904
		#$result["content"],處理過後的字串.
1905
		#必填的字串:
1905
		#必填的字串:
Line 1907... Line 1907...
1907
		$conf["stringProcess"]["combineElementWithSymbol"]["inputArray"]=$transformedNumber;
1907
		$conf["stringProcess"]["combineElementWithSymbol"]["inputArray"]=$transformedNumber;
1908
		#$conf["combineSymbol"],字串,用來連結各元素的符號.
1908
		#$conf["combineSymbol"],字串,用來連結各元素的符號.
1909
		$conf["stringProcess"]["combineElementWithSymbol"]["combineSymbol"]=",";
1909
		$conf["stringProcess"]["combineElementWithSymbol"]["combineSymbol"]=",";
1910
		$combineedStr=stringProcess::combineElementWithSymbol($conf["stringProcess"]["combineElementWithSymbol"]);
1910
		$combineedStr=stringProcess::combineElementWithSymbol($conf["stringProcess"]["combineElementWithSymbol"]);
1911
		unset($conf["stringProcess"]["combineElementWithSymbol"]);
1911
		unset($conf["stringProcess"]["combineElementWithSymbol"]);
1912
			
1912
 
1913
		# $combineedStr["status"] 為 "false"
1913
		# $combineedStr["status"] 為 "false"
1914
		if($combineedStr["status"]=="false"){
1914
		if($combineedStr["status"]=="false"){
1915
			
1915
 
1916
			#設置錯誤識別
1916
			#設置錯誤識別
1917
			$result["status"]="false";
1917
			$result["status"]="false";
1918
				
1918
 
1919
			#設置錯誤訊息
1919
			#設置錯誤訊息
1920
			$result["error"]=$combineedStr;
1920
			$result["error"]=$combineedStr;
1921
				
1921
 
1922
			#回傳結果
1922
			#回傳結果
1923
			return $result;
1923
			return $result;
1924
			
1924
 
1925
			}#if end
1925
			}#if end
1926
			
1926
 
1927
		#取得處理好的字串
1927
		#取得處理好的字串
1928
		$result["content"]=$combineedStr["content"];
1928
		$result["content"]=$combineedStr["content"];
1929
			
1929
 
1930
		#執行到這邊代表正常
1930
		#執行到這邊代表正常
1931
		
1931
 
1932
		#設置執行正常
1932
		#設置執行正常
1933
		$result["status"]="true";
1933
		$result["status"]="true";
1934
		
1934
 
1935
		#回傳結果
1935
		#回傳結果
1936
		return $result;
1936
		return $result;
1937
		
1937
 
1938
		}#function changeToNumberList end
1938
		}#function changeToNumberList end
1939
		
1939
 
1940
	/*
1940
	/*
1941
	#函式說明:
1941
	#函式說明:
1942
	#將csv檔中多行用「,」分隔且有不同前置字元的順序字串,變成多行用數字且按順序排列用「,」分隔的csv檔案.
1942
	#將csv檔中多行用「,」分隔且有不同前置字元的順序字串,變成多行用數字且按順序排列用「,」分隔的csv檔案.
1943
	#回傳的結果:
1943
	#回傳的結果:
1944
	#$result["status"],執形式否正常,"true"代表正常,"false"代表不正常.
1944
	#$result["status"],執形式否正常,"true"代表正常,"false"代表不正常.
Line 1963... Line 1963...
1963
	#無.
1963
	#無.
1964
	#備註:
1964
	#備註:
1965
	#無
1965
	#無
1966
	*/
1966
	*/
1967
	public static function changeToNumberListInCsv(&$conf){
1967
	public static function changeToNumberListInCsv(&$conf){
1968
		
1968
 
1969
		#初始化要回傳的結果
1969
		#初始化要回傳的結果
1970
		$result=array();
1970
		$result=array();
1971
		
1971
 
1972
		#取得當前執行的函數名稱
1972
		#取得當前執行的函數名稱
1973
		$result["function"]=__FUNCTION__;
1973
		$result["function"]=__FUNCTION__;
1974
		
1974
 
1975
		#如果 $conf 不為陣列
1975
		#如果 $conf 不為陣列
1976
		if(gettype($conf)!="array"){
1976
		if(gettype($conf)!="array"){
1977
			
1977
 
1978
			#設置執行失敗
1978
			#設置執行失敗
1979
			$result["status"]="false";
1979
			$result["status"]="false";
1980
			
1980
 
1981
			#設置執行錯誤訊息
1981
			#設置執行錯誤訊息
1982
			$result["error"][]="\$conf變數須為陣列形態";
1982
			$result["error"][]="\$conf變數須為陣列形態";
1983
 
1983
 
1984
			#如果傳入的參數為 null
1984
			#如果傳入的參數為 null
1985
			if($conf==null){
1985
			if($conf==null){
1986
				
1986
 
1987
				#設置執行錯誤訊息
1987
				#設置執行錯誤訊息
1988
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1988
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1989
				
1989
 
1990
				}#if end
1990
				}#if end
1991
 
1991
 
1992
			#回傳結果
1992
			#回傳結果
1993
			return $result;
1993
			return $result;
1994
			
1994
 
1995
			}#if end
1995
			}#if end
1996
		
1996
 
1997
		#產生系統時間
1997
		#產生系統時間
1998
		#回傳西元的目前時間,格式為2010年07月24日15時30分33秒
1998
		#回傳西元的目前時間,格式為2010年07月24日15時30分33秒
1999
		#必填參數:
1999
		#必填參數:
2000
		$conf["time::getFullDateAndTime"]["timeZone"]="Asia/Taipei";#時區代號,可以設定的時區列表:http://www.php.net/manual/en/timezones.php
2000
		$conf["time::getFullDateAndTime"]["timeZone"]="Asia/Taipei";#時區代號,可以設定的時區列表:http://www.php.net/manual/en/timezones.php
2001
			#ex:"Asia/Taipei"
2001
			#ex:"Asia/Taipei"
2002
		#可省略參數:
2002
		#可省略參數:
2003
		#$conf["showSecond"]="true";#若爲"true"則會顯示秒數	
2003
		#$conf["showSecond"]="true";#若爲"true"則會顯示秒數
2004
		$systemTime=time::getFullDateAndTime($conf["time::getFullDateAndTime"]);
2004
		$systemTime=time::getFullDateAndTime($conf["time::getFullDateAndTime"]);
2005
		unset($conf["time::getFullDateAndTime"]);
2005
		unset($conf["time::getFullDateAndTime"]);
2006
		
2006
 
2007
		#檢查參數
2007
		#檢查參數
2008
		#函式說明:
2008
		#函式說明:
2009
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2009
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2010
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2010
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2011
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
2011
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
Line 2020... Line 2020...
2020
		#必填參數:
2020
		#必填參數:
2021
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2021
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2022
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2022
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2023
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2023
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2024
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("csvIn","leaderWordArray","leaderWordOptionCountArray","fileArgu");
2024
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("csvIn","leaderWordArray","leaderWordOptionCountArray","fileArgu");
2025
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double"); 
2025
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
2026
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","array","array","string");
2026
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","array","array","string");
2027
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2027
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2028
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2028
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2029
		#可以省略的參數:
2029
		#可以省略的參數:
2030
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
2030
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
2031
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
2031
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
2032
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2032
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2033
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("csvOutFilePathAndName","noDownload");
2033
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("csvOutFilePathAndName","noDownload");
2034
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
2034
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
2035
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
2035
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
2036
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2036
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2037
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array($systemTime,"true");
2037
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array($systemTime,"true");
2038
		#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2038
		#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2039
		$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("leaderWordArray","leaderWordOptionCountArray");
2039
		$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("leaderWordArray","leaderWordOptionCountArray");
2040
		#參考資料來源:
2040
		#參考資料來源:
2041
		#array_keys=>http://php.net/manual/en/function.array-keys.php
2041
		#array_keys=>http://php.net/manual/en/function.array-keys.php
2042
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2042
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2043
		unset($conf["variableCheck::checkArguments"]);
2043
		unset($conf["variableCheck::checkArguments"]);
2044
		
2044
 
2045
		#如果 $checkResult["status"] 等於 "fasle"
2045
		#如果 $checkResult["status"] 等於 "fasle"
2046
		if($checkResult["status"]=="false"){
2046
		if($checkResult["status"]=="false"){
2047
			
2047
 
2048
			#設置錯誤識別
2048
			#設置錯誤識別
2049
			$result["status"]="false";
2049
			$result["status"]="false";
2050
			
2050
 
2051
			#設置錯誤訊息
2051
			#設置錯誤訊息
2052
			$result["error"]=$checkResult;
2052
			$result["error"]=$checkResult;
2053
			
2053
 
2054
			#回傳結果
2054
			#回傳結果
2055
			return $result;
2055
			return $result;
2056
			
2056
 
2057
			}#if end
2057
			}#if end
2058
			
2058
 
2059
		#如果 $checkResult["passed"] 等於 "fasle"
2059
		#如果 $checkResult["passed"] 等於 "fasle"
2060
		if($checkResult["passed"]=="false"){
2060
		if($checkResult["passed"]=="false"){
2061
			
2061
 
2062
			#設置錯誤識別
2062
			#設置錯誤識別
2063
			$result["status"]="false";
2063
			$result["status"]="false";
2064
			
2064
 
2065
			#設置錯誤訊息
2065
			#設置錯誤訊息
2066
			$result["error"]=$checkResult;
2066
			$result["error"]=$checkResult;
2067
			
2067
 
2068
			#回傳結果
2068
			#回傳結果
2069
			return $result;
2069
			return $result;
2070
			
2070
 
2071
			}#if end
2071
			}#if end
2072
				
2072
 
2073
		#涵式說明:
2073
		#涵式說明:
2074
		#讀取csv檔案的內容
2074
		#讀取csv檔案的內容
2075
		#回傳得結果:
2075
		#回傳得結果:
2076
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
2076
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
2077
		#$result["error"],錯誤訊息陣列.
2077
		#$result["error"],錯誤訊息陣列.
Line 2090... Line 2090...
2090
		#http://www.php.net/manual/en/function.str-split.php
2090
		#http://www.php.net/manual/en/function.str-split.php
2091
		#參考資料來源
2091
		#參考資料來源
2092
		#http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
2092
		#http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
2093
		$csv=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
2093
		$csv=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
2094
		unset($conf["csv"]["loadCsvFile"]);
2094
		unset($conf["csv"]["loadCsvFile"]);
2095
		
2095
 
2096
		#如果 $csv["status"] 等於 "false"
2096
		#如果 $csv["status"] 等於 "false"
2097
		if($csv["status"]=="false"){
2097
		if($csv["status"]=="false"){
2098
			
2098
 
2099
			#設置錯誤識別
2099
			#設置錯誤識別
2100
			$result["status"]="false";
2100
			$result["status"]="false";
2101
			
2101
 
2102
			#設置錯誤訊息
2102
			#設置錯誤訊息
2103
			$result["error"]=$csv;
2103
			$result["error"]=$csv;
2104
			
2104
 
2105
			#回傳結果
2105
			#回傳結果
2106
			return $result;
2106
			return $result;
2107
			
2107
 
2108
			}#if end
2108
			}#if end
2109
		
2109
 
2110
		#初始化處理好的字串陣列
2110
		#初始化處理好的字串陣列
2111
		$processedStrArray=array();
2111
		$processedStrArray=array();
2112
			
2112
 
2113
		#針對每個 $csv["csvFileContent"] 中的元素
2113
		#針對每個 $csv["csvFileContent"] 中的元素
2114
		foreach($csv["csvFileContent"] as $row){
2114
		foreach($csv["csvFileContent"] as $row){
2115
							
2115
 
2116
			#函式說明:
2116
			#函式說明:
2117
			#將單一欄格式為"a1,a2,a3,b1,b4,c5,c6,d1"且
2117
			#將單一欄格式為"a1,a2,a3,b1,b4,c5,c6,d1"且
2118
				#a的選項有a1,a2,a3.
2118
				#a的選項有a1,a2,a3.
2119
				#b的選項有b1,b2,b3.b4,b5
2119
				#b的選項有b1,b2,b3.b4,b5
2120
				#c的選項有c1,c2,c3,c4,c5,c6
2120
				#c的選項有c1,c2,c3,c4,c5,c6
Line 2124... Line 2124...
2124
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2124
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2125
			#$result["error"],錯誤訊息陣列
2125
			#$result["error"],錯誤訊息陣列
2126
			#$result["content"],處理好的字串
2126
			#$result["content"],處理好的字串
2127
			#必填參數:
2127
			#必填參數:
2128
			#$conf["inputStr"],要處理的字串.
2128
			#$conf["inputStr"],要處理的字串.
2129
			$conf["analyse"]["changeToNumberList"]["inputStr"]=$row[0]; 
2129
			$conf["analyse"]["changeToNumberList"]["inputStr"]=$row[0];
2130
			#$conf["leaderWordArray"],字串陣列,為代表某一類的代號陣列,請按照順序排列.
2130
			#$conf["leaderWordArray"],字串陣列,為代表某一類的代號陣列,請按照順序排列.
2131
			$conf["analyse"]["changeToNumberList"]["leaderWordArray"]=$conf["leaderWordArray"];
2131
			$conf["analyse"]["changeToNumberList"]["leaderWordArray"]=$conf["leaderWordArray"];
2132
			#$conf["leaderWordOptionCountArray"],字串陣列,每類代號的選項數目,請按照順序排列.
2132
			#$conf["leaderWordOptionCountArray"],字串陣列,每類代號的選項數目,請按照順序排列.
2133
			$conf["analyse"]["changeToNumberList"]["leaderWordOptionCountArray"]=$conf["leaderWordOptionCountArray"];
2133
			$conf["analyse"]["changeToNumberList"]["leaderWordOptionCountArray"]=$conf["leaderWordOptionCountArray"];
2134
			$processedStr=analyse::changeToNumberList($conf["analyse"]["changeToNumberList"]);
2134
			$processedStr=analyse::changeToNumberList($conf["analyse"]["changeToNumberList"]);
2135
			unset($conf["analyse"]["changeToNumberList"]);
2135
			unset($conf["analyse"]["changeToNumberList"]);
2136
			
2136
 
2137
			#如果 $processedStr["status"] 等於 "false"
2137
			#如果 $processedStr["status"] 等於 "false"
2138
			if($processedStr["status"]=="false"){
2138
			if($processedStr["status"]=="false"){
2139
				
2139
 
2140
				#設置錯誤識別
2140
				#設置錯誤識別
2141
				$result["status"]="false";
2141
				$result["status"]="false";
2142
				
2142
 
2143
				#設置錯誤訊息
2143
				#設置錯誤訊息
2144
				$result["error"]=$processedStr;
2144
				$result["error"]=$processedStr;
2145
				
2145
 
2146
				#回傳結果
2146
				#回傳結果
2147
				return $result;
2147
				return $result;
2148
				
2148
 
2149
				}#if end
2149
				}#if end
2150
				
2150
 
2151
			#記錄處理好的字串
2151
			#記錄處理好的字串
2152
			$processedStrArray[][]=$processedStr["content"];
2152
			$processedStrArray[][]=$processedStr["content"];
2153
			
2153
 
2154
			}#foreach end
2154
			}#foreach end
2155
						
2155
 
2156
		#將 $processedStrArray 寫入到 csv 檔案裡面.
2156
		#將 $processedStrArray 寫入到 csv 檔案裡面.
2157
		#涵式說明:
2157
		#涵式說明:
2158
		#快速建立一個csv檔案,並且要求使用者下載。
2158
		#快速建立一個csv檔案,並且要求使用者下載。
2159
		#回傳的結果:
2159
		#回傳的結果:
2160
		#$result["status"],執行是否成功,"true"代表成功,"false"代表失敗.
2160
		#$result["status"],執行是否成功,"true"代表成功,"false"代表失敗.
Line 2166... Line 2166...
2166
		$conf["csv"]["create"]["dataArray"]=$processedStrArray;#要寫入的文字,$conf["dataArray"][$i],代表第 $i 行的內容。
2166
		$conf["csv"]["create"]["dataArray"]=$processedStrArray;#要寫入的文字,$conf["dataArray"][$i],代表第 $i 行的內容。
2167
		#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
2167
		#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
2168
		$conf["csv"]["create"]["fileArgu"]=$conf["fileArgu"];
2168
		$conf["csv"]["create"]["fileArgu"]=$conf["fileArgu"];
2169
		#可省略參數:
2169
		#可省略參數:
2170
		#$conf["csvFilePathAndName"]="";#輸出的csv檔案路徑與名稱,預設爲系統時間,副檔名"csv"會自動加上.
2170
		#$conf["csvFilePathAndName"]="";#輸出的csv檔案路徑與名稱,預設爲系統時間,副檔名"csv"會自動加上.
2171
		$conf["csv"]["create"]["csvFilePathAndName"]=$conf["csvOutFilePathAndName"];	
2171
		$conf["csv"]["create"]["csvFilePathAndName"]=$conf["csvOutFilePathAndName"];
2172
		$conf["csv"]["create"]["noDownload"]=$conf["noDownload"];#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
2172
		$conf["csv"]["create"]["noDownload"]=$conf["noDownload"];#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
2173
		#參考資料來源:
2173
		#參考資料來源:
2174
		#http://php.net/manual/en/function.str-split.php
2174
		#http://php.net/manual/en/function.str-split.php
2175
		$create=csv::create($conf["csv"]["create"]);
2175
		$create=csv::create($conf["csv"]["create"]);
2176
		unset($conf["csv"]["create"]);
2176
		unset($conf["csv"]["create"]);
2177
					
2177
 
2178
		#如果建立csv檔案失敗
2178
		#如果建立csv檔案失敗
2179
		if($create["status"]=="false"){
2179
		if($create["status"]=="false"){
2180
			
2180
 
2181
			#設置執行失敗
2181
			#設置執行失敗
2182
			$result["status"]="false";
2182
			$result["status"]="false";
2183
			
2183
 
2184
			#設置執行錯誤訊息
2184
			#設置執行錯誤訊息
2185
			$result["error"]=$create;
2185
			$result["error"]=$create;
2186
			
2186
 
2187
			#回傳結果
2187
			#回傳結果
2188
			return $result;	
2188
			return $result;
2189
			
2189
 
2190
			}#if end
2190
			}#if end
2191
		
2191
 
2192
		#取得產生出來的csv檔案位置
2192
		#取得產生出來的csv檔案位置
2193
		$result["csvFile"]=$create["content"];
2193
		$result["csvFile"]=$create["content"];
2194
		
2194
 
2195
		#執行到這邊代表執行正常
2195
		#執行到這邊代表執行正常
2196
		$result["status"]="true";
2196
		$result["status"]="true";
2197
		
2197
 
2198
		#回傳結果
2198
		#回傳結果
2199
		return $result;			
2199
		return $result;
2200
		
2200
 
2201
		}#function changeToNumberListInCsv end
2201
		}#function changeToNumberListInCsv end
2202
	
2202
 
2203
	/*
2203
	/*
2204
	#函式說明:
2204
	#函式說明:
2205
	#將csv檔的時間欄位格式「2009-07-11 13:21:45」分為多個欄位,變成年、月、日、時、分、秒等六個欄位,然後下載.
2205
	#將csv檔的時間欄位格式「2009-07-11 13:21:45」分為多個欄位,變成年、月、日、時、分、秒等六個欄位,然後下載.
2206
	#回傳的結果:
2206
	#回傳的結果:
2207
	#$result["status"],執行是否正確,"true"代表正確,"false"代表不正常.
2207
	#$result["status"],執行是否正確,"true"代表正確,"false"代表不正常.
Line 2220... Line 2220...
2220
	#無.
2220
	#無.
2221
	#備註:
2221
	#備註:
2222
	#無
2222
	#無
2223
	*/
2223
	*/
2224
	public static function spiltTimeColumn($conf){
2224
	public static function spiltTimeColumn($conf){
2225
		
2225
 
2226
		#初始化要回傳的變數
2226
		#初始化要回傳的變數
2227
		$result=array();
2227
		$result=array();
2228
		
2228
 
2229
		#取得當前執行的函數名稱
2229
		#取得當前執行的函數名稱
2230
		$result["function"]=__FUNCTION__;
2230
		$result["function"]=__FUNCTION__;
2231
		
2231
 
2232
		#如果 $conf 不為陣列
2232
		#如果 $conf 不為陣列
2233
		if(gettype($conf)!="array"){
2233
		if(gettype($conf)!="array"){
2234
			
2234
 
2235
			#設置執行失敗
2235
			#設置執行失敗
2236
			$result["status"]="false";
2236
			$result["status"]="false";
2237
			
2237
 
2238
			#設置執行錯誤訊息
2238
			#設置執行錯誤訊息
2239
			$result["error"][]="\$conf變數須為陣列形態";
2239
			$result["error"][]="\$conf變數須為陣列形態";
2240
 
2240
 
2241
			#如果傳入的參數為 null
2241
			#如果傳入的參數為 null
2242
			if($conf==null){
2242
			if($conf==null){
2243
				
2243
 
2244
				#設置執行錯誤訊息
2244
				#設置執行錯誤訊息
2245
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2245
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2246
				
2246
 
2247
				}#if end
2247
				}#if end
2248
 
2248
 
2249
			#回傳結果
2249
			#回傳結果
2250
			return $result;
2250
			return $result;
2251
			
2251
 
2252
			}#if end
2252
			}#if end
2253
		
2253
 
2254
		#檢查參數
2254
		#檢查參數
2255
		#函式說明:
2255
		#函式說明:
2256
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2256
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2257
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2257
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2258
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
2258
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
Line 2267... Line 2267...
2267
		#必填參數:
2267
		#必填參數:
2268
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2268
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2269
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2269
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2270
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2270
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2271
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("oriCsvFilePath","outputCsvFilePath","fileArgu");
2271
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("oriCsvFilePath","outputCsvFilePath","fileArgu");
2272
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double"); 
2272
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
2273
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string");
2273
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string");
2274
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2274
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2275
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2275
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2276
		#可以省略的參數:
2276
		#可以省略的參數:
2277
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
2277
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
2278
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
2278
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
2279
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2279
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2280
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("noDownload");
2280
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("noDownload");
2281
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
2281
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
2282
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
2282
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
2283
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2283
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2284
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true");
2284
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true");
2285
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2285
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2286
		#$conf["arrayCountEqualCheck"][]=array();
2286
		#$conf["arrayCountEqualCheck"][]=array();
2287
		#參考資料來源:
2287
		#參考資料來源:
2288
		#array_keys=>http://php.net/manual/en/function.array-keys.php
2288
		#array_keys=>http://php.net/manual/en/function.array-keys.php
2289
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2289
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2290
		unset($conf["variableCheck::checkArguments"]);
2290
		unset($conf["variableCheck::checkArguments"]);
2291
		
2291
 
2292
		#如果 $checkResult["status"] 等於 "false"
2292
		#如果 $checkResult["status"] 等於 "false"
2293
		if($checkResult["status"]=="false"){
2293
		if($checkResult["status"]=="false"){
2294
			
2294
 
2295
			#設置錯誤識別
2295
			#設置錯誤識別
2296
			$result["status"]="false";
2296
			$result["status"]="false";
2297
			
2297
 
2298
			#設置錯誤訊息
2298
			#設置錯誤訊息
2299
			$result["error"]=$checkResult;
2299
			$result["error"]=$checkResult;
2300
			
2300
 
2301
			#回傳結果
2301
			#回傳結果
2302
			return $result;
2302
			return $result;
2303
			
2303
 
2304
			}#if end
2304
			}#if end
2305
			
2305
 
2306
		#如果 $checkResult["passed"] 等於 "false"
2306
		#如果 $checkResult["passed"] 等於 "false"
2307
		if($checkResult["passed"]=="false"){
2307
		if($checkResult["passed"]=="false"){
2308
			
2308
 
2309
			#設置錯誤識別
2309
			#設置錯誤識別
2310
			$result["status"]="false";
2310
			$result["status"]="false";
2311
			
2311
 
2312
			#設置錯誤訊息
2312
			#設置錯誤訊息
2313
			$result["error"]=$checkResult;
2313
			$result["error"]=$checkResult;
2314
			
2314
 
2315
			#回傳結果
2315
			#回傳結果
2316
			return $result;
2316
			return $result;
2317
			
2317
 
2318
			}#if end
2318
			}#if end
2319
			
2319
 
2320
		#讀取csv檔案
2320
		#讀取csv檔案
2321
		#涵式說明:
2321
		#涵式說明:
2322
		#讀取csv檔案的內容
2322
		#讀取csv檔案的內容
2323
		#回傳得結果:
2323
		#回傳得結果:
2324
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
2324
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
Line 2338... Line 2338...
2338
		#http://www.php.net/manual/en/function.str-split.php
2338
		#http://www.php.net/manual/en/function.str-split.php
2339
		#參考資料來源
2339
		#參考資料來源
2340
		#http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
2340
		#http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
2341
		$csvFile=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
2341
		$csvFile=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
2342
		unset($conf["csv"]["loadCsvFile"]);
2342
		unset($conf["csv"]["loadCsvFile"]);
2343
			
2343
 
2344
		#如果 $csvFile["status"] 等於 "false"
2344
		#如果 $csvFile["status"] 等於 "false"
2345
		if($csvFile["status"]=="false"){
2345
		if($csvFile["status"]=="false"){
2346
			
2346
 
2347
			#設置錯誤識別
2347
			#設置錯誤識別
2348
			$result["status"]="false";
2348
			$result["status"]="false";
2349
			
2349
 
2350
			#設置錯誤訊息
2350
			#設置錯誤訊息
2351
			$result["error"]=$csvFile;
2351
			$result["error"]=$csvFile;
2352
			
2352
 
2353
			#回傳結果
2353
			#回傳結果
2354
			return $result;
2354
			return $result;
2355
			
2355
 
2356
			}#if end
2356
			}#if end
2357
		
2357
 
2358
		#初始化儲存分割好的時間資料陣列
2358
		#初始化儲存分割好的時間資料陣列
2359
		$time["year"]=array();#西元年
2359
		$time["year"]=array();#西元年
2360
		$time["month"]=array();#月份
2360
		$time["month"]=array();#月份
2361
		$time["day"]=array();#天
2361
		$time["day"]=array();#天
2362
		$time["week"]=array();#星期
2362
		$time["week"]=array();#星期
2363
		$time["hour"]=array();#小時
2363
		$time["hour"]=array();#小時
2364
		$time["min"]=array();#分鐘
2364
		$time["min"]=array();#分鐘
2365
		$time["sec"]=array();#秒
2365
		$time["sec"]=array();#秒
2366
			
2366
 
2367
		#針每行資料
2367
		#針每行資料
2368
		foreach($csvFile["csvFileContent"] as $timeStr){
2368
		foreach($csvFile["csvFileContent"] as $timeStr){
2369
			
2369
 
2370
			#將第一個欄位依據 " " 進行分段
2370
			#將第一個欄位依據 " " 進行分段
2371
			#涵式說明:
2371
			#涵式說明:
2372
			#將固定格式的字串分開,並回傳分開的結果。
2372
			#將固定格式的字串分開,並回傳分開的結果。
2373
			#回傳的參數:
2373
			#回傳的參數:
2374
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2374
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 2379... Line 2379...
2379
			#必填參數:
2379
			#必填參數:
2380
			$conf["stringProcess"]["spiltString"]["stringIn"]=$timeStr[0];#要處理的字串。
2380
			$conf["stringProcess"]["spiltString"]["stringIn"]=$timeStr[0];#要處理的字串。
2381
			$conf["stringProcess"]["spiltString"]["spiltSymbol"]=" ";#爲以哪個符號作爲分割
2381
			$conf["stringProcess"]["spiltString"]["spiltSymbol"]=" ";#爲以哪個符號作爲分割
2382
			$spiltedTimeStr=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);
2382
			$spiltedTimeStr=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);
2383
			unset($conf["stringProcess"]["spiltString"]);
2383
			unset($conf["stringProcess"]["spiltString"]);
2384
			
2384
 
2385
			#如果 $spiltedTimeStr["status"] 等於 "false"
2385
			#如果 $spiltedTimeStr["status"] 等於 "false"
2386
			if($spiltedTimeStr["status"]=="false"){
2386
			if($spiltedTimeStr["status"]=="false"){
2387
				
2387
 
2388
				#設置錯誤識別
2388
				#設置錯誤識別
2389
				$result["status"]="false";
2389
				$result["status"]="false";
2390
				
2390
 
2391
				#設置錯誤訊息
2391
				#設置錯誤訊息
2392
				$result["error"]=$spiltedTimeStr;
2392
				$result["error"]=$spiltedTimeStr;
2393
				
2393
 
2394
				#回傳結果
2394
				#回傳結果
2395
				return $result;
2395
				return $result;
2396
				
2396
 
2397
				}#if end
2397
				}#if end
2398
				
2398
 
2399
			#照理說會分成兩段
2399
			#照理說會分成兩段
2400
			#如果不是分成兩段,勢必有錯誤發生
2400
			#如果不是分成兩段,勢必有錯誤發生
2401
			if($spiltedTimeStr["dataCounts"]!=2){
2401
			if($spiltedTimeStr["dataCounts"]!=2){
2402
				
2402
 
2403
				#設置錯誤識別
2403
				#設置錯誤識別
2404
				$result["status"]="false";
2404
				$result["status"]="false";
2405
				
2405
 
2406
				#設置錯誤訊息
2406
				#設置錯誤訊息
2407
				$result["error"]=$spiltedTimeStr;
2407
				$result["error"]=$spiltedTimeStr;
2408
				
2408
 
2409
				#設置錯誤訊息
2409
				#設置錯誤訊息
2410
				$result["error"][]="時間欄位字串用 \" \" 分割應該會分割出兩段字串才對!";
2410
				$result["error"][]="時間欄位字串用 \" \" 分割應該會分割出兩段字串才對!";
2411
				
2411
 
2412
				#回傳結果
2412
				#回傳結果
2413
				return $result;
2413
				return $result;
2414
				
2414
 
2415
				}#if end
2415
				}#if end
2416
				
2416
 
2417
			#將 $spiltedTimeStr["dataArray"][0] 用「-」分成西元年月日
2417
			#將 $spiltedTimeStr["dataArray"][0] 用「-」分成西元年月日
2418
			#涵式說明:
2418
			#涵式說明:
2419
			#將固定格式的字串分開,並回傳分開的結果。
2419
			#將固定格式的字串分開,並回傳分開的結果。
2420
			#回傳的參數:
2420
			#回傳的參數:
2421
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2421
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 2426... Line 2426...
2426
			#必填參數:
2426
			#必填參數:
2427
			$conf["stringProcess"]["spiltString"]["stringIn"]=$spiltedTimeStr["dataArray"][0];#要處理的字串。
2427
			$conf["stringProcess"]["spiltString"]["stringIn"]=$spiltedTimeStr["dataArray"][0];#要處理的字串。
2428
			$conf["stringProcess"]["spiltString"]["spiltSymbol"]="-";#爲以哪個符號作爲分割
2428
			$conf["stringProcess"]["spiltString"]["spiltSymbol"]="-";#爲以哪個符號作爲分割
2429
			$spiltedTimeStrPart1=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);
2429
			$spiltedTimeStrPart1=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);
2430
			unset($conf["stringProcess"]["spiltString"]);
2430
			unset($conf["stringProcess"]["spiltString"]);
2431
			
2431
 
2432
			#如果 $spiltedTimeStrPart1["status"] 等於 "false"
2432
			#如果 $spiltedTimeStrPart1["status"] 等於 "false"
2433
			if($spiltedTimeStrPart1["status"]=="false"){
2433
			if($spiltedTimeStrPart1["status"]=="false"){
2434
				
2434
 
2435
				#設置錯誤識別
2435
				#設置錯誤識別
2436
				$result["status"]="false";
2436
				$result["status"]="false";
2437
				
2437
 
2438
				#設置錯誤訊息
2438
				#設置錯誤訊息
2439
				$result["error"]=$spiltedTimeStrPart1;
2439
				$result["error"]=$spiltedTimeStrPart1;
2440
				
2440
 
2441
				#回傳結果
2441
				#回傳結果
2442
				return $result;
2442
				return $result;
2443
				
2443
 
2444
				}#if end
2444
				}#if end
2445
			
2445
 
2446
			#照理說會分成三段
2446
			#照理說會分成三段
2447
			#如果不是分成三段,勢必有錯誤發生
2447
			#如果不是分成三段,勢必有錯誤發生
2448
			if($spiltedTimeStrPart1["dataCounts"]!=3){
2448
			if($spiltedTimeStrPart1["dataCounts"]!=3){
2449
				
2449
 
2450
				#設置錯誤識別
2450
				#設置錯誤識別
2451
				$result["status"]="false";
2451
				$result["status"]="false";
2452
				
2452
 
2453
				#設置錯誤訊息
2453
				#設置錯誤訊息
2454
				$result["error"]=$spiltedTimeStrPart1;
2454
				$result["error"]=$spiltedTimeStrPart1;
2455
				
2455
 
2456
				#設置錯誤訊息
2456
				#設置錯誤訊息
2457
				$result["error"][]="年月日時間欄位字串用 \"-\" 分割應該會分割出三段字串才對!";
2457
				$result["error"][]="年月日時間欄位字串用 \"-\" 分割應該會分割出三段字串才對!";
2458
				
2458
 
2459
				#回傳結果
2459
				#回傳結果
2460
				return $result;
2460
				return $result;
2461
				
2461
 
2462
				}#if end
2462
				}#if end
2463
			
2463
 
2464
			#取得年
2464
			#取得年
2465
			$time["year"][]=$spiltedTimeStrPart1["dataArray"][0];
2465
			$time["year"][]=$spiltedTimeStrPart1["dataArray"][0];
2466
			
2466
 
2467
			#取得月
2467
			#取得月
2468
			$time["month"][]=$spiltedTimeStrPart1["dataArray"][1];
2468
			$time["month"][]=$spiltedTimeStrPart1["dataArray"][1];
2469
			
2469
 
2470
			#取得日
2470
			#取得日
2471
			$time["day"][]=$spiltedTimeStrPart1["dataArray"][2];
2471
			$time["day"][]=$spiltedTimeStrPart1["dataArray"][2];
2472
		
2472
 
2473
			#函式說明:
2473
			#函式說明:
2474
			#計算特定年月日為星期幾
2474
			#計算特定年月日為星期幾
2475
			#回傳的結果:
2475
			#回傳的結果:
2476
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2476
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2477
			#$result["error"],錯誤訊息陣列
2477
			#$result["error"],錯誤訊息陣列
Line 2483... Line 2483...
2483
			$conf["time"]["computeWeekNumber"]["month"]=$spiltedTimeStrPart1["dataArray"][1];
2483
			$conf["time"]["computeWeekNumber"]["month"]=$spiltedTimeStrPart1["dataArray"][1];
2484
			#$conf["time"]["computeWeekNumber"]["day"],字串,要求算該日為星期幾的日.
2484
			#$conf["time"]["computeWeekNumber"]["day"],字串,要求算該日為星期幾的日.
2485
			$conf["time"]["computeWeekNumber"]["day"]=$spiltedTimeStrPart1["dataArray"][2];
2485
			$conf["time"]["computeWeekNumber"]["day"]=$spiltedTimeStrPart1["dataArray"][2];
2486
			$getWeekResult=time::computeWeekNumber($conf["time"]["computeWeekNumber"]);
2486
			$getWeekResult=time::computeWeekNumber($conf["time"]["computeWeekNumber"]);
2487
			unset($conf["time"]["computeWeekNumber"]);
2487
			unset($conf["time"]["computeWeekNumber"]);
2488
		
2488
 
2489
			#如果 $getWeekResult["status"] 等於 "false"
2489
			#如果 $getWeekResult["status"] 等於 "false"
2490
			if($getWeekResult["status"]=="false"){
2490
			if($getWeekResult["status"]=="false"){
2491
				
2491
 
2492
				#設置錯誤識別
2492
				#設置錯誤識別
2493
				$result["status"]="false";
2493
				$result["status"]="false";
2494
				
2494
 
2495
				#設置錯誤訊息
2495
				#設置錯誤訊息
2496
				$result["error"]=$getWeekResult;
2496
				$result["error"]=$getWeekResult;
2497
				
2497
 
2498
				#回傳結果
2498
				#回傳結果
2499
				return $result;
2499
				return $result;
2500
				
2500
 
2501
				}#if end
2501
				}#if end
2502
		
2502
 
2503
			#取得星期
2503
			#取得星期
2504
			$time["week"][]=$getWeekResult["content"][0];
2504
			$time["week"][]=$getWeekResult["content"][0];
2505
			
2505
 
2506
			#將 $spiltedTimeStr["dataArray"][1] 用「:」分成時分秒
2506
			#將 $spiltedTimeStr["dataArray"][1] 用「:」分成時分秒
2507
			#涵式說明:
2507
			#涵式說明:
2508
			#將固定格式的字串分開,並回傳分開的結果。
2508
			#將固定格式的字串分開,並回傳分開的結果。
2509
			#回傳的參數:
2509
			#回傳的參數:
2510
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2510
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 2515... Line 2515...
2515
			#必填參數:
2515
			#必填參數:
2516
			$conf["stringProcess"]["spiltString"]["stringIn"]=$spiltedTimeStr["dataArray"][1];#要處理的字串。
2516
			$conf["stringProcess"]["spiltString"]["stringIn"]=$spiltedTimeStr["dataArray"][1];#要處理的字串。
2517
			$conf["stringProcess"]["spiltString"]["spiltSymbol"]=":";#爲以哪個符號作爲分割
2517
			$conf["stringProcess"]["spiltString"]["spiltSymbol"]=":";#爲以哪個符號作爲分割
2518
			$spiltedTimeStrPart2=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);
2518
			$spiltedTimeStrPart2=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);
2519
			unset($conf["stringProcess"]["spiltString"]);
2519
			unset($conf["stringProcess"]["spiltString"]);
2520
			
2520
 
2521
			#如果 $spiltedTimeStrPart2["status"] 等於 "false"
2521
			#如果 $spiltedTimeStrPart2["status"] 等於 "false"
2522
			if($spiltedTimeStrPart2["status"]=="false"){
2522
			if($spiltedTimeStrPart2["status"]=="false"){
2523
				
2523
 
2524
				#設置錯誤識別
2524
				#設置錯誤識別
2525
				$result["status"]="false";
2525
				$result["status"]="false";
2526
				
2526
 
2527
				#設置錯誤訊息
2527
				#設置錯誤訊息
2528
				$result["error"]=$spiltedTimeStrPart2;
2528
				$result["error"]=$spiltedTimeStrPart2;
2529
				
2529
 
2530
				#回傳結果
2530
				#回傳結果
2531
				return $result;
2531
				return $result;
2532
				
2532
 
2533
				}#if end
2533
				}#if end
2534
			
2534
 
2535
			#照理說會分成三段
2535
			#照理說會分成三段
2536
			#如果不是分成三段,勢必有錯誤發生
2536
			#如果不是分成三段,勢必有錯誤發生
2537
			if($spiltedTimeStrPart2["dataCounts"]!=3){
2537
			if($spiltedTimeStrPart2["dataCounts"]!=3){
2538
				
2538
 
2539
				#設置錯誤識別
2539
				#設置錯誤識別
2540
				$result["status"]="false";
2540
				$result["status"]="false";
2541
				
2541
 
2542
				#設置錯誤訊息
2542
				#設置錯誤訊息
2543
				$result["error"]=$spiltedTimeStrPart2;
2543
				$result["error"]=$spiltedTimeStrPart2;
2544
				
2544
 
2545
				#設置錯誤訊息
2545
				#設置錯誤訊息
2546
				$result["error"][]="時分秒時間欄位字串用 \":\" 分割應該會分割出三段字串才對!";
2546
				$result["error"][]="時分秒時間欄位字串用 \":\" 分割應該會分割出三段字串才對!";
2547
				
2547
 
2548
				#回傳結果
2548
				#回傳結果
2549
				return $result;
2549
				return $result;
2550
				
2550
 
2551
				}#if end
2551
				}#if end
2552
				
2552
 
2553
			#取得時
2553
			#取得時
2554
			$time["hour"][]=$spiltedTimeStrPart2["dataArray"][0];
2554
			$time["hour"][]=$spiltedTimeStrPart2["dataArray"][0];
2555
			
2555
 
2556
			#取得分
2556
			#取得分
2557
			$time["min"][]=$spiltedTimeStrPart2["dataArray"][1];
2557
			$time["min"][]=$spiltedTimeStrPart2["dataArray"][1];
2558
			
2558
 
2559
			#取得秒
2559
			#取得秒
2560
			$time["sec"][]=$spiltedTimeStrPart2["dataArray"][2];
2560
			$time["sec"][]=$spiltedTimeStrPart2["dataArray"][2];
2561
			
2561
 
2562
			}#foreach end
2562
			}#foreach end
2563
		
2563
 
2564
		#初始化要寫入到csv檔裡面的2維陣列.
2564
		#初始化要寫入到csv檔裡面的2維陣列.
2565
		$dataArrayToWrite=array(array());
2565
		$dataArrayToWrite=array(array());
2566
		
2566
 
2567
		#轉換要寫入的檔案內容
2567
		#轉換要寫入的檔案內容
2568
		#根據有幾筆資料
2568
		#根據有幾筆資料
2569
		for($i=0;$i<count($time["year"]);$i++){
2569
		for($i=0;$i<count($time["year"]);$i++){
2570
			
2570
 
2571
			#取得每個時間欄位的內容
2571
			#取得每個時間欄位的內容
2572
			$dataArrayToWrite[$i][]=$time["year"][$i];#西元年
2572
			$dataArrayToWrite[$i][]=$time["year"][$i];#西元年
2573
			$dataArrayToWrite[$i][]=$time["month"][$i];#月份
2573
			$dataArrayToWrite[$i][]=$time["month"][$i];#月份
2574
			$dataArrayToWrite[$i][]=$time["day"][$i];#天
2574
			$dataArrayToWrite[$i][]=$time["day"][$i];#天
2575
			$dataArrayToWrite[$i][]=$time["week"][$i];#星期
2575
			$dataArrayToWrite[$i][]=$time["week"][$i];#星期
2576
			$dataArrayToWrite[$i][]=$time["hour"][$i];#小時
2576
			$dataArrayToWrite[$i][]=$time["hour"][$i];#小時
2577
			$dataArrayToWrite[$i][]=$time["min"][$i];#分鐘
2577
			$dataArrayToWrite[$i][]=$time["min"][$i];#分鐘
2578
			$dataArrayToWrite[$i][]=$time["sec"][$i];#秒
2578
			$dataArrayToWrite[$i][]=$time["sec"][$i];#秒
2579
			
2579
 
2580
			}#foreach end
2580
			}#foreach end
2581
		
2581
 
2582
		#依據每筆資料的年月日時分秒依序寫入到不同的欄位裡面.
2582
		#依據每筆資料的年月日時分秒依序寫入到不同的欄位裡面.
2583
		#建立新的csv檔案
2583
		#建立新的csv檔案
2584
		#涵式說明:
2584
		#涵式說明:
2585
		#快速建立一個csv檔案,並且要求使用者下載。
2585
		#快速建立一個csv檔案,並且要求使用者下載。
2586
		#回傳的結果:
2586
		#回傳的結果:
Line 2596... Line 2596...
2596
		$conf["csv"]["create"]["noDownload"]=$conf["noDownload"];#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
2596
		$conf["csv"]["create"]["noDownload"]=$conf["noDownload"];#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
2597
		#參考資料來源:
2597
		#參考資料來源:
2598
		#http://php.net/manual/en/function.str-split.php
2598
		#http://php.net/manual/en/function.str-split.php
2599
		$csvCreateResult=csv::create($conf["csv"]["create"]);
2599
		$csvCreateResult=csv::create($conf["csv"]["create"]);
2600
		unset($conf["csv"]["create"]);
2600
		unset($conf["csv"]["create"]);
2601
			
2601
 
2602
		#var_dump($csvCreateResult);
2602
		#var_dump($csvCreateResult);
2603
			
2603
 
2604
		#如果 $csvCreateResult["status"] 等於 "false"
2604
		#如果 $csvCreateResult["status"] 等於 "false"
2605
		if($csvCreateResult["status"]=="false"){
2605
		if($csvCreateResult["status"]=="false"){
2606
			
2606
 
2607
			#設置錯誤識別
2607
			#設置錯誤識別
2608
			$result["status"]="false";
2608
			$result["status"]="false";
2609
			
2609
 
2610
			#設置錯誤訊息
2610
			#設置錯誤訊息
2611
			$result["error"]=$csvCreateResult;
2611
			$result["error"]=$csvCreateResult;
2612
			
2612
 
2613
			#回傳結果
2613
			#回傳結果
2614
			return $result;
2614
			return $result;
2615
			
2615
 
2616
			}#if end	
2616
			}#if end
2617
			
2617
 
2618
		#記錄產生好的csv檔案位置
2618
		#記錄產生好的csv檔案位置
2619
		$result["csvFilePathAndName"]=$csvCreateResult["content"];
2619
		$result["csvFilePathAndName"]=$csvCreateResult["content"];
2620
			
2620
 
2621
		#執行到這表代表執行正常
2621
		#執行到這表代表執行正常
2622
		$result["status"]="true";	
2622
		$result["status"]="true";
2623
			
2623
 
2624
		#回傳結果
2624
		#回傳結果
2625
		return $result;		
2625
		return $result;
2626
			
2626
 
2627
		}#function spiltTimeColumn end
2627
		}#function spiltTimeColumn end
2628
	
2628
 
2629
	/*
2629
	/*
2630
	#函式說明:
2630
	#函式說明:
2631
	#透過專用的問卷設定檔與問卷樣本檔來將問卷樣本匯入資料表
2631
	#透過專用的問卷設定檔與問卷樣本檔來將問卷樣本匯入資料表
2632
	#問卷樣本檔的
2632
	#問卷樣本檔的
2633
		#第1列各欄位依序為 "sampleNo"(樣本編號),題目(以;區隔的填寫選項,結尾也要;),"year"(調查時間的西元年),"month"(調查時間的月份),"week"(調查時間所屬星期),"day"(調查時間的日),"hour"(調查時間的時),"min"(調查時間的分),"sec"(調查時間的秒). 
2633
		#第1列各欄位依序為 "sampleNo"(樣本編號),題目(以;區隔的填寫選項,結尾也要;),"year"(調查時間的西元年),"month"(調查時間的月份),"week"(調查時間所屬星期),"day"(調查時間的日),"hour"(調查時間的時),"min"(調查時間的分),"sec"(調查時間的秒).
2634
		#第1列第1欄代表樣本編號的標題,不需要從1開始,只要可以識別是跟其他樣本不同即可.
2634
		#第1列第1欄代表樣本編號的標題,不需要從1開始,只要可以識別是跟其他樣本不同即可.
2635
		#第1列第2欄代表樣本第1題的代號
2635
		#第1列第2欄代表樣本第1題的代號
2636
		#第2列第1欄代表第1個樣本的編號
2636
		#第2列第1欄代表第1個樣本的編號
2637
		#第2列第2欄代表第1個樣本的第1題回答內容,
2637
		#第2列第2欄代表第1個樣本的第1題回答內容,
2638
			#填寫的選項之間用分號「;」分隔
2638
			#填寫的選項之間用分號「;」分隔
Line 2649... Line 2649...
2649
	#$conf["questionnaireSamplePath"],字串,要轉換的單一版本問卷樣本.
2649
	#$conf["questionnaireSamplePath"],字串,要轉換的單一版本問卷樣本.
2650
	$conf["questionnaireSamplePath"]="";
2650
	$conf["questionnaireSamplePath"]="";
2651
	#$conf["questionnaireSetupCsvPath"],字串,記錄問卷資訊的csv檔案.
2651
	#$conf["questionnaireSetupCsvPath"],字串,記錄問卷資訊的csv檔案.
2652
	$conf["questionnaireSetupCsvPath"]="";
2652
	$conf["questionnaireSetupCsvPath"]="";
2653
	#$conf["dbAddress"],字串,問卷資料庫的網路位址.
2653
	#$conf["dbAddress"],字串,問卷資料庫的網路位址.
2654
	$conf["dbAddress"]=$dbAddress;		
2654
	$conf["dbAddress"]=$dbAddress;
2655
	#$conf["dbAccount"],字串,要連線到資料庫時所用的帳戶名稱.
2655
	#$conf["dbAccount"],字串,要連線到資料庫時所用的帳戶名稱.
2656
	$conf["dbAccount"]=$dbAccount;
2656
	$conf["dbAccount"]=$dbAccount;
2657
	#$conf["dbName"],字串,問卷相關資料所儲存的資料庫名稱.
2657
	#$conf["dbName"],字串,問卷相關資料所儲存的資料庫名稱.
2658
	$conf["dbName"]=$dbName;	
2658
	$conf["dbName"]=$dbName;
2659
	#可省略參數:
2659
	#可省略參數:
2660
	#$conf["dbPassword"],字串,要連線到資料庫時所用的密碼.
2660
	#$conf["dbPassword"],字串,要連線到資料庫時所用的密碼.
2661
	#$conf["dbPassword"]=$dbPassword;
2661
	#$conf["dbPassword"]=$dbPassword;
2662
	#$conf["questionnaireType.dtName"],字串,問卷資訊儲存在哪個資料表,預設為"questionnaireType".
2662
	#$conf["questionnaireType.dtName"],字串,問卷資訊儲存在哪個資料表,預設為"questionnaireType".
2663
	#$conf["questionnaireType.dtName"]="questionnaireType";
2663
	#$conf["questionnaireType.dtName"]="questionnaireType";
Line 2678... Line 2678...
2678
	#$conf["questionnaireQuest.selectedQuestOptionMaxCountColumnName"],字串,題目選項的選擇上限的資料欄位名稱,預設為"selectedQuestOptionMaxCount".
2678
	#$conf["questionnaireQuest.selectedQuestOptionMaxCountColumnName"],字串,題目選項的選擇上限的資料欄位名稱,預設為"selectedQuestOptionMaxCount".
2679
	#$conf["questionnaireQuest.selectedQuestOptionMaxCountColumnName"]="selectedQuestOptionMaxCount";
2679
	#$conf["questionnaireQuest.selectedQuestOptionMaxCountColumnName"]="selectedQuestOptionMaxCount";
2680
	#$conf["questionnaireQuest.questContentColumnName"],字串,題目內容的資料欄位名稱,預設為"questContent".
2680
	#$conf["questionnaireQuest.questContentColumnName"],字串,題目內容的資料欄位名稱,預設為"questContent".
2681
	#$conf["questionnaireQuest.questContentColumnName"]="questContent";
2681
	#$conf["questionnaireQuest.questContentColumnName"]="questContent";
2682
	#$conf["questionnaireQuest.choiceValueColumnName"],字串,題目選項的資料欄位名稱,預設為"choiceValue".
2682
	#$conf["questionnaireQuest.choiceValueColumnName"],字串,題目選項的資料欄位名稱,預設為"choiceValue".
2683
	#$conf["questionnaireQuest.choiceValueColumnName"]="choiceValue";		
2683
	#$conf["questionnaireQuest.choiceValueColumnName"]="choiceValue";
2684
	#$conf["questionnaireQuest.maxLengthColumnName"],字串,題目回答內容的最大長度限制的資料欄位名稱,預設為"maxLength".
2684
	#$conf["questionnaireQuest.maxLengthColumnName"],字串,題目回答內容的最大長度限制的資料欄位名稱,預設為"maxLength".
2685
	#$conf["questionnaireQuest.maxLengthColumnName"]="maxLength";
2685
	#$conf["questionnaireQuest.maxLengthColumnName"]="maxLength";
2686
	#$conf["questionnaireQuest.nullColumnName"],字串,題目是否可以忽略的資料欄位名稱,預設為"null".
2686
	#$conf["questionnaireQuest.nullColumnName"],字串,題目是否可以忽略的資料欄位名稱,預設為"null".
2687
	#$conf["questionnaireQuest.nullColumnName"]="null";
2687
	#$conf["questionnaireQuest.nullColumnName"]="null";
2688
	#$conf["questionnaireQuest.perspectiveColumnName"],字串,題目所屬構面的資料欄位名稱,預設為"perspective".
2688
	#$conf["questionnaireQuest.perspectiveColumnName"],字串,題目所屬構面的資料欄位名稱,預設為"perspective".
2689
	#$conf["questionnaireQuest.perspectiveColumnName"]="perspective";
2689
	#$conf["questionnaireQuest.perspectiveColumnName"]="perspective";
2690
	#$conf["questionnaireQuest.indicatorColumnName"],字串,題目對應的指標的資料欄位名稱,預設為"indicator".
2690
	#$conf["questionnaireQuest.indicatorColumnName"],字串,題目對應的指標的資料欄位名稱,預設為"indicator".
2691
	#$conf["questionnaireQuest.indicatorColumnName"]="indicator";	
2691
	#$conf["questionnaireQuest.indicatorColumnName"]="indicator";
2692
	#$conf["importedQuestionnaireSample.dtName"],字串,問卷樣本的資料表名稱,預設為"questionnaireSample".
2692
	#$conf["importedQuestionnaireSample.dtName"],字串,問卷樣本的資料表名稱,預設為"questionnaireSample".
2693
	#$conf["importedQuestionnaireSample.dtName"]="questionnaireSample";
2693
	#$conf["importedQuestionnaireSample.dtName"]="questionnaireSample";
2694
	#$conf["importedQuestionnaireSample.questionnaireTypeColumnName"],字串,問卷樣本的問卷編號資料欄位名稱,預設為"typeNo".
2694
	#$conf["importedQuestionnaireSample.questionnaireTypeColumnName"],字串,問卷樣本的問卷編號資料欄位名稱,預設為"typeNo".
2695
	#$conf["importedQuestionnaireSample.questionnaireTypeColumnName"]="typeNo";		
2695
	#$conf["importedQuestionnaireSample.questionnaireTypeColumnName"]="typeNo";
2696
	#$conf["importedQuestionnaireSample.noColumnName"],字串,問卷樣本的編號資料欄位名稱,預設為"guestNo".
2696
	#$conf["importedQuestionnaireSample.noColumnName"],字串,問卷樣本的編號資料欄位名稱,預設為"guestNo".
2697
	#$conf["importedQuestionnaireSample.noColumnName"]="guestNo";
2697
	#$conf["importedQuestionnaireSample.noColumnName"]="guestNo";
2698
	#$conf["importedQuestionnaireSample.questNoColumnName"],字串,問卷樣本的題號資料欄位名稱,預設為"questNo".
2698
	#$conf["importedQuestionnaireSample.questNoColumnName"],字串,問卷樣本的題號資料欄位名稱,預設為"questNo".
2699
	#$conf["importedQuestionnaireSample.questNoColumnName"]="questNo";
2699
	#$conf["importedQuestionnaireSample.questNoColumnName"]="questNo";
2700
	#$conf["importedQuestionnaireSample.answerColumnName"],字串,問卷樣本的答題選項與內容資料欄位名稱,預設為"questAnsSelet".
2700
	#$conf["importedQuestionnaireSample.answerColumnName"],字串,問卷樣本的答題選項與內容資料欄位名稱,預設為"questAnsSelet".
Line 2707... Line 2707...
2707
	#$conf["importedQuestionnaireSample.recordedYearColumnName"]="recordedYear";
2707
	#$conf["importedQuestionnaireSample.recordedYearColumnName"]="recordedYear";
2708
	#$conf["importedQuestionnaireSample.recordedMonthColumnName"],字串,問卷樣本開始記錄的月份欄位名稱.
2708
	#$conf["importedQuestionnaireSample.recordedMonthColumnName"],字串,問卷樣本開始記錄的月份欄位名稱.
2709
	#$conf["importedQuestionnaireSample.recordedMonthColumnName"]="recordedMonth";
2709
	#$conf["importedQuestionnaireSample.recordedMonthColumnName"]="recordedMonth";
2710
	#$conf["importedQuestionnaireSample.recordedDayColumnName"],字串,問卷樣本開始記錄的日欄位名稱.
2710
	#$conf["importedQuestionnaireSample.recordedDayColumnName"],字串,問卷樣本開始記錄的日欄位名稱.
2711
	#$conf["importedQuestionnaireSample.recordedDayColumnName"]="recordedDay";
2711
	#$conf["importedQuestionnaireSample.recordedDayColumnName"]="recordedDay";
2712
	#$conf["importedQuestionnaireSample.recordedWeekColumnName"],字串,問卷樣本開始紀錄的周欄位名稱;		
2712
	#$conf["importedQuestionnaireSample.recordedWeekColumnName"],字串,問卷樣本開始紀錄的周欄位名稱;
2713
	#$conf["importedQuestionnaireSample.recordedWeekColumnName"]="recordedWeek";
2713
	#$conf["importedQuestionnaireSample.recordedWeekColumnName"]="recordedWeek";
2714
	#$conf["importedQuestionnaireSample.recordedHourColumnName"],字串,問卷樣本開始記錄的小時欄位名稱.
2714
	#$conf["importedQuestionnaireSample.recordedHourColumnName"],字串,問卷樣本開始記錄的小時欄位名稱.
2715
	#$conf["importedQuestionnaireSample.recordedHourColumnName"]="recordedHour";	
2715
	#$conf["importedQuestionnaireSample.recordedHourColumnName"]="recordedHour";
2716
	#$conf["importedQuestionnaireSample.recordedMinColumnName"],字串,問卷樣本開始記錄的分鐘欄位名稱.
2716
	#$conf["importedQuestionnaireSample.recordedMinColumnName"],字串,問卷樣本開始記錄的分鐘欄位名稱.
2717
	#$conf["importedQuestionnaireSample.recordedMinColumnName"]="recordedMin";
2717
	#$conf["importedQuestionnaireSample.recordedMinColumnName"]="recordedMin";
2718
	#$conf["importedQuestionnaireSample.recordedSecColumnName"],字串,問卷樣本開始記錄的秒數欄位名稱.
2718
	#$conf["importedQuestionnaireSample.recordedSecColumnName"],字串,問卷樣本開始記錄的秒數欄位名稱.
2719
	#$conf["importedQuestionnaireSample.recordedSecColumnName"]="recordedSec";	
2719
	#$conf["importedQuestionnaireSample.recordedSecColumnName"]="recordedSec";
2720
	#參考資料:
2720
	#參考資料:
2721
	#無.
2721
	#無.
2722
	#備註:
2722
	#備註:
2723
	#需要測試,由於案例特殊,因此最後再測試。第一題的填達內容無法匯入。
2723
	#需要測試,由於案例特殊,因此最後再測試。第一題的填達內容無法匯入。
2724
	*/
2724
	*/
2725
	public static function importQuestionnaireSampleFileWithValidation(&$conf){
2725
	public static function importQuestionnaireSampleFileWithValidation(&$conf){
2726
		
2726
 
2727
		#初始話要回傳的變數
2727
		#初始話要回傳的變數
2728
		$result=array();
2728
		$result=array();
2729
		
2729
 
2730
		#記錄當前執行的函數
2730
		#記錄當前執行的函數
2731
		$result["function"]=__FUNCTION__;
2731
		$result["function"]=__FUNCTION__;
2732
		
2732
 
2733
		#如果 $conf 不為陣列
2733
		#如果 $conf 不為陣列
2734
		if(gettype($conf)!="array"){
2734
		if(gettype($conf)!="array"){
2735
			
2735
 
2736
			#設置執行失敗
2736
			#設置執行失敗
2737
			$result["status"]="false";
2737
			$result["status"]="false";
2738
			
2738
 
2739
			#設置執行錯誤訊息
2739
			#設置執行錯誤訊息
2740
			$result["error"][]="\$conf變數須為陣列形態";
2740
			$result["error"][]="\$conf變數須為陣列形態";
2741
 
2741
 
2742
			#如果傳入的參數為 null
2742
			#如果傳入的參數為 null
2743
			if($conf==null){
2743
			if($conf==null){
2744
				
2744
 
2745
				#設置執行錯誤訊息
2745
				#設置執行錯誤訊息
2746
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2746
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2747
				
2747
 
2748
				}#if end
2748
				}#if end
2749
 
2749
 
2750
			#回傳結果
2750
			#回傳結果
2751
			return $result;
2751
			return $result;
2752
			
2752
 
2753
			}#if end
2753
			}#if end
2754
		
2754
 
2755
		#檢查參數
2755
		#檢查參數
2756
		#涵式說明:
2756
		#涵式說明:
2757
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
2757
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
2758
		#回傳的結果:
2758
		#回傳的結果:
2759
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2759
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 2762... Line 2762...
2762
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2762
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2763
		#必填參數:
2763
		#必填參數:
2764
		$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
2764
		$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
2765
		$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("questionnaireSamplePath","questionnaireSetupCsvPath","dbAddress","dbName","dbAccount");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
2765
		$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("questionnaireSamplePath","questionnaireSetupCsvPath","dbAddress","dbName","dbAccount");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
2766
		#可以省略的參數:
2766
		#可以省略的參數:
2767
		$conf["variableCheck"]["isexistMuti"]["variableType"]=array("string","string","string","string","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double"); 
2767
		$conf["variableCheck"]["isexistMuti"]["variableType"]=array("string","string","string","string","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
2768
		$conf["variableCheck"]["isexistMuti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
2768
		$conf["variableCheck"]["isexistMuti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
2769
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
2769
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
2770
		unset($conf["variableCheck"]["isexistMuti"]);
2770
		unset($conf["variableCheck"]["isexistMuti"]);
2771
		
2771
 
2772
		#如果 $checkResult["status"] 等於 "false"
2772
		#如果 $checkResult["status"] 等於 "false"
2773
		if($checkResult["status"]=="false"){
2773
		if($checkResult["status"]=="false"){
2774
			
2774
 
2775
			#設置錯誤識別
2775
			#設置錯誤識別
2776
			$result["status"]="false";
2776
			$result["status"]="false";
2777
			
2777
 
2778
			#設置錯誤訊息
2778
			#設置錯誤訊息
2779
			$result["error"]=$checkResult;
2779
			$result["error"]=$checkResult;
2780
			
2780
 
2781
			#回傳結果
2781
			#回傳結果
2782
			return $result;
2782
			return $result;
2783
			
2783
 
2784
			}#if end
2784
			}#if end
2785
			
2785
 
2786
		#如果 $checkResult["passed"] 等於 "false"
2786
		#如果 $checkResult["passed"] 等於 "false"
2787
		if($checkResult["passed"]=="false"){
2787
		if($checkResult["passed"]=="false"){
2788
			
2788
 
2789
			#設置錯誤識別
2789
			#設置錯誤識別
2790
			$result["status"]="false";
2790
			$result["status"]="false";
2791
			
2791
 
2792
			#設置錯誤訊息
2792
			#設置錯誤訊息
2793
			$result["error"]=$checkResult;
2793
			$result["error"]=$checkResult;
2794
			
2794
 
2795
			#回傳結果
2795
			#回傳結果
2796
			return $result;
2796
			return $result;
2797
			
2797
 
2798
			}#if end
2798
			}#if end
2799
		
2799
 
2800
		#設定參數預設值
2800
		#設定參數預設值
2801
		#函式說明:
2801
		#函式說明:
2802
		#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。
2802
		#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。
2803
		#回傳結果:
2803
		#回傳結果:
2804
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2804
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 2875... Line 2875...
2875
		#可省略參數:
2875
		#可省略參數:
2876
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存的變數要初始化為什麼,"null"代表不指定.
2876
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存的變數要初始化為什麼,"null"代表不指定.
2877
		#$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"]=array("",);
2877
		#$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"]=array("",);
2878
		$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"][]="questionnaireType";
2878
		$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"][]="questionnaireType";
2879
		$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"][]="typeNo";
2879
		$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"][]="typeNo";
2880
		$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"][]="title";		
2880
		$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"][]="title";
2881
		$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"][]="points";
2881
		$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"][]="points";
2882
		$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"][]="questionnaireQuest";
2882
		$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"][]="questionnaireQuest";
2883
		$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"][]="typeNo";
2883
		$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"][]="typeNo";
2884
		$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"][]="questNo";
2884
		$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"][]="questNo";
2885
		$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"][]="questTypeCode";
2885
		$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"][]="questTypeCode";
Line 2907... Line 2907...
2907
		$checkResult=variableCheck::checkSkipableVarType($conf["variableCheck.checkSkipableVarType"],$argu);
2907
		$checkResult=variableCheck::checkSkipableVarType($conf["variableCheck.checkSkipableVarType"],$argu);
2908
		unset($conf["variableCheck.checkSkipableVarType"]);
2908
		unset($conf["variableCheck.checkSkipableVarType"]);
2909
 
2909
 
2910
		#如果 $checkResult["status"] 等於 "false"
2910
		#如果 $checkResult["status"] 等於 "false"
2911
		if($checkResult["status"]=="false"){
2911
		if($checkResult["status"]=="false"){
2912
			
2912
 
2913
			#設置錯誤識別
2913
			#設置錯誤識別
2914
			$result["status"]="false";
2914
			$result["status"]="false";
2915
			
2915
 
2916
			#設置錯誤訊息
2916
			#設置錯誤訊息
2917
			$result["error"]=$checkResult;
2917
			$result["error"]=$checkResult;
2918
			
2918
 
2919
			#回傳結果
2919
			#回傳結果
2920
			return $result;
2920
			return $result;
2921
			
2921
 
2922
			}#if end
2922
			}#if end
2923
			
2923
 
2924
		#如果 $checkResult["passed"] 等於 "false"
2924
		#如果 $checkResult["passed"] 等於 "false"
2925
		if($checkResult["passed"]=="false"){
2925
		if($checkResult["passed"]=="false"){
2926
			
2926
 
2927
			#設置錯誤識別
2927
			#設置錯誤識別
2928
			$result["status"]="false";
2928
			$result["status"]="false";
2929
			
2929
 
2930
			#設置錯誤訊息
2930
			#設置錯誤訊息
2931
			$result["error"]=$checkResult;
2931
			$result["error"]=$checkResult;
2932
			
2932
 
2933
			#回傳結果
2933
			#回傳結果
2934
			return $result;
2934
			return $result;
2935
			
2935
 
2936
			}#if end
2936
			}#if end
2937
 
2937
 
2938
		#var_dump($conf);
2938
		#var_dump($conf);
2939
 
2939
 
2940
		#讀取問卷樣本csv檔
2940
		#讀取問卷樣本csv檔
Line 2956... Line 2956...
2956
		#http://www.php.net/manual/en/function.str-split.php
2956
		#http://www.php.net/manual/en/function.str-split.php
2957
		#參考資料來源
2957
		#參考資料來源
2958
		#http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
2958
		#http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
2959
		$sampleCsvFile=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
2959
		$sampleCsvFile=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
2960
		unset($conf["csv"]["loadCsvFile"]);
2960
		unset($conf["csv"]["loadCsvFile"]);
2961
			
2961
 
2962
		#如果 $sampleCsvFile["status"] 等於 "false"
2962
		#如果 $sampleCsvFile["status"] 等於 "false"
2963
		if($sampleCsvFile["status"]=="false"){
2963
		if($sampleCsvFile["status"]=="false"){
2964
			
2964
 
2965
			#設置錯誤識別
2965
			#設置錯誤識別
2966
			$result["status"]="false";
2966
			$result["status"]="false";
2967
			
2967
 
2968
			#設置錯誤訊息
2968
			#設置錯誤訊息
2969
			$result["error"]=$sampleCsvFile;
2969
			$result["error"]=$sampleCsvFile;
2970
			
2970
 
2971
			#回傳結果
2971
			#回傳結果
2972
			return $result;
2972
			return $result;
2973
			
2973
 
2974
			}#if end
2974
			}#if end
2975
		
2975
 
2976
		#debug
2976
		#debug
2977
		#var_dump($sampleCsvFile["csvFileContent"][3]);
2977
		#var_dump($sampleCsvFile["csvFileContent"][3]);
2978
		
2978
 
2979
		#讀取問卷設定檔
2979
		#讀取問卷設定檔
2980
		#涵式說明:
2980
		#涵式說明:
2981
		#讀取csv檔案的內容
2981
		#讀取csv檔案的內容
2982
		#回傳得結果:
2982
		#回傳得結果:
2983
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
2983
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
Line 2995... Line 2995...
2995
		#http://www.php.net/manual/en/function.str-split.php
2995
		#http://www.php.net/manual/en/function.str-split.php
2996
		#參考資料來源
2996
		#參考資料來源
2997
		#http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
2997
		#http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
2998
		$setupCsvFile=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
2998
		$setupCsvFile=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
2999
		unset($conf["csv"]["loadCsvFile"]);
2999
		unset($conf["csv"]["loadCsvFile"]);
3000
			
3000
 
3001
		#如果 $setupCsvFile["status"] 等於 "false"
3001
		#如果 $setupCsvFile["status"] 等於 "false"
3002
		if($setupCsvFile["status"]=="false"){
3002
		if($setupCsvFile["status"]=="false"){
3003
			
3003
 
3004
			#設置錯誤識別
3004
			#設置錯誤識別
3005
			$result["status"]="false";
3005
			$result["status"]="false";
3006
			
3006
 
3007
			#設置錯誤訊息
3007
			#設置錯誤訊息
3008
			$result["error"]=$setupCsvFile;
3008
			$result["error"]=$setupCsvFile;
3009
			
3009
 
3010
			#回傳結果
3010
			#回傳結果
3011
			return $result;
3011
			return $result;
3012
			
3012
 
3013
			}#if end
3013
			}#if end
3014
 
3014
 
3015
		#函數說明:
3015
		#函數說明:
3016
		#延長php的執行時間,每呼叫一次會初始化執行時間爲0,然後設定下次可以執行多久.
3016
		#延長php的執行時間,每呼叫一次會初始化執行時間爲0,然後設定下次可以執行多久.
3017
		#回傳結果:
3017
		#回傳結果:
Line 3023... Line 3023...
3023
		$conf["config::delayRunTimeExectionMax"]["sec"]=300;
3023
		$conf["config::delayRunTimeExectionMax"]["sec"]=300;
3024
		#參考資料:
3024
		#參考資料:
3025
		#http://php.net/manual/en/function.set-time-limit.php
3025
		#http://php.net/manual/en/function.set-time-limit.php
3026
		$delayRunTimeExectionMax=config::delayRunTimeExectionMax($conf["config::delayRunTimeExectionMax"]);
3026
		$delayRunTimeExectionMax=config::delayRunTimeExectionMax($conf["config::delayRunTimeExectionMax"]);
3027
		unset($conf["config::delayRunTimeExectionMax"]);
3027
		unset($conf["config::delayRunTimeExectionMax"]);
3028
		
3028
 
3029
		#如果執行失敗
3029
		#如果執行失敗
3030
		if($delayRunTimeExectionMax["status"]==="false"){
3030
		if($delayRunTimeExectionMax["status"]==="false"){
3031
		
3031
 
3032
			#設定類別圖繪製失敗
3032
			#設定類別圖繪製失敗
3033
			$result["status"]="false";			
3033
			$result["status"]="false";
3034
						
3034
 
3035
			#設定該檔案的類別圖繪製失敗提示
3035
			#設定該檔案的類別圖繪製失敗提示
3036
			$result["error"]=$delayRunTimeExectionMax;
3036
			$result["error"]=$delayRunTimeExectionMax;
3037
			
3037
 
3038
			#回傳結果
3038
			#回傳結果
3039
			return $result;
3039
			return $result;
3040
		
3040
 
3041
			}#if end
3041
			}#if end
3042
 
3042
 
3043
		#透過問卷設定檔 $setupCsvFile 來檢查目標問卷是否存在
3043
		#透過問卷設定檔 $setupCsvFile 來檢查目標問卷是否存在
3044
		
3044
 
3045
		#取得問卷標題
3045
		#取得問卷標題
3046
		$questionnaireTitle=$setupCsvFile["csvFileContent"][0][0];			
3046
		$questionnaireTitle=$setupCsvFile["csvFileContent"][0][0];
3047
 
3047
 
3048
		#檢查問卷系統現有的問卷列表是否有跟 $questionnaireTitle 一樣的名稱
3048
		#檢查問卷系統現有的問卷列表是否有跟 $questionnaireTitle 一樣的名稱
3049
		#函式說明:
3049
		#函式說明:
3050
		#檢查資料庫裏的資料表有無指定條件的資料
3050
		#檢查資料庫裏的資料表有無指定條件的資料
3051
		#回傳的結果:
3051
		#回傳的結果:
3052
		#$result["status"],執行是否成功,成功為"true",失敗為"false"。
3052
		#$result["status"],執行是否成功,成功為"true",失敗為"false"。
3053
		#$result["error"],錯誤訊息	
3053
		#$result["error"],錯誤訊息
3054
		#$result["founded"],是否找到資料,"true"代表有符合的資料;"false"代表沒有符合的資料.		
3054
		#$result["founded"],是否找到資料,"true"代表有符合的資料;"false"代表沒有符合的資料.
3055
		#$result["sql"],執行的sql字串.
3055
		#$result["sql"],執行的sql字串.
3056
		#必填參數:
3056
		#必填參數:
3057
		$conf["db"]["checkDataExists"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
3057
		$conf["db"]["checkDataExists"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
3058
		$conf["db"]["checkDataExists"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
3058
		$conf["db"]["checkDataExists"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
3059
		$conf["db"]["checkDataExists"]["selectedDataBaseName"]=$conf["dbName"];#爲指定的資料庫名稱,欲選擇的資料庫名稱
3059
		$conf["db"]["checkDataExists"]["selectedDataBaseName"]=$conf["dbName"];#爲指定的資料庫名稱,欲選擇的資料庫名稱
3060
		$conf["db"]["checkDataExists"]["selectedDataTableName"]=$conf["questionnaireType.dtName"];#欲選擇的資料表名稱
3060
		$conf["db"]["checkDataExists"]["selectedDataTableName"]=$conf["questionnaireType.dtName"];#欲選擇的資料表名稱
3061
		#可省略參數:
3061
		#可省略參數:
3062
	
3062
 
3063
		#如果 $conf["dbPassword"] 有設定
3063
		#如果 $conf["dbPassword"] 有設定
3064
		if(isset($conf["dbPassword"])){
3064
		if(isset($conf["dbPassword"])){
3065
 
3065
 
3066
			$conf["db"]["checkDataExists"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
3066
			$conf["db"]["checkDataExists"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
3067
		
3067
 
3068
			}#if end
3068
			}#if end
3069
 
3069
 
3070
		$conf["db"]["checkDataExists"]["conditionTargetName"]=array($conf["questionnaireType.questionnaireTitleColumnName"]);#用來判斷的資料表數值名稱,需爲陣列,可省略
3070
		$conf["db"]["checkDataExists"]["conditionTargetName"]=array($conf["questionnaireType.questionnaireTitleColumnName"]);#用來判斷的資料表數值名稱,需爲陣列,可省略
3071
		$conf["db"]["checkDataExists"]["conditionTargetValue"]=array($questionnaireTitle);#用來判斷的資料表數值名稱若等於該數值,表示條件成立,需爲陣列,可省略
3071
		$conf["db"]["checkDataExists"]["conditionTargetValue"]=array($questionnaireTitle);#用來判斷的資料表數值名稱若等於該數值,表示條件成立,需爲陣列,可省略
3072
		$checkResult=db::checkDataExists($conf["db"]["checkDataExists"]);
3072
		$checkResult=db::checkDataExists($conf["db"]["checkDataExists"]);
Line 3077... Line 3077...
3077
		#如果 $checkResult["status"] 等於 "false"
3077
		#如果 $checkResult["status"] 等於 "false"
3078
		if($checkResult["status"]=="false"){
3078
		if($checkResult["status"]=="false"){
3079
 
3079
 
3080
			#設置錯誤識別
3080
			#設置錯誤識別
3081
			$result["status"]="false";
3081
			$result["status"]="false";
3082
			
3082
 
3083
			#設置錯誤訊息
3083
			#設置錯誤訊息
3084
			$result["error"]=$checkResult;
3084
			$result["error"]=$checkResult;
3085
			
3085
 
3086
			#回傳結果
3086
			#回傳結果
3087
			return $result;
3087
			return $result;
3088
 
3088
 
3089
			}#if end
3089
			}#if end
3090
 
3090
 
3091
		#如果 $checkResult["founded"] 等於 "false"
3091
		#如果 $checkResult["founded"] 等於 "false"
3092
		if($checkResult["founded"]=="false"){
3092
		if($checkResult["founded"]=="false"){
3093
 
3093
 
3094
			#設置錯誤識別
3094
			#設置錯誤識別
3095
			$result["status"]="false";
3095
			$result["status"]="false";
3096
			
3096
 
3097
			#設置錯誤訊息
3097
			#設置錯誤訊息
3098
			$result["error"][]="要匯入樣本的目標問卷「".$questionnaireTitle."」並不存在";
3098
			$result["error"][]="要匯入樣本的目標問卷「".$questionnaireTitle."」並不存在";
3099
			
3099
 
3100
			#回傳結果
3100
			#回傳結果
3101
			return $result;
3101
			return $result;
3102
 
3102
 
3103
			}#if end
3103
			}#if end
3104
 
3104
 
Line 3149... Line 3149...
3149
		#如果 $getQuestionnaireTypeNoResult["status"] 等於 "false"
3149
		#如果 $getQuestionnaireTypeNoResult["status"] 等於 "false"
3150
		if($getQuestionnaireTypeNoResult["status"]=="false"){
3150
		if($getQuestionnaireTypeNoResult["status"]=="false"){
3151
 
3151
 
3152
			#設置錯誤識別
3152
			#設置錯誤識別
3153
			$result["status"]="false";
3153
			$result["status"]="false";
3154
			
3154
 
3155
			#設置錯誤訊息
3155
			#設置錯誤訊息
3156
			$result["error"]=$getQuestionnaireTypeNoResult;
3156
			$result["error"]=$getQuestionnaireTypeNoResult;
3157
			
3157
 
3158
			#回傳結果
3158
			#回傳結果
3159
			return $result;
3159
			return $result;
3160
 
3160
 
3161
			}#if end
3161
			}#if end
3162
 
3162
 
3163
		#如果 $getQuestionnaireTypeNoResult["dataCount"] 等於 0
3163
		#如果 $getQuestionnaireTypeNoResult["dataCount"] 等於 0
3164
		if($getQuestionnaireTypeNoResult["dataCount"]==0){
3164
		if($getQuestionnaireTypeNoResult["dataCount"]==0){
3165
 
3165
 
3166
			#設置錯誤識別
3166
			#設置錯誤識別
3167
			$result["status"]="false";
3167
			$result["status"]="false";
3168
			
3168
 
3169
			#設置錯誤訊息
3169
			#設置錯誤訊息
3170
			$result["error"][]="找不到目標問卷的編號";
3170
			$result["error"][]="找不到目標問卷的編號";
3171
			
3171
 
3172
			#回傳結果
3172
			#回傳結果
3173
			return $result;
3173
			return $result;
3174
 
3174
 
3175
			}#if end
3175
			}#if end
3176
 
3176
 
3177
		#轉存目標問卷的編號
3177
		#轉存目標問卷的編號
3178
		$questionnaireTypeNo=$getQuestionnaireTypeNoResult["dataContent"][$conf["questionnaireType.typeNoColumnName"]][0];
3178
		$questionnaireTypeNo=$getQuestionnaireTypeNoResult["dataContent"][$conf["questionnaireType.typeNoColumnName"]][0];
3179
		
3179
 
3180
		#將問卷樣本檔 $sampleCsvFile 匯入資料表
3180
		#將問卷樣本檔 $sampleCsvFile 匯入資料表
3181
 
3181
 
3182
		#初始化儲存樣本檔裡面哪幾題可匯入為樣本
3182
		#初始化儲存樣本檔裡面哪幾題可匯入為樣本
3183
		$importableQuestNumArrayInSamples=array();
3183
		$importableQuestNumArrayInSamples=array();
3184
 
3184
 
3185
		#初始化儲存問卷設定檔題目對應的資料庫題號陣列變數
3185
		#初始化儲存問卷設定檔題目對應的資料庫題號陣列變數
3186
		$questNumberArrayInDb=array();
3186
		$questNumberArrayInDb=array();
3187
		
3187
 
3188
		#檢查問卷設定檔與資料庫裡的問卷資訊是否相符
3188
		#檢查問卷設定檔與資料庫裡的問卷資訊是否相符
3189
		#檢查該題的題目對應到資料庫是否存在
3189
		#檢查該題的題目對應到資料庫是否存在
3190
				
3190
 
3191
		#有幾題就執行幾次
3191
		#有幾題就執行幾次
3192
		for($i=4;$i<count($setupCsvFile["csvFileContent"]);$i++){
3192
		for($i=4;$i<count($setupCsvFile["csvFileContent"]);$i++){
3193
 
3193
 
3194
			#檢查該題的題目是否存在於資料庫
3194
			#檢查該題的題目是否存在於資料庫
3195
			#函式說明:
3195
			#函式說明:
3196
			#檢查資料庫裏的資料表有無指定條件的資料
3196
			#檢查資料庫裏的資料表有無指定條件的資料
3197
			#回傳的結果:
3197
			#回傳的結果:
3198
			#$result["status"],執行是否成功,成功為"true",失敗為"false"。
3198
			#$result["status"],執行是否成功,成功為"true",失敗為"false"。
3199
			#$result["error"],錯誤訊息	
3199
			#$result["error"],錯誤訊息
3200
			#$result["founded"],是否找到資料,"true"代表有符合的資料;"false"代表沒有符合的資料.		
3200
			#$result["founded"],是否找到資料,"true"代表有符合的資料;"false"代表沒有符合的資料.
3201
			#$result["sql"],執行的sql字串.
3201
			#$result["sql"],執行的sql字串.
3202
			#必填參數:
3202
			#必填參數:
3203
			$conf["db"]["checkDataExists"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
3203
			$conf["db"]["checkDataExists"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
3204
			$conf["db"]["checkDataExists"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
3204
			$conf["db"]["checkDataExists"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
3205
			$conf["db"]["checkDataExists"]["selectedDataBaseName"]=$conf["dbName"];#爲指定的資料庫名稱,欲選擇的資料庫名稱
3205
			$conf["db"]["checkDataExists"]["selectedDataBaseName"]=$conf["dbName"];#爲指定的資料庫名稱,欲選擇的資料庫名稱
3206
			$conf["db"]["checkDataExists"]["selectedDataTableName"]=$conf["questionnaireQuest.dtName"];#欲選擇的資料表名稱
3206
			$conf["db"]["checkDataExists"]["selectedDataTableName"]=$conf["questionnaireQuest.dtName"];#欲選擇的資料表名稱
3207
			#可省略參數:
3207
			#可省略參數:
3208
	
3208
 
3209
			#如果 $conf["dbPassword"] 有設定
3209
			#如果 $conf["dbPassword"] 有設定
3210
			if(isset($conf["dbPassword"])){
3210
			if(isset($conf["dbPassword"])){
3211
 
3211
 
3212
				$conf["db"]["checkDataExists"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
3212
				$conf["db"]["checkDataExists"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
3213
	
3213
 
3214
				}#if end
3214
				}#if end
3215
 
3215
 
3216
			$conf["db"]["checkDataExists"]["conditionTargetName"]=array($conf["questionnaireQuest.typeNoColumnName"],$conf["questionnaireQuest.questContentColumnName"]);#用來判斷的資料表數值名稱,需爲陣列,可省略
3216
			$conf["db"]["checkDataExists"]["conditionTargetName"]=array($conf["questionnaireQuest.typeNoColumnName"],$conf["questionnaireQuest.questContentColumnName"]);#用來判斷的資料表數值名稱,需爲陣列,可省略
3217
			$conf["db"]["checkDataExists"]["conditionTargetValue"]=array($questionnaireTypeNo,$setupCsvFile["csvFileContent"][$i][0]);#用來判斷的資料表數值名稱若等於該數值,表示條件成立,需爲陣列,可省略
3217
			$conf["db"]["checkDataExists"]["conditionTargetValue"]=array($questionnaireTypeNo,$setupCsvFile["csvFileContent"][$i][0]);#用來判斷的資料表數值名稱若等於該數值,表示條件成立,需爲陣列,可省略
3218
			$checkResult=db::checkDataExists($conf["db"]["checkDataExists"]);
3218
			$checkResult=db::checkDataExists($conf["db"]["checkDataExists"]);
Line 3221... Line 3221...
3221
			#如果 $checkResult["status"] 等於 "false"
3221
			#如果 $checkResult["status"] 等於 "false"
3222
			if($checkResult["status"]=="false"){
3222
			if($checkResult["status"]=="false"){
3223
 
3223
 
3224
				#設置錯誤識別
3224
				#設置錯誤識別
3225
				$result["status"]="false";
3225
				$result["status"]="false";
3226
			
3226
 
3227
				#設置錯誤訊息
3227
				#設置錯誤訊息
3228
				$result["error"]=$checkResult;
3228
				$result["error"]=$checkResult;
3229
		
3229
 
3230
				#回傳結果
3230
				#回傳結果
3231
				return $result;
3231
				return $result;
3232
 
3232
 
3233
				}#if end
3233
				}#if end
3234
 
3234
 
3235
			#如果 $checkResult["founded"] 等於 "false"
3235
			#如果 $checkResult["founded"] 等於 "false"
3236
			if($checkResult["founded"]=="false"){
3236
			if($checkResult["founded"]=="false"){
3237
 
3237
 
3238
				#設置錯誤識別
3238
				#設置錯誤識別
3239
				$result["status"]="false";
3239
				$result["status"]="false";
3240
			
3240
 
3241
				#設置警示訊息
3241
				#設置警示訊息
3242
				$result["warning"][]="樣本對應的問題「".$setupCsvFile["csvFileContent"][$i][0]."」並不存在";
3242
				$result["warning"][]="樣本對應的問題「".$setupCsvFile["csvFileContent"][$i][0]."」並不存在";
3243
 
3243
 
3244
				#跳過該次迴圈
3244
				#跳過該次迴圈
3245
				continue;
3245
				continue;
Line 3293... Line 3293...
3293
			#如果 $getQuestNo["status"] 等於 "false"
3293
			#如果 $getQuestNo["status"] 等於 "false"
3294
			if($getQuestNo["status"]=="false"){
3294
			if($getQuestNo["status"]=="false"){
3295
 
3295
 
3296
				#設置錯誤識別
3296
				#設置錯誤識別
3297
				$result["status"]="false";
3297
				$result["status"]="false";
3298
			
3298
 
3299
				#設置錯誤訊息
3299
				#設置錯誤訊息
3300
				$result["error"]=$getQuestNo;
3300
				$result["error"]=$getQuestNo;
3301
		
3301
 
3302
				#回傳結果
3302
				#回傳結果
3303
				return $result;
3303
				return $result;
3304
 
3304
 
3305
				}#if end
3305
				}#if end
3306
 
3306
 
3307
			#如果 $getQuestNo["dataCount"] 等於 0
3307
			#如果 $getQuestNo["dataCount"] 等於 0
3308
			if($getQuestNo["dataCount"]==0){
3308
			if($getQuestNo["dataCount"]==0){
3309
 
3309
 
3310
				#設置錯誤識別
3310
				#設置錯誤識別
3311
				$result["status"]="false";
3311
				$result["status"]="false";
3312
		
3312
 
3313
				#設置警示訊息
3313
				#設置警示訊息
3314
				$result["warning"][]="該題「".$setupCsvFile["csvFileContent"][$i][0]."」找不到對應的題號";
3314
				$result["warning"][]="該題「".$setupCsvFile["csvFileContent"][$i][0]."」找不到對應的題號";
3315
 
3315
 
3316
				#跳過該次迴圈
3316
				#跳過該次迴圈
3317
				continue;
3317
				continue;
3318
 
3318
 
3319
				}#if end
3319
				}#if end
3320
 
3320
 
3321
			#執行到這代表有找到題號
3321
			#執行到這代表有找到題號
3322
			$thisQuestNo=$getQuestNo["dataContent"][$conf["questionnaireQuest.questNoColumnName"]][0];			
3322
			$thisQuestNo=$getQuestNo["dataContent"][$conf["questionnaireQuest.questNoColumnName"]][0];
3323
 
3323
 
3324
			#根據問卷編號、問題題號去檢查設定檔提供該題的題型是否正確
3324
			#根據問卷編號、問題題號去檢查設定檔提供該題的題型是否正確
3325
			#函式說明:
3325
			#函式說明:
3326
			#檢查資料庫裏的資料表有無指定條件的資料
3326
			#檢查資料庫裏的資料表有無指定條件的資料
3327
			#回傳的結果:
3327
			#回傳的結果:
3328
			#$result["status"],執行是否成功,成功為"true",失敗為"false"。
3328
			#$result["status"],執行是否成功,成功為"true",失敗為"false"。
3329
			#$result["error"],錯誤訊息	
3329
			#$result["error"],錯誤訊息
3330
			#$result["founded"],是否找到資料,"true"代表有符合的資料;"false"代表沒有符合的資料.		
3330
			#$result["founded"],是否找到資料,"true"代表有符合的資料;"false"代表沒有符合的資料.
3331
			#$result["sql"],執行的sql字串.
3331
			#$result["sql"],執行的sql字串.
3332
			#必填參數:
3332
			#必填參數:
3333
			$conf["db"]["checkDataExists"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
3333
			$conf["db"]["checkDataExists"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
3334
			$conf["db"]["checkDataExists"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
3334
			$conf["db"]["checkDataExists"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
3335
			$conf["db"]["checkDataExists"]["selectedDataBaseName"]=$conf["dbName"];#爲指定的資料庫名稱,欲選擇的資料庫名稱
3335
			$conf["db"]["checkDataExists"]["selectedDataBaseName"]=$conf["dbName"];#爲指定的資料庫名稱,欲選擇的資料庫名稱
3336
			$conf["db"]["checkDataExists"]["selectedDataTableName"]=$conf["questionnaireQuest.dtName"];#欲選擇的資料表名稱
3336
			$conf["db"]["checkDataExists"]["selectedDataTableName"]=$conf["questionnaireQuest.dtName"];#欲選擇的資料表名稱
3337
			#可省略參數:
3337
			#可省略參數:
3338
	
3338
 
3339
			#如果 $conf["dbPassword"] 有設定
3339
			#如果 $conf["dbPassword"] 有設定
3340
			if(isset($conf["dbPassword"])){
3340
			if(isset($conf["dbPassword"])){
3341
 
3341
 
3342
				$conf["db"]["checkDataExists"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
3342
				$conf["db"]["checkDataExists"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
3343
		
3343
 
3344
				}#if end
3344
				}#if end
3345
 
3345
 
3346
			$conf["db"]["checkDataExists"]["conditionTargetName"]=array($conf["questionnaireQuest.typeNoColumnName"],$conf["questionnaireQuest.questNoColumnName"],$conf["questionnaireQuest.questTypeCodeColumnName"]);#用來判斷的資料表數值名稱,需爲陣列,可省略
3346
			$conf["db"]["checkDataExists"]["conditionTargetName"]=array($conf["questionnaireQuest.typeNoColumnName"],$conf["questionnaireQuest.questNoColumnName"],$conf["questionnaireQuest.questTypeCodeColumnName"]);#用來判斷的資料表數值名稱,需爲陣列,可省略
3347
			$conf["db"]["checkDataExists"]["conditionTargetValue"]=array($questionnaireTypeNo,$thisQuestNo,$setupCsvFile["csvFileContent"][$i][1]);#用來判斷的資料表數值名稱若等於該數值,表示條件成立,需爲陣列,可省略
3347
			$conf["db"]["checkDataExists"]["conditionTargetValue"]=array($questionnaireTypeNo,$thisQuestNo,$setupCsvFile["csvFileContent"][$i][1]);#用來判斷的資料表數值名稱若等於該數值,表示條件成立,需爲陣列,可省略
3348
			$checkResult=db::checkDataExists($conf["db"]["checkDataExists"]);
3348
			$checkResult=db::checkDataExists($conf["db"]["checkDataExists"]);
Line 3351... Line 3351...
3351
			#如果 $checkResult["status"] 等於 "false"
3351
			#如果 $checkResult["status"] 等於 "false"
3352
			if($checkResult["status"]=="false"){
3352
			if($checkResult["status"]=="false"){
3353
 
3353
 
3354
				#設置錯誤識別
3354
				#設置錯誤識別
3355
				$result["status"]="false";
3355
				$result["status"]="false";
3356
			
3356
 
3357
				#設置錯誤訊息
3357
				#設置錯誤訊息
3358
				$result["error"]=$checkResult;
3358
				$result["error"]=$checkResult;
3359
			
3359
 
3360
				#回傳結果
3360
				#回傳結果
3361
				return $result;
3361
				return $result;
3362
 
3362
 
3363
				}#if end
3363
				}#if end
3364
 
3364
 
3365
			#如果 $checkResult["founded"] 等於 "false"
3365
			#如果 $checkResult["founded"] 等於 "false"
3366
			if($checkResult["founded"]=="false"){
3366
			if($checkResult["founded"]=="false"){
3367
 
3367
 
3368
				#設置錯誤識別
3368
				#設置錯誤識別
3369
				$result["status"]="false";
3369
				$result["status"]="false";
3370
			
3370
 
3371
				#設置警示訊息
3371
				#設置警示訊息
3372
				$result["warning"][]="樣本對應的問題「".$setupCsvFile["csvFileContent"][$i][0]."」,其題型不應該為「".$setupCsvFile["csvFileContent"][$i][1]."」";
3372
				$result["warning"][]="樣本對應的問題「".$setupCsvFile["csvFileContent"][$i][0]."」,其題型不應該為「".$setupCsvFile["csvFileContent"][$i][1]."」";
3373
 
3373
 
3374
				#跳過該次迴圈
3374
				#跳過該次迴圈
3375
				continue;
3375
				continue;
Line 3381... Line 3381...
3381
			#檢查問題對應的填答選項上限是否正確
3381
			#檢查問題對應的填答選項上限是否正確
3382
			#函式說明:
3382
			#函式說明:
3383
			#檢查資料庫裏的資料表有無指定條件的資料
3383
			#檢查資料庫裏的資料表有無指定條件的資料
3384
			#回傳的結果:
3384
			#回傳的結果:
3385
			#$result["status"],執行是否成功,成功為"true",失敗為"false"。
3385
			#$result["status"],執行是否成功,成功為"true",失敗為"false"。
3386
			#$result["error"],錯誤訊息	
3386
			#$result["error"],錯誤訊息
3387
			#$result["founded"],是否找到資料,"true"代表有符合的資料;"false"代表沒有符合的資料.		
3387
			#$result["founded"],是否找到資料,"true"代表有符合的資料;"false"代表沒有符合的資料.
3388
			#$result["sql"],執行的sql字串.
3388
			#$result["sql"],執行的sql字串.
3389
			#必填參數:
3389
			#必填參數:
3390
			$conf["db"]["checkDataExists"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
3390
			$conf["db"]["checkDataExists"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
3391
			$conf["db"]["checkDataExists"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
3391
			$conf["db"]["checkDataExists"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
3392
			$conf["db"]["checkDataExists"]["selectedDataBaseName"]=$conf["dbName"];#爲指定的資料庫名稱,欲選擇的資料庫名稱
3392
			$conf["db"]["checkDataExists"]["selectedDataBaseName"]=$conf["dbName"];#爲指定的資料庫名稱,欲選擇的資料庫名稱
3393
			$conf["db"]["checkDataExists"]["selectedDataTableName"]=$conf["questionnaireQuest.dtName"];#欲選擇的資料表名稱
3393
			$conf["db"]["checkDataExists"]["selectedDataTableName"]=$conf["questionnaireQuest.dtName"];#欲選擇的資料表名稱
3394
			#可省略參數:
3394
			#可省略參數:
3395
	
3395
 
3396
			#如果 $conf["dbPassword"] 有設定
3396
			#如果 $conf["dbPassword"] 有設定
3397
			if(isset($conf["dbPassword"])){
3397
			if(isset($conf["dbPassword"])){
3398
 
3398
 
3399
				$conf["db"]["checkDataExists"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
3399
				$conf["db"]["checkDataExists"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
3400
		
3400
 
3401
				}#if end
3401
				}#if end
3402
 
3402
 
3403
			$conf["db"]["checkDataExists"]["conditionTargetName"]=array($conf["questionnaireQuest.typeNoColumnName"],$conf["questionnaireQuest.questNoColumnName"],$conf["questionnaireQuest.selectedQuestOptionMaxCountColumnName"]);#用來判斷的資料表數值名稱,需爲陣列,可省略
3403
			$conf["db"]["checkDataExists"]["conditionTargetName"]=array($conf["questionnaireQuest.typeNoColumnName"],$conf["questionnaireQuest.questNoColumnName"],$conf["questionnaireQuest.selectedQuestOptionMaxCountColumnName"]);#用來判斷的資料表數值名稱,需爲陣列,可省略
3404
			$conf["db"]["checkDataExists"]["conditionTargetValue"]=array($questionnaireTypeNo,$thisQuestNo,$setupCsvFile["csvFileContent"][$i][2]);#用來判斷的資料表數值名稱若等於該數值,表示條件成立,需爲陣列,可省略
3404
			$conf["db"]["checkDataExists"]["conditionTargetValue"]=array($questionnaireTypeNo,$thisQuestNo,$setupCsvFile["csvFileContent"][$i][2]);#用來判斷的資料表數值名稱若等於該數值,表示條件成立,需爲陣列,可省略
3405
			$checkResult=db::checkDataExists($conf["db"]["checkDataExists"]);
3405
			$checkResult=db::checkDataExists($conf["db"]["checkDataExists"]);
Line 3408... Line 3408...
3408
			#如果 $checkResult["status"] 等於 "false"
3408
			#如果 $checkResult["status"] 等於 "false"
3409
			if($checkResult["status"]=="false"){
3409
			if($checkResult["status"]=="false"){
3410
 
3410
 
3411
				#設置錯誤識別
3411
				#設置錯誤識別
3412
				$result["status"]="false";
3412
				$result["status"]="false";
3413
			
3413
 
3414
				#設置錯誤訊息
3414
				#設置錯誤訊息
3415
				$result["error"]=$checkResult;
3415
				$result["error"]=$checkResult;
3416
			
3416
 
3417
				#回傳結果
3417
				#回傳結果
3418
				return $result;
3418
				return $result;
3419
 
3419
 
3420
				}#if end
3420
				}#if end
3421
 
3421
 
3422
			#如果 $checkResult["founded"] 等於 "false"
3422
			#如果 $checkResult["founded"] 等於 "false"
3423
			if($checkResult["founded"]=="false"){
3423
			if($checkResult["founded"]=="false"){
3424
 
3424
 
3425
				#設置錯誤識別
3425
				#設置錯誤識別
3426
				$result["status"]="false";
3426
				$result["status"]="false";
3427
			
3427
 
3428
				#設置警示訊息
3428
				#設置警示訊息
3429
				$result["warning"][]="樣本對應的問題「".$setupCsvFile["csvFileContent"][$i][0]."」,其填答選項上限不應該為「".$setupCsvFile["csvFileContent"][$i][2]."」";
3429
				$result["warning"][]="樣本對應的問題「".$setupCsvFile["csvFileContent"][$i][0]."」,其填答選項上限不應該為「".$setupCsvFile["csvFileContent"][$i][2]."」";
3430
 
3430
 
3431
				#跳過該次迴圈
3431
				#跳過該次迴圈
3432
				continue;
3432
				continue;
Line 3438... Line 3438...
3438
			#檢查該題的選項內容是否對應正確
3438
			#檢查該題的選項內容是否對應正確
3439
			#函式說明:
3439
			#函式說明:
3440
			#檢查資料庫裏的資料表有無指定條件的資料
3440
			#檢查資料庫裏的資料表有無指定條件的資料
3441
			#回傳的結果:
3441
			#回傳的結果:
3442
			#$result["status"],執行是否成功,成功為"true",失敗為"false"。
3442
			#$result["status"],執行是否成功,成功為"true",失敗為"false"。
3443
			#$result["error"],錯誤訊息	
3443
			#$result["error"],錯誤訊息
3444
			#$result["founded"],是否找到資料,"true"代表有符合的資料;"false"代表沒有符合的資料.		
3444
			#$result["founded"],是否找到資料,"true"代表有符合的資料;"false"代表沒有符合的資料.
3445
			#$result["sql"],執行的sql字串.
3445
			#$result["sql"],執行的sql字串.
3446
			#必填參數:
3446
			#必填參數:
3447
			$conf["db"]["checkDataExists"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
3447
			$conf["db"]["checkDataExists"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
3448
			$conf["db"]["checkDataExists"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
3448
			$conf["db"]["checkDataExists"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
3449
			$conf["db"]["checkDataExists"]["selectedDataBaseName"]=$conf["dbName"];#爲指定的資料庫名稱,欲選擇的資料庫名稱
3449
			$conf["db"]["checkDataExists"]["selectedDataBaseName"]=$conf["dbName"];#爲指定的資料庫名稱,欲選擇的資料庫名稱
3450
			$conf["db"]["checkDataExists"]["selectedDataTableName"]=$conf["questionnaireQuest.dtName"];#欲選擇的資料表名稱
3450
			$conf["db"]["checkDataExists"]["selectedDataTableName"]=$conf["questionnaireQuest.dtName"];#欲選擇的資料表名稱
3451
			#可省略參數:
3451
			#可省略參數:
3452
	
3452
 
3453
			#如果 $conf["dbPassword"] 有設定
3453
			#如果 $conf["dbPassword"] 有設定
3454
			if(isset($conf["dbPassword"])){
3454
			if(isset($conf["dbPassword"])){
3455
 
3455
 
3456
				$conf["db"]["checkDataExists"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
3456
				$conf["db"]["checkDataExists"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
3457
		
3457
 
3458
				}#if end
3458
				}#if end
3459
 
3459
 
3460
			$conf["db"]["checkDataExists"]["conditionTargetName"]=array($conf["questionnaireQuest.typeNoColumnName"],$conf["questionnaireQuest.questNoColumnName"],$conf["questionnaireQuest.choiceValueColumnName"]);#用來判斷的資料表數值名稱,需爲陣列,可省略
3460
			$conf["db"]["checkDataExists"]["conditionTargetName"]=array($conf["questionnaireQuest.typeNoColumnName"],$conf["questionnaireQuest.questNoColumnName"],$conf["questionnaireQuest.choiceValueColumnName"]);#用來判斷的資料表數值名稱,需爲陣列,可省略
3461
			$conf["db"]["checkDataExists"]["conditionTargetValue"]=array($questionnaireTypeNo,$thisQuestNo,$setupCsvFile["csvFileContent"][$i][3]);#用來判斷的資料表數值名稱若等於該數值,表示條件成立,需爲陣列,可省略
3461
			$conf["db"]["checkDataExists"]["conditionTargetValue"]=array($questionnaireTypeNo,$thisQuestNo,$setupCsvFile["csvFileContent"][$i][3]);#用來判斷的資料表數值名稱若等於該數值,表示條件成立,需爲陣列,可省略
3462
			$checkResult=db::checkDataExists($conf["db"]["checkDataExists"]);
3462
			$checkResult=db::checkDataExists($conf["db"]["checkDataExists"]);
Line 3467... Line 3467...
3467
			#如果 $checkResult["status"] 等於 "false"
3467
			#如果 $checkResult["status"] 等於 "false"
3468
			if($checkResult["status"]=="false"){
3468
			if($checkResult["status"]=="false"){
3469
 
3469
 
3470
				#設置錯誤識別
3470
				#設置錯誤識別
3471
				$result["status"]="false";
3471
				$result["status"]="false";
3472
			
3472
 
3473
				#設置錯誤訊息
3473
				#設置錯誤訊息
3474
				$result["error"]=$checkResult;
3474
				$result["error"]=$checkResult;
3475
			
3475
 
3476
				#回傳結果
3476
				#回傳結果
3477
				return $result;
3477
				return $result;
3478
 
3478
 
3479
				}#if end
3479
				}#if end
3480
 
3480
 
3481
			#如果 $checkResult["founded"] 等於 "false"
3481
			#如果 $checkResult["founded"] 等於 "false"
3482
			if($checkResult["founded"]=="false"){
3482
			if($checkResult["founded"]=="false"){
3483
 
3483
 
3484
				#設置錯誤識別
3484
				#設置錯誤識別
3485
				$result["status"]="false";
3485
				$result["status"]="false";
3486
			
3486
 
3487
				#設置警示訊息
3487
				#設置警示訊息
3488
				$result["warning"][]="樣本對應的問題「".$setupCsvFile["csvFileContent"][$i][0]."」,其選項內容不應該為「".$setupCsvFile["csvFileContent"][$i][3]."」,系統已自動修正!";
3488
				$result["warning"][]="樣本對應的問題「".$setupCsvFile["csvFileContent"][$i][0]."」,其選項內容不應該為「".$setupCsvFile["csvFileContent"][$i][3]."」,系統已自動修正!";
3489
 
3489
 
3490
				#各版本問題的題項內容要相同太困難
3490
				#各版本問題的題項內容要相同太困難
3491
				#跳過該次迴圈
3491
				#跳過該次迴圈
Line 3498... Line 3498...
3498
			#檢查該題是否必填的設定是否正確
3498
			#檢查該題是否必填的設定是否正確
3499
			#函式說明:
3499
			#函式說明:
3500
			#檢查資料庫裏的資料表有無指定條件的資料
3500
			#檢查資料庫裏的資料表有無指定條件的資料
3501
			#回傳的結果:
3501
			#回傳的結果:
3502
			#$result["status"],執行是否成功,成功為"true",失敗為"false"。
3502
			#$result["status"],執行是否成功,成功為"true",失敗為"false"。
3503
			#$result["error"],錯誤訊息	
3503
			#$result["error"],錯誤訊息
3504
			#$result["founded"],是否找到資料,"true"代表有符合的資料;"false"代表沒有符合的資料.		
3504
			#$result["founded"],是否找到資料,"true"代表有符合的資料;"false"代表沒有符合的資料.
3505
			#$result["sql"],執行的sql字串.
3505
			#$result["sql"],執行的sql字串.
3506
			#必填參數:
3506
			#必填參數:
3507
			$conf["db"]["checkDataExists"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
3507
			$conf["db"]["checkDataExists"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
3508
			$conf["db"]["checkDataExists"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
3508
			$conf["db"]["checkDataExists"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
3509
			$conf["db"]["checkDataExists"]["selectedDataBaseName"]=$conf["dbName"];#爲指定的資料庫名稱,欲選擇的資料庫名稱
3509
			$conf["db"]["checkDataExists"]["selectedDataBaseName"]=$conf["dbName"];#爲指定的資料庫名稱,欲選擇的資料庫名稱
Line 3512... Line 3512...
3512
 
3512
 
3513
			#如果 $conf["dbPassword"] 有設定
3513
			#如果 $conf["dbPassword"] 有設定
3514
			if(isset($conf["dbPassword"])){
3514
			if(isset($conf["dbPassword"])){
3515
 
3515
 
3516
				$conf["db"]["checkDataExists"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
3516
				$conf["db"]["checkDataExists"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
3517
		
3517
 
3518
				}#if end
3518
				}#if end
3519
 
3519
 
3520
			$conf["db"]["checkDataExists"]["conditionTargetName"]=array($conf["questionnaireQuest.typeNoColumnName"],$conf["questionnaireQuest.questNoColumnName"],$conf["questionnaireQuest.nullColumnName"]);#用來判斷的資料表數值名稱,需爲陣列,可省略
3520
			$conf["db"]["checkDataExists"]["conditionTargetName"]=array($conf["questionnaireQuest.typeNoColumnName"],$conf["questionnaireQuest.questNoColumnName"],$conf["questionnaireQuest.nullColumnName"]);#用來判斷的資料表數值名稱,需爲陣列,可省略
3521
			$conf["db"]["checkDataExists"]["conditionTargetValue"]=array($questionnaireTypeNo,$thisQuestNo,$setupCsvFile["csvFileContent"][$i][4]);#用來判斷的資料表數值名稱若等於該數值,表示條件成立,需爲陣列,可省略
3521
			$conf["db"]["checkDataExists"]["conditionTargetValue"]=array($questionnaireTypeNo,$thisQuestNo,$setupCsvFile["csvFileContent"][$i][4]);#用來判斷的資料表數值名稱若等於該數值,表示條件成立,需爲陣列,可省略
3522
			$checkResult=db::checkDataExists($conf["db"]["checkDataExists"]);
3522
			$checkResult=db::checkDataExists($conf["db"]["checkDataExists"]);
Line 3525... Line 3525...
3525
			#如果 $checkResult["status"] 等於 "false"
3525
			#如果 $checkResult["status"] 等於 "false"
3526
			if($checkResult["status"]=="false"){
3526
			if($checkResult["status"]=="false"){
3527
 
3527
 
3528
				#設置錯誤識別
3528
				#設置錯誤識別
3529
				$result["status"]="false";
3529
				$result["status"]="false";
3530
			
3530
 
3531
				#設置錯誤訊息
3531
				#設置錯誤訊息
3532
				$result["error"]=$checkResult;
3532
				$result["error"]=$checkResult;
3533
			
3533
 
3534
				#回傳結果
3534
				#回傳結果
3535
				return $result;
3535
				return $result;
3536
 
3536
 
3537
				}#if end
3537
				}#if end
3538
 
3538
 
3539
			#如果 $checkResult["founded"] 等於 "false"
3539
			#如果 $checkResult["founded"] 等於 "false"
3540
			if($checkResult["founded"]=="false"){
3540
			if($checkResult["founded"]=="false"){
3541
 
3541
 
3542
				#設置錯誤識別
3542
				#設置錯誤識別
3543
				$result["status"]="false";
3543
				$result["status"]="false";
3544
			
3544
 
3545
				#設置警示訊息
3545
				#設置警示訊息
3546
				$result["warning"][]="樣本對應的問題「".$setupCsvFile["csvFileContent"][$i][0]."」,其是否必填的設定不應該為「".$setupCsvFile["csvFileContent"][$i][4]."」";
3546
				$result["warning"][]="樣本對應的問題「".$setupCsvFile["csvFileContent"][$i][0]."」,其是否必填的設定不應該為「".$setupCsvFile["csvFileContent"][$i][4]."」";
3547
 
3547
 
3548
				#跳過該次迴圈
3548
				#跳過該次迴圈
3549
				continue;
3549
				continue;
Line 3555... Line 3555...
3555
			#檢查題目對應的構面是否相符
3555
			#檢查題目對應的構面是否相符
3556
			#函式說明:
3556
			#函式說明:
3557
			#檢查資料庫裏的資料表有無指定條件的資料
3557
			#檢查資料庫裏的資料表有無指定條件的資料
3558
			#回傳的結果:
3558
			#回傳的結果:
3559
			#$result["status"],執行是否成功,成功為"true",失敗為"false"。
3559
			#$result["status"],執行是否成功,成功為"true",失敗為"false"。
3560
			#$result["error"],錯誤訊息	
3560
			#$result["error"],錯誤訊息
3561
			#$result["founded"],是否找到資料,"true"代表有符合的資料;"false"代表沒有符合的資料.		
3561
			#$result["founded"],是否找到資料,"true"代表有符合的資料;"false"代表沒有符合的資料.
3562
			#$result["sql"],執行的sql字串.
3562
			#$result["sql"],執行的sql字串.
3563
			#必填參數:
3563
			#必填參數:
3564
			$conf["db"]["checkDataExists"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
3564
			$conf["db"]["checkDataExists"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
3565
			$conf["db"]["checkDataExists"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
3565
			$conf["db"]["checkDataExists"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
3566
			$conf["db"]["checkDataExists"]["selectedDataBaseName"]=$conf["dbName"];#爲指定的資料庫名稱,欲選擇的資料庫名稱
3566
			$conf["db"]["checkDataExists"]["selectedDataBaseName"]=$conf["dbName"];#爲指定的資料庫名稱,欲選擇的資料庫名稱
3567
			$conf["db"]["checkDataExists"]["selectedDataTableName"]=$conf["questionnaireQuest.dtName"];#欲選擇的資料表名稱
3567
			$conf["db"]["checkDataExists"]["selectedDataTableName"]=$conf["questionnaireQuest.dtName"];#欲選擇的資料表名稱
3568
			#可省略參數:
3568
			#可省略參數:
3569
	
3569
 
3570
			#如果 $conf["dbPassword"] 有設定
3570
			#如果 $conf["dbPassword"] 有設定
3571
			if(isset($conf["dbPassword"])){
3571
			if(isset($conf["dbPassword"])){
3572
 
3572
 
3573
				$conf["db"]["checkDataExists"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
3573
				$conf["db"]["checkDataExists"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
3574
		
3574
 
3575
				}#if end
3575
				}#if end
3576
 
3576
 
3577
			$conf["db"]["checkDataExists"]["conditionTargetName"]=array($conf["questionnaireQuest.typeNoColumnName"],$conf["questionnaireQuest.questNoColumnName"],$conf["questionnaireQuest.perspectiveColumnName"]);#用來判斷的資料表數值名稱,需爲陣列,可省略
3577
			$conf["db"]["checkDataExists"]["conditionTargetName"]=array($conf["questionnaireQuest.typeNoColumnName"],$conf["questionnaireQuest.questNoColumnName"],$conf["questionnaireQuest.perspectiveColumnName"]);#用來判斷的資料表數值名稱,需爲陣列,可省略
3578
			$conf["db"]["checkDataExists"]["conditionTargetValue"]=array($questionnaireTypeNo,$thisQuestNo,$setupCsvFile["csvFileContent"][$i][5]);#用來判斷的資料表數值名稱若等於該數值,表示條件成立,需爲陣列,可省略
3578
			$conf["db"]["checkDataExists"]["conditionTargetValue"]=array($questionnaireTypeNo,$thisQuestNo,$setupCsvFile["csvFileContent"][$i][5]);#用來判斷的資料表數值名稱若等於該數值,表示條件成立,需爲陣列,可省略
3579
			$checkResult=db::checkDataExists($conf["db"]["checkDataExists"]);
3579
			$checkResult=db::checkDataExists($conf["db"]["checkDataExists"]);
Line 3582... Line 3582...
3582
			#如果 $checkResult["status"] 等於 "false"
3582
			#如果 $checkResult["status"] 等於 "false"
3583
			if($checkResult["status"]=="false"){
3583
			if($checkResult["status"]=="false"){
3584
 
3584
 
3585
				#設置錯誤識別
3585
				#設置錯誤識別
3586
				$result["status"]="false";
3586
				$result["status"]="false";
3587
			
3587
 
3588
				#設置錯誤訊息
3588
				#設置錯誤訊息
3589
				$result["error"]=$checkResult;
3589
				$result["error"]=$checkResult;
3590
			
3590
 
3591
				#回傳結果
3591
				#回傳結果
3592
				return $result;
3592
				return $result;
3593
 
3593
 
3594
				}#if end
3594
				}#if end
3595
 
3595
 
3596
			#如果 $checkResult["founded"] 等於 "false"
3596
			#如果 $checkResult["founded"] 等於 "false"
3597
			if($checkResult["founded"]=="false"){
3597
			if($checkResult["founded"]=="false"){
3598
 
3598
 
3599
				#設置錯誤識別
3599
				#設置錯誤識別
3600
				$result["status"]="false";
3600
				$result["status"]="false";
3601
			
3601
 
3602
				#設置警示訊息
3602
				#設置警示訊息
3603
				$result["warning"][]="樣本對應的問題「".$setupCsvFile["csvFileContent"][$i][0]."」,其歸屬的構面不應該為「".$setupCsvFile["csvFileContent"][$i][5]."」";
3603
				$result["warning"][]="樣本對應的問題「".$setupCsvFile["csvFileContent"][$i][0]."」,其歸屬的構面不應該為「".$setupCsvFile["csvFileContent"][$i][5]."」";
3604
 
3604
 
3605
				#跳過該次迴圈
3605
				#跳過該次迴圈
3606
				continue;
3606
				continue;
Line 3612... Line 3612...
3612
			#檢查題目對應的指標是否相符
3612
			#檢查題目對應的指標是否相符
3613
			#函式說明:
3613
			#函式說明:
3614
			#檢查資料庫裏的資料表有無指定條件的資料
3614
			#檢查資料庫裏的資料表有無指定條件的資料
3615
			#回傳的結果:
3615
			#回傳的結果:
3616
			#$result["status"],執行是否成功,成功為"true",失敗為"false"。
3616
			#$result["status"],執行是否成功,成功為"true",失敗為"false"。
3617
			#$result["error"],錯誤訊息	
3617
			#$result["error"],錯誤訊息
3618
			#$result["founded"],是否找到資料,"true"代表有符合的資料;"false"代表沒有符合的資料.		
3618
			#$result["founded"],是否找到資料,"true"代表有符合的資料;"false"代表沒有符合的資料.
3619
			#$result["sql"],執行的sql字串.
3619
			#$result["sql"],執行的sql字串.
3620
			#必填參數:
3620
			#必填參數:
3621
			$conf["db"]["checkDataExists"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
3621
			$conf["db"]["checkDataExists"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
3622
			$conf["db"]["checkDataExists"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
3622
			$conf["db"]["checkDataExists"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
3623
			$conf["db"]["checkDataExists"]["selectedDataBaseName"]=$conf["dbName"];#爲指定的資料庫名稱,欲選擇的資料庫名稱
3623
			$conf["db"]["checkDataExists"]["selectedDataBaseName"]=$conf["dbName"];#爲指定的資料庫名稱,欲選擇的資料庫名稱
3624
			$conf["db"]["checkDataExists"]["selectedDataTableName"]=$conf["questionnaireQuest.dtName"];#欲選擇的資料表名稱
3624
			$conf["db"]["checkDataExists"]["selectedDataTableName"]=$conf["questionnaireQuest.dtName"];#欲選擇的資料表名稱
3625
			#可省略參數:
3625
			#可省略參數:
3626
	
3626
 
3627
			#如果 $conf["dbPassword"] 有設定
3627
			#如果 $conf["dbPassword"] 有設定
3628
			if(isset($conf["dbPassword"])){
3628
			if(isset($conf["dbPassword"])){
3629
 
3629
 
3630
				$conf["db"]["checkDataExists"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
3630
				$conf["db"]["checkDataExists"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
3631
		
3631
 
3632
				}#if end
3632
				}#if end
3633
 
3633
 
3634
			$conf["db"]["checkDataExists"]["conditionTargetName"]=array($conf["questionnaireQuest.typeNoColumnName"],$conf["questionnaireQuest.questNoColumnName"],$conf["questionnaireQuest.indicatorColumnName"]);#用來判斷的資料表數值名稱,需爲陣列,可省略
3634
			$conf["db"]["checkDataExists"]["conditionTargetName"]=array($conf["questionnaireQuest.typeNoColumnName"],$conf["questionnaireQuest.questNoColumnName"],$conf["questionnaireQuest.indicatorColumnName"]);#用來判斷的資料表數值名稱,需爲陣列,可省略
3635
			$conf["db"]["checkDataExists"]["conditionTargetValue"]=array($questionnaireTypeNo,$thisQuestNo,$setupCsvFile["csvFileContent"][$i][6]);#用來判斷的資料表數值名稱若等於該數值,表示條件成立,需爲陣列,可省略
3635
			$conf["db"]["checkDataExists"]["conditionTargetValue"]=array($questionnaireTypeNo,$thisQuestNo,$setupCsvFile["csvFileContent"][$i][6]);#用來判斷的資料表數值名稱若等於該數值,表示條件成立,需爲陣列,可省略
3636
			$checkResult=db::checkDataExists($conf["db"]["checkDataExists"]);
3636
			$checkResult=db::checkDataExists($conf["db"]["checkDataExists"]);
Line 3639... Line 3639...
3639
			#如果 $checkResult["status"] 等於 "false"
3639
			#如果 $checkResult["status"] 等於 "false"
3640
			if($checkResult["status"]=="false"){
3640
			if($checkResult["status"]=="false"){
3641
 
3641
 
3642
				#設置錯誤識別
3642
				#設置錯誤識別
3643
				$result["status"]="false";
3643
				$result["status"]="false";
3644
			
3644
 
3645
				#設置錯誤訊息
3645
				#設置錯誤訊息
3646
				$result["error"]=$checkResult;
3646
				$result["error"]=$checkResult;
3647
			
3647
 
3648
				#回傳結果
3648
				#回傳結果
3649
				return $result;
3649
				return $result;
3650
 
3650
 
3651
				}#if end
3651
				}#if end
3652
 
3652
 
3653
			#如果 $checkResult["founded"] 等於 "false"
3653
			#如果 $checkResult["founded"] 等於 "false"
3654
			if($checkResult["founded"]=="false"){
3654
			if($checkResult["founded"]=="false"){
3655
 
3655
 
3656
				#設置錯誤識別
3656
				#設置錯誤識別
3657
				$result["status"]="false";
3657
				$result["status"]="false";
3658
										
3658
 
3659
				#設置警示訊息
3659
				#設置警示訊息
3660
				$result["warning"][]="樣本對應的問題「".$setupCsvFile["csvFileContent"][$i][0]."」,其對應的指標不應該為「".$setupCsvFile["csvFileContent"][$i][6]."」";
3660
				$result["warning"][]="樣本對應的問題「".$setupCsvFile["csvFileContent"][$i][0]."」,其對應的指標不應該為「".$setupCsvFile["csvFileContent"][$i][6]."」";
3661
 
3661
 
3662
				#跳過該次迴圈
3662
				#跳過該次迴圈
3663
				continue;
3663
				continue;
Line 3673... Line 3673...
3673
			#儲存可以匯入到樣本資料庫的題號(從0開始)
3673
			#儲存可以匯入到樣本資料庫的題號(從0開始)
3674
			$importableQuestNumArrayInSamples[]=$i-4;
3674
			$importableQuestNumArrayInSamples[]=$i-4;
3675
 
3675
 
3676
			#初始$j為7
3676
			#初始$j為7
3677
			$j=7;
3677
			$j=7;
3678
			
3678
 
3679
			#檢查題目預測的KRI題項是否相符
3679
			#檢查題目預測的KRI題項是否相符
3680
			#無窮迴圈
3680
			#無窮迴圈
3681
			while(true){
3681
			while(true){
3682
				
3682
 
3683
				#如果 $setupCsvFile["csvFileContent"][$i][$j] 有設定
3683
				#如果 $setupCsvFile["csvFileContent"][$i][$j] 有設定
3684
				if(isset($setupCsvFile["csvFileContent"][$i][$j])){
3684
				if(isset($setupCsvFile["csvFileContent"][$i][$j])){
3685
					
3685
 
3686
					#如果 $setupCsvFile["csvFileContent"][$i][$j] 不為空
3686
					#如果 $setupCsvFile["csvFileContent"][$i][$j] 不為空
3687
					if($setupCsvFile["csvFileContent"][$i][$j]!=""){
3687
					if($setupCsvFile["csvFileContent"][$i][$j]!=""){
3688
						
3688
 
3689
						#尋找該題的題號
3689
						#尋找該題的題號
3690
						#涵式說明:
3690
						#涵式說明:
3691
						#一次取得資料庫、表的資料
3691
						#一次取得資料庫、表的資料
3692
						#回傳的結果
3692
						#回傳的結果
3693
						#$result["status"],執行結果"true"為成功;"false"為執行失敗。
3693
						#$result["status"],執行結果"true"為成功;"false"為執行失敗。
Line 3718... Line 3718...
3718
						#$conf["db"]["fastGetDbData"]["numberStart"]="0";#為從第幾筆開始讀取,預設為0,代筆第一筆。
3718
						#$conf["db"]["fastGetDbData"]["numberStart"]="0";#為從第幾筆開始讀取,預設為0,代筆第一筆。
3719
						#$conf["db"]["fastGetDbData"]["numLimit"]="30";#為要取幾筆資料,可以省略,省略則表示不限制數目。
3719
						#$conf["db"]["fastGetDbData"]["numLimit"]="30";#為要取幾筆資料,可以省略,省略則表示不限制數目。
3720
						#$conf["db"]["fastGetDbData"]["groupBy"]=array("");#爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。
3720
						#$conf["db"]["fastGetDbData"]["groupBy"]=array("");#爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。
3721
						$getQuestNoResult=db::fastGetDbData($conf["db"]["fastGetDbData"]);
3721
						$getQuestNoResult=db::fastGetDbData($conf["db"]["fastGetDbData"]);
3722
						unset($conf["db"]["fastGetDbData"]);
3722
						unset($conf["db"]["fastGetDbData"]);
3723
						
3723
 
3724
						#如果 $getQuestNoResult["status"] 等於 "false"
3724
						#如果 $getQuestNoResult["status"] 等於 "false"
3725
						if($getQuestNoResult["status"]=="false"){
3725
						if($getQuestNoResult["status"]=="false"){
3726
							
3726
 
3727
							#設置執行錯誤
3727
							#設置執行錯誤
3728
							$result["status"]="false";
3728
							$result["status"]="false";
3729
							
3729
 
3730
							#取得是在哪個函式發現錯誤的
3730
							#取得是在哪個函式發現錯誤的
3731
							$result["functionName"]=__FUNCTION__;
3731
							$result["functionName"]=__FUNCTION__;
3732
							
3732
 
3733
							#設置錯誤訊息
3733
							#設置錯誤訊息
3734
							$result["error"]=$getQuestNoResult;
3734
							$result["error"]=$getQuestNoResult;
3735
							
3735
 
3736
							#回傳結果
3736
							#回傳結果
3737
							return $result;
3737
							return $result;
3738
							
3738
 
3739
							}#if end
3739
							}#if end
3740
						
3740
 
3741
						#往後尋找
3741
						#往後尋找
3742
						$j++;
3742
						$j++;
3743
						
3743
 
3744
						#如果 $getQuestNoResult["dataCount"] 為 0
3744
						#如果 $getQuestNoResult["dataCount"] 為 0
3745
						if($getQuestNoResult["dataCount"]==0){
3745
						if($getQuestNoResult["dataCount"]==0){
3746
							
3746
 
3747
							#設置警告訊息
3747
							#設置警告訊息
3748
							$result["warning"][]="找不名為".$csvFileContent["csvFileContent"][i][0]."的題項";
3748
							$result["warning"][]="找不名為".$csvFileContent["csvFileContent"][i][0]."的題項";
3749
							
3749
 
3750
							#代表沒有該題目
3750
							#代表沒有該題目
3751
							#跳出while
3751
							#跳出while
3752
							break;
3752
							break;
3753
							
3753
 
3754
							}#if end
3754
							}#if end
3755
						
3755
 
3756
						}#if end
3756
						}#if end
3757
						
3757
 
3758
					#反之代表沒有預測指標的資料
3758
					#反之代表沒有預測指標的資料
3759
					else{
3759
					else{
3760
							
3760
 
3761
						#跳出while
3761
						#跳出while
3762
						break;
3762
						break;
3763
							
3763
 
3764
						}#else end
3764
						}#else end
3765
					
3765
 
3766
					}#if end
3766
					}#if end
3767
					
3767
 
3768
				#反之代表沒有預測指標的資料
3768
				#反之代表沒有預測指標的資料
3769
				else{
3769
				else{
3770
					
3770
 
3771
					#跳出while
3771
					#跳出while
3772
					break;
3772
					break;
3773
						
3773
 
3774
					}#else end
3774
					}#else end
3775
				
3775
 
3776
				}#while end
3776
				}#while end
3777
 
3777
 
3778
			}#for end	
3778
			}#for end
3779
 
3779
 
3780
		#取得題目對應的題號,儲存的key為從0開始的整數,題目內容也是key.
3780
		#取得題目對應的題號,儲存的key為從0開始的整數,題目內容也是key.
3781
		#var_dump(count($questNumberArrayInDb));
3781
		#var_dump(count($questNumberArrayInDb));
3782
		
3782
 
3783
		#儲存可以匯入到樣本資料庫的樣本檔題號
3783
		#儲存可以匯入到樣本資料庫的樣本檔題號
3784
		#var_dump(count($importableQuestNumArrayInSamples));
3784
		#var_dump(count($importableQuestNumArrayInSamples));
3785
 
3785
 
3786
		#函數說明:
3786
		#函數說明:
3787
		#延長php的執行時間,每呼叫一次會初始化執行時間爲0,然後設定下次可以執行多久.
3787
		#延長php的執行時間,每呼叫一次會初始化執行時間爲0,然後設定下次可以執行多久.
Line 3794... Line 3794...
3794
		$conf["config::delayRunTimeExectionMax"]["sec"]=300;
3794
		$conf["config::delayRunTimeExectionMax"]["sec"]=300;
3795
		#參考資料:
3795
		#參考資料:
3796
		#http://php.net/manual/en/function.set-time-limit.php
3796
		#http://php.net/manual/en/function.set-time-limit.php
3797
		$delayRunTimeExectionMax=config::delayRunTimeExectionMax($conf["config::delayRunTimeExectionMax"]);
3797
		$delayRunTimeExectionMax=config::delayRunTimeExectionMax($conf["config::delayRunTimeExectionMax"]);
3798
		unset($conf["config::delayRunTimeExectionMax"]);
3798
		unset($conf["config::delayRunTimeExectionMax"]);
3799
		
3799
 
3800
		#如果執行失敗
3800
		#如果執行失敗
3801
		if($delayRunTimeExectionMax["status"]==="false"){
3801
		if($delayRunTimeExectionMax["status"]==="false"){
3802
		
3802
 
3803
			#設定類別圖繪製失敗
3803
			#設定類別圖繪製失敗
3804
			$result["status"]="false";			
3804
			$result["status"]="false";
3805
						
3805
 
3806
			#設定該檔案的類別圖繪製失敗提示
3806
			#設定該檔案的類別圖繪製失敗提示
3807
			$result["error"]=$delayRunTimeExectionMax;
3807
			$result["error"]=$delayRunTimeExectionMax;
3808
			
3808
 
3809
			#回傳結果
3809
			#回傳結果
3810
			return $result;
3810
			return $result;
3811
		
3811
 
3812
			}#if end
3812
			}#if end
3813
 
3813
 
3814
		#依據每筆樣本(剔除標題攔)
3814
		#依據每筆樣本(剔除標題攔)
3815
		for($i=1;$i<$sampleCsvFile["lineArrayCount"];$i++){
3815
		for($i=1;$i<$sampleCsvFile["lineArrayCount"];$i++){
3816
		
3816
 
3817
			#初始化該樣本尚未插入調查的時間點
3817
			#初始化該樣本尚未插入調查的時間點
3818
			#"false"代表該樣本尚未插入調查的時間點
3818
			#"false"代表該樣本尚未插入調查的時間點
3819
			$insertedStartSurveyPointStatus="false";
3819
			$insertedStartSurveyPointStatus="false";
3820
		
3820
 
3821
			#依據每一題(該行的每一欄)
3821
			#依據每一題(該行的每一欄)
3822
			#-7是因為有年月日周時分秒的欄位
3822
			#-7是因為有年月日周時分秒的欄位
3823
			for($j=1;$j<count($sampleCsvFile["csvFileContent"][$i])-7;$j++){
3823
			for($j=1;$j<count($sampleCsvFile["csvFileContent"][$i])-7;$j++){
3824
 
3824
 
3825
				#題目對應的題號,儲存的key為從0開始的整數,題目內容也是key.
3825
				#題目對應的題號,儲存的key為從0開始的整數,題目內容也是key.
3826
				#$questNumberArrayInDb
3826
				#$questNumberArrayInDb
3827
				
3827
 
3828
				#問卷設定檔題目對應的資料庫題號陣列變數
3828
				#問卷設定檔題目對應的資料庫題號陣列變數
3829
				#$importableQuestNumArrayInSamples
3829
				#$importableQuestNumArrayInSamples
3830
 
3830
 
3831
				#檢查該題是否為可以匯入的題項
3831
				#檢查該題是否為可以匯入的題項
3832
				#涵式說明:
3832
				#涵式說明:
Line 3845... Line 3845...
3845
 
3845
 
3846
				#var_dump($searchResult);
3846
				#var_dump($searchResult);
3847
 
3847
 
3848
				#如果搜尋出錯
3848
				#如果搜尋出錯
3849
				if($searchResult["status"]=="false"){
3849
				if($searchResult["status"]=="false"){
3850
					
3850
 
3851
					#設置錯誤識別
3851
					#設置錯誤識別
3852
					$result["status"]="false";
3852
					$result["status"]="false";
3853
				
3853
 
3854
					#設置錯誤訊息
3854
					#設置錯誤訊息
3855
					$result["error"]=$searchResult;
3855
					$result["error"]=$searchResult;
3856
				
3856
 
3857
					#回傳結果
3857
					#回傳結果
3858
					return $result;
3858
					return $result;
3859
 
3859
 
3860
					}#if end
3860
					}#if end
3861
					
3861
 
3862
				#初始化儲存該題對應在資料庫裡面的題號
3862
				#初始化儲存該題對應在資料庫裡面的題號
3863
				$questNoInDb="";
3863
				$questNoInDb="";
3864
					
3864
 
3865
				#如果沒有找到對應的題項
3865
				#如果沒有找到對應的題項
3866
				if($searchResult["founded"]=="false"){
3866
				if($searchResult["founded"]=="false"){
3867
					
3867
 
3868
					#跳過該題
3868
					#跳過該題
3869
					continue;
3869
					continue;
3870
					
3870
 
3871
					}#if end
3871
					}#if end
3872
										
3872
 
3873
				#反之代表有找到對應的題項
3873
				#反之代表有找到對應的題項
3874
				else{
3874
				else{
3875
					
3875
 
3876
					#取得該題在資料庫裡面的題號為何
3876
					#取得該題在資料庫裡面的題號為何
3877
					$questNoInDb=$questNumberArrayInDb[$searchResult["equalVarValue"]];
3877
					$questNoInDb=$questNumberArrayInDb[$searchResult["equalVarValue"]];
3878
					
3878
 
3879
					}#else end
3879
					}#else end
3880
 
3880
 
3881
				#寫入該題填寫的內容
3881
				#寫入該題填寫的內容
3882
				#涵式說明:
3882
				#涵式說明:
3883
				#插入資料到指定的資料表裡面,插入資料完畢可以選擇是否要進行轉址。
3883
				#插入資料到指定的資料表裡面,插入資料完畢可以選擇是否要進行轉址。
3884
				#回傳的數值:	
3884
				#回傳的數值:
3885
				#$result["status"],爲查詢是否成功,若爲0則成功,若爲1則表示失敗了.
3885
				#$result["status"],爲查詢是否成功,若爲0則成功,若爲1則表示失敗了.
3886
				#$result["error"],錯誤訊息.
3886
				#$result["error"],錯誤訊息.
3887
				#$result["sql"],執行的sql語法.
3887
				#$result["sql"],執行的sql語法.
3888
				#必填參數:
3888
				#必填參數:
3889
				$conf["db"]["insertData"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
3889
				$conf["db"]["insertData"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
3890
				$conf["db"]["insertData"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
3890
				$conf["db"]["insertData"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
3891
				$conf["db"]["insertData"]["selectedDataBaseName"]=$conf["dbName"];#要選取的資料庫名稱	
3891
				$conf["db"]["insertData"]["selectedDataBaseName"]=$conf["dbName"];#要選取的資料庫名稱
3892
				$conf["db"]["insertData"]["tableName"]=$conf["importedQuestionnaireSample.dtName"];#爲要插入資料的資料表名稱
3892
				$conf["db"]["insertData"]["tableName"]=$conf["importedQuestionnaireSample.dtName"];#爲要插入資料的資料表名稱
3893
				$conf["db"]["insertData"]["columnName"]=array($conf["questionnaireType.typeNoColumnName"],$conf["importedQuestionnaireSample.noColumnName"],$conf["importedQuestionnaireSample.questNoColumnName"],$conf["importedQuestionnaireSample.answerColumnName"],$conf["importedQuestionnaireSample.filledColumnName"]);#爲資料表的項目名稱,
3893
				$conf["db"]["insertData"]["columnName"]=array($conf["questionnaireType.typeNoColumnName"],$conf["importedQuestionnaireSample.noColumnName"],$conf["importedQuestionnaireSample.questNoColumnName"],$conf["importedQuestionnaireSample.answerColumnName"],$conf["importedQuestionnaireSample.filledColumnName"]);#爲資料表的項目名稱,
3894
					#例如:$conf["columnName"]=array("columnName1","columnName2","columnName3",...);
3894
					#例如:$conf["columnName"]=array("columnName1","columnName2","columnName3",...);
3895
 
3895
 
3896
				#初始化記錄該題是否有填寫的變數
3896
				#初始化記錄該題是否有填寫的變數
Line 3901... Line 3901...
3901
 
3901
 
3902
					#則代表該題未填寫
3902
					#則代表該題未填寫
3903
					$filled="false";
3903
					$filled="false";
3904
 
3904
 
3905
					}#if end
3905
					}#if end
3906
					
3906
 
3907
				#不滿足以上條件,但如果填答內容為""
3907
				#不滿足以上條件,但如果填答內容為""
3908
				else if($sampleCsvFile["csvFileContent"][$i][$j]==""){
3908
				else if($sampleCsvFile["csvFileContent"][$i][$j]==""){
3909
 
3909
 
3910
					#則代表該題未填寫
3910
					#則代表該題未填寫
3911
					$filled="false";
3911
					$filled="false";
Line 3922... Line 3922...
3922
				#取得題號
3922
				#取得題號
3923
				$thisQuestNo=$j;
3923
				$thisQuestNo=$j;
3924
 
3924
 
3925
				#取得填寫的內容字串
3925
				#取得填寫的內容字串
3926
				$filledContent=$sampleCsvFile["csvFileContent"][$i][$thisQuestNo];
3926
				$filledContent=$sampleCsvFile["csvFileContent"][$i][$thisQuestNo];
3927
			
3927
 
3928
				$conf["db"]["insertData"]["insertValue"]=array($questionnaireTypeNo,$sampleCsvFile["csvFileContent"][$i][0],$questNoInDb,$filledContent,$filled);#爲要插入的數值
3928
				$conf["db"]["insertData"]["insertValue"]=array($questionnaireTypeNo,$sampleCsvFile["csvFileContent"][$i][0],$questNoInDb,$filledContent,$filled);#爲要插入的數值
3929
					#例如:$conf["insertValue"]=array("insertValue1","insertValue2","insertValue3",...);
3929
					#例如:$conf["insertValue"]=array("insertValue1","insertValue2","insertValue3",...);
3930
				#可以省略的變數:
3930
				#可以省略的變數:
3931
 
3931
 
3932
				#如果 $conf["dbPassword"] 有設置
3932
				#如果 $conf["dbPassword"] 有設置
Line 3934... Line 3934...
3934
 
3934
 
3935
					#則用密碼來連線
3935
					#則用密碼來連線
3936
					$conf["db"]["insertData"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
3936
					$conf["db"]["insertData"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
3937
 
3937
 
3938
					}#if end
3938
					}#if end
3939
				
3939
 
3940
				$fillQuestResult=db::insertData($conf["db"]["insertData"]);
3940
				$fillQuestResult=db::insertData($conf["db"]["insertData"]);
3941
				unset($conf["db"]["insertData"]);
3941
				unset($conf["db"]["insertData"]);
3942
				
3942
 
3943
				#debug
3943
				#debug
3944
				#var_dump($fillQuestResult);
3944
				#var_dump($fillQuestResult);
3945
 
3945
 
3946
				#移除題號內容,避免寫入重複的題號.
3946
				#移除題號內容,避免寫入重複的題號.
3947
				unset($thisQuestNo);
3947
				unset($thisQuestNo);
Line 3949... Line 3949...
3949
				#如果 $fillQuestResult["status"] 等於 "false"
3949
				#如果 $fillQuestResult["status"] 等於 "false"
3950
				if($fillQuestResult["status"]=="false"){
3950
				if($fillQuestResult["status"]=="false"){
3951
 
3951
 
3952
					#設置錯誤識別
3952
					#設置錯誤識別
3953
					$result["status"]="false";
3953
					$result["status"]="false";
3954
			
3954
 
3955
					#設置錯誤訊息
3955
					#設置錯誤訊息
3956
					$result["error"]=$fillQuestResult;
3956
					$result["error"]=$fillQuestResult;
3957
			
3957
 
3958
					#回傳結果
3958
					#回傳結果
3959
					return $result;
3959
					return $result;
3960
 
3960
 
3961
					}#if end
3961
					}#if end
3962
				
3962
 
3963
				#檢查有無插入過該筆樣本的調查時間點
3963
				#檢查有無插入過該筆樣本的調查時間點
3964
				#"false"代表該樣本尚未插入調查的時間點
3964
				#"false"代表該樣本尚未插入調查的時間點
3965
				if($insertedStartSurveyPointStatus=="false"){
3965
				if($insertedStartSurveyPointStatus=="false"){
3966
					
3966
 
3967
					#插入接受調查的時間
3967
					#插入接受調查的時間
3968
				
3968
 
3969
					#涵式說明:
3969
					#涵式說明:
3970
					#插入資料到指定的資料表裡面,插入資料完畢可以選擇是否要進行轉址。
3970
					#插入資料到指定的資料表裡面,插入資料完畢可以選擇是否要進行轉址。
3971
					#回傳的數值:	
3971
					#回傳的數值:
3972
					#$result["status"],爲查詢是否成功,若爲"true"則成功,若爲"false"則表示失敗了.
3972
					#$result["status"],爲查詢是否成功,若爲"true"則成功,若爲"false"則表示失敗了.
3973
					#$result["error"],錯誤訊息.
3973
					#$result["error"],錯誤訊息.
3974
					#$result["sql"],執行的sql語法.
3974
					#$result["sql"],執行的sql語法.
3975
					#必填參數:
3975
					#必填參數:
3976
					$conf["db.insertData"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
3976
					$conf["db.insertData"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
3977
					$conf["db.insertData"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
3977
					$conf["db.insertData"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
3978
					$conf["db.insertData"]["selectedDataBaseName"]=$conf["dbName"];#要選取的資料庫名稱	
3978
					$conf["db.insertData"]["selectedDataBaseName"]=$conf["dbName"];#要選取的資料庫名稱
3979
					$conf["db.insertData"]["tableName"]=$conf["importedQuestionnaireSample.startSurveyPointDtName"];#爲要插入資料的資料表名稱
3979
					$conf["db.insertData"]["tableName"]=$conf["importedQuestionnaireSample.startSurveyPointDtName"];#爲要插入資料的資料表名稱
3980
					
3980
 
3981
					#爲資料表的項目名稱,
3981
					#爲資料表的項目名稱,
3982
					#例如:$conf["columnName"]=array("columnName1","columnName2","columnName3",...);
3982
					#例如:$conf["columnName"]=array("columnName1","columnName2","columnName3",...);
3983
					$conf["db.insertData"]["columnName"][]=$conf["questionnaireType.typeNoColumnName"];
3983
					$conf["db.insertData"]["columnName"][]=$conf["questionnaireType.typeNoColumnName"];
3984
					$conf["db.insertData"]["columnName"][]=$conf["importedQuestionnaireSample.noColumnName"];
3984
					$conf["db.insertData"]["columnName"][]=$conf["importedQuestionnaireSample.noColumnName"];
3985
					$conf["db.insertData"]["columnName"][]=$conf["importedQuestionnaireSample.recordedYearColumnName"];
3985
					$conf["db.insertData"]["columnName"][]=$conf["importedQuestionnaireSample.recordedYearColumnName"];
Line 3987... Line 3987...
3987
					$conf["db.insertData"]["columnName"][]=$conf["importedQuestionnaireSample.recordedDayColumnName"];
3987
					$conf["db.insertData"]["columnName"][]=$conf["importedQuestionnaireSample.recordedDayColumnName"];
3988
					$conf["db.insertData"]["columnName"][]=$conf["importedQuestionnaireSample.recordedWeekColumnName"];
3988
					$conf["db.insertData"]["columnName"][]=$conf["importedQuestionnaireSample.recordedWeekColumnName"];
3989
					$conf["db.insertData"]["columnName"][]=$conf["importedQuestionnaireSample.recordedHourColumnName"];
3989
					$conf["db.insertData"]["columnName"][]=$conf["importedQuestionnaireSample.recordedHourColumnName"];
3990
					$conf["db.insertData"]["columnName"][]=$conf["importedQuestionnaireSample.recordedMinColumnName"];
3990
					$conf["db.insertData"]["columnName"][]=$conf["importedQuestionnaireSample.recordedMinColumnName"];
3991
					$conf["db.insertData"]["columnName"][]=$conf["importedQuestionnaireSample.recordedSecColumnName"];
3991
					$conf["db.insertData"]["columnName"][]=$conf["importedQuestionnaireSample.recordedSecColumnName"];
3992
					
3992
 
3993
					#爲要插入度數值,
3993
					#爲要插入度數值,
3994
					#例如:$conf["insertValue"]=array("insertValue1","insertValue2","insertValue3",...);
3994
					#例如:$conf["insertValue"]=array("insertValue1","insertValue2","insertValue3",...);
3995
					$conf["db.insertData"]["insertValue"][]=$questionnaireTypeNo;
3995
					$conf["db.insertData"]["insertValue"][]=$questionnaireTypeNo;
3996
					$conf["db.insertData"]["insertValue"][]=$sampleCsvFile["csvFileContent"][$i][0];
3996
					$conf["db.insertData"]["insertValue"][]=$sampleCsvFile["csvFileContent"][$i][0];
3997
					$conf["db.insertData"]["insertValue"][]=$sampleCsvFile["csvFileContent"][$i][count($sampleCsvFile["csvFileContent"][$i])-7];
3997
					$conf["db.insertData"]["insertValue"][]=$sampleCsvFile["csvFileContent"][$i][count($sampleCsvFile["csvFileContent"][$i])-7];
Line 3999... Line 3999...
3999
					$conf["db.insertData"]["insertValue"][]=$sampleCsvFile["csvFileContent"][$i][count($sampleCsvFile["csvFileContent"][$i])-5];
3999
					$conf["db.insertData"]["insertValue"][]=$sampleCsvFile["csvFileContent"][$i][count($sampleCsvFile["csvFileContent"][$i])-5];
4000
					$conf["db.insertData"]["insertValue"][]=$sampleCsvFile["csvFileContent"][$i][count($sampleCsvFile["csvFileContent"][$i])-4];
4000
					$conf["db.insertData"]["insertValue"][]=$sampleCsvFile["csvFileContent"][$i][count($sampleCsvFile["csvFileContent"][$i])-4];
4001
					$conf["db.insertData"]["insertValue"][]=$sampleCsvFile["csvFileContent"][$i][count($sampleCsvFile["csvFileContent"][$i])-3];
4001
					$conf["db.insertData"]["insertValue"][]=$sampleCsvFile["csvFileContent"][$i][count($sampleCsvFile["csvFileContent"][$i])-3];
4002
					$conf["db.insertData"]["insertValue"][]=$sampleCsvFile["csvFileContent"][$i][count($sampleCsvFile["csvFileContent"][$i])-2];
4002
					$conf["db.insertData"]["insertValue"][]=$sampleCsvFile["csvFileContent"][$i][count($sampleCsvFile["csvFileContent"][$i])-2];
4003
					$conf["db.insertData"]["insertValue"][]=$sampleCsvFile["csvFileContent"][$i][count($sampleCsvFile["csvFileContent"][$i])-1];
4003
					$conf["db.insertData"]["insertValue"][]=$sampleCsvFile["csvFileContent"][$i][count($sampleCsvFile["csvFileContent"][$i])-1];
4004
				
4004
 
4005
					#可以省略的變數:
4005
					#可以省略的變數:
4006
					$conf["db.insertData"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
4006
					$conf["db.insertData"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
4007
					$insertStartSurveyPointResult=db::insertData($conf["db.insertData"]);
4007
					$insertStartSurveyPointResult=db::insertData($conf["db.insertData"]);
4008
					unset($conf["db.insertData"]);
4008
					unset($conf["db.insertData"]);
4009
					
4009
 
4010
					#debug
4010
					#debug
4011
					#var_dump($insertStartSurveyPointResult);
4011
					#var_dump($insertStartSurveyPointResult);
4012
					
4012
 
4013
					#如果插入調查詩時間失敗
4013
					#如果插入調查詩時間失敗
4014
					if($insertStartSurveyPointResult["status"]=="false"){
4014
					if($insertStartSurveyPointResult["status"]=="false"){
4015
						
4015
 
4016
						#設置執行不正常
4016
						#設置執行不正常
4017
						$result["status"]="false";
4017
						$result["status"]="false";
4018
						
4018
 
4019
						#設置執行的錯誤訊息
4019
						#設置執行的錯誤訊息
4020
						$result["error"]=$insertStartSurveyPointResult;
4020
						$result["error"]=$insertStartSurveyPointResult;
4021
						
4021
 
4022
						#回傳結果
4022
						#回傳結果
4023
						return $result;
4023
						return $result;
4024
						
4024
 
4025
						}#if end
4025
						}#if end
4026
						
4026
 
4027
					#設置有插入過該筆樣本的開始調查時間
4027
					#設置有插入過該筆樣本的開始調查時間
4028
					$insertedStartSurveyPointStatus="true";
4028
					$insertedStartSurveyPointStatus="true";
4029
					
4029
 
4030
					}#if end
4030
					}#if end
4031
				
4031
 
4032
				#函數說明:
4032
				#函數說明:
4033
				#延長php的執行時間,每呼叫一次會初始化執行時間爲0,然後設定下次可以執行多久.
4033
				#延長php的執行時間,每呼叫一次會初始化執行時間爲0,然後設定下次可以執行多久.
4034
				#回傳結果:
4034
				#回傳結果:
4035
				#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
4035
				#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
4036
				#$result["error"],錯誤訊息陣列.
4036
				#$result["error"],錯誤訊息陣列.
Line 4040... Line 4040...
4040
				$conf["config::delayRunTimeExectionMax"]["sec"]=300;
4040
				$conf["config::delayRunTimeExectionMax"]["sec"]=300;
4041
				#參考資料:
4041
				#參考資料:
4042
				#http://php.net/manual/en/function.set-time-limit.php
4042
				#http://php.net/manual/en/function.set-time-limit.php
4043
				$delayRunTimeExectionMax=config::delayRunTimeExectionMax($conf["config::delayRunTimeExectionMax"]);
4043
				$delayRunTimeExectionMax=config::delayRunTimeExectionMax($conf["config::delayRunTimeExectionMax"]);
4044
				unset($conf["config::delayRunTimeExectionMax"]);
4044
				unset($conf["config::delayRunTimeExectionMax"]);
4045
				
4045
 
4046
				#如果執行失敗
4046
				#如果執行失敗
4047
				if($delayRunTimeExectionMax["status"]==="false"){
4047
				if($delayRunTimeExectionMax["status"]==="false"){
4048
				
4048
 
4049
					#設定類別圖繪製失敗
4049
					#設定類別圖繪製失敗
4050
					$result["status"]="false";			
4050
					$result["status"]="false";
4051
								
4051
 
4052
					#設定該檔案的類別圖繪製失敗提示
4052
					#設定該檔案的類別圖繪製失敗提示
4053
					$result["error"]=$delayRunTimeExectionMax;
4053
					$result["error"]=$delayRunTimeExectionMax;
4054
					
4054
 
4055
					#回傳結果
4055
					#回傳結果
4056
					return $result;
4056
					return $result;
4057
				
4057
 
4058
					}#if end
4058
					}#if end
4059
				
4059
 
4060
				}#for end
4060
				}#for end
4061
 
4061
 
4062
			#函數說明:
4062
			#函數說明:
4063
			#延長php的執行時間,每呼叫一次會初始化執行時間爲0,然後設定下次可以執行多久.
4063
			#延長php的執行時間,每呼叫一次會初始化執行時間爲0,然後設定下次可以執行多久.
4064
			#回傳結果:
4064
			#回傳結果:
Line 4070... Line 4070...
4070
			$conf["config::delayRunTimeExectionMax"]["sec"]=300;
4070
			$conf["config::delayRunTimeExectionMax"]["sec"]=300;
4071
			#參考資料:
4071
			#參考資料:
4072
			#http://php.net/manual/en/function.set-time-limit.php
4072
			#http://php.net/manual/en/function.set-time-limit.php
4073
			$delayRunTimeExectionMax=config::delayRunTimeExectionMax($conf["config::delayRunTimeExectionMax"]);
4073
			$delayRunTimeExectionMax=config::delayRunTimeExectionMax($conf["config::delayRunTimeExectionMax"]);
4074
			unset($conf["config::delayRunTimeExectionMax"]);
4074
			unset($conf["config::delayRunTimeExectionMax"]);
4075
			
4075
 
4076
			#如果執行失敗
4076
			#如果執行失敗
4077
			if($delayRunTimeExectionMax["status"]==="false"){
4077
			if($delayRunTimeExectionMax["status"]==="false"){
4078
			
4078
 
4079
				#設定類別圖繪製失敗
4079
				#設定類別圖繪製失敗
4080
				$result["status"]="false";			
4080
				$result["status"]="false";
4081
							
4081
 
4082
				#設定該檔案的類別圖繪製失敗提示
4082
				#設定該檔案的類別圖繪製失敗提示
4083
				$result["error"]=$delayRunTimeExectionMax;
4083
				$result["error"]=$delayRunTimeExectionMax;
4084
				
4084
 
4085
				#回傳結果
4085
				#回傳結果
4086
				return $result;
4086
				return $result;
4087
			
4087
 
4088
				}#if end
4088
				}#if end
4089
			
4089
 
4090
			}#for end
4090
			}#for end
4091
 
4091
 
4092
		#執行到這邊代表執行正常
4092
		#執行到這邊代表執行正常
4093
		$result["status"]="true";
4093
		$result["status"]="true";
4094
 
4094
 
4095
		#回傳結果	
4095
		#回傳結果
4096
		return $result;
4096
		return $result;
4097
		
4097
 
4098
		}#function convertSampleToValidatedAddVersion end
4098
		}#function convertSampleToValidatedAddVersion end
4099
	
4099
 
4100
	/*
4100
	/*
4101
	#函式說明:
4101
	#函式說明:
4102
	#依據問卷資訊csv格式檔匯入問卷
4102
	#依據問卷資訊csv格式檔匯入問卷
4103
	#回傳結果:
4103
	#回傳結果:
4104
	#$result["status"],執行是否正確,"true"代表正確,"false"代表不正常.
4104
	#$result["status"],執行是否正確,"true"代表正確,"false"代表不正常.
Line 4107... Line 4107...
4107
	#$result["warning"].警告訊息陣列
4107
	#$result["warning"].警告訊息陣列
4108
	#必填參數:
4108
	#必填參數:
4109
	#$conf["questionnaireSetupCsvPath"],字串,記錄問卷資訊的csv檔案.
4109
	#$conf["questionnaireSetupCsvPath"],字串,記錄問卷資訊的csv檔案.
4110
	$conf["questionnaireSetupCsvPath"]="";
4110
	$conf["questionnaireSetupCsvPath"]="";
4111
	#$conf["dbAddress"],字串,問卷資料庫的網路位址.
4111
	#$conf["dbAddress"],字串,問卷資料庫的網路位址.
4112
	$conf["dbAddress"]=$dbAddress;		
4112
	$conf["dbAddress"]=$dbAddress;
4113
	#$conf["dbAccount"],字串,要連線到資料庫時所用的帳戶名稱.
4113
	#$conf["dbAccount"],字串,要連線到資料庫時所用的帳戶名稱.
4114
	$conf["dbAccount"]=$dbAccount;
4114
	$conf["dbAccount"]=$dbAccount;
4115
	#$conf["dbName"],字串,問卷相關資料所儲存的資料庫名稱.
4115
	#$conf["dbName"],字串,問卷相關資料所儲存的資料庫名稱.
4116
	$conf["dbName"]=$dbName;	
4116
	$conf["dbName"]=$dbName;
4117
	#$argu,變數,參數陣列的名稱,記得前面要加&.
4117
	#$argu,變數,參數陣列的名稱,記得前面要加&.
4118
	$argu=&$conf; 
4118
	$argu=&$conf;
4119
	#可省略參數:
4119
	#可省略參數:
4120
	#$conf["dbPassword"],字串,要連線到資料庫時所用的密碼.
4120
	#$conf["dbPassword"],字串,要連線到資料庫時所用的密碼.
4121
	#$conf["dbPassword"]=$dbPassword;
4121
	#$conf["dbPassword"]=$dbPassword;
4122
	#$conf["delFileAfterImport"],字串,若為"true"則代表要在匯入檔案完畢後,移除csv檔案。
4122
	#$conf["delFileAfterImport"],字串,若為"true"則代表要在匯入檔案完畢後,移除csv檔案。
4123
	#$conf["delFileAfterImport"]="true";
4123
	#$conf["delFileAfterImport"]="true";
Line 4150... Line 4150...
4150
	#$conf["questionnaireQuest.selectedQuestOptionMaxCountColumnName"],字串,題目選項的選擇上限的資料欄位名稱,預設為"selectedQuestOptionMaxCount".
4150
	#$conf["questionnaireQuest.selectedQuestOptionMaxCountColumnName"],字串,題目選項的選擇上限的資料欄位名稱,預設為"selectedQuestOptionMaxCount".
4151
	#$conf["questionnaireQuest.selectedQuestOptionMaxCountColumnName"]="selectedQuestOptionMaxCount";
4151
	#$conf["questionnaireQuest.selectedQuestOptionMaxCountColumnName"]="selectedQuestOptionMaxCount";
4152
	#$conf["questionnaireQuest.questContentColumnName"],字串,題目內容的資料欄位名稱,預設為"questContent".
4152
	#$conf["questionnaireQuest.questContentColumnName"],字串,題目內容的資料欄位名稱,預設為"questContent".
4153
	#$conf["questionnaireQuest.questContentColumnName"]="questContent";
4153
	#$conf["questionnaireQuest.questContentColumnName"]="questContent";
4154
	#$conf["questionnaireQuest.choiceValueColumnName"],字串,題目選項的資料欄位名稱,預設為"choiceValue".
4154
	#$conf["questionnaireQuest.choiceValueColumnName"],字串,題目選項的資料欄位名稱,預設為"choiceValue".
4155
	#$conf["questionnaireQuest.choiceValueColumnName"]="choiceValue";		
4155
	#$conf["questionnaireQuest.choiceValueColumnName"]="choiceValue";
4156
	#$conf["questionnaireQuest.maxLengthColumnName"],字串,題目回答內容的最大長度限制的資料欄位名稱,預設為"maxLength".
4156
	#$conf["questionnaireQuest.maxLengthColumnName"],字串,題目回答內容的最大長度限制的資料欄位名稱,預設為"maxLength".
4157
	#$conf["questionnaireQuest.maxLengthColumnName"]="maxLength";
4157
	#$conf["questionnaireQuest.maxLengthColumnName"]="maxLength";
4158
	#$conf["questionnaireQuest.nullColumnName"],字串,題目是否可以忽略的資料欄位名稱,預設為"null".
4158
	#$conf["questionnaireQuest.nullColumnName"],字串,題目是否可以忽略的資料欄位名稱,預設為"null".
4159
	#$conf["questionnaireQuest.nullColumnName"]="null";
4159
	#$conf["questionnaireQuest.nullColumnName"]="null";
4160
	#$conf["questionnaireQuest.perspectiveColumnName"],字串,題目所屬構面的資料欄位名稱,預設為"perspective".
4160
	#$conf["questionnaireQuest.perspectiveColumnName"],字串,題目所屬構面的資料欄位名稱,預設為"perspective".
4161
	#$conf["questionnaireQuest.perspectiveColumnName"]="perspective";
4161
	#$conf["questionnaireQuest.perspectiveColumnName"]="perspective";
4162
	#$conf["questionnaireQuest.indicatorColumnName"],字串,題目對應的指標的資料欄位名稱,預設為"indicator".
4162
	#$conf["questionnaireQuest.indicatorColumnName"],字串,題目對應的指標的資料欄位名稱,預設為"indicator".
4163
	#$conf["questionnaireQuest.indicatorColumnName"]="indicator";	
4163
	#$conf["questionnaireQuest.indicatorColumnName"]="indicator";
4164
	#參考資料:
4164
	#參考資料:
4165
	#無.
4165
	#無.
4166
	#備註:
4166
	#備註:
4167
	#需要測試.須增加建立於特定時間自動執行問卷樣本ETL程序的程式
4167
	#需要測試.須增加建立於特定時間自動執行問卷樣本ETL程序的程式
4168
	*/
4168
	*/
4169
	public static function importQuestionnaire($conf,&$argu){
4169
	public static function importQuestionnaire($conf,&$argu){
4170
		
4170
 
4171
		#初始化要回傳的結果
4171
		#初始化要回傳的結果
4172
		$result=array();
4172
		$result=array();
4173
		
4173
 
4174
		#取得當前執行的函數名稱
4174
		#取得當前執行的函數名稱
4175
		$result["function"]=__FUNCTION__;
4175
		$result["function"]=__FUNCTION__;
4176
		
4176
 
4177
		#如果 $conf 不為陣列
4177
		#如果 $conf 不為陣列
4178
		if(gettype($conf)!="array"){
4178
		if(gettype($conf)!="array"){
4179
			
4179
 
4180
			#設置執行失敗
4180
			#設置執行失敗
4181
			$result["status"]="false";
4181
			$result["status"]="false";
4182
			
4182
 
4183
			#設置執行錯誤訊息
4183
			#設置執行錯誤訊息
4184
			$result["error"][]="\$conf變數須為陣列形態";
4184
			$result["error"][]="\$conf變數須為陣列形態";
4185
 
4185
 
4186
			#如果傳入的參數為 null
4186
			#如果傳入的參數為 null
4187
			if($conf==null){
4187
			if($conf==null){
4188
				
4188
 
4189
				#設置執行錯誤訊息
4189
				#設置執行錯誤訊息
4190
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
4190
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
4191
				
4191
 
4192
				}#if end
4192
				}#if end
4193
 
4193
 
4194
			#回傳結果
4194
			#回傳結果
4195
			return $result;
4195
			return $result;
4196
			
4196
 
4197
			}#if end
4197
			}#if end
4198
		
4198
 
4199
		#檢查必填的參數 
4199
		#檢查必填的參數
4200
		#涵式說明:
4200
		#涵式說明:
4201
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
4201
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
4202
		#回傳的結果:
4202
		#回傳的結果:
4203
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4203
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4204
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
4204
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
Line 4209... Line 4209...
4209
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
4209
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
4210
		#必填參數:
4210
		#必填參數:
4211
		$conf["variableCheck"]["isexistMulti"]["varInput"]=$conf;#要檢查的陣列變數
4211
		$conf["variableCheck"]["isexistMulti"]["varInput"]=$conf;#要檢查的陣列變數
4212
		$conf["variableCheck"]["isexistMulti"]["variableCheck"]=array("questionnaireSetupCsvPath","dbAddress","dbAccount","dbName");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
4212
		$conf["variableCheck"]["isexistMulti"]["variableCheck"]=array("questionnaireSetupCsvPath","dbAddress","dbAccount","dbName");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
4213
		#可以省略的參數:
4213
		#可以省略的參數:
4214
		$conf["variableCheck"]["isexistMulti"]["variableType"]=array("string","string","string","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double"); 
4214
		$conf["variableCheck"]["isexistMulti"]["variableType"]=array("string","string","string","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
4215
		$conf["variableCheck"]["isexistMulti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
4215
		$conf["variableCheck"]["isexistMulti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
4216
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMulti"]);
4216
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMulti"]);
4217
		unset($conf["variableCheck"]);
4217
		unset($conf["variableCheck"]);
4218
		
4218
 
4219
		#如果 $checkResult["status"] 等於 "false"
4219
		#如果 $checkResult["status"] 等於 "false"
4220
		if($checkResult["status"]=="false"){
4220
		if($checkResult["status"]=="false"){
4221
			
4221
 
4222
			#設置執行錯誤
4222
			#設置執行錯誤
4223
			$result["status"]="false";
4223
			$result["status"]="false";
4224
			
4224
 
4225
			#設置錯誤訊息
4225
			#設置錯誤訊息
4226
			$result["error"]=$checkResult;
4226
			$result["error"]=$checkResult;
4227
			
4227
 
4228
			#回傳結果
4228
			#回傳結果
4229
			return $result;
4229
			return $result;
4230
			
4230
 
4231
			}#if end
4231
			}#if end
4232
			
4232
 
4233
		#如果 $checkResult["passed"] 等於 "false"
4233
		#如果 $checkResult["passed"] 等於 "false"
4234
		if($checkResult["passed"]=="false"){
4234
		if($checkResult["passed"]=="false"){
4235
			
4235
 
4236
			#設置執行錯誤
4236
			#設置執行錯誤
4237
			$result["status"]="false";
4237
			$result["status"]="false";
4238
			
4238
 
4239
			#設置錯誤訊息
4239
			#設置錯誤訊息
4240
			$result["error"]=$checkResult;
4240
			$result["error"]=$checkResult;
4241
			
4241
 
4242
			#回傳結果
4242
			#回傳結果
4243
			return $result;
4243
			return $result;
4244
			
4244
 
4245
			}#if end
4245
			}#if end
4246
		
4246
 
4247
		#檢查可省略的參數
4247
		#檢查可省略的參數
4248
		#函式說明:
4248
		#函式說明:
4249
		#檢查一包含數個可省略變數的陣列變數,其型態是否正確
4249
		#檢查一包含數個可省略變數的陣列變數,其型態是否正確
4250
		#回傳的結果:
4250
		#回傳的結果:
4251
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4251
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 4253... Line 4253...
4253
		#$result["function"],當前執行的函式名稱.
4253
		#$result["function"],當前執行的函式名稱.
4254
		#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查.
4254
		#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查.
4255
		#必填參數:
4255
		#必填參數:
4256
		#$conf["variableCheck"]["checkSkipableVarType"]["checkedVar"],陣列,要檢查的變數陣列名稱為?
4256
		#$conf["variableCheck"]["checkSkipableVarType"]["checkedVar"],陣列,要檢查的變數陣列名稱為?
4257
		$conf["variableCheck"]["checkSkipableVarType"]["checkedVar"]=$conf;
4257
		$conf["variableCheck"]["checkSkipableVarType"]["checkedVar"]=$conf;
4258
		
4258
 
4259
		#$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.
4259
		#$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.
4260
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarNameArray"][]="dbPassword";
4260
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarNameArray"][]="dbPassword";
4261
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarNameArray"][]="delFileAfterImport";
4261
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarNameArray"][]="delFileAfterImport";
4262
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarNameArray"][]="questionnaireType.dtName";
4262
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarNameArray"][]="questionnaireType.dtName";
4263
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarNameArray"][]="questionnaireType.typeNoColumnName";
4263
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarNameArray"][]="questionnaireType.typeNoColumnName";
Line 4277... Line 4277...
4277
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarNameArray"][]="questionnaireQuest.choiceValueColumnName";
4277
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarNameArray"][]="questionnaireQuest.choiceValueColumnName";
4278
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarNameArray"][]="questionnaireQuest.maxLengthColumnName";
4278
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarNameArray"][]="questionnaireQuest.maxLengthColumnName";
4279
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarNameArray"][]="questionnaireQuest.nullColumnName";
4279
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarNameArray"][]="questionnaireQuest.nullColumnName";
4280
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarNameArray"][]="questionnaireQuest.perspectiveColumnName";
4280
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarNameArray"][]="questionnaireQuest.perspectiveColumnName";
4281
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarNameArray"][]="questionnaireQuest.indicatorColumnName";
4281
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarNameArray"][]="questionnaireQuest.indicatorColumnName";
4282
		
4282
 
4283
		#$conf["variableCheck"]["checkSkipableVarType"]["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何?
4283
		#$conf["variableCheck"]["checkSkipableVarType"]["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何?
4284
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarTypeArray"][]="string";
4284
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarTypeArray"][]="string";
4285
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarTypeArray"][]="string";
4285
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarTypeArray"][]="string";
4286
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarTypeArray"][]="string";
4286
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarTypeArray"][]="string";
4287
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarTypeArray"][]="string";
4287
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarTypeArray"][]="string";
Line 4301... Line 4301...
4301
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarTypeArray"][]="string";
4301
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarTypeArray"][]="string";
4302
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarTypeArray"][]="string";
4302
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarTypeArray"][]="string";
4303
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarTypeArray"][]="string";
4303
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarTypeArray"][]="string";
4304
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarTypeArray"][]="string";
4304
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarTypeArray"][]="string";
4305
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarTypeArray"][]="string";
4305
		$conf["variableCheck"]["checkSkipableVarType"]["sikpableVarTypeArray"][]="string";
4306
		
4306
 
4307
		#$argu,要直接存取的陣列變數名稱,變數前面加上「&」.
4307
		#$argu,要直接存取的陣列變數名稱,變數前面加上「&」.
4308
		#$argu=&$argu;
4308
		#$argu=&$argu;
4309
		#可省略參數:
4309
		#可省略參數:
4310
		
4310
 
4311
		#$conf["variableCheck"]["checkSkipableVarType"]["skipableVarDefaultValue"],字串陣列,每個不存的變數要初始化為什麼,"null"代表不指定.
4311
		#$conf["variableCheck"]["checkSkipableVarType"]["skipableVarDefaultValue"],字串陣列,每個不存的變數要初始化為什麼,"null"代表不指定.
4312
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarDefaultValue"][]="null";
4312
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarDefaultValue"][]="null";
4313
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarDefaultValue"][]="null";
4313
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarDefaultValue"][]="null";
4314
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarDefaultValue"][]="questionnaireType";
4314
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarDefaultValue"][]="questionnaireType";
4315
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarDefaultValue"][]="typeNo";
4315
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarDefaultValue"][]="typeNo";
Line 4329... Line 4329...
4329
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarDefaultValue"][]="choiceValue";
4329
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarDefaultValue"][]="choiceValue";
4330
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarDefaultValue"][]="maxLength";
4330
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarDefaultValue"][]="maxLength";
4331
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarDefaultValue"][]="null";
4331
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarDefaultValue"][]="null";
4332
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarDefaultValue"][]="perspective";
4332
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarDefaultValue"][]="perspective";
4333
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarDefaultValue"][]="indicator";
4333
		$conf["variableCheck"]["checkSkipableVarType"]["skipableVarDefaultValue"][]="indicator";
4334
		
4334
 
4335
		$checkResult=variableCheck::checkSkipableVarType($conf["variableCheck"]["checkSkipableVarType"],$argu);
4335
		$checkResult=variableCheck::checkSkipableVarType($conf["variableCheck"]["checkSkipableVarType"],$argu);
4336
		unset($conf["variableCheck"]);
4336
		unset($conf["variableCheck"]);
4337
		
4337
 
4338
		#置換$conf為更新好的$argu
4338
		#置換$conf為更新好的$argu
4339
		$conf=$argu;
4339
		$conf=$argu;
4340
		
4340
 
4341
		#如果 $checkResult["status"] 等於 "false"
4341
		#如果 $checkResult["status"] 等於 "false"
4342
		if($checkResult["status"]=="false"){
4342
		if($checkResult["status"]=="false"){
4343
			
4343
 
4344
			#設置執行錯誤
4344
			#設置執行錯誤
4345
			$result["status"]="false";
4345
			$result["status"]="false";
4346
			
4346
 
4347
			#設置錯誤訊息
4347
			#設置錯誤訊息
4348
			$result["error"]=$checkResult;
4348
			$result["error"]=$checkResult;
4349
			
4349
 
4350
			#回傳結果
4350
			#回傳結果
4351
			return $result;
4351
			return $result;
4352
			
4352
 
4353
			}#if end
4353
			}#if end
4354
			
4354
 
4355
		#如果 $checkResult["passed"] 等於 "false"
4355
		#如果 $checkResult["passed"] 等於 "false"
4356
		if($checkResult["passed"]=="false"){
4356
		if($checkResult["passed"]=="false"){
4357
			
4357
 
4358
			#設置執行錯誤
4358
			#設置執行錯誤
4359
			$result["status"]="false";
4359
			$result["status"]="false";
4360
			
4360
 
4361
			#設置錯誤訊息
4361
			#設置錯誤訊息
4362
			$result["error"]=$checkResult;
4362
			$result["error"]=$checkResult;
4363
			
4363
 
4364
			#回傳結果
4364
			#回傳結果
4365
			return $result;
4365
			return $result;
4366
			
4366
 
4367
			}#if end
4367
			}#if end
4368
		
4368
 
4369
		#讀取檔案的內容
4369
		#讀取檔案的內容
4370
		#涵式說明:
4370
		#涵式說明:
4371
		#讀取csv檔案的內容
4371
		#讀取csv檔案的內容
4372
		#回傳得結果:
4372
		#回傳得結果:
4373
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
4373
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
Line 4385... Line 4385...
4385
		#http://www.php.net/manual/en/function.str-split.php
4385
		#http://www.php.net/manual/en/function.str-split.php
4386
		#參考資料來源
4386
		#參考資料來源
4387
		#http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
4387
		#http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
4388
		$csvFileContent=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
4388
		$csvFileContent=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
4389
		unset($conf["csv"]);
4389
		unset($conf["csv"]);
4390
		
4390
 
4391
		#如果讀取csv檔案失敗
4391
		#如果讀取csv檔案失敗
4392
		if($csvFileContent["status"]=="false"){
4392
		if($csvFileContent["status"]=="false"){
4393
			
4393
 
4394
			#設置執行錯誤
4394
			#設置執行錯誤
4395
			$result["status"]="false";
4395
			$result["status"]="false";
4396
			
4396
 
4397
			#設置錯誤訊息
4397
			#設置錯誤訊息
4398
			$result["error"]=$csvFileContent;
4398
			$result["error"]=$csvFileContent;
4399
			
4399
 
4400
			#回傳結果
4400
			#回傳結果
4401
			return $result;
4401
			return $result;
4402
			
4402
 
4403
			}#if end
4403
			}#if end
4404
		
4404
 
4405
		#var_dump($csvFileContent);
4405
		#var_dump($csvFileContent);
4406
		
4406
 
4407
		#搜尋可用的問卷編號
4407
		#搜尋可用的問卷編號
4408
		#涵式說明:
4408
		#涵式說明:
4409
		#尋找特定資料庫裏特定資料表裏面特定欄位有無可用整數編號,可以指定數字的起點與終點,此函式會回傳可用的編號。
4409
		#尋找特定資料庫裏特定資料表裏面特定欄位有無可用整數編號,可以指定數字的起點與終點,此函式會回傳可用的編號。
4410
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4410
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4411
		#$result["error"],錯誤訊息陣列 
4411
		#$result["error"],錯誤訊息陣列
4412
		#$result["function"],當前執行的函數.
4412
		#$result["function"],當前執行的函數.
4413
		#$result["founded"],爲搜尋可以用的數字是否成功,"true"表示成功,"false"表示失敗.
4413
		#$result["founded"],爲搜尋可以用的數字是否成功,"true"表示成功,"false"表示失敗.
4414
		#$result["usableNumber"],爲可用的整數。
4414
		#$result["usableNumber"],爲可用的整數。
4415
		#$result["sql"],執行的sql語法.
4415
		#$result["sql"],執行的sql語法.
4416
		#必填參數
4416
		#必填參數
Line 4420... Line 4420...
4420
		$conf["db"]["findUsableNumber"]["checkDataTableName"]=$conf["questionnaireType.dtName"];#爲要檢查的資料表名稱
4420
		$conf["db"]["findUsableNumber"]["checkDataTableName"]=$conf["questionnaireType.dtName"];#爲要檢查的資料表名稱
4421
		$conf["db"]["findUsableNumber"]["conditionTargetName"]=$conf["questionnaireType.typeNoColumnName"];#用來判斷的資料表數值名稱
4421
		$conf["db"]["findUsableNumber"]["conditionTargetName"]=$conf["questionnaireType.typeNoColumnName"];#用來判斷的資料表數值名稱
4422
		$conf["db"]["findUsableNumber"]["startPoint"]="1";#要執行的迴圈起點(資料的起始檢查點),須爲int
4422
		$conf["db"]["findUsableNumber"]["startPoint"]="1";#要執行的迴圈起點(資料的起始檢查點),須爲int
4423
		$conf["db"]["findUsableNumber"]["endPoint"]="99999";#要執行的迴圈終點(資料的結束檢查點),須爲int
4423
		$conf["db"]["findUsableNumber"]["endPoint"]="99999";#要執行的迴圈終點(資料的結束檢查點),須爲int
4424
		#可省略參數
4424
		#可省略參數
4425
		
4425
 
4426
		#如果 $conf["dbPassword"] 有設定
4426
		#如果 $conf["dbPassword"] 有設定
4427
		if(isset($conf["dbPassword"])){
4427
		if(isset($conf["dbPassword"])){
4428
		
4428
 
4429
			#設置連線用的密碼
4429
			#設置連線用的密碼
4430
			$conf["db"]["findUsableNumber"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
4430
			$conf["db"]["findUsableNumber"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
4431
		
4431
 
4432
			}#if end
4432
			}#if end
4433
		
4433
 
4434
		#$conf["otherConditionTargetName"]=array();#查詢欄位項目可用數值的其它條件欄位名稱,爲陣列值。
4434
		#$conf["otherConditionTargetName"]=array();#查詢欄位項目可用數值的其它條件欄位名稱,爲陣列值。
4435
			#須搭配 $conf["otherConditionTargetValue"] 一起使用
4435
			#須搭配 $conf["otherConditionTargetValue"] 一起使用
4436
		#$conf["otherConditionTargetValue"]=array();#查詢欄位項目可用數值的其它條件欄位數值,爲陣列值。
4436
		#$conf["otherConditionTargetValue"]=array();#查詢欄位項目可用數值的其它條件欄位數值,爲陣列值。
4437
			#須搭配 $conf["otherConditionTargetName"] 一起使用
4437
			#須搭配 $conf["otherConditionTargetName"] 一起使用
4438
		$questionnaireType=db::findUsableNumber($conf["db"]["findUsableNumber"]);
4438
		$questionnaireType=db::findUsableNumber($conf["db"]["findUsableNumber"]);
4439
		unset($conf["db"]["findUsableNumber"]);
4439
		unset($conf["db"]["findUsableNumber"]);
4440
		
4440
 
4441
		#如果取得可用問卷編號失敗
4441
		#如果取得可用問卷編號失敗
4442
		if($questionnaireType["status"]=="false"){
4442
		if($questionnaireType["status"]=="false"){
4443
			
4443
 
4444
			#設置執行錯誤
4444
			#設置執行錯誤
4445
			$result["status"]="false";
4445
			$result["status"]="false";
4446
			
4446
 
4447
			#設置錯誤訊息
4447
			#設置錯誤訊息
4448
			$result["error"]=$questionnaireType;
4448
			$result["error"]=$questionnaireType;
4449
			
4449
 
4450
			#回傳結果
4450
			#回傳結果
4451
			return $result;
4451
			return $result;
4452
			
4452
 
4453
			}#if end
4453
			}#if end
4454
			
4454
 
4455
		#如果沒有可用的問卷編號
4455
		#如果沒有可用的問卷編號
4456
		if($questionnaireType["founded"]=="false"){
4456
		if($questionnaireType["founded"]=="false"){
4457
			
4457
 
4458
			#設置執行錯誤
4458
			#設置執行錯誤
4459
			$result["status"]="false";
4459
			$result["status"]="false";
4460
			
4460
 
4461
			#設置錯誤訊息
4461
			#設置錯誤訊息
4462
			$result["error"]=$questionnaireType;
4462
			$result["error"]=$questionnaireType;
4463
			
4463
 
4464
			#回傳結果
4464
			#回傳結果
4465
			return $result;
4465
			return $result;
4466
			
4466
 
4467
			}#if end
4467
			}#if end
4468
		
4468
 
4469
		#根據問卷名稱、描述、幾點量表來建立問卷
4469
		#根據問卷名稱、描述、幾點量表來建立問卷
4470
		#涵式說明:
4470
		#涵式說明:
4471
		#插入資料到指定的資料表裡面,插入資料完畢可以選擇是否要進行轉址。
4471
		#插入資料到指定的資料表裡面,插入資料完畢可以選擇是否要進行轉址。
4472
		#回傳的數值:	
4472
		#回傳的數值:
4473
		#$result["connectInformation"],爲連線到該mysql-server的資訊。
4473
		#$result["connectInformation"],爲連線到該mysql-server的資訊。
4474
		#$result["connectStatus"],爲查詢是否成功,若爲0則成功,若爲1則表示失敗了
4474
		#$result["connectStatus"],爲查詢是否成功,若爲0則成功,若爲1則表示失敗了
4475
		#$result["error"],錯誤訊息
4475
		#$result["error"],錯誤訊息
4476
		#必填參數:
4476
		#必填參數:
4477
		$conf["db"]["insertData"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
4477
		$conf["db"]["insertData"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
4478
		$conf["db"]["insertData"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
4478
		$conf["db"]["insertData"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
4479
		$conf["db"]["insertData"]["selectedDataBaseName"]=$conf["dbName"];#要選取的資料庫名稱	
4479
		$conf["db"]["insertData"]["selectedDataBaseName"]=$conf["dbName"];#要選取的資料庫名稱
4480
		$conf["db"]["insertData"]["tableName"]=$conf["questionnaireType.dtName"];#爲要插入資料的資料表名稱
4480
		$conf["db"]["insertData"]["tableName"]=$conf["questionnaireType.dtName"];#爲要插入資料的資料表名稱
4481
		
4481
 
4482
		#串連需要寫入的問卷欄位	
4482
		#串連需要寫入的問卷欄位
4483
		#爲資料表的項目名稱,
4483
		#爲資料表的項目名稱,
4484
		#例如:$conf["columnName"]=array("columnName1","columnName2","columnName3",...);		
4484
		#例如:$conf["columnName"]=array("columnName1","columnName2","columnName3",...);
4485
		$conf["db"]["insertData"]["columnName"][]=$conf["questionnaireType.typeNoColumnName"];
4485
		$conf["db"]["insertData"]["columnName"][]=$conf["questionnaireType.typeNoColumnName"];
4486
		$conf["db"]["insertData"]["columnName"][]=$conf["questionnaireType.questionnaireTitleColumnName"];
4486
		$conf["db"]["insertData"]["columnName"][]=$conf["questionnaireType.questionnaireTitleColumnName"];
4487
		$conf["db"]["insertData"]["columnName"][]=$conf["questionnaireType.questionnaireCommentColumnName"];
4487
		$conf["db"]["insertData"]["columnName"][]=$conf["questionnaireType.questionnaireCommentColumnName"];
4488
		$conf["db"]["insertData"]["columnName"][]=$conf["questionnaireType.pointsColumnName"];
4488
		$conf["db"]["insertData"]["columnName"][]=$conf["questionnaireType.pointsColumnName"];
4489
		$conf["db"]["insertData"]["columnName"][]=$conf["questionnaireType.startSurveyColumnName"];
4489
		$conf["db"]["insertData"]["columnName"][]=$conf["questionnaireType.startSurveyColumnName"];
4490
		
4490
 
4491
		#爲要插入度數值
4491
		#爲要插入度數值
4492
		#例如:$conf["insertValue"]=array("insertValue1","insertValue2","insertValue3",...);			
4492
		#例如:$conf["insertValue"]=array("insertValue1","insertValue2","insertValue3",...);
4493
		#$conf["db"]["insertData"]["insertValue"]=array(,,,);
4493
		#$conf["db"]["insertData"]["insertValue"]=array(,,,);
4494
		$conf["db"]["insertData"]["insertValue"][]=$questionnaireType["usableNumber"];
4494
		$conf["db"]["insertData"]["insertValue"][]=$questionnaireType["usableNumber"];
4495
		$conf["db"]["insertData"]["insertValue"][]=$csvFileContent["csvFileContent"][0][0];
4495
		$conf["db"]["insertData"]["insertValue"][]=$csvFileContent["csvFileContent"][0][0];
4496
		$conf["db"]["insertData"]["insertValue"][]=$csvFileContent["csvFileContent"][0][1];
4496
		$conf["db"]["insertData"]["insertValue"][]=$csvFileContent["csvFileContent"][0][1];
4497
		$conf["db"]["insertData"]["insertValue"][]=$csvFileContent["csvFileContent"][0][2];
4497
		$conf["db"]["insertData"]["insertValue"][]=$csvFileContent["csvFileContent"][0][2];
4498
		$conf["db"]["insertData"]["insertValue"][]=$csvFileContent["csvFileContent"][0][7];
4498
		$conf["db"]["insertData"]["insertValue"][]=$csvFileContent["csvFileContent"][0][7];
4499
		
4499
 
4500
		#可以省略的變數:
4500
		#可以省略的變數:
4501
		$conf["db"]["insertData"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
4501
		$conf["db"]["insertData"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
4502
		$insertQuesttionaireBasicDataResult=db::insertData($conf["db"]["insertData"]);
4502
		$insertQuesttionaireBasicDataResult=db::insertData($conf["db"]["insertData"]);
4503
		unset($conf["db"]["insertData"]);
4503
		unset($conf["db"]["insertData"]);
4504
		
4504
 
4505
		#如果 $insertQuesttionaireBasicDataResult["status"] 等於 "false"
4505
		#如果 $insertQuesttionaireBasicDataResult["status"] 等於 "false"
4506
		if($insertQuesttionaireBasicDataResult["status"]=="false"){
4506
		if($insertQuesttionaireBasicDataResult["status"]=="false"){
4507
			
4507
 
4508
			#設置執行錯誤
4508
			#設置執行錯誤
4509
			$result["status"]="false";
4509
			$result["status"]="false";
4510
			
4510
 
4511
			#設置錯誤訊息
4511
			#設置錯誤訊息
4512
			$result["error"]=$insertQuesttionaireBasicDataResult;
4512
			$result["error"]=$insertQuesttionaireBasicDataResult;
4513
			
4513
 
4514
			#回傳結果
4514
			#回傳結果
4515
			return $result;
4515
			return $result;
4516
			
4516
 
4517
			}#if end
4517
			}#if end
4518
		
4518
 
4519
		#根據問卷調查週期來補充資料
4519
		#根據問卷調查週期來補充資料
4520
		#涵式說明:
4520
		#涵式說明:
4521
		#插入資料到指定的資料表裡面,插入資料完畢可以選擇是否要進行轉址。
4521
		#插入資料到指定的資料表裡面,插入資料完畢可以選擇是否要進行轉址。
4522
		#回傳的數值:	
4522
		#回傳的數值:
4523
		#$result["status"],爲查詢是否成功,若爲"true"則成功,若爲"false"則表示失敗了.
4523
		#$result["status"],爲查詢是否成功,若爲"true"則成功,若爲"false"則表示失敗了.
4524
		#$result["error"],錯誤訊息.
4524
		#$result["error"],錯誤訊息.
4525
		#$result["sql"],執行的sql語法.
4525
		#$result["sql"],執行的sql語法.
4526
		#必填參數:
4526
		#必填參數:
4527
		$conf["db"]["insertData"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
4527
		$conf["db"]["insertData"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
4528
		$conf["db"]["insertData"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
4528
		$conf["db"]["insertData"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
4529
		$conf["db"]["insertData"]["selectedDataBaseName"]=$conf["dbName"];#要選取的資料庫名稱	
4529
		$conf["db"]["insertData"]["selectedDataBaseName"]=$conf["dbName"];#要選取的資料庫名稱
4530
		$conf["db"]["insertData"]["tableName"]=$conf["questionnaireTurnaroundTime.dtName"];#爲要插入資料的資料表名稱
4530
		$conf["db"]["insertData"]["tableName"]=$conf["questionnaireTurnaroundTime.dtName"];#爲要插入資料的資料表名稱
4531
		
4531
 
4532
		#爲資料表的項目名稱,
4532
		#爲資料表的項目名稱,
4533
		#例如:$conf["columnName"]=array("columnName1","columnName2","columnName3",...);
4533
		#例如:$conf["columnName"]=array("columnName1","columnName2","columnName3",...);
4534
		$conf["db"]["insertData"]["columnName"]=array("questionnaireTypeNo","turnaroundTime","durationByDays","startNumberOfMonth","startNumberOfDay");
4534
		$conf["db"]["insertData"]["columnName"]=array("questionnaireTypeNo","turnaroundTime","durationByDays","startNumberOfMonth","startNumberOfDay");
4535
		
4535
 
4536
		$conf["db"]["insertData"]["insertValue"]=array($questionnaireType["usableNumber"],$csvFileContent["csvFileContent"][0][3],$csvFileContent["csvFileContent"][0][4],$csvFileContent["csvFileContent"][0][5],$csvFileContent["csvFileContent"][0][6]);#爲要插入度數值,
4536
		$conf["db"]["insertData"]["insertValue"]=array($questionnaireType["usableNumber"],$csvFileContent["csvFileContent"][0][3],$csvFileContent["csvFileContent"][0][4],$csvFileContent["csvFileContent"][0][5],$csvFileContent["csvFileContent"][0][6]);#爲要插入度數值,
4537
			#例如:$conf["insertValue"]=array("insertValue1","insertValue2","insertValue3",...);
4537
			#例如:$conf["insertValue"]=array("insertValue1","insertValue2","insertValue3",...);
4538
		
4538
 
4539
		#可以省略的變數:
4539
		#可以省略的變數:
4540
		$conf["db"]["insertData"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
4540
		$conf["db"]["insertData"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
4541
		$db["insertData"]=db::insertData($conf["db"]["insertData"]);
4541
		$db["insertData"]=db::insertData($conf["db"]["insertData"]);
4542
		unset($conf["db"]["insertData"]);
4542
		unset($conf["db"]["insertData"]);
4543
		
4543
 
4544
		#如果 $db["insertData"]["status"] 等於 "false"
4544
		#如果 $db["insertData"]["status"] 等於 "false"
4545
		if($db["insertData"]["status"]=="false"){
4545
		if($db["insertData"]["status"]=="false"){
4546
			
4546
 
4547
			#設置執行錯誤
4547
			#設置執行錯誤
4548
			$result["status"]="false";
4548
			$result["status"]="false";
4549
			
4549
 
4550
			#設置錯誤訊息
4550
			#設置錯誤訊息
4551
			$result["error"]=$db["insertData"];
4551
			$result["error"]=$db["insertData"];
4552
			
4552
 
4553
			#回傳結果
4553
			#回傳結果
4554
			return $result;
4554
			return $result;
4555
			
4555
 
4556
			}#if end
4556
			}#if end
4557
		
4557
 
4558
		#有幾個構面就執行幾次
4558
		#有幾個構面就執行幾次
4559
		for($i=0;$i<count($csvFileContent["csvFileContent"][1]);$i++){
4559
		for($i=0;$i<count($csvFileContent["csvFileContent"][1]);$i++){
4560
		
4560
 
4561
			#如果讀到的構面是空白的就跳出迴圈
4561
			#如果讀到的構面是空白的就跳出迴圈
4562
			if($csvFileContent["csvFileContent"][1][$i]=="" || $csvFileContent["csvFileContent"][1][$i]=="�"){
4562
			if($csvFileContent["csvFileContent"][1][$i]=="" || $csvFileContent["csvFileContent"][1][$i]=="�"){
4563
				
4563
 
4564
				#跳出迴圈
4564
				#跳出迴圈
4565
				break;
4565
				break;
4566
				
4566
 
4567
				}#if end
4567
				}#if end
4568
		
4568
 
4569
			#要先檢查目標構面是否已存在,若存在則不用插入該構面.
4569
			#要先檢查目標構面是否已存在,若存在則不用插入該構面.
4570
			#函式說明:
4570
			#函式說明:
4571
			#檢查資料庫裏的資料表有無指定條件的資料
4571
			#檢查資料庫裏的資料表有無指定條件的資料
4572
			#回傳的結果:
4572
			#回傳的結果:
4573
			#$result["status"],執行是否成功,成功為"true",失敗為"false"。
4573
			#$result["status"],執行是否成功,成功為"true",失敗為"false"。
4574
			#$result["error"],錯誤訊息	
4574
			#$result["error"],錯誤訊息
4575
			#$result["founded"],是否找到資料,"true"代表有符合的資料;"false"代表沒有符合的資料.		
4575
			#$result["founded"],是否找到資料,"true"代表有符合的資料;"false"代表沒有符合的資料.
4576
			#$result["sql"],執行的sql字串.
4576
			#$result["sql"],執行的sql字串.
4577
			#必填參數:
4577
			#必填參數:
4578
			$conf["db"]["checkDataExists"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
4578
			$conf["db"]["checkDataExists"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
4579
			$conf["db"]["checkDataExists"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
4579
			$conf["db"]["checkDataExists"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
4580
			$conf["db"]["checkDataExists"]["selectedDataBaseName"]=$conf["dbName"];#爲指定的資料庫名稱,欲選擇的資料庫名稱
4580
			$conf["db"]["checkDataExists"]["selectedDataBaseName"]=$conf["dbName"];#爲指定的資料庫名稱,欲選擇的資料庫名稱
Line 4583... Line 4583...
4583
			$conf["db"]["checkDataExists"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
4583
			$conf["db"]["checkDataExists"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
4584
			$conf["db"]["checkDataExists"]["conditionTargetName"]=array("name");#用來判斷的資料表數值名稱,需爲陣列,可省略
4584
			$conf["db"]["checkDataExists"]["conditionTargetName"]=array("name");#用來判斷的資料表數值名稱,需爲陣列,可省略
4585
			$conf["db"]["checkDataExists"]["conditionTargetValue"]=array($csvFileContent["csvFileContent"][1][$i]);#用來判斷的資料表數值名稱若等於該數值,表示條件成立,需爲陣列,可省略
4585
			$conf["db"]["checkDataExists"]["conditionTargetValue"]=array($csvFileContent["csvFileContent"][1][$i]);#用來判斷的資料表數值名稱若等於該數值,表示條件成立,需爲陣列,可省略
4586
			$checkDataBaseExists=db::checkDataExists($conf["db"]["checkDataExists"]);
4586
			$checkDataBaseExists=db::checkDataExists($conf["db"]["checkDataExists"]);
4587
			unset($conf["db"]["checkDataExists"]);
4587
			unset($conf["db"]["checkDataExists"]);
4588
			
4588
 
4589
			#var_dump($checkDataBaseExists);
4589
			#var_dump($checkDataBaseExists);
4590
			
4590
 
4591
			#如果 $checkDataBaseExists["status"] 等於 "false"
4591
			#如果 $checkDataBaseExists["status"] 等於 "false"
4592
			if($checkDataBaseExists["status"]=="false"){
4592
			if($checkDataBaseExists["status"]=="false"){
4593
				
4593
 
4594
				#設置執行錯誤
4594
				#設置執行錯誤
4595
				$result["status"]="false";
4595
				$result["status"]="false";
4596
				
4596
 
4597
				#設置錯誤訊息
4597
				#設置錯誤訊息
4598
				$result["error"]=$checkDataBaseExists;
4598
				$result["error"]=$checkDataBaseExists;
4599
				
4599
 
4600
				#回傳結果
4600
				#回傳結果
4601
				return $result;
4601
				return $result;
4602
				
4602
 
4603
				}#if end
4603
				}#if end
4604
			
4604
 
4605
			#如果 $checkDataBaseExists["founded"] 等於 "true"
4605
			#如果 $checkDataBaseExists["founded"] 等於 "true"
4606
			if($checkDataBaseExists["founded"]=="true"){
4606
			if($checkDataBaseExists["founded"]=="true"){
4607
				
4607
 
4608
				#跳過該次迴圈
4608
				#跳過該次迴圈
4609
				continue;
4609
				continue;
4610
				
4610
 
4611
				}#if end
4611
				}#if end
4612
		
4612
 
4613
			#涵式說明:
4613
			#涵式說明:
4614
			#插入資料到指定的資料表裡面,插入資料完畢可以選擇是否要進行轉址。
4614
			#插入資料到指定的資料表裡面,插入資料完畢可以選擇是否要進行轉址。
4615
			#回傳的數值:	
4615
			#回傳的數值:
4616
			#$result["status"],爲查詢是否成功,若爲"true"則成功,若爲"false"則表示失敗了.
4616
			#$result["status"],爲查詢是否成功,若爲"true"則成功,若爲"false"則表示失敗了.
4617
			#$result["error"],錯誤訊息.
4617
			#$result["error"],錯誤訊息.
4618
			#$result["sql"],執行的sql語法.
4618
			#$result["sql"],執行的sql語法.
4619
			#必填參數:
4619
			#必填參數:
4620
			$conf["db"]["insertData"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
4620
			$conf["db"]["insertData"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
4621
			$conf["db"]["insertData"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
4621
			$conf["db"]["insertData"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
4622
			$conf["db"]["insertData"]["selectedDataBaseName"]=$conf["dbName"];#要選取的資料庫名稱	
4622
			$conf["db"]["insertData"]["selectedDataBaseName"]=$conf["dbName"];#要選取的資料庫名稱
4623
			$conf["db"]["insertData"]["tableName"]="perspective";#爲要插入資料的資料表名稱
4623
			$conf["db"]["insertData"]["tableName"]="perspective";#爲要插入資料的資料表名稱
4624
			$conf["db"]["insertData"]["columnName"]=array("name","description");#爲資料表的項目名稱,
4624
			$conf["db"]["insertData"]["columnName"]=array("name","description");#爲資料表的項目名稱,
4625
				#例如:$conf["columnName"]=array("columnName1","columnName2","columnName3",...);
4625
				#例如:$conf["columnName"]=array("columnName1","columnName2","columnName3",...);
4626
			$conf["db"]["insertData"]["insertValue"]=array($csvFileContent["csvFileContent"][1][$i],$csvFileContent["csvFileContent"][2][$i]);#爲要插入度數值,
4626
			$conf["db"]["insertData"]["insertValue"]=array($csvFileContent["csvFileContent"][1][$i],$csvFileContent["csvFileContent"][2][$i]);#爲要插入度數值,
4627
				#例如:$conf["insertValue"]=array("insertValue1","insertValue2","insertValue3",...);
4627
				#例如:$conf["insertValue"]=array("insertValue1","insertValue2","insertValue3",...);
4628
			#可以省略的變數:
4628
			#可以省略的變數:
4629
			$conf["db"]["insertData"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
4629
			$conf["db"]["insertData"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
4630
			$db["insertData"]=db::insertData($conf["db"]["insertData"]);
4630
			$db["insertData"]=db::insertData($conf["db"]["insertData"]);
4631
			unset($conf["db"]["insertData"]);
4631
			unset($conf["db"]["insertData"]);
4632
			
4632
 
4633
			#如果$db["insertData"]["status"]等於"false"
4633
			#如果$db["insertData"]["status"]等於"false"
4634
			if($db["insertData"]["status"]=="false"){
4634
			if($db["insertData"]["status"]=="false"){
4635
				
4635
 
4636
				#設置執行錯誤
4636
				#設置執行錯誤
4637
				$result["status"]="false";
4637
				$result["status"]="false";
4638
				
4638
 
4639
				#設置錯誤訊息
4639
				#設置錯誤訊息
4640
				$result["error"]=$db["insertData"];
4640
				$result["error"]=$db["insertData"];
4641
				
4641
 
4642
				#回傳結果
4642
				#回傳結果
4643
				return $result;
4643
				return $result;
4644
				
4644
 
4645
				}#if end
4645
				}#if end
4646
							
4646
 
4647
			}#for end
4647
			}#for end
4648
					
4648
 
4649
		#根據每個 $csvFileContent["csvFileContent"] 的數量,從 $csvFileContent["csvFileContent"][4] 開始建立每一題的題目、描述、題型、選項、必填或可省略、指標等欄位資料。
4649
		#根據每個 $csvFileContent["csvFileContent"] 的數量,從 $csvFileContent["csvFileContent"][4] 開始建立每一題的題目、描述、題型、選項、必填或可省略、指標等欄位資料。
4650
		for($i=4;$i<count($csvFileContent["csvFileContent"]);$i++){
4650
		for($i=4;$i<count($csvFileContent["csvFileContent"]);$i++){
4651
			
4651
 
4652
			#檢查是否有完全相同的題目
4652
			#檢查是否有完全相同的題目
4653
			#函式說明:
4653
			#函式說明:
4654
			#檢查資料庫裏的資料表有無指定條件的資料
4654
			#檢查資料庫裏的資料表有無指定條件的資料
4655
			#回傳的結果:
4655
			#回傳的結果:
4656
			#$result["status"],執行是否成功,成功為"true",失敗為"false"。
4656
			#$result["status"],執行是否成功,成功為"true",失敗為"false"。
4657
			#$result["error"],錯誤訊息	
4657
			#$result["error"],錯誤訊息
4658
			#$result["founded"],是否找到資料,"true"代表有符合的資料;"false"代表沒有符合的資料.		
4658
			#$result["founded"],是否找到資料,"true"代表有符合的資料;"false"代表沒有符合的資料.
4659
			#$result["sql"],執行的sql字串.
4659
			#$result["sql"],執行的sql字串.
4660
			#必填參數:
4660
			#必填參數:
4661
			$conf["db"]["checkDataExists"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
4661
			$conf["db"]["checkDataExists"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
4662
			$conf["db"]["checkDataExists"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
4662
			$conf["db"]["checkDataExists"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
4663
			$conf["db"]["checkDataExists"]["selectedDataBaseName"]=$conf["dbName"];#爲指定的資料庫名稱,欲選擇的資料庫名稱
4663
			$conf["db"]["checkDataExists"]["selectedDataBaseName"]=$conf["dbName"];#爲指定的資料庫名稱,欲選擇的資料庫名稱
Line 4665... Line 4665...
4665
			#可省略參數:
4665
			#可省略參數:
4666
			$conf["db"]["checkDataExists"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
4666
			$conf["db"]["checkDataExists"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
4667
			$conf["db"]["checkDataExists"]["conditionTargetName"]=array("typeNo","questContent","questTypeCode","selectedQuestOptionMaxCount","choiceValue","null","perspective");#用來判斷的資料表數值名稱,需爲陣列,可省略
4667
			$conf["db"]["checkDataExists"]["conditionTargetName"]=array("typeNo","questContent","questTypeCode","selectedQuestOptionMaxCount","choiceValue","null","perspective");#用來判斷的資料表數值名稱,需爲陣列,可省略
4668
			$conf["db"]["checkDataExists"]["conditionTargetValue"]=array($questionnaireType["usableNumber"],$csvFileContent["csvFileContent"][$i][0],$csvFileContent["csvFileContent"][$i][1],$csvFileContent["csvFileContent"][$i][2],$csvFileContent["csvFileContent"][$i][3],$csvFileContent["csvFileContent"][$i][4],$csvFileContent["csvFileContent"][$i][5]);#用來判斷的資料表數值名稱若等於該數值,表示條件成立,需爲陣列,可省略
4668
			$conf["db"]["checkDataExists"]["conditionTargetValue"]=array($questionnaireType["usableNumber"],$csvFileContent["csvFileContent"][$i][0],$csvFileContent["csvFileContent"][$i][1],$csvFileContent["csvFileContent"][$i][2],$csvFileContent["csvFileContent"][$i][3],$csvFileContent["csvFileContent"][$i][4],$csvFileContent["csvFileContent"][$i][5]);#用來判斷的資料表數值名稱若等於該數值,表示條件成立,需爲陣列,可省略
4669
			$checkDataBaseExists=db::checkDataExists($conf["db"]["checkDataExists"]);
4669
			$checkDataBaseExists=db::checkDataExists($conf["db"]["checkDataExists"]);
4670
			unset($conf["db"]["checkDataExists"]);	
4670
			unset($conf["db"]["checkDataExists"]);
4671
			
4671
 
4672
			#如果 $checkDataBaseExists 等於 "false"
4672
			#如果 $checkDataBaseExists 等於 "false"
4673
			if($checkDataBaseExists["status"]=="false"){
4673
			if($checkDataBaseExists["status"]=="false"){
4674
				
4674
 
4675
				#設置執行錯誤
4675
				#設置執行錯誤
4676
				$result["status"]="false";
4676
				$result["status"]="false";
4677
				
4677
 
4678
				#設置錯誤訊息
4678
				#設置錯誤訊息
4679
				$result["error"]=$checkDataBaseExists;
4679
				$result["error"]=$checkDataBaseExists;
4680
				
4680
 
4681
				#回傳結果
4681
				#回傳結果
4682
				return $result;
4682
				return $result;
4683
				
4683
 
4684
				}#if end
4684
				}#if end
4685
			
4685
 
4686
			#如果 $checkDataBaseExists["founded"] 等於 "true"
4686
			#如果 $checkDataBaseExists["founded"] 等於 "true"
4687
			if($checkDataBaseExists["founded"]=="true"){
4687
			if($checkDataBaseExists["founded"]=="true"){
4688
				
4688
 
4689
				#跳過該次迴圈
4689
				#跳過該次迴圈
4690
				continue;
4690
				continue;
4691
				
4691
 
4692
				}#if end
4692
				}#if end
4693
			
4693
 
4694
			#var_dump($questionnaireType["usableNumber"]);
4694
			#var_dump($questionnaireType["usableNumber"]);
4695
			
4695
 
4696
			#尋找可用的題號
4696
			#尋找可用的題號
4697
			#涵式說明:
4697
			#涵式說明:
4698
			#尋找特定資料庫裏特定資料表裏面特定欄位有無可用整數編號,可以指定數字的起點與終點,此函式會回傳可用的編號。
4698
			#尋找特定資料庫裏特定資料表裏面特定欄位有無可用整數編號,可以指定數字的起點與終點,此函式會回傳可用的編號。
4699
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4699
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4700
			#$result["error"],錯誤訊息陣列 
4700
			#$result["error"],錯誤訊息陣列
4701
			#$result["founded"],爲搜尋可以用的數字是否成功,"true"表示成功,"false"表示失敗.
4701
			#$result["founded"],爲搜尋可以用的數字是否成功,"true"表示成功,"false"表示失敗.
4702
			#$result["usableNumber"],爲可用的整數。
4702
			#$result["usableNumber"],爲可用的整數。
4703
			#$result["sql"],執行的sql語法.
4703
			#$result["sql"],執行的sql語法.
4704
			#必填參數
4704
			#必填參數
4705
			$conf["db"]["findUsableNumber"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
4705
			$conf["db"]["findUsableNumber"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
Line 4715... Line 4715...
4715
				#須搭配 $conf["otherConditionTargetValue"] 一起使用
4715
				#須搭配 $conf["otherConditionTargetValue"] 一起使用
4716
			$conf["db"]["findUsableNumber"]["otherConditionTargetValue"]=array($questionnaireType["usableNumber"]);#查詢欄位項目可用數值的其它條件欄位數值,爲陣列值。
4716
			$conf["db"]["findUsableNumber"]["otherConditionTargetValue"]=array($questionnaireType["usableNumber"]);#查詢欄位項目可用數值的其它條件欄位數值,爲陣列值。
4717
				#須搭配 $conf["otherConditionTargetName"] 一起使用
4717
				#須搭配 $conf["otherConditionTargetName"] 一起使用
4718
			$questFindUsableNumber=db::findUsableNumber($conf["db"]["findUsableNumber"]);
4718
			$questFindUsableNumber=db::findUsableNumber($conf["db"]["findUsableNumber"]);
4719
			unset($conf["db"]["findUsableNumber"]);
4719
			unset($conf["db"]["findUsableNumber"]);
4720
			
4720
 
4721
			#如果 $questFindUsableNumber["status"]等於"false"
4721
			#如果 $questFindUsableNumber["status"]等於"false"
4722
			if($questFindUsableNumber["status"]=="false"){
4722
			if($questFindUsableNumber["status"]=="false"){
4723
				
4723
 
4724
				#設置執行錯誤
4724
				#設置執行錯誤
4725
				$result["status"]="false";
4725
				$result["status"]="false";
4726
				
4726
 
4727
				#設置錯誤訊息
4727
				#設置錯誤訊息
4728
				$result["error"]=$checkDataBaseExists;
4728
				$result["error"]=$checkDataBaseExists;
4729
				
4729
 
4730
				#回傳結果
4730
				#回傳結果
4731
				return $result;
4731
				return $result;
4732
				
4732
 
4733
				}#if end
4733
				}#if end
4734
			
4734
 
4735
			if($questFindUsableNumber["founded"]=="false"){
4735
			if($questFindUsableNumber["founded"]=="false"){
4736
				
4736
 
4737
				#設置執行錯誤
4737
				#設置執行錯誤
4738
				$result["status"]="false";
4738
				$result["status"]="false";
4739
				
4739
 
4740
				#設置錯誤訊息
4740
				#設置錯誤訊息
4741
				$result["error"][]="儲存題號的資料表其資料筆數已達上限!";
4741
				$result["error"][]="儲存題號的資料表其資料筆數已達上限!";
4742
				
4742
 
4743
				#回傳結果
4743
				#回傳結果
4744
				return $result;
4744
				return $result;
4745
				
4745
 
4746
				}#if end
4746
				}#if end
4747
			
4747
 
4748
			#涵式說明:
4748
			#涵式說明:
4749
			#插入資料到指定的資料表裡面,插入資料完畢可以選擇是否要進行轉址。
4749
			#插入資料到指定的資料表裡面,插入資料完畢可以選擇是否要進行轉址。
4750
			#回傳的數值:	
4750
			#回傳的數值:
4751
			#$result["connectInformation"],爲連線到該mysql-server的資訊。
4751
			#$result["connectInformation"],爲連線到該mysql-server的資訊。
4752
			#$result["connectStatus"],爲查詢是否成功,若爲0則成功,若爲1則表示失敗了
4752
			#$result["connectStatus"],爲查詢是否成功,若爲0則成功,若爲1則表示失敗了
4753
			#$result["error"],錯誤訊息
4753
			#$result["error"],錯誤訊息
4754
			#必填參數:
4754
			#必填參數:
4755
			$conf["db"]["insertData"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
4755
			$conf["db"]["insertData"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
4756
			$conf["db"]["insertData"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
4756
			$conf["db"]["insertData"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
4757
			$conf["db"]["insertData"]["selectedDataBaseName"]=$conf["dbName"];#要選取的資料庫名稱	
4757
			$conf["db"]["insertData"]["selectedDataBaseName"]=$conf["dbName"];#要選取的資料庫名稱
4758
			$conf["db"]["insertData"]["tableName"]="questionnaireQuest";#爲要插入資料的資料表名稱
4758
			$conf["db"]["insertData"]["tableName"]="questionnaireQuest";#爲要插入資料的資料表名稱
4759
			$conf["db"]["insertData"]["columnName"]=array("typeNo","questNo","questContent","questTypeCode","selectedQuestOptionMaxCount","choiceValue","null","perspective","indicator");#爲資料表的項目名稱,
4759
			$conf["db"]["insertData"]["columnName"]=array("typeNo","questNo","questContent","questTypeCode","selectedQuestOptionMaxCount","choiceValue","null","perspective","indicator");#爲資料表的項目名稱,
4760
				#例如:$conf["columnName"]=array("columnName1","columnName2","columnName3",...);
4760
				#例如:$conf["columnName"]=array("columnName1","columnName2","columnName3",...);
4761
			$conf["db"]["insertData"]["insertValue"]=array($questionnaireType["usableNumber"],$questFindUsableNumber["usableNumber"],$csvFileContent["csvFileContent"][$i][0],$csvFileContent["csvFileContent"][$i][1],$csvFileContent["csvFileContent"][$i][2],$csvFileContent["csvFileContent"][$i][3],$csvFileContent["csvFileContent"][$i][4],$csvFileContent["csvFileContent"][$i][5],$csvFileContent["csvFileContent"][$i][6]);#爲要插入度數值,
4761
			$conf["db"]["insertData"]["insertValue"]=array($questionnaireType["usableNumber"],$questFindUsableNumber["usableNumber"],$csvFileContent["csvFileContent"][$i][0],$csvFileContent["csvFileContent"][$i][1],$csvFileContent["csvFileContent"][$i][2],$csvFileContent["csvFileContent"][$i][3],$csvFileContent["csvFileContent"][$i][4],$csvFileContent["csvFileContent"][$i][5],$csvFileContent["csvFileContent"][$i][6]);#爲要插入度數值,
4762
				#例如:$conf["insertValue"]=array("insertValue1","insertValue2","insertValue3",...);
4762
				#例如:$conf["insertValue"]=array("insertValue1","insertValue2","insertValue3",...);
4763
			#可以省略的變數:
4763
			#可以省略的變數:
4764
			$conf["db"]["insertData"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
4764
			$conf["db"]["insertData"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
4765
			$db["insertData"]=db::insertData($conf["db"]["insertData"]);
4765
			$db["insertData"]=db::insertData($conf["db"]["insertData"]);
4766
			unset($conf["db"]["insertData"]);
4766
			unset($conf["db"]["insertData"]);
4767
			
4767
 
4768
			#如果 $db["insertData"]["status"] 等於 "false"
4768
			#如果 $db["insertData"]["status"] 等於 "false"
4769
			if($db["insertData"]["status"]=="false"){
4769
			if($db["insertData"]["status"]=="false"){
4770
				
4770
 
4771
				#設置執行錯誤
4771
				#設置執行錯誤
4772
				$result["status"]="false";
4772
				$result["status"]="false";
4773
				
4773
 
4774
				#設置錯誤訊息
4774
				#設置錯誤訊息
4775
				$result["error"]=$db["insertData"];
4775
				$result["error"]=$db["insertData"];
4776
				
4776
 
4777
				#回傳結果
4777
				#回傳結果
4778
				return $result;
4778
				return $result;
4779
				
4779
 
4780
				}#if end
4780
				}#if end
4781
			
4781
 
4782
			}#for end
4782
			}#for end
4783
			
4783
 
4784
		#根據每個 $csvFileContent["csvFileContent"] 的數量,從 $csvFileContent["csvFileContent"][4] 開始建立每一KPI題項預測的KRI題項資料。
4784
		#根據每個 $csvFileContent["csvFileContent"] 的數量,從 $csvFileContent["csvFileContent"][4] 開始建立每一KPI題項預測的KRI題項資料。
4785
		for($i=4;$i<count($csvFileContent["csvFileContent"]);$i++){
4785
		for($i=4;$i<count($csvFileContent["csvFileContent"]);$i++){
4786
			
4786
 
4787
			#設定$j為7
4787
			#設定$j為7
4788
			$j=7;
4788
			$j=7;
4789
			
4789
 
4790
			#然後執行無窮迴圈
4790
			#然後執行無窮迴圈
4791
			while(true){
4791
			while(true){
4792
			
4792
 
4793
				#如果 $csvFileContent["csvFileContent"][i][$j] 存在
4793
				#如果 $csvFileContent["csvFileContent"][i][$j] 存在
4794
				if(isset($csvFileContent["csvFileContent"][$i][$j])){
4794
				if(isset($csvFileContent["csvFileContent"][$i][$j])){
4795
					
4795
 
4796
					#如果 $csvFileContent["csvFileContent"][i][$j] 不等於 ""
4796
					#如果 $csvFileContent["csvFileContent"][i][$j] 不等於 ""
4797
					if($csvFileContent["csvFileContent"][$i][$j]!=""){
4797
					if($csvFileContent["csvFileContent"][$i][$j]!=""){
4798
						
4798
 
4799
						#尋找該題的題號
4799
						#尋找該題的題號
4800
						#涵式說明:
4800
						#涵式說明:
4801
						#一次取得資料庫、表的資料
4801
						#一次取得資料庫、表的資料
4802
						#回傳的結果
4802
						#回傳的結果
4803
						#$result["status"],執行結果"true"為成功;"false"為執行失敗。
4803
						#$result["status"],執行結果"true"為成功;"false"為執行失敗。
Line 4828... Line 4828...
4828
						#$conf["db"]["fastGetDbData"]["numberStart"]="0";#為從第幾筆開始讀取,預設為0,代筆第一筆。
4828
						#$conf["db"]["fastGetDbData"]["numberStart"]="0";#為從第幾筆開始讀取,預設為0,代筆第一筆。
4829
						#$conf["db"]["fastGetDbData"]["numLimit"]="30";#為要取幾筆資料,可以省略,省略則表示不限制數目。
4829
						#$conf["db"]["fastGetDbData"]["numLimit"]="30";#為要取幾筆資料,可以省略,省略則表示不限制數目。
4830
						#$conf["db"]["fastGetDbData"]["groupBy"]=array("");#爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。
4830
						#$conf["db"]["fastGetDbData"]["groupBy"]=array("");#爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。
4831
						$getQuestNoResult=db::fastGetDbData($conf["db"]["fastGetDbData"]);
4831
						$getQuestNoResult=db::fastGetDbData($conf["db"]["fastGetDbData"]);
4832
						unset($conf["db"]["fastGetDbData"]);
4832
						unset($conf["db"]["fastGetDbData"]);
4833
						
4833
 
4834
						#如果 $getQuestNoResult["status"] 等於 "false"
4834
						#如果 $getQuestNoResult["status"] 等於 "false"
4835
						if($getQuestNoResult["status"]=="false"){
4835
						if($getQuestNoResult["status"]=="false"){
4836
							
4836
 
4837
							#設置執行錯誤
4837
							#設置執行錯誤
4838
							$result["status"]="false";
4838
							$result["status"]="false";
4839
							
4839
 
4840
							#設置錯誤訊息
4840
							#設置錯誤訊息
4841
							$result["error"]=$getQuestNoResult;
4841
							$result["error"]=$getQuestNoResult;
4842
							
4842
 
4843
							#回傳結果
4843
							#回傳結果
4844
							return $result;
4844
							return $result;
4845
							
4845
 
4846
							}#if end
4846
							}#if end
4847
						
4847
 
4848
						#如果 $getQuestNoResult["dataCount"] 為 0
4848
						#如果 $getQuestNoResult["dataCount"] 為 0
4849
						if($getQuestNoResult["dataCount"]==0){
4849
						if($getQuestNoResult["dataCount"]==0){
4850
							
4850
 
4851
							#設置警告訊息
4851
							#設置警告訊息
4852
							$result["warning"][]="找不名為".$csvFileContent["csvFileContent"][i][0]."的題項";
4852
							$result["warning"][]="找不名為".$csvFileContent["csvFileContent"][i][0]."的題項";
4853
							
4853
 
4854
							#代表沒表沒有該題目
4854
							#代表沒表沒有該題目
4855
							continue;
4855
							continue;
4856
							
4856
 
4857
							}#if end
4857
							}#if end
4858
						
4858
 
4859
						#依據問卷編號、題號建立指標預測關西
4859
						#依據問卷編號、題號建立指標預測關西
4860
						#涵式說明:
4860
						#涵式說明:
4861
						#插入資料到指定的資料表裡面,插入資料完畢可以選擇是否要進行轉址。
4861
						#插入資料到指定的資料表裡面,插入資料完畢可以選擇是否要進行轉址。
4862
						#回傳的數值:	
4862
						#回傳的數值:
4863
						#$result["status"],爲查詢是否成功,若爲"true"則成功,若爲"false"則表示失敗了.
4863
						#$result["status"],爲查詢是否成功,若爲"true"則成功,若爲"false"則表示失敗了.
4864
						#$result["error"],錯誤訊息.
4864
						#$result["error"],錯誤訊息.
4865
						#$result["sql"],執行的sql語法.
4865
						#$result["sql"],執行的sql語法.
4866
						#必填參數:
4866
						#必填參數:
4867
						$conf["db"]["insertData"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
4867
						$conf["db"]["insertData"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
4868
						$conf["db"]["insertData"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
4868
						$conf["db"]["insertData"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號
4869
						$conf["db"]["insertData"]["selectedDataBaseName"]=$dbName;#要選取的資料庫名稱	
4869
						$conf["db"]["insertData"]["selectedDataBaseName"]=$dbName;#要選取的資料庫名稱
4870
						$conf["db"]["insertData"]["tableName"]="KRIforecast";#爲要插入資料的資料表名稱
4870
						$conf["db"]["insertData"]["tableName"]="KRIforecast";#爲要插入資料的資料表名稱
4871
						$conf["db"]["insertData"]["columnName"]=array("questionnaireNo","questNo","questNoTarget");#爲資料表的項目名稱,
4871
						$conf["db"]["insertData"]["columnName"]=array("questionnaireNo","questNo","questNoTarget");#爲資料表的項目名稱,
4872
							#例如:$conf["columnName"]=array("columnName1","columnName2","columnName3",...);
4872
							#例如:$conf["columnName"]=array("columnName1","columnName2","columnName3",...);
4873
						$conf["db"]["insertData"]["insertValue"]=array($questionnaireType["usableNumber"],$csvFileContent["csvFileContent"][i][0],$getQuestNoResult["dataContent"]["questNo"][0]);#爲要插入度數值,
4873
						$conf["db"]["insertData"]["insertValue"]=array($questionnaireType["usableNumber"],$csvFileContent["csvFileContent"][i][0],$getQuestNoResult["dataContent"]["questNo"][0]);#爲要插入度數值,
4874
							#例如:$conf["insertValue"]=array("insertValue1","insertValue2","insertValue3",...);
4874
							#例如:$conf["insertValue"]=array("insertValue1","insertValue2","insertValue3",...);
4875
						#可以省略的變數:
4875
						#可以省略的變數:
4876
						$conf["db"]["insertData"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
4876
						$conf["db"]["insertData"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
4877
						$insertKRIforecastResult=db::insertData($conf["db"]["insertData"]);
4877
						$insertKRIforecastResult=db::insertData($conf["db"]["insertData"]);
4878
						unset($conf["db"]["insertData"]);
4878
						unset($conf["db"]["insertData"]);
4879
						
4879
 
4880
						#如果 $insertKRIforecastResult["status"] 等於 "false"
4880
						#如果 $insertKRIforecastResult["status"] 等於 "false"
4881
						if($insertKRIforecastResult["status"]=="false"){
4881
						if($insertKRIforecastResult["status"]=="false"){
4882
							
4882
 
4883
							#設置執行錯誤
4883
							#設置執行錯誤
4884
							$result["status"]="false";
4884
							$result["status"]="false";
4885
							
4885
 
4886
							#設置錯誤訊息
4886
							#設置錯誤訊息
4887
							$result["error"]=$insertKRIforecastResult;
4887
							$result["error"]=$insertKRIforecastResult;
4888
							
4888
 
4889
							#回傳結果
4889
							#回傳結果
4890
							return $result;
4890
							return $result;
4891
							
4891
 
4892
							}#if end
4892
							}#if end
4893
							
4893
 
4894
						}#if end
4894
						}#if end
4895
						
4895
 
4896
					#反之不存在要預測的KRI題項
4896
					#反之不存在要預測的KRI題項
4897
					else{
4897
					else{
4898
						
4898
 
4899
						#跳出while
4899
						#跳出while
4900
						break;
4900
						break;
4901
						
4901
 
4902
						}#else end
4902
						}#else end
4903
					
4903
 
4904
					}#if end
4904
					}#if end
4905
				
4905
 
4906
				#反之不存在要預測的KRI題項	
4906
				#反之不存在要預測的KRI題項
4907
				else{
4907
				else{
4908
					
4908
 
4909
					#跳出while
4909
					#跳出while
4910
					break;
4910
					break;
4911
					
4911
 
4912
					}#else end
4912
					}#else end
4913
			
4913
 
4914
				}#while end
4914
				}#while end
4915
			
4915
 
4916
			}#for end
4916
			}#for end
4917
		
4917
 
4918
		#如果 $conf["delFileAfterImport"]存在
4918
		#如果 $conf["delFileAfterImport"]存在
4919
		if(isset($conf["delFileAfterImport"])){
4919
		if(isset($conf["delFileAfterImport"])){
4920
			
4920
 
4921
			#如果 $conf["delFileAfterImport"] 為 "true"
4921
			#如果 $conf["delFileAfterImport"] 為 "true"
4922
			if($conf["delFileAfterImport"]=="true"){
4922
			if($conf["delFileAfterImport"]=="true"){
4923
				
4923
 
4924
				#移除要匯入的csv檔案
4924
				#移除要匯入的csv檔案
4925
				#涵式說明:
4925
				#涵式說明:
4926
				#移除檔案
4926
				#移除檔案
4927
				#回傳的結果:
4927
				#回傳的結果:
4928
				#$result["status"],"true"代表移除成功,"false"代表移除失敗.
4928
				#$result["status"],"true"代表移除成功,"false"代表移除失敗.
4929
				#必填參數:
4929
				#必填參數:
4930
				$conf["fileAccess"]["delFile"]["fileAddress"]=$conf["questionnaireSetupCsvPath"];#要移除檔案的位置
4930
				$conf["fileAccess"]["delFile"]["fileAddress"]=$conf["questionnaireSetupCsvPath"];#要移除檔案的位置
4931
				$eraseFileResult=fileAccess::delFile($conf["fileAccess"]["delFile"]);
4931
				$eraseFileResult=fileAccess::delFile($conf["fileAccess"]["delFile"]);
4932
				unset($conf["fileAccess"]["delFile"]);
4932
				unset($conf["fileAccess"]["delFile"]);
4933
				
4933
 
4934
				#如果 $eraseFileResult["status"] 等於 "false"
4934
				#如果 $eraseFileResult["status"] 等於 "false"
4935
				if($eraseFileResult["status"]=="false"){
4935
				if($eraseFileResult["status"]=="false"){
4936
					
4936
 
4937
					#設置執行錯誤
4937
					#設置執行錯誤
4938
					$result["status"]="false";
4938
					$result["status"]="false";
4939
					
4939
 
4940
					#設置錯誤訊息
4940
					#設置錯誤訊息
4941
					$result["error"][]="移除要匯入的問卷資訊csv檔失敗";
4941
					$result["error"][]="移除要匯入的問卷資訊csv檔失敗";
4942
					
4942
 
4943
					#回傳結果
4943
					#回傳結果
4944
					return $result;
4944
					return $result;
4945
					
4945
 
4946
					}#if end
4946
					}#if end
4947
				
4947
 
4948
				}#if end
4948
				}#if end
4949
			
4949
 
4950
			}#if end
4950
			}#if end
4951
			
4951
 
4952
		#值行到這邊代表正常
4952
		#值行到這邊代表正常
4953
		$result["status"]="true";
4953
		$result["status"]="true";
4954
		
4954
 
4955
		#回傳結果
4955
		#回傳結果
4956
		return $result;
4956
		return $result;
4957
		
4957
 
4958
		}#function importQuestionnaire end
4958
		}#function importQuestionnaire end
4959
		
4959
 
4960
	/*
4960
	/*
4961
	#函式說明:
4961
	#函式說明:
4962
	#將csv檔,特定欄位的內容結尾加上特定的字串,並下載處理好的csv檔案
4962
	#將csv檔,特定欄位的內容結尾加上特定的字串,並下載處理好的csv檔案
4963
	#回傳的結果:
4963
	#回傳的結果:
4964
	#$result["status"],執行是否正確,"true"代表正確,"false"代表不正常.
4964
	#$result["status"],執行是否正確,"true"代表正確,"false"代表不正常.
Line 4979... Line 4979...
4979
	#$conf["noDownload"]="true";
4979
	#$conf["noDownload"]="true";
4980
	#參考資料:
4980
	#參考資料:
4981
	#無.
4981
	#無.
4982
	#備註:
4982
	#備註:
4983
	#無.
4983
	#無.
4984
	*/ 
4984
	*/
4985
	public static function addStringInTailOnSelectedColumnFormCsv($conf){
4985
	public static function addStringInTailOnSelectedColumnFormCsv($conf){
4986
		
4986
 
4987
		#初始化要回傳的變數
4987
		#初始化要回傳的變數
4988
		$result=array();
4988
		$result=array();
4989
		
4989
 
4990
		#取得當前執行的函數名稱
4990
		#取得當前執行的函數名稱
4991
		$result["function"]=__FUNCTION__;
4991
		$result["function"]=__FUNCTION__;
4992
		
4992
 
4993
		#如果 $conf 不為陣列
4993
		#如果 $conf 不為陣列
4994
		if(gettype($conf)!="array"){
4994
		if(gettype($conf)!="array"){
4995
			
4995
 
4996
			#設置執行失敗
4996
			#設置執行失敗
4997
			$result["status"]="false";
4997
			$result["status"]="false";
4998
			
4998
 
4999
			#設置執行錯誤訊息
4999
			#設置執行錯誤訊息
5000
			$result["error"][]="\$conf變數須為陣列形態";
5000
			$result["error"][]="\$conf變數須為陣列形態";
5001
	
5001
 
5002
			#如果傳入的參數為 null
5002
			#如果傳入的參數為 null
5003
			if($conf==null){
5003
			if($conf==null){
5004
				
5004
 
5005
				#設置執行錯誤訊息
5005
				#設置執行錯誤訊息
5006
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
5006
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
5007
				
5007
 
5008
				}#if end
5008
				}#if end
5009
 
5009
 
5010
			#回傳結果
5010
			#回傳結果
5011
			return $result;
5011
			return $result;
5012
			
5012
 
5013
			}#if end
5013
			}#if end
5014
		
5014
 
5015
		#檢查參數
5015
		#檢查參數
5016
		#涵式說明:
5016
		#涵式說明:
5017
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
5017
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
5018
		#回傳的結果:
5018
		#回傳的結果:
5019
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5019
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 5022... Line 5022...
5022
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
5022
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
5023
		#必填參數:
5023
		#必填參數:
5024
		$conf["variableCheck"]["isexistMulti"]["varInput"]=$conf;#要檢查的陣列變數
5024
		$conf["variableCheck"]["isexistMulti"]["varInput"]=$conf;#要檢查的陣列變數
5025
		$conf["variableCheck"]["isexistMulti"]["variableCheck"]=array("csvFileAddress","selectedColumn","stringAdded");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
5025
		$conf["variableCheck"]["isexistMulti"]["variableCheck"]=array("csvFileAddress","selectedColumn","stringAdded");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
5026
		#可以省略的參數:
5026
		#可以省略的參數:
5027
		$conf["variableType"]=array("string","array","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double"); 
5027
		$conf["variableType"]=array("string","array","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
5028
		$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
5028
		$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
5029
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMulti"]);
5029
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMulti"]);
5030
		unset($conf["variableCheck"]["isexistMulti"]);
5030
		unset($conf["variableCheck"]["isexistMulti"]);
5031
		
5031
 
5032
		#如果檢查不通過 
5032
		#如果檢查不通過
5033
		if($checkResult["status"]=="false"){
5033
		if($checkResult["status"]=="false"){
5034
			
5034
 
5035
			#設置錯誤識別
5035
			#設置錯誤識別
5036
			$result["status"]="false";
5036
			$result["status"]="false";
5037
			
5037
 
5038
			#設置錯誤訊息
5038
			#設置錯誤訊息
5039
			$result["error"]=$checkResult;
5039
			$result["error"]=$checkResult;
5040
			
5040
 
5041
			#回傳結果
5041
			#回傳結果
5042
			return $result;
5042
			return $result;
5043
			
5043
 
5044
			}#if end
5044
			}#if end
5045
		
5045
 
5046
		#如果檢查不通過 
5046
		#如果檢查不通過
5047
		if($checkResult["passed"]=="false"){
5047
		if($checkResult["passed"]=="false"){
5048
			
5048
 
5049
			#設置錯誤識別
5049
			#設置錯誤識別
5050
			$result["status"]="false";
5050
			$result["status"]="false";
5051
			
5051
 
5052
			#設置錯誤訊息
5052
			#設置錯誤訊息
5053
			$result["error"]=$checkResult;
5053
			$result["error"]=$checkResult;
5054
			
5054
 
5055
			#回傳結果
5055
			#回傳結果
5056
			return $result;
5056
			return $result;
5057
			
5057
 
5058
			}#if end
5058
			}#if end
5059
			
5059
 
5060
		#var_dump($conf["csvFileAddress"]);
5060
		#var_dump($conf["csvFileAddress"]);
5061
			
5061
 
5062
		#讀取csv檔
5062
		#讀取csv檔
5063
		#涵式說明:
5063
		#涵式說明:
5064
		#讀取csv檔案的內容
5064
		#讀取csv檔案的內容
5065
		#回傳得結果:
5065
		#回傳得結果:
5066
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
5066
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
Line 5078... Line 5078...
5078
		#http://www.php.net/manual/en/function.str-split.php
5078
		#http://www.php.net/manual/en/function.str-split.php
5079
		#參考資料來源
5079
		#參考資料來源
5080
		#http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
5080
		#http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
5081
		$readCsv=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
5081
		$readCsv=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
5082
		unset($conf["csv"]["loadCsvFile"]);
5082
		unset($conf["csv"]["loadCsvFile"]);
5083
		
5083
 
5084
		#如果 $readCsv["status"] 等於 "false"
5084
		#如果 $readCsv["status"] 等於 "false"
5085
		if($readCsv["status"]=="false"){
5085
		if($readCsv["status"]=="false"){
5086
			
5086
 
5087
			#設置錯誤識別
5087
			#設置錯誤識別
5088
			$result["status"]="false";
5088
			$result["status"]="false";
5089
			
5089
 
5090
			#設置錯誤訊息
5090
			#設置錯誤訊息
5091
			$result["error"]=$readCsv;
5091
			$result["error"]=$readCsv;
5092
			
5092
 
5093
			#回傳結果
5093
			#回傳結果
5094
			return $result;
5094
			return $result;
5095
			
5095
 
5096
			}#if end
5096
			}#if end
5097
			
5097
 
5098
		#依據每筆資料,$i=1是因為不含標題攔
5098
		#依據每筆資料,$i=1是因為不含標題攔
5099
		for($i=1;$i<$readCsv["lineArrayCount"];$i++){
5099
		for($i=1;$i<$readCsv["lineArrayCount"];$i++){
5100
			
5100
 
5101
			#針對要處理的欄位
5101
			#針對要處理的欄位
5102
			foreach($conf["selectedColumn"] as $columnName){
5102
			foreach($conf["selectedColumn"] as $columnName){
5103
				
5103
 
5104
				#在結尾加上字串
5104
				#在結尾加上字串
5105
				$readCsv["csvFileContent"][$i][$columnName]=$readCsv["csvFileContent"][$i][$columnName].$conf["stringAdded"];
5105
				$readCsv["csvFileContent"][$i][$columnName]=$readCsv["csvFileContent"][$i][$columnName].$conf["stringAdded"];
5106
				
5106
 
5107
				}#foreache end
5107
				}#foreache end
5108
			
5108
 
5109
			}#for end
5109
			}#for end
5110
			
5110
 
5111
		#建立csv檔案
5111
		#建立csv檔案
5112
		#涵式說明:
5112
		#涵式說明:
5113
		#快速建立一個csv檔案,並且要求使用者下載。
5113
		#快速建立一個csv檔案,並且要求使用者下載。
5114
		#回傳的結果:
5114
		#回傳的結果:
5115
		#$result["status"],執行是否成功,"true"代表成功,"false"代表失敗.
5115
		#$result["status"],執行是否成功,"true"代表成功,"false"代表失敗.
Line 5117... Line 5117...
5117
		#$result["content"],輸出的csv檔案位置.
5117
		#$result["content"],輸出的csv檔案位置.
5118
		#如果有設置$conf["noDownload"]爲"true"的話,則會回傳檔案的位置
5118
		#如果有設置$conf["noDownload"]爲"true"的話,則會回傳檔案的位置
5119
		#必填參數:
5119
		#必填參數:
5120
		$conf["csv"]["create"]["dataArray"]=$readCsv["csvFileContent"];#要寫入的文字,$conf["dataArray"][$i],代表第 $i 行的內容。
5120
		$conf["csv"]["create"]["dataArray"]=$readCsv["csvFileContent"];#要寫入的文字,$conf["dataArray"][$i],代表第 $i 行的內容。
5121
		#可省略參數:
5121
		#可省略參數:
5122
		
5122
 
5123
		#如果 $conf["outputCsvFilePathAndName"] 有設置
5123
		#如果 $conf["outputCsvFilePathAndName"] 有設置
5124
		if(isset($conf["outputCsvFilePathAndName"])){
5124
		if(isset($conf["outputCsvFilePathAndName"])){
5125
			
5125
 
5126
			$conf["csv"]["create"]["csvFilePathAndName"]=$conf["outputCsvFilePathAndName"];#輸出的csv檔案路徑與名稱,預設爲系統時間,副檔名"csv"會自動加上.
5126
			$conf["csv"]["create"]["csvFilePathAndName"]=$conf["outputCsvFilePathAndName"];#輸出的csv檔案路徑與名稱,預設爲系統時間,副檔名"csv"會自動加上.
5127
			
5127
 
5128
			}#if end
5128
			}#if end
5129
		
5129
 
5130
		#如果 $conf["csv"]["create"]["noDownload"] 有設置
5130
		#如果 $conf["csv"]["create"]["noDownload"] 有設置
5131
		if(isset($conf["csv"]["create"]["noDownload"])){
5131
		if(isset($conf["csv"]["create"]["noDownload"])){
5132
			
5132
 
5133
			#如果 $conf["csv"]["create"]["noDownload"] 等於 "true"
5133
			#如果 $conf["csv"]["create"]["noDownload"] 等於 "true"
5134
			if($conf["csv"]["create"]["noDownload"]=="true"){
5134
			if($conf["csv"]["create"]["noDownload"]=="true"){
5135
				
5135
 
5136
				$conf["csv"]["create"]["noDownload"]="true";#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
5136
				$conf["csv"]["create"]["noDownload"]="true";#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
5137
				
5137
 
5138
				}#if end
5138
				}#if end
5139
			
5139
 
5140
			}#if end
5140
			}#if end
5141
		
5141
 
5142
		#參考資料來源:
5142
		#參考資料來源:
5143
		#http://php.net/manual/en/function.str-split.php
5143
		#http://php.net/manual/en/function.str-split.php
5144
		$createCsvResult=csv::create($conf["csv"]["create"]);
5144
		$createCsvResult=csv::create($conf["csv"]["create"]);
5145
		unset($conf["csv"]["create"]);
5145
		unset($conf["csv"]["create"]);
5146
			
5146
 
5147
		#var_dump($createCsvResult);
5147
		#var_dump($createCsvResult);
5148
			
5148
 
5149
		#如果 $createCsvResult["status"] 等於 "false"
5149
		#如果 $createCsvResult["status"] 等於 "false"
5150
		if($createCsvResult["status"]=="false"){
5150
		if($createCsvResult["status"]=="false"){
5151
			
5151
 
5152
			#設置錯誤識別
5152
			#設置錯誤識別
5153
			$result["status"]="false";
5153
			$result["status"]="false";
5154
			
5154
 
5155
			#設置錯誤訊息
5155
			#設置錯誤訊息
5156
			$result["error"]=$createCsvResult;
5156
			$result["error"]=$createCsvResult;
5157
			
5157
 
5158
			#回傳結果
5158
			#回傳結果
5159
			return $result;
5159
			return $result;
5160
			
5160
 
5161
			}#if end
5161
			}#if end
5162
			
5162
 
5163
		#取得輸出的csv檔案位置與名稱
5163
		#取得輸出的csv檔案位置與名稱
5164
		$result["content"]=$createCsvResult["content"];
5164
		$result["content"]=$createCsvResult["content"];
5165
			
5165
 
5166
		#設置執行正常的識別
5166
		#設置執行正常的識別
5167
		$result["status"]="true";
5167
		$result["status"]="true";
5168
		
5168
 
5169
		#回傳結果
5169
		#回傳結果
5170
		return $result;
5170
		return $result;
5171
		
5171
 
5172
		}#function addStringInTailOnSelectedColumnFormCsv end
5172
		}#function addStringInTailOnSelectedColumnFormCsv end
5173
		
5173
 
5174
	/*
5174
	/*
5175
	#函式說明:
5175
	#函式說明:
5176
	#將問卷樣本從以逗號間隔的數字編號代表的填寫內容轉換成用「;」間隔的實際填寫的內容,結尾也要一個「;」
5176
	#將問卷樣本從以逗號間隔的數字編號代表的填寫內容轉換成用「;」間隔的實際填寫的內容,結尾也要一個「;」
5177
	#也就是將傳統問卷樣本轉換成問卷系統匯入樣本時專用的格式.
5177
	#也就是將傳統問卷樣本轉換成問卷系統匯入樣本時專用的格式.
5178
	#	原始樣本格式
5178
	#	原始樣本格式
Line 5181... Line 5181...
5181
	#	3		1,3		2,4
5181
	#	3		1,3		2,4
5182
	#	各題目選項的對應
5182
	#	各題目選項的對應
5183
	#	A	台北		嘉義		臺東		高雄
5183
	#	A	台北		嘉義		臺東		高雄
5184
	#	B	~17		18~25	26~50	51~
5184
	#	B	~17		18~25	26~50	51~
5185
	#	C	金		木		水		火
5185
	#	C	金		木		水		火
5186
	#	轉換好的結果		
5186
	#	轉換好的結果
5187
	#	A				B			C
5187
	#	A				B			C
5188
	#	台北;嘉義;臺東;	18~25;51~;	水;
5188
	#	台北;嘉義;臺東;	18~25;51~;	水;
5189
	#	臺東;			~17;26~50;	木;火;
5189
	#	臺東;			~17;26~50;	木;火;
5190
	#樣本csv檔案的位置的第一列為各欄位的題目.
5190
	#樣本csv檔案的位置的第一列為各欄位的題目.
5191
	#樣本csv檔案的位置的第一列過後為每筆樣本各欄位題目對應的填答數字代號.數字代號間用半型的逗號「,」間隔.
5191
	#樣本csv檔案的位置的第一列過後為每筆樣本各欄位題目對應的填答數字代號.數字代號間用半型的逗號「,」間隔.
Line 5209... Line 5209...
5209
	#無.
5209
	#無.
5210
	#參考資料:
5210
	#參考資料:
5211
	#無.
5211
	#無.
5212
	#備註:
5212
	#備註:
5213
	#無.
5213
	#無.
5214
	*/	
5214
	*/
5215
	public static function numSampleToStr(&$conf){
5215
	public static function numSampleToStr(&$conf){
5216
		
5216
 
5217
		#設置要回傳的變數
5217
		#設置要回傳的變數
5218
		$result=array();
5218
		$result=array();
5219
		
5219
 
5220
		#取得當前執行的涵式名稱
5220
		#取得當前執行的涵式名稱
5221
		$resutl["function"]=__FUNCTION__;
5221
		$resutl["function"]=__FUNCTION__;
5222
		
5222
 
5223
		#如果 $conf 不為陣列
5223
		#如果 $conf 不為陣列
5224
		if(gettype($conf)!="array"){
5224
		if(gettype($conf)!="array"){
5225
			
5225
 
5226
			#設置執行失敗
5226
			#設置執行失敗
5227
			$result["status"]="false";
5227
			$result["status"]="false";
5228
			
5228
 
5229
			#設置執行錯誤訊息
5229
			#設置執行錯誤訊息
5230
			$result["error"][]="\$conf變數須為陣列形態";
5230
			$result["error"][]="\$conf變數須為陣列形態";
5231
 
5231
 
5232
			#如果傳入的參數為 null
5232
			#如果傳入的參數為 null
5233
			if($conf==null){
5233
			if($conf==null){
5234
				
5234
 
5235
				#設置執行錯誤訊息
5235
				#設置執行錯誤訊息
5236
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
5236
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
5237
				
5237
 
5238
				}#if end
5238
				}#if end
5239
 
5239
 
5240
			#回傳結果
5240
			#回傳結果
5241
			return $result;
5241
			return $result;
5242
			
5242
 
5243
			}#if end
5243
			}#if end
5244
		
5244
 
5245
		#檢查參數
5245
		#檢查參數
5246
		#函式說明:
5246
		#函式說明:
5247
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
5247
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
5248
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5248
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5249
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
5249
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
Line 5255... Line 5255...
5255
		#必填參數:
5255
		#必填參數:
5256
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
5256
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
5257
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
5257
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
5258
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
5258
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
5259
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("samplesCsvFile","questAndOptionCsvFile","outputFilePathAndName","fileArgu");
5259
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("samplesCsvFile","questAndOptionCsvFile","outputFilePathAndName","fileArgu");
5260
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double"); 
5260
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
5261
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string","string");
5261
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string","string");
5262
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
5262
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
5263
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
5263
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
5264
		#可以省略的參數:
5264
		#可以省略的參數:
5265
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
5265
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
5266
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
5266
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
5267
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
5267
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
5268
		#$conf["skipableVariableName"]=array();
5268
		#$conf["skipableVariableName"]=array();
5269
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
5269
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
5270
		#$conf["skipableVariableType"]=array();
5270
		#$conf["skipableVariableType"]=array();
5271
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
5271
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
5272
		#$conf["skipableVarDefaultValue"]=array("");
5272
		#$conf["skipableVarDefaultValue"]=array("");
5273
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
5273
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
5274
		#$conf["arrayCountEqualCheck"][]=array();
5274
		#$conf["arrayCountEqualCheck"][]=array();
5275
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
5275
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
5276
		unset($conf["variableCheck::checkArguments"]);
5276
		unset($conf["variableCheck::checkArguments"]);
5277
		
5277
 
5278
		#如果檢查參數失敗
5278
		#如果檢查參數失敗
5279
		if($checkResult["status"]=="false"){
5279
		if($checkResult["status"]=="false"){
5280
			
5280
 
5281
			#設置執行失敗
5281
			#設置執行失敗
5282
			$result["status"]="false";
5282
			$result["status"]="false";
5283
			
5283
 
5284
			#設置錯誤訊息
5284
			#設置錯誤訊息
5285
			$result["error"]=$checkResult;
5285
			$result["error"]=$checkResult;
5286
			
5286
 
5287
			#回傳結果
5287
			#回傳結果
5288
			return $result;
5288
			return $result;
5289
			
5289
 
5290
			}#if end
5290
			}#if end
5291
			
5291
 
5292
		#如果檢查不通過
5292
		#如果檢查不通過
5293
		if($checkResult["passed"]=="false"){
5293
		if($checkResult["passed"]=="false"){
5294
			
5294
 
5295
			#設置執行失敗
5295
			#設置執行失敗
5296
			$result["status"]="false";
5296
			$result["status"]="false";
5297
			
5297
 
5298
			#設置錯誤訊息
5298
			#設置錯誤訊息
5299
			$result["error"]=$checkResult;
5299
			$result["error"]=$checkResult;
5300
			
5300
 
5301
			#回傳結果
5301
			#回傳結果
5302
			return $result;
5302
			return $result;
5303
			
5303
 
5304
			}#if end
5304
			}#if end
5305
			
5305
 
5306
		#檢查檔案是否存在
5306
		#檢查檔案是否存在
5307
		#涵式說明:檢查多個檔案與資料夾是否存在.
5307
		#涵式說明:檢查多個檔案與資料夾是否存在.
5308
		#回傳的結果:
5308
		#回傳的結果:
5309
		#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
5309
		#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
5310
		#$result["error"],錯誤訊息陣列.
5310
		#$result["error"],錯誤訊息陣列.
Line 5319... Line 5319...
5319
		#參考資料來源:
5319
		#參考資料來源:
5320
		#http://php.net/manual/en/function.file-exists.php
5320
		#http://php.net/manual/en/function.file-exists.php
5321
		#http://php.net/manual/en/control-structures.foreach.php
5321
		#http://php.net/manual/en/control-structures.foreach.php
5322
		$checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);
5322
		$checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);
5323
		unset($conf["fileAccess::checkMultiFileExist"]);
5323
		unset($conf["fileAccess::checkMultiFileExist"]);
5324
		
5324
 
5325
		#如果檢查失敗
5325
		#如果檢查失敗
5326
		if($checkMultiFileExist["status"]=="false"){
5326
		if($checkMultiFileExist["status"]=="false"){
5327
			
5327
 
5328
			#設置執行失敗
5328
			#設置執行失敗
5329
			$result["status"]="false";
5329
			$result["status"]="false";
5330
			
5330
 
5331
			#設置錯誤訊息
5331
			#設置錯誤訊息
5332
			$result["error"]=$checkMultiFileExist;
5332
			$result["error"]=$checkMultiFileExist;
5333
			
5333
 
5334
			#回傳結果
5334
			#回傳結果
5335
			return $result;
5335
			return $result;
5336
			
5336
 
5337
			}#if end
5337
			}#if end
5338
			
5338
 
5339
		#如果檔案沒有都找到
5339
		#如果檔案沒有都找到
5340
		if($checkMultiFileExist["allExist"]=="false"){
5340
		if($checkMultiFileExist["allExist"]=="false"){
5341
			
5341
 
5342
			#設置執行失敗
5342
			#設置執行失敗
5343
			$result["status"]="false";
5343
			$result["status"]="false";
5344
			
5344
 
5345
			#設置錯誤訊息
5345
			#設置錯誤訊息
5346
			$result["error"]=$checkMultiFileExist;
5346
			$result["error"]=$checkMultiFileExist;
5347
			
5347
 
5348
			#回傳結果
5348
			#回傳結果
5349
			return $result;
5349
			return $result;
5350
			
5350
 
5351
			}#if end
5351
			}#if end
5352
						
5352
 
5353
		#讀取 $conf["questAndOptionCsvFile"] 檔案的內容
5353
		#讀取 $conf["questAndOptionCsvFile"] 檔案的內容
5354
		#涵式說明:
5354
		#涵式說明:
5355
		#讀取csv檔案的內容
5355
		#讀取csv檔案的內容
5356
		#回傳得結果:
5356
		#回傳得結果:
5357
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
5357
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
Line 5374... Line 5374...
5374
		#http://php.net/manual/en/function.fgetcsv.php
5374
		#http://php.net/manual/en/function.fgetcsv.php
5375
		#備註:
5375
		#備註:
5376
		#可用fgetcsv函數替代
5376
		#可用fgetcsv函數替代
5377
		$getQuestAndOptionCsvFile=csv::loadCsvFile($conf["csv::loadCsvFile"]);
5377
		$getQuestAndOptionCsvFile=csv::loadCsvFile($conf["csv::loadCsvFile"]);
5378
		unset($conf["csv::loadCsvFile"]);
5378
		unset($conf["csv::loadCsvFile"]);
5379
		
5379
 
5380
		#如果讀取檔案失敗
5380
		#如果讀取檔案失敗
5381
		if($getQuestAndOptionCsvFile["status"]=="false"){
5381
		if($getQuestAndOptionCsvFile["status"]=="false"){
5382
			
5382
 
5383
			#設置執行失敗
5383
			#設置執行失敗
5384
			$result["status"]="false";
5384
			$result["status"]="false";
5385
			
5385
 
5386
			#設置錯誤訊息
5386
			#設置錯誤訊息
5387
			$result["error"]=$getQuestAndOptionCsvFile;
5387
			$result["error"]=$getQuestAndOptionCsvFile;
5388
			
5388
 
5389
			#回傳結果
5389
			#回傳結果
5390
			return $result;
5390
			return $result;
5391
			
5391
 
5392
			}#if end
5392
			}#if end
5393
						
5393
 
5394
		#初始化儲存題目與選項的陣列
5394
		#初始化儲存題目與選項的陣列
5395
		$questWithOptionArray=array();	
5395
		$questWithOptionArray=array();
5396
			
5396
 
5397
		#有幾列資料就執行幾次
5397
		#有幾列資料就執行幾次
5398
		for($i=0;$i<$getQuestAndOptionCsvFile["lineArrayCount"];$i++){
5398
		for($i=0;$i<$getQuestAndOptionCsvFile["lineArrayCount"];$i++){
5399
			
5399
 
5400
			#有幾個選項欄位就執行幾次
5400
			#有幾個選項欄位就執行幾次
5401
			for($j=1;$j<count($getQuestAndOptionCsvFile["csvFileContent"][$i]);$j++){
5401
			for($j=1;$j<count($getQuestAndOptionCsvFile["csvFileContent"][$i]);$j++){
5402
				
5402
 
5403
				#用題目作為key來儲存選項
5403
				#用題目作為key來儲存選項
5404
				$questWithOptionArray[$getQuestAndOptionCsvFile["csvFileContent"][$i][0]][]=$getQuestAndOptionCsvFile["csvFileContent"][$i][$j];
5404
				$questWithOptionArray[$getQuestAndOptionCsvFile["csvFileContent"][$i][0]][]=$getQuestAndOptionCsvFile["csvFileContent"][$i][$j];
5405
				
5405
 
5406
				}#for end
5406
				}#for end
5407
							
5407
 
5408
			}#for end
5408
			}#for end
5409
					
5409
 
5410
		#讀取 $conf["samplesCsvFile"] 檔案
5410
		#讀取 $conf["samplesCsvFile"] 檔案
5411
		#涵式說明:
5411
		#涵式說明:
5412
		#讀取csv檔案的內容
5412
		#讀取csv檔案的內容
5413
		#回傳得結果:
5413
		#回傳得結果:
5414
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
5414
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
Line 5431... Line 5431...
5431
		#http://php.net/manual/en/function.fgetcsv.php
5431
		#http://php.net/manual/en/function.fgetcsv.php
5432
		#備註:
5432
		#備註:
5433
		#可用fgetcsv函數替代
5433
		#可用fgetcsv函數替代
5434
		$getSamplesCsvFile=csv::loadCsvFile($conf["csv::loadCsvFile"]);
5434
		$getSamplesCsvFile=csv::loadCsvFile($conf["csv::loadCsvFile"]);
5435
		unset($conf["csv::loadCsvFile"]);
5435
		unset($conf["csv::loadCsvFile"]);
5436
		
5436
 
5437
		#如果讀取檔案失敗
5437
		#如果讀取檔案失敗
5438
		if($getSamplesCsvFile["status"]=="false"){
5438
		if($getSamplesCsvFile["status"]=="false"){
5439
			
5439
 
5440
			#設置執行失敗
5440
			#設置執行失敗
5441
			$result["status"]="false";
5441
			$result["status"]="false";
5442
			
5442
 
5443
			#設置錯誤訊息
5443
			#設置錯誤訊息
5444
			$result["error"]=$getSamplesCsvFile;
5444
			$result["error"]=$getSamplesCsvFile;
5445
			
5445
 
5446
			#回傳結果
5446
			#回傳結果
5447
			return $result;
5447
			return $result;
5448
			
5448
 
5449
			}#if end
5449
			}#if end
5450
								
5450
 
5451
		#初始化儲存轉成實際填寫內容的陣列
5451
		#初始化儲存轉成實際填寫內容的陣列
5452
		$converedSamplesArray=array();
5452
		$converedSamplesArray=array();
5453
			
5453
 
5454
		#儲存第一列的題目
5454
		#儲存第一列的題目
5455
		$converedSamplesArray[]=$getSamplesCsvFile["csvFileContent"][0];	
5455
		$converedSamplesArray[]=$getSamplesCsvFile["csvFileContent"][0];
5456
						
5456
 
5457
		#有幾列資料就執行幾次
5457
		#有幾列資料就執行幾次
5458
		for($i=1;$i<$getSamplesCsvFile["lineArrayCount"];$i++){
5458
		for($i=1;$i<$getSamplesCsvFile["lineArrayCount"];$i++){
5459
			
5459
 
5460
			#有幾題目就執行幾次
5460
			#有幾題目就執行幾次
5461
			foreach($getSamplesCsvFile["csvFileContent"][$i] as $questName => $filledNumSpiltedByComma){
5461
			foreach($getSamplesCsvFile["csvFileContent"][$i] as $questName => $filledNumSpiltedByComma){
5462
									
5462
 
5463
				#分隔用逗號分隔的填寫編號
5463
				#分隔用逗號分隔的填寫編號
5464
				#涵式說明:
5464
				#涵式說明:
5465
				#將多個固定格式的字串分開,並回傳分開的結果
5465
				#將多個固定格式的字串分開,並回傳分開的結果
5466
				#回傳的參數:
5466
				#回傳的參數:
5467
				#$result["status"],執行成功與否,若爲0,代表執行成功,若爲1代表執失敗。
5467
				#$result["status"],執行成功與否,若爲0,代表執行成功,若爲1代表執失敗。
Line 5474... Line 5474...
5474
				#必填參數:
5474
				#必填參數:
5475
				$conf["stringProcess::spiltMutiString"]["stringIn"]=array($filledNumSpiltedByComma);#要處理的字串陣列。
5475
				$conf["stringProcess::spiltMutiString"]["stringIn"]=array($filledNumSpiltedByComma);#要處理的字串陣列。
5476
				$conf["stringProcess::spiltMutiString"]["spiltSymbol"]=",";#爲要以哪個符號作爲分割。
5476
				$conf["stringProcess::spiltMutiString"]["spiltSymbol"]=",";#爲要以哪個符號作爲分割。
5477
				$spiltNumStr=stringProcess::spiltMutiString($conf["stringProcess::spiltMutiString"]);
5477
				$spiltNumStr=stringProcess::spiltMutiString($conf["stringProcess::spiltMutiString"]);
5478
				unset($conf["stringProcess::spiltMutiString"]);
5478
				unset($conf["stringProcess::spiltMutiString"]);
5479
				
5479
 
5480
				#如果分隔字串失敗
5480
				#如果分隔字串失敗
5481
				if($spiltNumStr["status"]==1){
5481
				if($spiltNumStr["status"]==1){
5482
 
5482
 
5483
					#設置執行失敗
5483
					#設置執行失敗
5484
					$result["status"]="false";
5484
					$result["status"]="false";
5485
					
5485
 
5486
					#設置錯誤訊息
5486
					#設置錯誤訊息
5487
					$result["error"]=$spiltNumStr;
5487
					$result["error"]=$spiltNumStr;
5488
					
5488
 
5489
					#回傳結果
5489
					#回傳結果
5490
					return $result;
5490
					return $result;
5491
					
5491
 
5492
					}#if end
5492
					}#if end
5493
				
5493
 
5494
				#初始化暫存填寫的選項字串
5494
				#初始化暫存填寫的選項字串
5495
				$filledStr="";
5495
				$filledStr="";
5496
					
5496
 
5497
				#分割成幾個數字就執行幾次
5497
				#分割成幾個數字就執行幾次
5498
				for($j=0;$j<$spiltNumStr["spiltString"][0]["dataCounts"];$j++){
5498
				for($j=0;$j<$spiltNumStr["spiltString"][0]["dataCounts"];$j++){
5499
					
5499
 
5500
					#如果選項內容為0
5500
					#如果選項內容為0
5501
					if(!isset($questWithOptionArray[$questName][$spiltNumStr["spiltString"][0]["dataArray"][$j]-1])){
5501
					if(!isset($questWithOptionArray[$questName][$spiltNumStr["spiltString"][0]["dataArray"][$j]-1])){
5502
						
5502
 
5503
						#代表為空值
5503
						#代表為空值
5504
						
5504
 
5505
						#轉換為""
5505
						#轉換為""
5506
						$questWithOptionArray[$questName][$spiltNumStr["spiltString"][0]["dataArray"][$j]-1]="";
5506
						$questWithOptionArray[$questName][$spiltNumStr["spiltString"][0]["dataArray"][$j]-1]="";
5507
						
5507
 
5508
						}#if end
5508
						}#if end
5509
					
5509
 
5510
					#從數字轉換成選項內容
5510
					#從數字轉換成選項內容
5511
					$filledStr=$filledStr.$questWithOptionArray[$questName][$spiltNumStr["spiltString"][0]["dataArray"][$j]-1].";";
5511
					$filledStr=$filledStr.$questWithOptionArray[$questName][$spiltNumStr["spiltString"][0]["dataArray"][$j]-1].";";
5512
					
5512
 
5513
					}#for end
5513
					}#for end
5514
					
5514
 
5515
				#儲存該筆樣本該題填寫的內容
5515
				#儲存該筆樣本該題填寫的內容
5516
				$converedSamplesArray[$i][]=$filledStr;				
5516
				$converedSamplesArray[$i][]=$filledStr;
5517
				
5517
 
5518
				}#for end
5518
				}#for end
5519
							
5519
 
5520
			}#for end
5520
			}#for end
5521
					
5521
 
5522
		#將 $converedSamplesArray 的內容寫入到轉換好的檔案裡面
5522
		#將 $converedSamplesArray 的內容寫入到轉換好的檔案裡面
5523
		#涵式說明:
5523
		#涵式說明:
5524
		#快速建立一個csv檔案,並且要求使用者下載。
5524
		#快速建立一個csv檔案,並且要求使用者下載。
5525
		#回傳的結果:
5525
		#回傳的結果:
5526
		#$result["status"],執行是否成功,"true"代表成功,"false"代表失敗.
5526
		#$result["status"],執行是否成功,"true"代表成功,"false"代表失敗.
Line 5542... Line 5542...
5542
		#備註:
5542
		#備註:
5543
		#可用fputcsv涵式替代
5543
		#可用fputcsv涵式替代
5544
		#建議增加自動判斷是否要建立csv檔路徑所需的資料夾
5544
		#建議增加自動判斷是否要建立csv檔路徑所需的資料夾
5545
		$createCsv=csv::create($conf["csv::create"]);
5545
		$createCsv=csv::create($conf["csv::create"]);
5546
		unset($conf["csv::create"]);
5546
		unset($conf["csv::create"]);
5547
			
5547
 
5548
		#如果建立csv檔案失敗
5548
		#如果建立csv檔案失敗
5549
		if($createCsv["status"]=="false"){
5549
		if($createCsv["status"]=="false"){
5550
			
5550
 
5551
			#設置執行失敗
5551
			#設置執行失敗
5552
			$result["status"]="false";
5552
			$result["status"]="false";
5553
			
5553
 
5554
			#設置錯誤訊息
5554
			#設置錯誤訊息
5555
			$result["error"]=$createCsv;
5555
			$result["error"]=$createCsv;
5556
			
5556
 
5557
			#回傳結果
5557
			#回傳結果
5558
			return $result;
5558
			return $result;
5559
			
5559
 
5560
			}#if end	
5560
			}#if end
5561
			
5561
 
5562
		#儲存處理好的問卷樣本csv檔案位置與名稱
5562
		#儲存處理好的問卷樣本csv檔案位置與名稱
5563
		$result["content"]=$createCsv["content"];
5563
		$result["content"]=$createCsv["content"];
5564
			
5564
 
5565
		#執行到這邊代表執行正常
5565
		#執行到這邊代表執行正常
5566
		$result["status"]="true";
5566
		$result["status"]="true";
5567
		
5567
 
5568
		#回傳結果
5568
		#回傳結果
5569
		return $result;
5569
		return $result;
5570
				
5570
 
5571
		}#function numSampleToStr end
5571
		}#function numSampleToStr end
5572
		
5572
 
5573
	}#class analyse end
5573
	}#class analyse end
5574
 
5574
 
5575
?>
5575
?>