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 20... Line 20...
20
    You should have received a copy of the GNU General Public License
20
    You should have received a copy of the GNU General Public License
21
    along with QBPWCF.  If not, see <http://www.gnu.org/licenses/>.
21
    along with QBPWCF.  If not, see <http://www.gnu.org/licenses/>.
22
 
22
 
23
*/
23
*/
24
namespace qbpwcf;
24
namespace qbpwcf;
25
		
25
 
26
/*
26
/*
27
類別說明:
27
類別說明:
28
用於處理csv格式檔案的類別.
28
用於處理csv格式檔案的類別.
29
備註:
29
備註:
30
無.
30
無.
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
	#快速建立一個csv檔案,並且要求使用者下載。
100
	#快速建立一個csv檔案,並且要求使用者下載。
Line 118... Line 118...
118
	#備註:
118
	#備註:
119
	#可用fputcsv涵式替代
119
	#可用fputcsv涵式替代
120
	#建議增加自動判斷是否要建立csv檔路徑所需的資料夾
120
	#建議增加自動判斷是否要建立csv檔路徑所需的資料夾
121
	*/
121
	*/
122
	public static function create(&$conf){
122
	public static function create(&$conf){
123
			
123
 
124
		#初始化要回傳的變數
124
		#初始化要回傳的變數
125
		$result=array();
125
		$result=array();
126
		
126
 
127
		#初始化當前執行的函數名稱
127
		#初始化當前執行的函數名稱
128
		$result["funciton"]=__FUNCTION__;
128
		$result["funciton"]=__FUNCTION__;
129
		
129
 
130
		#如果 $conf 不為陣列
130
		#如果 $conf 不為陣列
131
		if(gettype($conf)!="array"){
131
		if(gettype($conf)!="array"){
132
			
132
 
133
			#設置執行失敗
133
			#設置執行失敗
134
			$result["status"]="false";
134
			$result["status"]="false";
135
			
135
 
136
			#設置執行錯誤訊息
136
			#設置執行錯誤訊息
137
			$result["error"][]="\$conf變數須為陣列形態";
137
			$result["error"][]="\$conf變數須為陣列形態";
138
 
138
 
139
			#如果傳入的參數為 null
139
			#如果傳入的參數為 null
140
			if($conf==null){
140
			if($conf==null){
141
				
141
 
142
				#設置執行錯誤訊息
142
				#設置執行錯誤訊息
143
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
143
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
144
				
144
 
145
				}#if end
145
				}#if end
146
 
146
 
147
			#回傳結果
147
			#回傳結果
148
			return $result;
148
			return $result;
149
			
149
 
150
			}#if end
150
			}#if end
151
		
151
 
152
		#檢查參數
152
		#檢查參數
153
		#函式說明:
153
		#函式說明:
154
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
154
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
155
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
155
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
156
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
156
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
Line 165... Line 165...
165
		#必填寫的參數:
165
		#必填寫的參數:
166
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
166
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
167
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
167
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
168
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
168
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
169
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("dataArray","fileArgu");
169
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("dataArray","fileArgu");
170
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double"); 
170
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
171
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","string");
171
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","string");
172
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
172
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
173
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
173
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
174
		#可以省略的參數:
174
		#可以省略的參數:
175
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
175
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
176
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
176
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
177
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
177
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
178
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("csvFilePathAndName","noDownload");
178
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("csvFilePathAndName","noDownload");
179
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
179
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
180
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
180
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
181
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
181
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
182
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,"true");
182
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,"true");
183
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
183
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
184
		#$conf["arrayCountEqualCheck"][]=array();
184
		#$conf["arrayCountEqualCheck"][]=array();
185
		#參考資料來源:
185
		#參考資料來源:
186
		#array_keys=>http://php.net/manual/en/function.array-keys.php
186
		#array_keys=>http://php.net/manual/en/function.array-keys.php
187
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
187
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
188
		unset($conf["variableCheck::checkArguments"]);
188
		unset($conf["variableCheck::checkArguments"]);
189
		
189
 
190
		#如果檢查失敗
190
		#如果檢查失敗
191
		if($checkResult["status"]=="false"){
191
		if($checkResult["status"]=="false"){
192
			
192
 
193
			#設置執行不正常
193
			#設置執行不正常
194
			$result["status"]="false";
194
			$result["status"]="false";
195
			
195
 
196
			#設置錯誤訊息
196
			#設置錯誤訊息
197
			$result["error"]=$checkResult;
197
			$result["error"]=$checkResult;
198
			
198
 
199
			#回傳結果
199
			#回傳結果
200
			return $result;
200
			return $result;
201
			
201
 
202
			}#if end			
202
			}#if end
203
		
203
 
204
		#如果檢查不通過
204
		#如果檢查不通過
205
		if($checkResult["passed"]=="false"){
205
		if($checkResult["passed"]=="false"){
206
 
206
 
207
			#設置執行不正常
207
			#設置執行不正常
208
			$result["status"]="false";
208
			$result["status"]="false";
209
			
209
 
210
			#設置錯誤訊息
210
			#設置錯誤訊息
211
			$result["error"]=$checkResult;
211
			$result["error"]=$checkResult;
212
			
212
 
213
			#回傳結果
213
			#回傳結果
214
			return $result;
214
			return $result;
215
 
215
 
216
			}#if end
216
			}#if end
217
				
217
 
218
		#如果 $conf["csvFilePathAndName"] 沒有設置
218
		#如果 $conf["csvFilePathAndName"] 沒有設置
219
		if(!isset($conf["csvFilePathAndName"])){
219
		if(!isset($conf["csvFilePathAndName"])){
220
			
220
 
221
			#預設爲系統時間
221
			#預設爲系統時間
222
			#涵式說明:
222
			#涵式說明:
223
			#回傳RFC822格式的當前時間,格式會像這種 「Wed, 25 Jan 12 19:13:15 +0800」
223
			#回傳RFC822格式的當前時間,格式會像這種 「Wed, 25 Jan 12 19:13:15 +0800」
224
			#回傳的結果:
224
			#回傳的結果:
225
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
225
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 229... Line 229...
229
			#必填的參數:
229
			#必填的參數:
230
			$conf["time"]["get_RFC822_Time"]["timeZone"]="Asia/Taipei";#時區代號,可以設定的時區列表:http://www.php.net/manual/en/timezones.php
230
			$conf["time"]["get_RFC822_Time"]["timeZone"]="Asia/Taipei";#時區代號,可以設定的時區列表:http://www.php.net/manual/en/timezones.php
231
				#ex:"Asia/Taipei"
231
				#ex:"Asia/Taipei"
232
			$systemTime=time::get_RFC822_Time($conf["time"]["get_RFC822_Time"]);
232
			$systemTime=time::get_RFC822_Time($conf["time"]["get_RFC822_Time"]);
233
			unset($conf["time"]["get_RFC822_Time"]);
233
			unset($conf["time"]["get_RFC822_Time"]);
234
			
234
 
235
			#如果取得時間失敗
235
			#如果取得時間失敗
236
			if($systemTime["status"]=="false"){
236
			if($systemTime["status"]=="false"){
237
				
237
 
238
				#設置執行不正常
238
				#設置執行不正常
239
				$result["status"]="false";
239
				$result["status"]="false";
240
				
240
 
241
				#設置錯誤訊息
241
				#設置錯誤訊息
242
				$result["error"]=$systemTime;
242
				$result["error"]=$systemTime;
243
				
243
 
244
				#回傳結果
244
				#回傳結果
245
				return $result;
245
				return $result;
246
				
246
 
247
				}#if end
247
				}#if end
248
			
248
 
249
			#設定檔案名稱
249
			#設定檔案名稱
250
			$conf["csvFilePathAndName"]=$systemTime;
250
			$conf["csvFilePathAndName"]=$systemTime;
251
			
251
 
252
			}#if end
252
			}#if end
253
		
253
 
254
		#加上副檔名csv
254
		#加上副檔名csv
255
		$conf["csvFilePathAndName"]=$conf["csvFilePathAndName"].".csv";
255
		$conf["csvFilePathAndName"]=$conf["csvFilePathAndName"].".csv";
256
		
256
 
257
		/*
257
		/*
258
		
258
 
259
		#檢查 $conf["csvFilePathAndName"] 是否含有 "/"
259
		#檢查 $conf["csvFilePathAndName"] 是否含有 "/"
260
		#函式說明:
260
		#函式說明:
261
		#檢查字串裡面有無指定的關鍵字
261
		#檢查字串裡面有無指定的關鍵字
262
		#回傳的結果:
262
		#回傳的結果:
263
		#$result["status"],"true"代表執行成功,"false"代表執行失敗。
263
		#$result["status"],"true"代表執行成功,"false"代表執行失敗。
Line 269... Line 269...
269
		$conf["search.findKeyWord"]["string"]=$conf["csvFilePathAndName"];#要被搜尋的字串內容
269
		$conf["search.findKeyWord"]["string"]=$conf["csvFilePathAndName"];#要被搜尋的字串內容
270
		#可省略的參數:
270
		#可省略的參數:
271
		#$conf["search.findKeyWord"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。
271
		#$conf["search.findKeyWord"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。
272
		$searchResult=search::findKeyWord($conf["search.findKeyWord"]);
272
		$searchResult=search::findKeyWord($conf["search.findKeyWord"]);
273
		unset($conf["search.findKeyWord"]);
273
		unset($conf["search.findKeyWord"]);
274
		
274
 
275
		#如果搜尋失敗
275
		#如果搜尋失敗
276
		if($searchResult["status"]=="false"){
276
		if($searchResult["status"]=="false"){
277
			
277
 
278
			#設置執行異常
278
			#設置執行異常
279
			$result["status"]="false";
279
			$result["status"]="false";
280
			
280
 
281
			#設置錯誤訊息
281
			#設置錯誤訊息
282
			$result["error"]=$searchResult;
282
			$result["error"]=$searchResult;
283
			
283
 
284
			#回傳結果
284
			#回傳結果
285
			return $result;
285
			return $result;
286
			
286
 
287
			}#if end
287
			}#if end
288
			
288
 
289
		#如果csv的檔案位置含有 "/" 
289
		#如果csv的檔案位置含有 "/"
290
		if($searchResult["founded"]=="true"){
290
		if($searchResult["founded"]=="true"){
291
		
291
 
292
			#用 "/" 去分割csv檔案路徑字串
292
			#用 "/" 去分割csv檔案路徑字串
293
			#涵式說明:
293
			#涵式說明:
294
			#將固定格式的字串分開,並回傳分開的結果。
294
			#將固定格式的字串分開,並回傳分開的結果。
295
			#回傳的參數:
295
			#回傳的參數:
296
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
296
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 303... Line 303...
303
			$conf["stringProcess.spiltString"]["spiltSymbol"]="/";#爲以哪個符號作爲分割
303
			$conf["stringProcess.spiltString"]["spiltSymbol"]="/";#爲以哪個符號作爲分割
304
			#備註:
304
			#備註:
305
			#建議新增如果透過" "分割後的內容含有""的元素,將其移除,並將後面有內容的元素補上,key也重新排序。
305
			#建議新增如果透過" "分割後的內容含有""的元素,將其移除,並將後面有內容的元素補上,key也重新排序。
306
			$stringSpiltResult=stringProcess::spiltString($conf["stringProcess.spiltString"]);
306
			$stringSpiltResult=stringProcess::spiltString($conf["stringProcess.spiltString"]);
307
			unset($conf["stringProcess.spiltString"]);
307
			unset($conf["stringProcess.spiltString"]);
308
			
308
 
309
			#如果分割csv的檔案位置路徑字串失敗
309
			#如果分割csv的檔案位置路徑字串失敗
310
			if($stringSpiltResult["status"]=="false"){
310
			if($stringSpiltResult["status"]=="false"){
311
				
311
 
312
				#設置執行異常
312
				#設置執行異常
313
				$result["status"]="false";
313
				$result["status"]="false";
314
				
314
 
315
				#設置錯誤訊息
315
				#設置錯誤訊息
316
				$result["error"]=$searchResult;
316
				$result["error"]=$searchResult;
317
				
317
 
318
				#回傳結果
318
				#回傳結果
319
				return $result;
319
				return $result;
320
				
320
 
321
				}#if end
321
				}#if end
322
				
322
 
323
			#初始化檔案路徑變數
323
			#初始化檔案路徑變數
324
			$filePath="";	
324
			$filePath="";
325
				
325
 
326
			#將資料夾路徑字串組合起來,剔除csv檔的名稱。
326
			#將資料夾路徑字串組合起來,剔除csv檔的名稱。
327
			for($i=0;$i<$stringSpiltResult["dataCounts"]-1;$i++){
327
			for($i=0;$i<$stringSpiltResult["dataCounts"]-1;$i++){
328
				
328
 
329
				#串聯路徑
329
				#串聯路徑
330
				$filePath=$filePath.$stringSpiltResult["dataArray"][$i];
330
				$filePath=$filePath.$stringSpiltResult["dataArray"][$i];
331
				
331
 
332
				#如果不是最後一筆
332
				#如果不是最後一筆
333
				if($i!=$stringSpiltResult["dataCounts"]-2){
333
				if($i!=$stringSpiltResult["dataCounts"]-2){
334
					
334
 
335
					#串聯路徑
335
					#串聯路徑
336
					$filePath=$filePath."/";
336
					$filePath=$filePath."/";
337
					
337
 
338
					}#if end
338
					}#if end
339
									
339
 
340
				}#for end
340
				}#for end
341
					
341
 
342
			#涵式說明:
342
			#涵式說明:
343
			#建立資料夾,若要建立的資料夾所屬路徑不存在,則會自動嘗試建立,建立後的資料夾也可指定權限.
343
			#建立資料夾,若要建立的資料夾所屬路徑不存在,則會自動嘗試建立,建立後的資料夾也可指定權限.
344
			#回傳的結果:
344
			#回傳的結果:
345
			#$result["status"],"true"爲建立成功,"false"爲建立失敗.
345
			#$result["status"],"true"爲建立成功,"false"爲建立失敗.
346
			#$result["error"],錯誤訊息陣列
346
			#$result["error"],錯誤訊息陣列
Line 350... Line 350...
350
			$conf["fileAccess.createFolderAfterCheck"]["fileArgu"]=$conf["fileArgu"];
350
			$conf["fileAccess.createFolderAfterCheck"]["fileArgu"]=$conf["fileArgu"];
351
			#可省略的參數:
351
			#可省略的參數:
352
			#$conf["fileAccess.createFolderAfterCheck"]["dirPermission"]="";#新建資料夾的權限設定,預設爲0770,亦即擁有者,同群組者可以讀,寫,存取,其他人僅能存取.
352
			#$conf["fileAccess.createFolderAfterCheck"]["dirPermission"]="";#新建資料夾的權限設定,預設爲0770,亦即擁有者,同群組者可以讀,寫,存取,其他人僅能存取.
353
			$pathCreateResult=fileAccess::createFolderAfterCheck($conf["fileAccess.createFolderAfterCheck"]);
353
			$pathCreateResult=fileAccess::createFolderAfterCheck($conf["fileAccess.createFolderAfterCheck"]);
354
			unset($conf["fileAccess.createFolderAfterCheck"]);
354
			unset($conf["fileAccess.createFolderAfterCheck"]);
355
			
355
 
356
			#如果 建立資料夾路徑失敗
356
			#如果 建立資料夾路徑失敗
357
			if($pathCreateResult["status"]=="false"){
357
			if($pathCreateResult["status"]=="false"){
358
				
358
 
359
				#設置執行異常
359
				#設置執行異常
360
				$result["status"]="false";
360
				$result["status"]="false";
361
				
361
 
362
				#設置錯誤訊息
362
				#設置錯誤訊息
363
				$result["error"]=$pathCreateResult;
363
				$result["error"]=$pathCreateResult;
364
				
364
 
365
				#回傳結果
365
				#回傳結果
366
				return $result;
366
				return $result;
367
				
367
 
368
				}#if end
368
				}#if end
369
			
369
 
370
			}#if end
370
			}#if end
371
		
371
 
372
		*/
372
		*/
373
		
373
 
374
		#var_dump($conf["csvFilePathAndName"]);
374
		#var_dump($conf["csvFilePathAndName"]);
375
		
375
 
376
		#建立csv檔案
376
		#建立csv檔案
377
		#涵式說明:
377
		#涵式說明:
378
		#將字串寫入到檔案
378
		#將字串寫入到檔案
379
		#回傳的結果:
379
		#回傳的結果:
380
		#$result["status"],true表示檔案寫入成功,false表示檔案寫入失敗.
380
		#$result["status"],true表示檔案寫入成功,false表示檔案寫入失敗.
Line 386... Line 386...
386
		$conf["fileAccess"]["writeTextIntoFile"]["fileArgu"]=$conf["fileArgu"];
386
		$conf["fileAccess"]["writeTextIntoFile"]["fileArgu"]=$conf["fileArgu"];
387
		#可省略的參數:
387
		#可省略的參數:
388
		#$conf["writeMethod"]="a";#爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
388
		#$conf["writeMethod"]="a";#爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
389
		$createStatus=fileAccess::writeTextIntoFile($conf["fileAccess"]["writeTextIntoFile"]);
389
		$createStatus=fileAccess::writeTextIntoFile($conf["fileAccess"]["writeTextIntoFile"]);
390
		unset($conf["fileAccess"]["writeTextIntoFile"]);
390
		unset($conf["fileAccess"]["writeTextIntoFile"]);
391
					
391
 
392
		#如果 $createStatus["status"] 等於 "false"
392
		#如果 $createStatus["status"] 等於 "false"
393
		if($createStatus["status"]=="false"){
393
		if($createStatus["status"]=="false"){
394
			
394
 
395
			#設置錯誤識別
395
			#設置錯誤識別
396
			$result["status"]="false";
396
			$result["status"]="false";
397
			
397
 
398
			#設置錯誤訊息
398
			#設置錯誤訊息
399
			$result["error"]=$createStatus;
399
			$result["error"]=$createStatus;
400
			
400
 
401
			#回傳結果
401
			#回傳結果
402
			return $result;
402
			return $result;
403
			
403
 
404
			}#if end
404
			}#if end
405
			
405
 
406
		#依據陣列組數寫入置檔案中
406
		#依據陣列組數寫入置檔案中
407
		for($i=0;$i<count($conf["dataArray"]);$i++){
407
		for($i=0;$i<count($conf["dataArray"]);$i++){
408
			
408
 
409
			#如果該列資料不存在
409
			#如果該列資料不存在
410
			if(!isset($conf["dataArray"][$i])){
410
			if(!isset($conf["dataArray"][$i])){
411
				
411
 
412
				#跳到下個迴圈
412
				#跳到下個迴圈
413
				continue;
413
				continue;
414
				
414
 
415
				}#if end
415
				}#if end
416
			
416
 
417
			#取得該筆資料有幾個欄位
417
			#取得該筆資料有幾個欄位
418
			$thisDataCotainElementsCount=count($conf["dataArray"][$i]);
418
			$thisDataCotainElementsCount=count($conf["dataArray"][$i]);
419
 
419
 
420
			#計數用的變數
420
			#計數用的變數
421
			$temp=0;
421
			$temp=0;
Line 444... Line 444...
444
					#如果第一個元素爲「"」
444
					#如果第一個元素爲「"」
445
					if($strArray[0]=="\""){
445
					if($strArray[0]=="\""){
446
 
446
 
447
						#如果元素數量大於2
447
						#如果元素數量大於2
448
						if($strArrayElementCount>2){
448
						if($strArrayElementCount>2){
449
							
449
 
450
							#如果最後一個元素爲「"」
450
							#如果最後一個元素爲「"」
451
							if($strArray[$strArrayElementCount-1]=="\""){
451
							if($strArray[$strArrayElementCount-1]=="\""){
452
 
452
 
453
								#寫入欄位時不用加上「"」
453
								#寫入欄位時不用加上「"」
454
								$conf["fileAccess"]["writeTextIntoFile"]["inputString"]=$value.",";#爲要寫入到裏面的內容,若要每筆資料寫入後換行,則可以在字串內容後面加上 \r\n 即可。
454
								$conf["fileAccess"]["writeTextIntoFile"]["inputString"]=$value.",";#爲要寫入到裏面的內容,若要每筆資料寫入後換行,則可以在字串內容後面加上 \r\n 即可。
Line 470... Line 470...
470
 
470
 
471
						}#if end
471
						}#if end
472
 
472
 
473
					#反之第一個元素不爲「"」
473
					#反之第一個元素不爲「"」
474
					else{
474
					else{
475
					
475
 
476
						#檢查變數內容
476
						#檢查變數內容
477
						#var_dump($value);
477
						#var_dump($value);
478
 
478
 
479
						$conf["fileAccess"]["writeTextIntoFile"]["inputString"]="\"".$value."\",";#爲要寫入到裏面的內容,若要每筆資料寫入後換行,則可以在字串內容後面加上 \r\n 即可。
479
						$conf["fileAccess"]["writeTextIntoFile"]["inputString"]="\"".$value."\",";#爲要寫入到裏面的內容,若要每筆資料寫入後換行,則可以在字串內容後面加上 \r\n 即可。
480
 
480
 
Line 484... Line 484...
484
					$conf["fileAccess"]["writeTextIntoFile"]["fileArgu"]=$conf["fileArgu"];
484
					$conf["fileAccess"]["writeTextIntoFile"]["fileArgu"]=$conf["fileArgu"];
485
					#可省略的參數:
485
					#可省略的參數:
486
					$conf["fileAccess"]["writeTextIntoFile"]["writeMethod"]="a";#爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
486
					$conf["fileAccess"]["writeTextIntoFile"]["writeMethod"]="a";#爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
487
					$createStatus=fileAccess::writeTextIntoFile($conf["fileAccess"]["writeTextIntoFile"]);
487
					$createStatus=fileAccess::writeTextIntoFile($conf["fileAccess"]["writeTextIntoFile"]);
488
					unset($conf["fileAccess"]["writeTextIntoFile"]);
488
					unset($conf["fileAccess"]["writeTextIntoFile"]);
489
					
489
 
490
					#計數用的變數加1
490
					#計數用的變數加1
491
					$temp++;
491
					$temp++;
492
 
492
 
493
					#如果 $createStatus["status"] 等於 "false"
493
					#如果 $createStatus["status"] 等於 "false"
494
					if($createStatus["status"]=="false"){
494
					if($createStatus["status"]=="false"){
495
						
495
 
496
						#設置錯誤識別
496
						#設置錯誤識別
497
						$result["status"]="false";
497
						$result["status"]="false";
498
						
498
 
499
						#設置錯誤訊息
499
						#設置錯誤訊息
500
						$result["error"]=$createStatus;
500
						$result["error"]=$createStatus;
501
						
501
 
502
						#回傳結果
502
						#回傳結果
503
						return $result;
503
						return $result;
504
						
504
 
505
						}#if end
505
						}#if end
506
 
506
 
507
					}#if end
507
					}#if end
508
 
508
 
509
				#反之爲最後一個元素
509
				#反之爲最後一個元素
510
				else{
510
				else{
511
					
511
 
512
					#檢測$value的開頭與結尾是否有皆爲「"」
512
					#檢測$value的開頭與結尾是否有皆爲「"」
513
 
513
 
514
					#將每欄的內容一個個字分開
514
					#將每欄的內容一個個字分開
515
					$strArray=str_split($value,1);
515
					$strArray=str_split($value,1);
516
 
516
 
Line 520... Line 520...
520
					#如果第一個元素爲「"」
520
					#如果第一個元素爲「"」
521
					if($strArray[0]=="\""){
521
					if($strArray[0]=="\""){
522
 
522
 
523
						#如果元素數量大於2
523
						#如果元素數量大於2
524
						if($strArrayElementCount>2){
524
						if($strArrayElementCount>2){
525
							
525
 
526
							#如果倒數第2個元素爲「"」
526
							#如果倒數第2個元素爲「"」
527
							if($strArray[$strArrayElementCount-1]=="\""){
527
							if($strArray[$strArrayElementCount-1]=="\""){
528
 
528
 
529
								#寫入欄位時不用加上「"」
529
								#寫入欄位時不用加上「"」
530
								$conf["fileAccess"]["writeTextIntoFile"]["inputString"]=$value."\r\n";#爲要寫入到裏面的內容,若要每筆資料寫入後換行,則可以在字串內容後面加上 \r\n 即可。
530
								$conf["fileAccess"]["writeTextIntoFile"]["inputString"]=$value."\r\n";#爲要寫入到裏面的內容,若要每筆資料寫入後換行,則可以在字串內容後面加上 \r\n 即可。
Line 561... Line 561...
561
					$conf["fileAccess"]["writeTextIntoFile"]["fileArgu"]=$conf["fileArgu"];
561
					$conf["fileAccess"]["writeTextIntoFile"]["fileArgu"]=$conf["fileArgu"];
562
					#可省略的參數:
562
					#可省略的參數:
563
					$conf["fileAccess"]["writeTextIntoFile"]["writeMethod"]="a";#爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
563
					$conf["fileAccess"]["writeTextIntoFile"]["writeMethod"]="a";#爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
564
					$createStatus=fileAccess::writeTextIntoFile($conf["fileAccess"]["writeTextIntoFile"]);
564
					$createStatus=fileAccess::writeTextIntoFile($conf["fileAccess"]["writeTextIntoFile"]);
565
					unset($conf["fileAccess"]["writeTextIntoFile"]);
565
					unset($conf["fileAccess"]["writeTextIntoFile"]);
566
					
566
 
567
					#如果 $createStatus["status"] 等於 "false"
567
					#如果 $createStatus["status"] 等於 "false"
568
					if($createStatus["status"]=="false"){
568
					if($createStatus["status"]=="false"){
569
						
569
 
570
						#設置錯誤識別
570
						#設置錯誤識別
571
						$result["status"]="false";
571
						$result["status"]="false";
572
						
572
 
573
						#設置錯誤訊息
573
						#設置錯誤訊息
574
						$result["error"]=$createStatus;
574
						$result["error"]=$createStatus;
575
						
575
 
576
						#回傳結果
576
						#回傳結果
577
						return $result;
577
						return $result;
578
						
578
 
579
						}#if end
579
						}#if end
580
							
580
 
581
					}#else end
581
					}#else end
582
 
582
 
583
				}#foreach end
583
				}#foreach end
584
				
584
 
585
			#函數說明:
585
			#函數說明:
586
			#延長php的執行時間,每呼叫一次會初始化執行時間爲0,然後設定下次可以執行多久.
586
			#延長php的執行時間,每呼叫一次會初始化執行時間爲0,然後設定下次可以執行多久.
587
			#回傳結果:
587
			#回傳結果:
588
			#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
588
			#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
589
			#$result["error"],錯誤訊息陣列.
589
			#$result["error"],錯誤訊息陣列.
Line 593... Line 593...
593
			$conf["config::delayRunTimeExectionMax"]["sec"]=300;
593
			$conf["config::delayRunTimeExectionMax"]["sec"]=300;
594
			#參考資料:
594
			#參考資料:
595
			#http://php.net/manual/en/function.set-time-limit.php
595
			#http://php.net/manual/en/function.set-time-limit.php
596
			$delayRunTimeExectionMax=config::delayRunTimeExectionMax($conf["config::delayRunTimeExectionMax"]);
596
			$delayRunTimeExectionMax=config::delayRunTimeExectionMax($conf["config::delayRunTimeExectionMax"]);
597
			unset($conf["config::delayRunTimeExectionMax"]);
597
			unset($conf["config::delayRunTimeExectionMax"]);
598
			
598
 
599
			#如果執行失敗
599
			#如果執行失敗
600
			if($delayRunTimeExectionMax["status"]==="false"){
600
			if($delayRunTimeExectionMax["status"]==="false"){
601
			
601
 
602
				#設定類別圖繪製失敗
602
				#設定類別圖繪製失敗
603
				$result["status"]="false";			
603
				$result["status"]="false";
604
							
604
 
605
				#設定該檔案的類別圖繪製失敗提示
605
				#設定該檔案的類別圖繪製失敗提示
606
				$result["error"]=$delayRunTimeExectionMax;
606
				$result["error"]=$delayRunTimeExectionMax;
607
				
607
 
608
				#回傳結果
608
				#回傳結果
609
				return $result;
609
				return $result;
610
			
610
 
611
				}#if end
611
				}#if end
612
 
612
 
613
			}#for end
613
			}#for end
614
			
614
 
615
		#修改產生好的csv檔權限
615
		#修改產生好的csv檔權限
616
		$chmodResult=chmod($conf["csvFilePathAndName"],0775);
616
		$chmodResult=chmod($conf["csvFilePathAndName"],0775);
617
		
617
 
618
		#如果修改檔案權限失敗
618
		#如果修改檔案權限失敗
619
		if($chmodResult==FALSE){
619
		if($chmodResult==FALSE){
620
			
620
 
621
			#設置錯誤識別
621
			#設置錯誤識別
622
			$result["status"]="false";
622
			$result["status"]="false";
623
			
623
 
624
			#設置錯誤訊息
624
			#設置錯誤訊息
625
			$result["error"][]="檔案「".$conf["csvFilePathAndName"]."」的權限變更失敗";
625
			$result["error"][]="檔案「".$conf["csvFilePathAndName"]."」的權限變更失敗";
626
			
626
 
627
			#回傳結果
627
			#回傳結果
628
			return $result;
628
			return $result;
629
			
629
 
630
			}#if end
630
			}#if end
631
		
631
 
632
		#如果 $conf["noDownload"] 有設置
632
		#如果 $conf["noDownload"] 有設置
633
		if(isset($conf["noDownload"])){
633
		if(isset($conf["noDownload"])){
634
			
634
 
635
			#如果 $conf["noDownload"] 等於 true
635
			#如果 $conf["noDownload"] 等於 true
636
			if($conf["noDownload"]=="true"){
636
			if($conf["noDownload"]=="true"){
637
				
637
 
638
				#設置執行正常
638
				#設置執行正常
639
				$result["status"]="true";
639
				$result["status"]="true";
640
				
640
 
641
				#設置檔案的位置
641
				#設置檔案的位置
642
				$result["content"]=$conf["csvFilePathAndName"];
642
				$result["content"]=$conf["csvFilePathAndName"];
643
				
643
 
644
				#回傳結果
644
				#回傳結果
645
				return $result;
645
				return $result;
646
				
646
 
647
				}#if end
647
				}#if end
648
			
648
 
649
			}#if end
649
			}#if end
650
 
650
 
651
		#要求使用者下載該檔案
651
		#要求使用者下載該檔案
652
		#說明:
652
		#說明:
653
		#要求使用者Download某檔案
653
		#要求使用者Download某檔案
Line 663... Line 663...
663
		#$conf["header"]["askUserDownloadFile"]["mimeType"]="application/octet-stream";s
663
		#$conf["header"]["askUserDownloadFile"]["mimeType"]="application/octet-stream";s
664
		#參考資料來源:
664
		#參考資料來源:
665
		#http:#php.net/manual/en/function.readfile.php
665
		#http:#php.net/manual/en/function.readfile.php
666
		$askUserDownloadFile=header::askUserDownloadFile($conf["header"]["askUserDownloadFile"]);
666
		$askUserDownloadFile=header::askUserDownloadFile($conf["header"]["askUserDownloadFile"]);
667
		unset($conf["header"]["askUserDownloadFile"]);
667
		unset($conf["header"]["askUserDownloadFile"]);
668
		
668
 
669
		#如果要求下載檔案失敗
669
		#如果要求下載檔案失敗
670
		if($askUserDownloadFile["status"]=="false"){
670
		if($askUserDownloadFile["status"]=="false"){
671
			
671
 
672
			#設置執行正常
672
			#設置執行正常
673
			$result["status"]="false";
673
			$result["status"]="false";
674
			
674
 
675
			#設置檔案的位置
675
			#設置檔案的位置
676
			$result["content"]=$askUserDownloadFile;
676
			$result["content"]=$askUserDownloadFile;
677
			
677
 
678
			#回傳結果
678
			#回傳結果
679
			return $result;
679
			return $result;
680
			
680
 
681
			}#if end
681
			}#if end
682
		
682
 
683
		#設置執行正常
683
		#設置執行正常
684
		$result["status"]="true";
684
		$result["status"]="true";
685
		
685
 
686
		#設置檔案的位置
686
		#設置檔案的位置
687
		$result["content"]=$conf["csvFilePathAndName"];
687
		$result["content"]=$conf["csvFilePathAndName"];
688
		
688
 
689
		#回傳結果
689
		#回傳結果
690
		return $result;
690
		return $result;
691
		
691
 
692
		}#function create end
692
		}#function create end
693
	
693
 
694
	/*
694
	/*
695
	#函式說明:
695
	#函式說明:
696
	#讀取csv檔案的內容
696
	#讀取csv檔案的內容
697
	#回傳結果:
697
	#回傳結果:
698
	#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
698
	#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
Line 717... Line 717...
717
	#http://php.net/manual/en/function.fgetcsv.php
717
	#http://php.net/manual/en/function.fgetcsv.php
718
	#備註:
718
	#備註:
719
	#可用fgetcsv函數替代
719
	#可用fgetcsv函數替代
720
	*/
720
	*/
721
	public static function loadCsvFile(&$conf){
721
	public static function loadCsvFile(&$conf){
722
		
722
 
723
		#初始化要回傳的內容
723
		#初始化要回傳的內容
724
		$result=array();
724
		$result=array();
725
		
725
 
726
		#取得當前執行的函數名稱
726
		#取得當前執行的函數名稱
727
		$result["function"]=__FUNCTION__;
727
		$result["function"]=__FUNCTION__;
728
				
728
 
729
		#如果 $conf 不為陣列
729
		#如果 $conf 不為陣列
730
		if(gettype($conf)!="array"){
730
		if(gettype($conf)!="array"){
731
			
731
 
732
			#設置執行失敗
732
			#設置執行失敗
733
			$result["status"]="false";
733
			$result["status"]="false";
734
			
734
 
735
			#設置執行錯誤訊息
735
			#設置執行錯誤訊息
736
			$result["error"][]="\$conf變數須為陣列形態";
736
			$result["error"][]="\$conf變數須為陣列形態";
737
 
737
 
738
			#如果傳入的參數為 null
738
			#如果傳入的參數為 null
739
			if($conf==null){
739
			if($conf==null){
740
				
740
 
741
				#設置執行錯誤訊息
741
				#設置執行錯誤訊息
742
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
742
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
743
				
743
 
744
				}#if end
744
				}#if end
745
 
745
 
746
			#回傳結果
746
			#回傳結果
747
			return $result;
747
			return $result;
748
			
748
 
749
			}#if end		
749
			}#if end
750
			
750
 
751
		#檢查參數
751
		#檢查參數
752
		#函式說明:
752
		#函式說明:
753
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
753
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
754
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
754
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
755
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
755
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
Line 764... Line 764...
764
		#必填寫的參數:
764
		#必填寫的參數:
765
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
765
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
766
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
766
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
767
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
767
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
768
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("csvFilePositionAndName","fileArgu");
768
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("csvFilePositionAndName","fileArgu");
769
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double"); 
769
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
770
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
770
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
771
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
771
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
772
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
772
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
773
		#可以省略的參數:
773
		#可以省略的參數:
774
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
774
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
775
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
775
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
776
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
776
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
777
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("firstLineVarName");
777
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("firstLineVarName");
778
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
778
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
779
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
779
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
780
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
780
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
781
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true");
781
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true");
782
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
782
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
783
		#$conf["arrayCountEqualCheck"][]=array();
783
		#$conf["arrayCountEqualCheck"][]=array();
784
		#參考資料來源:
784
		#參考資料來源:
785
		#array_keys=>http://php.net/manual/en/function.array-keys.php
785
		#array_keys=>http://php.net/manual/en/function.array-keys.php
786
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
786
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
787
		unset($conf["variableCheck::checkArguments"]);
787
		unset($conf["variableCheck::checkArguments"]);
788
		
788
 
789
		#如果檢查失敗
789
		#如果檢查失敗
790
		if($checkResult["status"]=="false"){
790
		if($checkResult["status"]=="false"){
791
			
791
 
792
			#設置執行不正常
792
			#設置執行不正常
793
			$result["status"]="false";
793
			$result["status"]="false";
794
			
794
 
795
			#設置錯誤訊息
795
			#設置錯誤訊息
796
			$result["error"]=$checkResult;
796
			$result["error"]=$checkResult;
797
			
797
 
798
			#回傳結果
798
			#回傳結果
799
			return $result;
799
			return $result;
800
			
800
 
801
			}#if end			
801
			}#if end
802
		
802
 
803
		#如果檢查不通過
803
		#如果檢查不通過
804
		if($checkResult["passed"]=="false"){
804
		if($checkResult["passed"]=="false"){
805
 
805
 
806
			#設置執行不正常
806
			#設置執行不正常
807
			$result["status"]="false";
807
			$result["status"]="false";
808
			
808
 
809
			#設置錯誤訊息
809
			#設置錯誤訊息
810
			$result["error"]=$checkResult;
810
			$result["error"]=$checkResult;
811
			
811
 
812
			#回傳結果
812
			#回傳結果
813
			return $result;
813
			return $result;
814
 
814
 
815
			}#if end	
815
			}#if end
816
								
816
 
817
		#依據行號取得檔案所有內容
817
		#依據行號取得檔案所有內容
818
		#函式說明:
818
		#函式說明:
819
		#依據行號分隔抓取檔案的內容,結果會回傳一個陣列
819
		#依據行號分隔抓取檔案的內容,結果會回傳一個陣列
820
		#回傳的變數說明:
820
		#回傳的變數說明:
821
		#$result["fileContent"],爲檔案的內容陣列
821
		#$result["fileContent"],爲檔案的內容陣列
Line 827... Line 827...
827
		#參考資料:
827
		#參考資料:
828
		#file():取得檔案內容的行數
828
		#file():取得檔案內容的行數
829
		#http:#php.net/manual/en/function.file.php
829
		#http:#php.net/manual/en/function.file.php
830
		$fileContentArray=fileAccess::getFileContent($conf["fileAccess"]["getFileContent"]);
830
		$fileContentArray=fileAccess::getFileContent($conf["fileAccess"]["getFileContent"]);
831
		unset($conf["fileAccess"]["getFileContent"]);
831
		unset($conf["fileAccess"]["getFileContent"]);
832
							
832
 
833
		#如果 $fileContentArray["status"] 等於 "false" 則代表檔案內容抓取失敗
833
		#如果 $fileContentArray["status"] 等於 "false" 則代表檔案內容抓取失敗
834
		if($fileContentArray["status"]=="false"){
834
		if($fileContentArray["status"]=="false"){
835
 
835
 
836
			#設定執行錯誤識別
836
			#設定執行錯誤識別
837
			$result["status"]="false";
837
			$result["status"]="false";
838
	
838
 
839
			#記錄錯誤訊息
839
			#記錄錯誤訊息
840
			$result["error"]=$fileContentArray;
840
			$result["error"]=$fileContentArray;
841
 
841
 
842
			#回傳檔案內容
842
			#回傳檔案內容
843
			return $result;
843
			return $result;
844
 
844
 
845
			}#if end
845
			}#if end
846
		
846
 
847
		#初始化csv檔案逐行內容的陣列
847
		#初始化csv檔案逐行內容的陣列
848
		$result["lineArray"]=$fileContentArray["fileContent"];
848
		$result["lineArray"]=$fileContentArray["fileContent"];
849
		
849
 
850
		#取得內容有幾列
850
		#取得內容有幾列
851
		$result["lineArrayCount"]=$fileContentArray["lineCount"];
851
		$result["lineArrayCount"]=$fileContentArray["lineCount"];
852
		
852
 
853
		#初始化第一行的內容
853
		#初始化第一行的內容
854
		$firstLineContent=array();
854
		$firstLineContent=array();
855
 
855
 
856
		#有幾行就執行幾次
856
		#有幾行就執行幾次
857
		for($i=0;$i<$result["lineArrayCount"];$i++){
857
		for($i=0;$i<$result["lineArrayCount"];$i++){
Line 859... Line 859...
859
			#將每行的文字一個個字分開
859
			#將每行的文字一個個字分開
860
			$lineContentArray=str_split($result["lineArray"][$i],1);
860
			$lineContentArray=str_split($result["lineArray"][$i],1);
861
 
861
 
862
			#取得陣列裏面字的長度
862
			#取得陣列裏面字的長度
863
			$wordCount=count($lineContentArray);
863
			$wordCount=count($lineContentArray);
864
			
864
 
865
			#初始化開始紀錄欄位內容的識別
865
			#初始化開始紀錄欄位內容的識別
866
			#"false"代表目前沒有進行紀錄
866
			#"false"代表目前沒有進行紀錄
867
			#"true"代表目前在進行紀錄
867
			#"true"代表目前在進行紀錄
868
			$wordStart="false";
868
			$wordStart="false";
869
			
869
 
870
			#初始化用於確保單欄裡面可以多逗號的雙引號「"」
870
			#初始化用於確保單欄裡面可以多逗號的雙引號「"」
871
			#"false"代表目前在 「"」 外
871
			#"false"代表目前在 「"」 外
872
			#"true"代表目前在 「"」內
872
			#"true"代表目前在 「"」內
873
			$testDelimiter="false";
873
			$testDelimiter="false";
874
			
874
 
875
			#初始化欄位內容的陣列
875
			#初始化欄位內容的陣列
876
			$wordArray=array();
876
			$wordArray=array();
877
			
877
 
878
			#暫存形成字的字串
878
			#暫存形成字的字串
879
			$wordClip="";
879
			$wordClip="";
880
			
880
 
881
			#有幾個字就執行幾次
881
			#有幾個字就執行幾次
882
			for($j=0;$j<$wordCount;$j++){
882
			for($j=0;$j<$wordCount;$j++){
883
 
883
 
884
				#如果 
884
				#如果
885
				#$wordStart 為 "false"
885
				#$wordStart 為 "false"
886
				#$testDelimiter 為 "false" 且
886
				#$testDelimiter 為 "false" 且
887
				#$lineContentArray[$j] 等於 「"」
887
				#$lineContentArray[$j] 等於 「"」
888
				if($wordStart=="false" && $testDelimiter=="false" && $lineContentArray[$j]=="\"" ){
888
				if($wordStart=="false" && $testDelimiter=="false" && $lineContentArray[$j]=="\"" ){
889
											
889
 
890
					#進入""範圍裡面
890
					#進入""範圍裡面
891
					$testDelimiter="true";
891
					$testDelimiter="true";
892
					
892
 
893
					#開始讀取欄位內容
893
					#開始讀取欄位內容
894
					$wordStart="true";
894
					$wordStart="true";
895
					
895
 
896
					#跳到下一個迴圈
896
					#跳到下一個迴圈
897
					continue;
897
					continue;
898
					
898
 
899
					}#if end
899
					}#if end
900
					
900
 
901
				#如果 $testDelimiter 為 "true" 且
901
				#如果 $testDelimiter 為 "true" 且
902
				#$wordStart 為 "true" 且
902
				#$wordStart 為 "true" 且
903
				#$lineContentArray[$j] 等於 「"」
903
				#$lineContentArray[$j] 等於 「"」
904
				if($wordStart=="true" && $testDelimiter=="true" && $lineContentArray[$j]=="\"" ){
904
				if($wordStart=="true" && $testDelimiter=="true" && $lineContentArray[$j]=="\"" ){
905
					
905
 
906
					#echo "<br>離開\"";
906
					#echo "<br>離開\"";
907
					
907
 
908
					#離開""範圍裡面
908
					#離開""範圍裡面
909
					$testDelimiter="false";
909
					$testDelimiter="false";
910
					
910
 
911
					#停止讀取欄位內容
911
					#停止讀取欄位內容
912
					$wordStart="false";
912
					$wordStart="false";
913
					
913
 
914
					#如果是最後一個字
914
					#如果是最後一個字
915
					if($j==$wordCount-1){
915
					if($j==$wordCount-1){
916
												
916
 
917
						#將取得的片段內容儲存成一個欄位
917
						#將取得的片段內容儲存成一個欄位
918
						$wordArray[]=$wordClip;
918
						$wordArray[]=$wordClip;
919
 
919
 
920
						#將片段的內容初始化
920
						#將片段的內容初始化
921
						$wordClip="";
921
						$wordClip="";
922
						
922
 
923
						#跳到下一個迴圈
923
						#跳到下一個迴圈
924
						continue;
924
						continue;
925
						
925
 
926
						}#if end
926
						}#if end
927
						
927
 
928
					#跳到下一個迴圈
928
					#跳到下一個迴圈
929
					continue;
929
					continue;
930
					
930
 
931
					}#if end
931
					}#if end
932
 
932
 
933
				#如果
933
				#如果
934
				#$wordStart 等於 "true"  或 $testDelimiter 等於 "true"
934
				#$wordStart 等於 "true"  或 $testDelimiter 等於 "true"
935
				#或
935
				#或
Line 937... Line 937...
937
				if(
937
				if(
938
					($wordStart=="true" || $testDelimiter=="true")
938
					($wordStart=="true" || $testDelimiter=="true")
939
					||
939
					||
940
					($wordStart=="false" && $testDelimiter=="false" && $lineContentArray[$j]!=",")
940
					($wordStart=="false" && $testDelimiter=="false" && $lineContentArray[$j]!=",")
941
					){
941
					){
942
					
942
 
943
					#暫存形成字的字串
943
					#暫存形成字的字串
944
					$wordClip=$wordClip.$lineContentArray[$j];
944
					$wordClip=$wordClip.$lineContentArray[$j];
945
					
945
 
946
					#echo "<br>讀取".$lineContentArray[$j];
946
					#echo "<br>讀取".$lineContentArray[$j];
947
					#echo "<br>暫存欄位內容變成".$wordClip;
947
					#echo "<br>暫存欄位內容變成".$wordClip;
948
					
948
 
949
					#如果是最後一個字
949
					#如果是最後一個字
950
					if($j==$wordCount-1){
950
					if($j==$wordCount-1){
951
												
951
 
952
						#將取得的片段內容儲存成一個欄位
952
						#將取得的片段內容儲存成一個欄位
953
						$wordArray[]=$wordClip;
953
						$wordArray[]=$wordClip;
954
 
954
 
955
						#將片段的內容初始化
955
						#將片段的內容初始化
956
						$wordClip="";
956
						$wordClip="";
957
						
957
 
958
						#將欄位開始設為 "false"
958
						#將欄位開始設為 "false"
959
						$wordStart="false";
959
						$wordStart="false";
960
						
960
 
961
						#跳到下一個迴圈
961
						#跳到下一個迴圈
962
						continue;
962
						continue;
963
						
963
 
964
						}#if end
964
						}#if end
965
						
965
 
966
					#跳到下一個迴圈
966
					#跳到下一個迴圈
967
					continue;
967
					continue;
968
					
968
 
969
					}#if end
969
					}#if end
970
					 
970
 
971
				#如果 $lineContentArray[$j]等於 「,」 且 $testDelimiter 等於 "false"
971
				#如果 $lineContentArray[$j]等於 「,」 且 $testDelimiter 等於 "false"
972
				if($lineContentArray[$j]=="," && $testDelimiter=="false" ){
972
				if($lineContentArray[$j]=="," && $testDelimiter=="false" ){
973
					
973
 
974
					#將取得的片段內容儲存成一個欄位
974
					#將取得的片段內容儲存成一個欄位
975
					$wordArray[]=$wordClip;
975
					$wordArray[]=$wordClip;
976
 
976
 
977
					#echo "<br>遇到逗號,欄位內容讀取完畢";
977
					#echo "<br>遇到逗號,欄位內容讀取完畢";
978
 
978
 
979
					#將片段的內容初始化
979
					#將片段的內容初始化
980
					$wordClip="";
980
					$wordClip="";
981
					
981
 
982
					#將欄位開始設為 "false"
982
					#將欄位開始設為 "false"
983
					$wordStart="false";
983
					$wordStart="false";
984
																
-
 
-
 
984
 
985
					#跳到下一個迴圈
985
					#跳到下一個迴圈
986
					continue;
986
					continue;
987
					
987
 
988
					}#if end
988
					}#if end
989
					
989
 
990
				}#for end
990
				}#for end
991
 
991
 
992
			#如果目前讀到的是第一行
992
			#如果目前讀到的是第一行
993
			if($i==0){
993
			if($i==0){
994
 
994
 
Line 997... Line 997...
997
 
997
 
998
				}#if end
998
				}#if end
999
 
999
 
1000
			#如果 $conf["firstLineVarName"] 等於 true
1000
			#如果 $conf["firstLineVarName"] 等於 true
1001
			if($conf["firstLineVarName"]=="true"){
1001
			if($conf["firstLineVarName"]=="true"){
1002
			
1002
 
1003
				#將 $wordArray 的 key 更改爲第一行的欄位內容
1003
				#將 $wordArray 的 key 更改爲第一行的欄位內容
1004
				#函式說明:
1004
				#函式說明:
1005
				#將陣列的key重新排序,然後回傳,以便後續存取。
1005
				#將陣列的key重新排序,然後回傳,以便後續存取。
1006
				#也可以指定key的內容,但一定要跟元素數量相同。
1006
				#也可以指定key的內容,但一定要跟元素數量相同。
1007
				#若指定了key的名稱,則 $result["dataContent"] 會變成 $result["dataContent"]["指定的key名稱"]
1007
				#若指定了key的名稱,則 $result["dataContent"] 會變成 $result["dataContent"]["指定的key名稱"]
Line 1017... Line 1017...
1017
				$temp=arrays::createV2($conf["arrays"]["createV2"]);
1017
				$temp=arrays::createV2($conf["arrays"]["createV2"]);
1018
				unset($conf["arrays"]["createV2"]);
1018
				unset($conf["arrays"]["createV2"]);
1019
 
1019
 
1020
				#如果建立陣列失敗
1020
				#如果建立陣列失敗
1021
				if($temp["status"]=="false"){
1021
				if($temp["status"]=="false"){
1022
					
1022
 
1023
					#設置執行錯誤
1023
					#設置執行錯誤
1024
					$result["status"]="false";
1024
					$result["status"]="false";
1025
					
1025
 
1026
					#設置錯誤訊息
1026
					#設置錯誤訊息
1027
					$result["error"]=$temp;
1027
					$result["error"]=$temp;
1028
					
1028
 
1029
					#回傳結果
1029
					#回傳結果
1030
					return $result;
1030
					return $result;
1031
					
1031
 
1032
					}#if end
1032
					}#if end
1033
 
1033
 
1034
				#取得更改後的結果 
1034
				#取得更改後的結果
1035
				$wordArray=$temp["dataContent"];
1035
				$wordArray=$temp["dataContent"];
1036
 
1036
 
1037
				}#if end				
1037
				}#if end
1038
 
1038
 
1039
			#取得該行的各欄位內容
1039
			#取得該行的各欄位內容
1040
			$result["csvFileContent"][$i]=$wordArray;
1040
			$result["csvFileContent"][$i]=$wordArray;
1041
			
1041
 
1042
			}#for end
1042
			}#for end
1043
			
1043
 
1044
		#執行到這邊代表執行成功
1044
		#執行到這邊代表執行成功
1045
		$result["status"]="true";
1045
		$result["status"]="true";
1046
			
1046
 
1047
		#回傳csv檔案的內容
1047
		#回傳csv檔案的內容
1048
		return $result;
1048
		return $result;
1049
		
1049
 
1050
		}#function loadCsvFile end
1050
		}#function loadCsvFile end
1051
		
1051
 
1052
	/*
1052
	/*
1053
	#函式說明:
1053
	#函式說明:
1054
	#讀取csv檔案的內容
1054
	#讀取csv檔案的內容
1055
	#回傳結果:
1055
	#回傳結果:
1056
	#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
1056
	#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
Line 1073... Line 1073...
1073
	#http://php.net/manual/en/function.fgetcsv.php
1073
	#http://php.net/manual/en/function.fgetcsv.php
1074
	#備註:
1074
	#備註:
1075
	#無.
1075
	#無.
1076
	*/
1076
	*/
1077
	public static function read(&$conf){
1077
	public static function read(&$conf){
1078
		
1078
 
1079
		#初始化要回傳的內容
1079
		#初始化要回傳的內容
1080
		$result=array();
1080
		$result=array();
1081
		
1081
 
1082
		#設置當前函數名稱
1082
		#設置當前函數名稱
1083
		$result["function"]=__FUNCTION__;
1083
		$result["function"]=__FUNCTION__;
1084
				
1084
 
1085
		#如果 $conf 不為陣列
1085
		#如果 $conf 不為陣列
1086
		if(gettype($conf)!="array"){
1086
		if(gettype($conf)!="array"){
1087
			
1087
 
1088
			#設置執行失敗
1088
			#設置執行失敗
1089
			$result["status"]="false";
1089
			$result["status"]="false";
1090
			
1090
 
1091
			#設置執行錯誤訊息
1091
			#設置執行錯誤訊息
1092
			$result["error"][]="\$conf變數須為陣列形態";
1092
			$result["error"][]="\$conf變數須為陣列形態";
1093
 
1093
 
1094
			#如果傳入的參數為 null
1094
			#如果傳入的參數為 null
1095
			if($conf==null){
1095
			if($conf==null){
1096
				
1096
 
1097
				#設置執行錯誤訊息
1097
				#設置執行錯誤訊息
1098
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1098
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1099
				
1099
 
1100
				}#if end
1100
				}#if end
1101
 
1101
 
1102
			#回傳結果
1102
			#回傳結果
1103
			return $result;
1103
			return $result;
1104
			
1104
 
1105
			}#if end		
1105
			}#if end
1106
			
1106
 
1107
		#檢查參數
1107
		#檢查參數
1108
		#檢查參數
1108
		#檢查參數
1109
		#函式說明:
1109
		#函式說明:
1110
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1110
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1111
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1111
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 1121... Line 1121...
1121
		#必填寫的參數:
1121
		#必填寫的參數:
1122
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1122
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1123
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1123
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1124
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1124
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1125
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("csvFilePositionAndName","fileArgu");
1125
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("csvFilePositionAndName","fileArgu");
1126
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double"); 
1126
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
1127
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
1127
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
1128
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1128
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1129
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1129
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1130
		#可以省略的參數:
1130
		#可以省略的參數:
1131
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
1131
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
1132
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
1132
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
1133
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1133
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1134
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("firstLineVarName");
1134
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("firstLineVarName");
1135
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
1135
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
1136
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
1136
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
1137
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1137
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1138
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true");
1138
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true");
1139
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1139
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1140
		#$conf["arrayCountEqualCheck"][]=array();
1140
		#$conf["arrayCountEqualCheck"][]=array();
1141
		#參考資料來源:
1141
		#參考資料來源:
1142
		#array_keys=>http://php.net/manual/en/function.array-keys.php
1142
		#array_keys=>http://php.net/manual/en/function.array-keys.php
1143
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1143
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1144
		unset($conf["variableCheck::checkArguments"]);
1144
		unset($conf["variableCheck::checkArguments"]);
1145
		
1145
 
1146
		#如果檢查失敗
1146
		#如果檢查失敗
1147
		if($checkResult["status"]=="false"){
1147
		if($checkResult["status"]=="false"){
1148
			
1148
 
1149
			#設置執行不正常
1149
			#設置執行不正常
1150
			$result["status"]="false";
1150
			$result["status"]="false";
1151
			
1151
 
1152
			#設置錯誤訊息
1152
			#設置錯誤訊息
1153
			$result["error"]=$checkResult;
1153
			$result["error"]=$checkResult;
1154
			
1154
 
1155
			#回傳結果
1155
			#回傳結果
1156
			return $result;
1156
			return $result;
1157
			
1157
 
1158
			}#if end			
1158
			}#if end
1159
		
1159
 
1160
		#如果檢查不通過
1160
		#如果檢查不通過
1161
		if($checkResult["passed"]=="false"){
1161
		if($checkResult["passed"]=="false"){
1162
 
1162
 
1163
			#設置執行不正常
1163
			#設置執行不正常
1164
			$result["status"]="false";
1164
			$result["status"]="false";
1165
			
1165
 
1166
			#設置錯誤訊息
1166
			#設置錯誤訊息
1167
			$result["error"]=$checkResult;
1167
			$result["error"]=$checkResult;
1168
			
1168
 
1169
			#回傳結果
1169
			#回傳結果
1170
			return $result;
1170
			return $result;
1171
 
1171
 
1172
			}#if end	
1172
			}#if end
1173
			
1173
 
1174
		#初始化用來儲存csv內容的變數
1174
		#初始化用來儲存csv內容的變數
1175
		$csvFileContent=array();
1175
		$csvFileContent=array();
1176
		
1176
 
1177
		#如果開啓 $conf["csvFilePositionAndName"] 成功
1177
		#如果開啓 $conf["csvFilePositionAndName"] 成功
1178
		if(($handle=fopen($conf["csvFilePositionAndName"],"r"))!==FALSE){
1178
		if(($handle=fopen($conf["csvFilePositionAndName"],"r"))!==FALSE){
1179
			
1179
 
1180
			#如果檔案還有內容
1180
			#如果檔案還有內容
1181
			while(($data=fgetcsv($handle))!==FALSE){
1181
			while(($data=fgetcsv($handle))!==FALSE){
1182
			
1182
 
1183
				#儲存該行內容
1183
				#儲存該行內容
1184
				$csvFileContent[]=$data;
1184
				$csvFileContent[]=$data;
1185
				
1185
 
1186
				}#while end
1186
				}#while end
1187
						
1187
 
1188
			}#if end
1188
			}#if end
1189
			
1189
 
1190
		#反之
1190
		#反之
1191
		else{
1191
		else{
1192
			
1192
 
1193
			#設置錯誤識別
1193
			#設置錯誤識別
1194
			$result["status"]="false";
1194
			$result["status"]="false";
1195
			
1195
 
1196
			#設置錯訊息
1196
			#設置錯訊息
1197
			$resukt["error"][]="檔案".$conf["csvFilePositionAndName"]."開啓失敗!";
1197
			$resukt["error"][]="檔案".$conf["csvFilePositionAndName"]."開啓失敗!";
1198
			
1198
 
1199
			#回傳結果
1199
			#回傳結果
1200
			return $result;
1200
			return $result;
1201
			
1201
 
1202
			}#else end
1202
			}#else end
1203
			
1203
 
1204
		#初始化欄位標題陣列
1204
		#初始化欄位標題陣列
1205
		$title=array();	
1205
		$title=array();
1206
			
1206
 
1207
		#如果 $conf["firstLineVarName"] 爲 "true"
1207
		#如果 $conf["firstLineVarName"] 爲 "true"
1208
		if($conf["firstLineVarName"]=="true"){
1208
		if($conf["firstLineVarName"]=="true"){
1209
						
1209
 
1210
			#迴圈,執行欄位數次數
1210
			#迴圈,執行欄位數次數
1211
			for($i=0;$i<count($csvFileContent[0]);$i++){
1211
			for($i=0;$i<count($csvFileContent[0]);$i++){
1212
				
1212
 
1213
				#取得欄位名稱
1213
				#取得欄位名稱
1214
				$title[]=$csvFileContent[0][$i];
1214
				$title[]=$csvFileContent[0][$i];
1215
				
1215
 
1216
				}#for end
1216
				}#for end
1217
				
1217
 
1218
			#取得欄位名稱
1218
			#取得欄位名稱
1219
			$result["title"]=$title;
1219
			$result["title"]=$title;
1220
				
1220
 
1221
			#用欄位名稱作爲key來儲存每列內容
1221
			#用欄位名稱作爲key來儲存每列內容
1222
			#迴圈,執行列數次數
1222
			#迴圈,執行列數次數
1223
			for($i=1;$i<count($csvFileContent);$i++){
1223
			for($i=1;$i<count($csvFileContent);$i++){
1224
				
1224
 
1225
				#迴圈,執行欄位數目次
1225
				#迴圈,執行欄位數目次
1226
				for($j=0;$j<count($csvFileContent[0]);$j++){
1226
				for($j=0;$j<count($csvFileContent[0]);$j++){
1227
					
1227
 
1228
					#用數字作爲key來儲存內容
1228
					#用數字作爲key來儲存內容
1229
					$result["content"][$j][$i-1]=$csvFileContent[$i][$j];
1229
					$result["content"][$j][$i-1]=$csvFileContent[$i][$j];
1230
					
1230
 
1231
					#用欄位名稱作爲key來儲存內容
1231
					#用欄位名稱作爲key來儲存內容
1232
					$result["content"][$title[$j]][$i-1]=$csvFileContent[$i][$j];
1232
					$result["content"][$title[$j]][$i-1]=$csvFileContent[$i][$j];
1233
					
1233
 
1234
					}#for end
1234
					}#for end
1235
					
1235
 
1236
				}#for end
1236
				}#for end
1237
			
1237
 
1238
			}#if end
1238
			}#if end
1239
		
1239
 
1240
		#反之直接儲存 fgetcsv 取得的內容
1240
		#反之直接儲存 fgetcsv 取得的內容
1241
		else{
1241
		else{
1242
		
1242
 
1243
			#取得csv檔案內容
1243
			#取得csv檔案內容
1244
			$result["content"]=$csvFileContent;
1244
			$result["content"]=$csvFileContent;
1245
			
1245
 
1246
			}#else end
1246
			}#else end
1247
			
1247
 
1248
		#取得資料筆數
1248
		#取得資料筆數
1249
		$result["lineCount"]=count($result["content"])/2;
1249
		$result["lineCount"]=count($result["content"])/2;
1250
			
1250
 
1251
		#設置執行正常
1251
		#設置執行正常
1252
		$result["status"]="true";
1252
		$result["status"]="true";
1253
		
1253
 
1254
		#回傳結果
1254
		#回傳結果
1255
		return $result;
1255
		return $result;
1256
		
1256
 
1257
		}#funciton read end
1257
		}#funciton read end
1258
		
1258
 
1259
	/*
1259
	/*
1260
	#函式說明:
1260
	#函式說明:
1261
	#計屬csv檔裡面的關鍵字,亦即內容剛好等於關鍵字的次數.
1261
	#計屬csv檔裡面的關鍵字,亦即內容剛好等於關鍵字的次數.
1262
	#回傳的結果:
1262
	#回傳的結果:
1263
	#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
1263
	#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
Line 1269... Line 1269...
1269
	$conf["csvFileAddress"]="";
1269
	$conf["csvFileAddress"]="";
1270
	#$conf["keyWord"],字串,要尋找的關鍵字.
1270
	#$conf["keyWord"],字串,要尋找的關鍵字.
1271
	$conf["keyWord"]="";
1271
	$conf["keyWord"]="";
1272
	#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
1272
	#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
1273
	$conf["fileArgu"]=__FILE__;
1273
	$conf["fileArgu"]=__FILE__;
1274
	#可省略參數: 
1274
	#可省略參數:
1275
	#$conf["firstLineVarName"],字串,第一行是否爲變數名稱(各個欄位的名稱),"true"表示第一列不在搜尋範圍裡,預設為"true".
1275
	#$conf["firstLineVarName"],字串,第一行是否爲變數名稱(各個欄位的名稱),"true"表示第一列不在搜尋範圍裡,預設為"true".
1276
	#$conf["firstLineVarName"]="true";
1276
	#$conf["firstLineVarName"]="true";
1277
	#參考資料:
1277
	#參考資料:
1278
	#無.
1278
	#無.
1279
	#備註:
1279
	#備註:
1280
	#無.
1280
	#無.
1281
	*/
1281
	*/
1282
	public static function keyWordsCount(&$conf){
1282
	public static function keyWordsCount(&$conf){
1283
		
1283
 
1284
		#初始化要回傳的變數
1284
		#初始化要回傳的變數
1285
		$reuslt=array();
1285
		$reuslt=array();
1286
		
1286
 
1287
		#取得當前執行的函數名稱
1287
		#取得當前執行的函數名稱
1288
		$result["function"]=__FUNCTION__;
1288
		$result["function"]=__FUNCTION__;
1289
		
1289
 
1290
		#如果 $conf 不為陣列
1290
		#如果 $conf 不為陣列
1291
		if(gettype($conf)!="array"){
1291
		if(gettype($conf)!="array"){
1292
			
1292
 
1293
			#設置執行失敗
1293
			#設置執行失敗
1294
			$result["status"]="false";
1294
			$result["status"]="false";
1295
			
1295
 
1296
			#設置執行錯誤訊息
1296
			#設置執行錯誤訊息
1297
			$result["error"][]="\$conf變數須為陣列形態";
1297
			$result["error"][]="\$conf變數須為陣列形態";
1298
 
1298
 
1299
			#如果傳入的參數為 null
1299
			#如果傳入的參數為 null
1300
			if($conf==null){
1300
			if($conf==null){
1301
				
1301
 
1302
				#設置執行錯誤訊息
1302
				#設置執行錯誤訊息
1303
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1303
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1304
				
1304
 
1305
				}#if end
1305
				}#if end
1306
 
1306
 
1307
			#回傳結果
1307
			#回傳結果
1308
			return $result;
1308
			return $result;
1309
			
1309
 
1310
			}#if end
1310
			}#if end
1311
		
1311
 
1312
		#初始化計數關鍵字的變數
1312
		#初始化計數關鍵字的變數
1313
		$result["content"]=0;
1313
		$result["content"]=0;
1314
		
1314
 
1315
		#檢查參數
1315
		#檢查參數
1316
		#函式說明:
1316
		#函式說明:
1317
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1317
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1318
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1318
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1319
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
1319
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
Line 1328... Line 1328...
1328
		#必填寫的參數:
1328
		#必填寫的參數:
1329
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1329
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1330
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1330
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1331
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1331
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1332
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("csvFileAddress","keyWord","fileArgu");
1332
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("csvFileAddress","keyWord","fileArgu");
1333
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double"); 
1333
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
1334
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string");
1334
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string");
1335
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1335
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1336
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1336
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1337
		#可以省略的參數:
1337
		#可以省略的參數:
1338
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
1338
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
1339
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
1339
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
1340
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1340
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1341
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("firstLineVarName");
1341
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("firstLineVarName");
1342
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
1342
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
1343
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
1343
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
1344
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1344
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1345
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true");
1345
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true");
1346
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1346
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1347
		#$conf["arrayCountEqualCheck"][]=array();
1347
		#$conf["arrayCountEqualCheck"][]=array();
1348
		#參考資料來源:
1348
		#參考資料來源:
1349
		#array_keys=>http://php.net/manual/en/function.array-keys.php
1349
		#array_keys=>http://php.net/manual/en/function.array-keys.php
1350
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1350
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1351
		unset($conf["variableCheck::checkArguments"]);
1351
		unset($conf["variableCheck::checkArguments"]);
1352
		
1352
 
1353
		#如果檢查失敗
1353
		#如果檢查失敗
1354
		if($checkResult["status"]=="false"){
1354
		if($checkResult["status"]=="false"){
1355
			
1355
 
1356
			#設置執行不正常
1356
			#設置執行不正常
1357
			$result["status"]="false";
1357
			$result["status"]="false";
1358
			
1358
 
1359
			#設置錯誤訊息
1359
			#設置錯誤訊息
1360
			$result["error"]=$checkResult;
1360
			$result["error"]=$checkResult;
1361
			
1361
 
1362
			#回傳結果
1362
			#回傳結果
1363
			return $result;
1363
			return $result;
1364
			
1364
 
1365
			}#if end			
1365
			}#if end
1366
		
1366
 
1367
		#如果檢查不通過
1367
		#如果檢查不通過
1368
		if($checkResult["passed"]=="false"){
1368
		if($checkResult["passed"]=="false"){
1369
 
1369
 
1370
			#設置執行不正常
1370
			#設置執行不正常
1371
			$result["status"]="false";
1371
			$result["status"]="false";
1372
			
1372
 
1373
			#設置錯誤訊息
1373
			#設置錯誤訊息
1374
			$result["error"]=$checkResult;
1374
			$result["error"]=$checkResult;
1375
			
1375
 
1376
			#回傳結果
1376
			#回傳結果
1377
			return $result;
1377
			return $result;
1378
 
1378
 
1379
			}#if end
1379
			}#if end
1380
			
1380
 
1381
		#讀座位表csv檔
1381
		#讀座位表csv檔
1382
		#涵式說明:
1382
		#涵式說明:
1383
		#讀取csv檔案的內容
1383
		#讀取csv檔案的內容
1384
		#回傳得結果:
1384
		#回傳得結果:
1385
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
1385
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
Line 1400... Line 1400...
1400
		#http://www.php.net/manual/en/function.str-split.php
1400
		#http://www.php.net/manual/en/function.str-split.php
1401
		#參考資料來源
1401
		#參考資料來源
1402
		#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)
1402
		#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)
1403
		$seatMap=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
1403
		$seatMap=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
1404
		unset($conf["csv"]["loadCsvFile"]);
1404
		unset($conf["csv"]["loadCsvFile"]);
1405
					
1405
 
1406
		#如果 $seatMap["status"] 等於 "false"
1406
		#如果 $seatMap["status"] 等於 "false"
1407
		if($seatMap["status"]=="false"){
1407
		if($seatMap["status"]=="false"){
1408
 
1408
 
1409
			#設置執行錯誤
1409
			#設置執行錯誤
1410
			$result["status"]="true";
1410
			$result["status"]="true";
1411
			
1411
 
1412
			#設置錯誤訊息
1412
			#設置錯誤訊息
1413
			$result["error"]=$seatMap;
1413
			$result["error"]=$seatMap;
1414
			
1414
 
1415
			#回傳結果
1415
			#回傳結果
1416
			return $result;
1416
			return $result;
1417
			
1417
 
1418
			}#if end
1418
			}#if end
1419
			
1419
 
1420
		#根據csv檔裡每列內容
1420
		#根據csv檔裡每列內容
1421
		foreach($seatMap["csvFileContent"] as $row){
1421
		foreach($seatMap["csvFileContent"] as $row){
1422
			
1422
 
1423
			#根據每列的欄元素
1423
			#根據每列的欄元素
1424
			foreach($row as $col){					
1424
			foreach($row as $col){
1425
				
1425
 
1426
				#如果欄位內容等於關鍵字
1426
				#如果欄位內容等於關鍵字
1427
				if($col==$conf["keyWord"]){
1427
				if($col==$conf["keyWord"]){
1428
					
1428
 
1429
					#$result["content"]加1
1429
					#$result["content"]加1
1430
					$result["content"]++;
1430
					$result["content"]++;
1431
					
1431
 
1432
					}#if end
1432
					}#if end
1433
				
1433
 
1434
				}#foreach end
1434
				}#foreach end
1435
			
1435
 
1436
			}#foreach end
1436
			}#foreach end
1437
			
1437
 
1438
		#執行到這邊代表執行正常
1438
		#執行到這邊代表執行正常
1439
		$result["status"]="true";
1439
		$result["status"]="true";
1440
		
1440
 
1441
		#回傳結果
1441
		#回傳結果
1442
		return $result;
1442
		return $result;
1443
		
1443
 
1444
		}#function keyWordCount end
1444
		}#function keyWordCount end
1445
		
1445
 
1446
	/*
1446
	/*
1447
	#函式說明:
1447
	#函式說明:
1448
	#將透過db::fastGetDbData取得的資料表資料轉換成用csv::create建立csv檔所需的格式	,亦即轉換成一個二維陣列記錄每筆資料每個欄位填寫的內容.
1448
	#將透過db::fastGetDbData取得的資料表資料轉換成用csv::create建立csv檔所需的格式	,亦即轉換成一個二維陣列記錄每筆資料每個欄位填寫的內容.
1449
	#回傳結果:
1449
	#回傳結果:
1450
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1450
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 1461... Line 1461...
1461
	#無.
1461
	#無.
1462
	#備註:
1462
	#備註:
1463
	#無.
1463
	#無.
1464
	*/
1464
	*/
1465
	public static function dataTable2csvFormat(&$conf){
1465
	public static function dataTable2csvFormat(&$conf){
1466
		
1466
 
1467
		#初始化要回傳的變數
1467
		#初始化要回傳的變數
1468
		$reuslt=array();
1468
		$reuslt=array();
1469
		
1469
 
1470
		#取得當前執行的函數名稱
1470
		#取得當前執行的函數名稱
1471
		$result["function"]=__FUNCTION__;
1471
		$result["function"]=__FUNCTION__;
1472
		
1472
 
1473
		#初始化要回傳的csv格式變數	
1473
		#初始化要回傳的csv格式變數
1474
		$result["content"]=array();	
1474
		$result["content"]=array();
1475
		
1475
 
1476
		#如果 $conf 不為陣列
1476
		#如果 $conf 不為陣列
1477
		if(gettype($conf)!="array"){
1477
		if(gettype($conf)!="array"){
1478
			
1478
 
1479
			#設置執行失敗
1479
			#設置執行失敗
1480
			$result["status"]="false";
1480
			$result["status"]="false";
1481
			
1481
 
1482
			#設置執行錯誤訊息
1482
			#設置執行錯誤訊息
1483
			$result["error"][]="\$conf變數須為陣列形態";
1483
			$result["error"][]="\$conf變數須為陣列形態";
1484
 
1484
 
1485
			#如果傳入的參數為 null
1485
			#如果傳入的參數為 null
1486
			if($conf==null){
1486
			if($conf==null){
1487
				
1487
 
1488
				#設置執行錯誤訊息
1488
				#設置執行錯誤訊息
1489
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1489
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1490
				
1490
 
1491
				}#if end
1491
				}#if end
1492
 
1492
 
1493
			#回傳結果
1493
			#回傳結果
1494
			return $result;
1494
			return $result;
1495
			
1495
 
1496
			}#if end
1496
			}#if end
1497
		
1497
 
1498
		#檢查參數
1498
		#檢查參數
1499
		#函式說明:
1499
		#函式說明:
1500
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1500
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1501
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1501
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1502
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
1502
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
Line 1508... Line 1508...
1508
		#必填寫的參數:
1508
		#必填寫的參數:
1509
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1509
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1510
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1510
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1511
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1511
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1512
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("db::fastGetDbData");
1512
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("db::fastGetDbData");
1513
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double"); 
1513
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
1514
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
1514
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
1515
		#可以省略的參數:
1515
		#可以省略的參數:
1516
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
1516
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
1517
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
1517
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
1518
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1518
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1519
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("columnTitleName");
1519
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("columnTitleName");
1520
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
1520
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
1521
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array");
1521
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array");
1522
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1522
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1523
		#$conf["skipableVarDefaultValue"]=array("");
1523
		#$conf["skipableVarDefaultValue"]=array("");
1524
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1524
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1525
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1525
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1526
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1526
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1527
		#$conf["arrayCountEqualCheck"][]=array();
1527
		#$conf["arrayCountEqualCheck"][]=array();
1528
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1528
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1529
		unset($conf["variableCheck::checkArguments"]);
1529
		unset($conf["variableCheck::checkArguments"]);
1530
		
1530
 
1531
		#如果檢查失敗
1531
		#如果檢查失敗
1532
		if($checkResult["status"]=="false"){
1532
		if($checkResult["status"]=="false"){
1533
			
1533
 
1534
			#設置執行錯誤
1534
			#設置執行錯誤
1535
			$result["status"]="false";
1535
			$result["status"]="false";
1536
			
1536
 
1537
			#設置錯誤訊息
1537
			#設置錯誤訊息
1538
			$result["error"]=$checkResult;
1538
			$result["error"]=$checkResult;
1539
			
1539
 
1540
			#回傳結果
1540
			#回傳結果
1541
			return $result;
1541
			return $result;
1542
							
1542
 
1543
			}#if end
1543
			}#if end
1544
			
1544
 
1545
		#如果檢查不通過
1545
		#如果檢查不通過
1546
		if($checkResult["passed"]=="false"){
1546
		if($checkResult["passed"]=="false"){
1547
			
1547
 
1548
			#設置執行錯誤
1548
			#設置執行錯誤
1549
			$result["status"]="false";
1549
			$result["status"]="false";
1550
			
1550
 
1551
			#設置錯誤訊息
1551
			#設置錯誤訊息
1552
			$result["error"]=$checkResult;
1552
			$result["error"]=$checkResult;
1553
			
1553
 
1554
			#回傳結果
1554
			#回傳結果
1555
			return $result;
1555
			return $result;
1556
							
1556
 
1557
			}#if end
1557
			}#if end
1558
		
1558
 
1559
		#如果 $conf["db::fastGetDbData"] 的執行結果不為正常的
1559
		#如果 $conf["db::fastGetDbData"] 的執行結果不為正常的
1560
		if($conf["db::fastGetDbData"]["status"]=="false"){
1560
		if($conf["db::fastGetDbData"]["status"]=="false"){
1561
			
1561
 
1562
			#echo "123";
1562
			#echo "123";
1563
			
1563
 
1564
			#設置執行錯誤
1564
			#設置執行錯誤
1565
			$result["status"]="false";
1565
			$result["status"]="false";
1566
			
1566
 
1567
			#設置錯誤訊息
1567
			#設置錯誤訊息
1568
			$result["error"]=$conf["db::fastGetDbData"];
1568
			$result["error"]=$conf["db::fastGetDbData"];
1569
			
1569
 
1570
			#回傳結果
1570
			#回傳結果
1571
			return $result;
1571
			return $result;
1572
			
1572
 
1573
			}#if end
1573
			}#if end
1574
			
1574
 
1575
		#如果 $conf["db::fastGetDbData"] 的資料筆數為 0
1575
		#如果 $conf["db::fastGetDbData"] 的資料筆數為 0
1576
		if($conf["db::fastGetDbData"]["dataCount"]==0){
1576
		if($conf["db::fastGetDbData"]["dataCount"]==0){
1577
			
1577
 
1578
			#echo "123";
1578
			#echo "123";
1579
			
1579
 
1580
			#設置執行錯誤
1580
			#設置執行錯誤
1581
			$result["status"]="false";
1581
			$result["status"]="false";
1582
			
1582
 
1583
			#設置錯誤訊息
1583
			#設置錯誤訊息
1584
			$result["error"]=$conf["db::fastGetDbData"];
1584
			$result["error"]=$conf["db::fastGetDbData"];
1585
			
1585
 
1586
			#回傳結果
1586
			#回傳結果
1587
			return $result;
1587
			return $result;
1588
			
1588
 
1589
			}#if end
1589
			}#if end
1590
			
1590
 
1591
		#如果沒有設置 $conf["columnTitleName"]
1591
		#如果沒有設置 $conf["columnTitleName"]
1592
		if(!isset($conf["columnTitleName"])){
1592
		if(!isset($conf["columnTitleName"])){
1593
			
1593
 
1594
			#預設為資料表的欄位名稱
1594
			#預設為資料表的欄位名稱
1595
			$conf["columnTitleName"]=$conf["db::fastGetDbData"]["dataColumnName"];
1595
			$conf["columnTitleName"]=$conf["db::fastGetDbData"]["dataColumnName"];
1596
			
1596
 
1597
			}#if end
1597
			}#if end
1598
			
1598
 
1599
		#反之有設置 $conf["columnName"]
1599
		#反之有設置 $conf["columnName"]
1600
		else{
1600
		else{
1601
			
1601
 
1602
			#如果 $conf["columnName"] 的數量與 $conf["db::fastGetDbData"]["dataColumnName"] 不一樣
1602
			#如果 $conf["columnName"] 的數量與 $conf["db::fastGetDbData"]["dataColumnName"] 不一樣
1603
			if(count($conf["columnTitleName"])!=count($conf["db::fastGetDbData"]["dataColumnName"])){
1603
			if(count($conf["columnTitleName"])!=count($conf["db::fastGetDbData"]["dataColumnName"])){
1604
				
1604
 
1605
				#設置執行錯誤
1605
				#設置執行錯誤
1606
				$result["status"]="false";
1606
				$result["status"]="false";
1607
				
1607
 
1608
				#設置錯誤訊息
1608
				#設置錯誤訊息
1609
				$result["error"][]="參數\$conf[\"columnName\"]與\$conf[\"db::fastGetDbData\"][\"dataColumnName\"]的元素數量要一樣";
1609
				$result["error"][]="參數\$conf[\"columnName\"]與\$conf[\"db::fastGetDbData\"][\"dataColumnName\"]的元素數量要一樣";
1610
				
1610
 
1611
				#回傳結果
1611
				#回傳結果
1612
				return $result;
1612
				return $result;
1613
				
1613
 
1614
				}#if end
1614
				}#if end
1615
			
1615
 
1616
			}#else end
1616
			}#else end
1617
					
1617
 
1618
		#建立標題欄的內容	
1618
		#建立標題欄的內容
1619
		$result["content"][]=$conf["columnTitleName"];
1619
		$result["content"][]=$conf["columnTitleName"];
1620
			
1620
 
1621
		#有幾筆資料就執行幾次迴圈
1621
		#有幾筆資料就執行幾次迴圈
1622
		for($i=0;$i<$conf["db::fastGetDbData"]["dataCount"];$i++){
1622
		for($i=0;$i<$conf["db::fastGetDbData"]["dataCount"];$i++){
1623
			
1623
 
1624
			#初始化暫存的陣列
1624
			#初始化暫存的陣列
1625
			$temp["oneData"]=array();
1625
			$temp["oneData"]=array();
1626
			
1626
 
1627
			#有幾個欄位就執行幾次迴圈
1627
			#有幾個欄位就執行幾次迴圈
1628
			for($j=0;$j<count($conf["columnTitleName"]);$j++){
1628
			for($j=0;$j<count($conf["columnTitleName"]);$j++){
1629
				
1629
 
1630
				#記錄第$i+1筆資料的第$j+1欄位的內容
1630
				#記錄第$i+1筆資料的第$j+1欄位的內容
1631
				$temp["oneData"][]=$conf["db::fastGetDbData"]["dataContent"][$conf["db::fastGetDbData"]["dataColumnName"][$j]][$i];
1631
				$temp["oneData"][]=$conf["db::fastGetDbData"]["dataContent"][$conf["db::fastGetDbData"]["dataColumnName"][$j]][$i];
1632
				
1632
 
1633
				}#for end
1633
				}#for end
1634
			
1634
 
1635
			#記錄第$i+1筆資料的內容
1635
			#記錄第$i+1筆資料的內容
1636
			$result["content"][]=$temp["oneData"];
1636
			$result["content"][]=$temp["oneData"];
1637
			
1637
 
1638
			}#for end
1638
			}#for end
1639
			
1639
 
1640
		#執行到這邊代表執行正常
1640
		#執行到這邊代表執行正常
1641
		$result["status"]="true";
1641
		$result["status"]="true";
1642
		
1642
 
1643
		#回傳結果
1643
		#回傳結果
1644
		return $result;
1644
		return $result;
1645
					
1645
 
1646
		}#function dataTable2csvFormat end
1646
		}#function dataTable2csvFormat end
1647
	
1647
 
1648
	}#class csv end
1648
	}#class csv end
1649
	
1649
 
1650
?>
1650
?>