Subversion Repositories php-qbpwcf

Rev

Rev 226 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3 liveuser 1
<?php
2
 
3
/*
4
 
5
	QBPWCF, Quick Build PHP website Component base on Fedora Linux.
239 liveuser 6
    Copyright (C) 2014~2026 MIN ZHI, CHEN
3 liveuser 7
 
8
    This file is part of QBPWCF.
9
 
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
12
    the Free Software Foundation, either version 3 of the License, or
13
    (at your option) any later version.
14
 
15
    QBPWCF is distributed in the hope that it will be useful,
16
    but WITHOUT ANY WARRANTY; without even the implied warranty of
17
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
    GNU General Public License for more details.
19
 
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/>.
22
 
23
*/
24
namespace qbpwcf;
25
 
26
/*
27
類別說明:
28
跟時間應用相關的類別.
29
備註:
30
無.
31
*/
32
class time{
33
 
34
	/*
35
	#函式說明:
36
	#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
37
	#回傳結果:
38
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
39
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
40
	#$result["function"],當前執行的函式名稱.
41
	#必填參數:
42
	#$method,物件,為物件實體或類別名稱,會自動置入該參數.
43
	#$arguments,陣列,為呼叫方法時所用的參數.
44
	#可省略參數:
45
	#無.
46
	#參考資料:
47
	#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
48
	#備註;
49
	#無.
50
	*/
51
	public function __call($method,$arguments){
226 liveuser 52
 
3 liveuser 53
		#取得當前執行的函式
54
		$result["function"]=__FUNCTION__;
226 liveuser 55
 
3 liveuser 56
		#設置執行不正常
57
		$result["status"]="false";
226 liveuser 58
 
3 liveuser 59
		#設置執行錯誤
60
		$result["error"][]=__NAMESPACE__ ."/".$method."() 不存在!";
226 liveuser 61
 
3 liveuser 62
		#設置所丟入的參數
63
		$result["error"][]=$arguments;
226 liveuser 64
 
3 liveuser 65
		#回傳結果
66
		return $result;
226 liveuser 67
 
3 liveuser 68
		}#function __call end
226 liveuser 69
 
3 liveuser 70
	/*
71
	#函式說明:
72
	#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
73
	#回傳結果:
74
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
75
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
76
	#$result["function"],當前執行的函式名稱.
77
	#必填參數:
78
	#$method,物件,為物件實體或類別名稱,會自動置入該參數.
79
	#$arguments,陣列,為呼叫方法時所用的參數.
80
	#可省略參數:
81
	#無.
82
	#參考資料:
83
	#__callStatic=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
84
	#備註:
85
	#無.
86
	*/
87
	public static function __callStatic($method,$arguments){
226 liveuser 88
 
3 liveuser 89
		#取得當前執行的函式
90
		$result["function"]=__FUNCTION__;
226 liveuser 91
 
3 liveuser 92
		#設置執行不正常
93
		$result["status"]="false";
226 liveuser 94
 
3 liveuser 95
		#設置執行錯誤
96
		$result["error"][]="欲呼叫的". __NAMESPACE__ ."/".$method."() 不存在!";
226 liveuser 97
 
3 liveuser 98
		#設置所丟入的參數
99
		$result["error"][]=$arguments;
226 liveuser 100
 
3 liveuser 101
		#回傳結果
102
		return $result;
226 liveuser 103
 
3 liveuser 104
		}#function __callStatic end
226 liveuser 105
 
3 liveuser 106
	/*
107
	#函式說明:
108
	#設定時區.
109
	#回傳結果:
110
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
111
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
112
	#$result["function"],當前執行的函式名稱.
113
	#必填參數:
114
	#$conf["timeZone"],字串,時區代號,可以設定的時區列表:「http://www.php.net/manual/en/timezones.php」,台灣可用"Asia/Taipei",協調世界時用"UTC".
115
	$conf["timeZone"]="Asia/Taipei";
116
	#可省略參數:
117
	#無.
118
	#參考資料:
119
	#UTC=>http://pansci.asia/archives/84978
120
	#備註:
121
	#無.
122
	*/
123
	public static function setTimeZone(&$conf){
124
 
125
		#初始化要回傳的結果
126
		$result=array();
226 liveuser 127
 
3 liveuser 128
		#設置當其函數名稱
129
		$result["function"]=__FUNCTION__;
226 liveuser 130
 
3 liveuser 131
		#如果 $conf 不為陣列
132
		if(gettype($conf)!="array"){
226 liveuser 133
 
3 liveuser 134
			#設置執行失敗
135
			$result["status"]="false";
226 liveuser 136
 
3 liveuser 137
			#設置執行錯誤訊息
138
			$result["error"][]="\$conf變數須為陣列形態";
139
 
140
			#如果傳入的參數為 null
141
			if($conf==null){
226 liveuser 142
 
3 liveuser 143
				#設置執行錯誤訊息
144
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 145
 
3 liveuser 146
				}#if end
147
 
148
			#回傳結果
149
			return $result;
226 liveuser 150
 
3 liveuser 151
			}#if end
226 liveuser 152
 
3 liveuser 153
		#檢查參數
154
		#函式說明:
155
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
156
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
157
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
158
		#$result["function"],當前執行的函式名稱.
159
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
160
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
161
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
162
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
163
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
164
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
165
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
166
		#必填寫的參數:
167
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
168
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
169
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
170
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("timeZone");
226 liveuser 171
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3 liveuser 172
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
173
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
174
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
175
		#可以省略的參數:
176
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
177
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
178
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
179
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("showSecond");
226 liveuser 180
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3 liveuser 181
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
182
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
183
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true");
184
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
185
		#$conf["arrayCountEqualCheck"][]=array();
186
		#參考資料來源:
187
		#array_keys=>http://php.net/manual/en/function.array-keys.php
188
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
189
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 190
 
3 liveuser 191
		#如果檢查失敗
192
		if($checkResult["status"]=="false"){
226 liveuser 193
 
3 liveuser 194
			#設置錯誤識別
195
			$result["status"]="false";
226 liveuser 196
 
3 liveuser 197
			#設置錯誤訊息
198
			$result["error"]=$checkResult;
226 liveuser 199
 
3 liveuser 200
			#回傳結果
201
			return $result;
226 liveuser 202
 
3 liveuser 203
			}#if end
226 liveuser 204
 
3 liveuser 205
		#如果檢查不通過
206
		if($checkResult["passed"]=="false"){
226 liveuser 207
 
3 liveuser 208
			#設置錯誤識別
209
			$result["status"]="false";
226 liveuser 210
 
3 liveuser 211
			#設置錯誤訊息
212
			$result["error"]=$checkResult;
226 liveuser 213
 
3 liveuser 214
			#回傳結果
215
			return $result;
226 liveuser 216
 
3 liveuser 217
			}#if end
226 liveuser 218
 
3 liveuser 219
		#如果設定時區失敗
220
		if(date_default_timezone_set($conf["timeZone"])==FALSE){
226 liveuser 221
 
3 liveuser 222
			#設置錯誤識別
223
			$result["status"]="false";
226 liveuser 224
 
3 liveuser 225
			#設置錯誤訊息
226
			$result["error"][]="設定時區為「".$conf["timeZone"]."」失敗";
226 liveuser 227
 
3 liveuser 228
			#回傳結果
229
			return $result;
226 liveuser 230
 
3 liveuser 231
			}#if end
232
 
233
		#執行到這邊代表正確無誤
226 liveuser 234
 
3 liveuser 235
		#設置執行正常
236
		$result["status"]="true";
226 liveuser 237
 
3 liveuser 238
		#回傳結果
239
		return $result;
240
 
241
		}#function setTimeZone end
242
 
243
	/*
244
	#函式說明:
245
	#取得系統時間目前的西元年、月、日、時、分、秒.
246
	#回傳結果:
247
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
248
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
249
	#$result["function"],當前執行的函式名稱.
250
	#$result["thisWestYear"],當前西元年
251
	#$result["thisMonth"],當前月份
252
	#$result["weekDay"],為一個星期的第幾天,0代表第一天(星期日),6代表第七天(星期六)
253
	#$result["thisDay"],當前日
254
	#$result["thisHour"],當前小時
255
	#$result["thisMin"],當前分鐘
256
	#$result["thisSec"],當前秒數
257
	#必填參數:
258
	#$conf["timeZone"],字串,時區代號,可以設定的時區列表:「http://www.php.net/manual/en/timezones.php」,台灣可用"Asia/Taipei".
259
	$conf["timeZone"]="Asia/Tpipei";
260
	#可省略參數:
261
	#無.
262
	#參考資料:
263
	#php的date函數用法=>http://php.net/manual/en/function.date.php
264
	#備註:
265
	#無.
266
	*/
267
	public static function getSystemDateAndTime(&$conf){
226 liveuser 268
 
3 liveuser 269
		#初始化要回傳的結果
270
		$result=array();
226 liveuser 271
 
3 liveuser 272
		#設置當其函數名稱
273
		$result["function"]=__FUNCTION__;
226 liveuser 274
 
3 liveuser 275
		#如果 $conf 不為陣列
276
		if(gettype($conf)!="array"){
226 liveuser 277
 
3 liveuser 278
			#設置執行失敗
279
			$result["status"]="false";
226 liveuser 280
 
3 liveuser 281
			#設置執行錯誤訊息
282
			$result["error"][]="\$conf變數須為陣列形態";
283
 
284
			#如果傳入的參數為 null
285
			if($conf==null){
226 liveuser 286
 
3 liveuser 287
				#設置執行錯誤訊息
288
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 289
 
3 liveuser 290
				}#if end
291
 
292
			#回傳結果
293
			return $result;
226 liveuser 294
 
3 liveuser 295
			}#if end
226 liveuser 296
 
3 liveuser 297
		#檢查參數
298
		#函式說明:
299
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
300
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
301
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
302
		#$result["function"],當前執行的函式名稱.
303
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
304
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
305
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
306
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
307
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
308
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
309
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
310
		#必填寫的參數:
311
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
312
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
313
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
314
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("timeZone");
226 liveuser 315
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3 liveuser 316
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
317
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
318
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
319
		#可以省略的參數:
320
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
321
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
322
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
323
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("showSecond");
226 liveuser 324
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3 liveuser 325
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
326
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
327
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true");
328
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
329
		#$conf["arrayCountEqualCheck"][]=array();
330
		#參考資料來源:
331
		#array_keys=>http://php.net/manual/en/function.array-keys.php
332
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
333
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 334
 
3 liveuser 335
		#如果檢查失敗
336
		if($checkResult["status"]=="false"){
226 liveuser 337
 
3 liveuser 338
			#設置錯誤識別
339
			$result["status"]="false";
226 liveuser 340
 
3 liveuser 341
			#設置錯誤訊息
342
			$result["error"]=$checkResult;
226 liveuser 343
 
3 liveuser 344
			#回傳結果
345
			return $result;
226 liveuser 346
 
3 liveuser 347
			}#if end
226 liveuser 348
 
3 liveuser 349
		#如果檢查不通過
350
		if($checkResult["passed"]=="false"){
226 liveuser 351
 
3 liveuser 352
			#設置錯誤識別
353
			$result["status"]="false";
226 liveuser 354
 
3 liveuser 355
			#設置錯誤訊息
356
			$result["error"]=$checkResult;
226 liveuser 357
 
3 liveuser 358
			#回傳結果
359
			return $result;
226 liveuser 360
 
3 liveuser 361
			}#if end
226 liveuser 362
 
3 liveuser 363
		#設定時區
364
		#函式說明:
365
		#設定時區.
366
		#回傳結果:
367
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
368
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
369
		#$result["function"],當前執行的函式名稱.
370
		#必填參數:
371
		#$conf["timeZone"],字串,時區代號,可以設定的時區列表:「http://www.php.net/manual/en/timezones.php」,台灣可用"Asia/Taipei".
372
		$conf["time::setTimeZone"]["timeZone"]=$conf["timeZone"];
373
		$setTimeZone=time::setTimeZone($conf["time::setTimeZone"]);
374
		unset($conf["time::setTimeZone"]);
226 liveuser 375
 
3 liveuser 376
		#如果設置時區失敗
377
		if($setTimeZone["status"]=="false"){
226 liveuser 378
 
3 liveuser 379
			#設置錯誤識別
380
			$result["status"]="false";
226 liveuser 381
 
3 liveuser 382
			#設置錯誤訊息
383
			$result["error"]=$setTimeZone;
226 liveuser 384
 
3 liveuser 385
			#回傳結果
386
			return $result;
226 liveuser 387
 
3 liveuser 388
			}#if end
226 liveuser 389
 
3 liveuser 390
		#取得西元年
391
		$result["thisWestYear"]=date('Y');
392
 
393
		#取得月份,加0使得0X變成X
394
		$result["thisMonth"]=date('m')+0;
395
 
396
		#取得星期
397
		$result["weekDay"]=date('w');
398
 
399
		#取得日,加0使得0X變成X
400
		$result["thisDay"]=(string)(int)date('d')+0;
401
 
402
		#取得小時
403
		$result["thisHour"]=date('H')+0;
404
 
405
		#取得分鐘
406
		$result["thisMin"]=date('i')+0;
407
 
408
		#取得秒數
409
		$result["thisSec"]=date('s')+0;
410
 
226 liveuser 411
		#設置執行正常
3 liveuser 412
		$result["status"]="true";
413
 
414
		#回傳結果
415
		return $result;
416
 
417
		}#function getSystemDateAndTime end
418
 
226 liveuser 419
	/*
3 liveuser 420
	#函式說明:
421
	#回傳RFC822格式的當前時間,格式會像這種 「Wed, 25 Jan 12 19:13:15 +0800」
422
	#回傳結果:
423
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
424
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
425
	#$result["function"],當前執行的函式名稱.
426
	#$result["content"],RFC822格式的時間.
427
	#必填參數:
428
	#$conf["timeZone"],字串,時區代號,可以設定的時區列表:「http://www.php.net/manual/en/timezones.php」,台灣可用"Asia/Taipei".
429
	$conf["timeZone"]="Asia/Taipei";
430
	#可省略參數:
431
	#無.
432
	#參考資料:
433
	#無.
434
	#備註:
435
	#無.
436
	*/
437
	public static function get_RFC822_Time(&$conf){
226 liveuser 438
 
3 liveuser 439
		#初始化要回傳的結果
440
		$result=array();
226 liveuser 441
 
3 liveuser 442
		#設置當其函數名稱
443
		$result["function"]=__FUNCTION__;
226 liveuser 444
 
3 liveuser 445
		#如果 $conf 不為陣列
446
		if(gettype($conf)!="array"){
226 liveuser 447
 
3 liveuser 448
			#設置執行失敗
449
			$result["status"]="false";
226 liveuser 450
 
3 liveuser 451
			#設置執行錯誤訊息
452
			$result["error"][]="\$conf變數須為陣列形態";
453
 
454
			#如果傳入的參數為 null
455
			if($conf==null){
226 liveuser 456
 
3 liveuser 457
				#設置執行錯誤訊息
458
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 459
 
3 liveuser 460
				}#if end
461
 
462
			#回傳結果
463
			return $result;
226 liveuser 464
 
3 liveuser 465
			}#if end
226 liveuser 466
 
3 liveuser 467
		#檢查參數
468
		#函式說明:
469
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
470
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
471
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
472
		#$result["function"],當前執行的函式名稱.
473
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
474
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
475
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
476
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
477
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
478
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
479
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
480
		#必填寫的參數:
481
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
482
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
483
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
484
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("timeZone");
226 liveuser 485
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3 liveuser 486
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
487
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
488
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
489
		#可以省略的參數:
490
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
491
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
492
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
493
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("showSecond");
226 liveuser 494
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3 liveuser 495
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
496
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
497
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true");
498
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
499
		#$conf["arrayCountEqualCheck"][]=array();
500
		#參考資料來源:
501
		#array_keys=>http://php.net/manual/en/function.array-keys.php
502
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
503
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 504
 
3 liveuser 505
		#如果檢查失敗
506
		if($checkResult["status"]=="false"){
226 liveuser 507
 
3 liveuser 508
			#設置錯誤識別
509
			$result["status"]="false";
226 liveuser 510
 
3 liveuser 511
			#設置錯誤訊息
512
			$result["error"]=$checkResult;
226 liveuser 513
 
3 liveuser 514
			#回傳結果
515
			return $result;
226 liveuser 516
 
3 liveuser 517
			}#if end
226 liveuser 518
 
3 liveuser 519
		#如果檢查不通過
520
		if($checkResult["passed"]=="false"){
226 liveuser 521
 
3 liveuser 522
			#設置錯誤識別
523
			$result["status"]="false";
226 liveuser 524
 
3 liveuser 525
			#設置錯誤訊息
526
			$result["error"]=$checkResult;
226 liveuser 527
 
3 liveuser 528
			#回傳結果
529
			return $result;
226 liveuser 530
 
3 liveuser 531
			}#if end
226 liveuser 532
 
3 liveuser 533
		#設定時區
534
		#函式說明:
535
		#設定時區.
536
		#回傳結果:
537
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
538
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
539
		#$result["function"],當前執行的函式名稱.
540
		#必填參數:
541
		#$conf["timeZone"],字串,時區代號,可以設定的時區列表:「http://www.php.net/manual/en/timezones.php」,台灣可用"Asia/Taipei".
542
		$conf["time::setTimeZone"]["timeZone"]=$conf["timeZone"];
543
		$setTimeZone=time::setTimeZone($conf["time::setTimeZone"]);
544
		unset($conf["time::setTimeZone"]);
226 liveuser 545
 
3 liveuser 546
		#如果設置時區失敗
547
		if($setTimeZone["status"]=="false"){
226 liveuser 548
 
3 liveuser 549
			#設置錯誤識別
550
			$result["status"]="false";
226 liveuser 551
 
3 liveuser 552
			#設置錯誤訊息
553
			$result["error"]=$setTimeZone;
226 liveuser 554
 
3 liveuser 555
			#回傳結果
556
			return $result;
226 liveuser 557
 
3 liveuser 558
			}#if end
559
 
560
		#設置執行正常
561
		$result["status"]="true";
226 liveuser 562
 
3 liveuser 563
		#取得 RFC822 格式的時間
564
		#格式設定:http://tw.php.net/manual/en/function.date.php
565
		$result["content"]=date(DATE_RFC822);
566
 
567
		#回傳結果
568
		return $result;
226 liveuser 569
 
3 liveuser 570
		}#function get_RFC822_Time end
571
 
572
	/*
573
	#函式說明:
574
	#回傳西元的目前時間,格式為2010年07月24日15時30分33秒
575
	#回傳結果:
576
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
577
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
578
	#$result["function"],當前執行的函式名稱.
579
	#$result["content"],西元的目前時間,格式為2010年07月24日15時30分33秒
580
	#必填參數:
581
	#$conf["timeZone"],字串,時區代號,可以設定的時區列表:http://www.php.net/manual/en/timezones.php, ex:"Asia/Taipei".
582
	$conf["timeZone"]="Asia/Taipei";
583
	#可省略參數:
226 liveuser 584
	#$conf["showSecond"],字串,若爲"true"則會顯示秒數,預設為"true".
3 liveuser 585
	#$conf["showSecond"]="true";
586
	#參考資料:
587
	#date函數用法=>http://php.net/manual/en/function.date.php.
588
	#備註:
589
	#無.
590
	*/
591
	public static function getFullDateAndTime(&$conf){
226 liveuser 592
 
3 liveuser 593
		#初始化要回傳的結果
594
		$result=array();
226 liveuser 595
 
3 liveuser 596
		#設置當其函數名稱
597
		$result["function"]=__FUNCTION__;
226 liveuser 598
 
3 liveuser 599
		#如果 $conf 不為陣列
600
		if(gettype($conf)!="array"){
226 liveuser 601
 
3 liveuser 602
			#設置執行失敗
603
			$result["status"]="false";
226 liveuser 604
 
3 liveuser 605
			#設置執行錯誤訊息
606
			$result["error"][]="\$conf變數須為陣列形態";
607
 
608
			#如果傳入的參數為 null
609
			if($conf==null){
226 liveuser 610
 
3 liveuser 611
				#設置執行錯誤訊息
612
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 613
 
3 liveuser 614
				}#if end
615
 
616
			#回傳結果
617
			return $result;
226 liveuser 618
 
3 liveuser 619
			}#if end
226 liveuser 620
 
3 liveuser 621
		#檢查參數
622
		#函式說明:
623
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
624
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
625
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
626
		#$result["function"],當前執行的函式名稱.
627
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
628
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
629
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
630
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
631
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
632
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
633
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
634
		#必填寫的參數:
635
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
636
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
637
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
638
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("timeZone");
226 liveuser 639
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3 liveuser 640
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
641
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
642
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
643
		#可以省略的參數:
644
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
645
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
646
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
647
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("showSecond");
226 liveuser 648
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3 liveuser 649
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
650
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
651
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true");
652
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
653
		#$conf["arrayCountEqualCheck"][]=array();
654
		#參考資料來源:
655
		#array_keys=>http://php.net/manual/en/function.array-keys.php
656
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
657
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 658
 
3 liveuser 659
		#如果檢查失敗
660
		if($checkResult["status"]=="false"){
226 liveuser 661
 
3 liveuser 662
			#設置錯誤識別
663
			$result["status"]="false";
226 liveuser 664
 
3 liveuser 665
			#設置錯誤訊息
666
			$result["error"]=$checkResult;
226 liveuser 667
 
3 liveuser 668
			#回傳結果
669
			return $result;
226 liveuser 670
 
3 liveuser 671
			}#if end
226 liveuser 672
 
3 liveuser 673
		#如果檢查不通過
674
		if($checkResult["passed"]=="false"){
226 liveuser 675
 
3 liveuser 676
			#設置錯誤識別
677
			$result["status"]="false";
226 liveuser 678
 
3 liveuser 679
			#設置錯誤訊息
680
			$result["error"]=$checkResult;
226 liveuser 681
 
3 liveuser 682
			#回傳結果
683
			return $result;
226 liveuser 684
 
3 liveuser 685
			}#if end
226 liveuser 686
 
3 liveuser 687
		#設定時區
688
		$conf_setTimeZone["timeZone"]=$conf["timeZone"];
689
		$setTimeZone=time::setTimeZone($conf_setTimeZone);
690
		unset($conf_setTimeZone);
226 liveuser 691
 
3 liveuser 692
		#如果設置時區失敗
693
		if($setTimeZone["status"]=="false"){
226 liveuser 694
 
3 liveuser 695
			#設置錯誤識別
696
			$result["status"]="false";
226 liveuser 697
 
3 liveuser 698
			#設置錯誤訊息
699
			$result["error"]=$setTimeZone;
226 liveuser 700
 
3 liveuser 701
			#回傳結果
702
			return $result;
226 liveuser 703
 
3 liveuser 704
			}#if end
226 liveuser 705
 
3 liveuser 706
		#如果 $conf["showSecond"] 有設定
707
		if(isset($conf["showSecond"])){
708
 
709
			#如果 $conf["showSecond" 爲 true
710
			if($conf["showSecond"]=="true"){
711
 
712
				#取得包含秒數的時間
713
				$result["content"]=date("Y年m月d日H時i分s秒");
226 liveuser 714
 
3 liveuser 715
				#如果取得失敗
716
				if($result["content"]==FALSE){
226 liveuser 717
 
3 liveuser 718
					#設置錯誤識別
719
					$result["status"]="false";
226 liveuser 720
 
3 liveuser 721
					#設置錯誤訊息
722
					$result["error"][]="取得時間失敗";
226 liveuser 723
 
3 liveuser 724
					#回傳結果
725
					return $result;
226 liveuser 726
 
3 liveuser 727
					}#if end
226 liveuser 728
 
3 liveuser 729
				}#if end
730
 
731
			}#if end
226 liveuser 732
 
3 liveuser 733
		#反之
734
		else{
226 liveuser 735
 
3 liveuser 736
			#取得不包含秒數的時間
737
			$result["content"]=date("Y年m月d日H時i分");
226 liveuser 738
 
3 liveuser 739
			#如果取得失敗
740
			if($result["content"]==FALSE){
226 liveuser 741
 
3 liveuser 742
				#設置錯誤識別
743
				$result["status"]="false";
226 liveuser 744
 
3 liveuser 745
				#設置錯誤訊息
746
				$result["error"][]="取得時間失敗";
226 liveuser 747
 
3 liveuser 748
				#回傳結果
749
				return $result;
226 liveuser 750
 
3 liveuser 751
				}#if end
226 liveuser 752
 
3 liveuser 753
			}#else end
226 liveuser 754
 
755
		#執行到這邊代表正確無誤
756
 
3 liveuser 757
		#設置執行正常
758
		$result["status"]="true";
226 liveuser 759
 
3 liveuser 760
		#回傳結果
761
		return $result;
226 liveuser 762
 
3 liveuser 763
		}#function getFullDateAndTime end
764
 
765
	/*
766
	#函式說明:
767
	#回傳西元的年月日,年月日之間的間隔符號自己設定。
768
	#回傳結果:
769
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
770
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
771
	#$result["function"],當前執行的函式名稱.
772
	#$result["content"],西元的年月日,格式為 2010 $conf["format"] 07 $conf["format"] 24
773
	#必填參數:
774
	#$conf["format"],字串,爲年月日之間的間隔字元.
775
	$conf["format"]="";
776
	#$conf["timeZone"],字串,時區代號,可以設定的時區列表:http://www.php.net/manual/en/timezones.php ,ex:"Asia/Taipei".
777
	$conf["timeZone"]="Asia/Taipei";
778
	#可省略參數:
779
	#無.
780
	#參考資料:
781
	#無.
782
	#備註:
783
	#無.
226 liveuser 784
	*/
3 liveuser 785
	public static function getDateWithSymbol(&$conf){
786
 
787
		#初始化要回傳的結果
788
		$result=array();
226 liveuser 789
 
3 liveuser 790
		#設置當其函數名稱
791
		$result["function"]=__FUNCTION__;
226 liveuser 792
 
3 liveuser 793
		#如果 $conf 不為陣列
794
		if(gettype($conf)!="array"){
226 liveuser 795
 
3 liveuser 796
			#設置執行失敗
797
			$result["status"]="false";
226 liveuser 798
 
3 liveuser 799
			#設置執行錯誤訊息
800
			$result["error"][]="\$conf變數須為陣列形態";
801
 
802
			#如果傳入的參數為 null
803
			if($conf==null){
226 liveuser 804
 
3 liveuser 805
				#設置執行錯誤訊息
806
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 807
 
3 liveuser 808
				}#if end
809
 
810
			#回傳結果
811
			return $result;
226 liveuser 812
 
3 liveuser 813
			}#if end
226 liveuser 814
 
3 liveuser 815
		#檢查參數
816
		#函式說明:
817
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
818
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
819
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
820
		#$result["function"],當前執行的函式名稱.
821
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
822
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
823
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
824
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
825
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
826
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
827
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
828
		#必填寫的參數:
829
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
830
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
831
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
832
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("timeZone","format");
226 liveuser 833
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3 liveuser 834
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
835
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
836
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
837
		#可以省略的參數:
838
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
839
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
840
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
841
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("showSecond");
226 liveuser 842
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3 liveuser 843
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
844
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
845
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true");
846
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
847
		#$conf["arrayCountEqualCheck"][]=array();
848
		#參考資料來源:
849
		#array_keys=>http://php.net/manual/en/function.array-keys.php
850
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
851
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 852
 
3 liveuser 853
		#如果檢查失敗
854
		if($checkResult["status"]=="false"){
226 liveuser 855
 
3 liveuser 856
			#設置錯誤識別
857
			$result["status"]="false";
226 liveuser 858
 
3 liveuser 859
			#設置錯誤訊息
860
			$result["error"]=$checkResult;
226 liveuser 861
 
3 liveuser 862
			#回傳結果
863
			return $result;
226 liveuser 864
 
3 liveuser 865
			}#if end
226 liveuser 866
 
3 liveuser 867
		#如果檢查不通過
868
		if($checkResult["passed"]=="false"){
226 liveuser 869
 
3 liveuser 870
			#設置錯誤識別
871
			$result["status"]="false";
226 liveuser 872
 
3 liveuser 873
			#設置錯誤訊息
874
			$result["error"]=$checkResult;
226 liveuser 875
 
3 liveuser 876
			#回傳結果
877
			return $result;
226 liveuser 878
 
3 liveuser 879
			}#if end
226 liveuser 880
 
3 liveuser 881
		#設定時區
882
		$conf_setTimeZone["timeZone"]=$conf["timeZone"];
883
		$setTimeZone=time::setTimeZone($conf_setTimeZone);
884
		unset($conf_setTimeZone);
226 liveuser 885
 
3 liveuser 886
		#如果設置時區失敗
887
		if($setTimeZone["status"]=="false"){
226 liveuser 888
 
3 liveuser 889
			#設置錯誤識別
890
			$result["status"]="false";
226 liveuser 891
 
3 liveuser 892
			#設置錯誤訊息
893
			$result["error"]=$setTimeZone;
226 liveuser 894
 
3 liveuser 895
			#回傳結果
896
			return $result;
226 liveuser 897
 
3 liveuser 898
			}#if end
899
 
900
		#取得格式時間
901
		$result["content"]=date("Y".$conf["format"]."m".$conf["format"]."d");
902
 
903
		#設置執行正常
904
		$result["status"]="true";
226 liveuser 905
 
3 liveuser 906
		#回傳結果
907
		return $result;
908
 
909
		}#function getDateWithSymbol end
910
 
911
	/*
912
	#函式說明:
913
	#印出 民國的年月日 例如 100年4月21日
914
	#回傳結果:
915
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
916
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
917
	#$result["function"],當前執行的函式名稱.
918
	#$result["content"],民國的年月日,格式為100年4月21日.
919
	#必填參數:
226 liveuser 920
	#$conf["timeZone"],字串,時區代號,可以設定的時區列表:http://www.php.net/manual/en/timezones.php ,"Asia/Taipei".
3 liveuser 921
	$conf["timeZone"]="Asia/Taipei";
922
	#可省略參數:
923
	#無.
924
	#參考資料:
925
	#無.
926
	#備註:
927
	#無.
928
	*/
929
	public static function getChtDate(&$conf){
930
 
931
		#初始化要回傳的結果
932
		$result=array();
226 liveuser 933
 
3 liveuser 934
		#設置當其函數名稱
935
		$result["function"]=__FUNCTION__;
226 liveuser 936
 
3 liveuser 937
		#如果 $conf 不為陣列
938
		if(gettype($conf)!="array"){
226 liveuser 939
 
3 liveuser 940
			#設置執行失敗
941
			$result["status"]="false";
226 liveuser 942
 
3 liveuser 943
			#設置執行錯誤訊息
944
			$result["error"][]="\$conf變數須為陣列形態";
945
 
946
			#如果傳入的參數為 null
947
			if($conf==null){
226 liveuser 948
 
3 liveuser 949
				#設置執行錯誤訊息
950
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 951
 
3 liveuser 952
				}#if end
953
 
954
			#回傳結果
955
			return $result;
226 liveuser 956
 
3 liveuser 957
			}#if end
226 liveuser 958
 
3 liveuser 959
		#檢查參數
960
		#函式說明:
961
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
962
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
963
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
964
		#$result["function"],當前執行的函式名稱.
965
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
966
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
967
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
968
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
969
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
970
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
971
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
972
		#必填寫的參數:
973
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
974
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
975
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
976
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("timeZone");
226 liveuser 977
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3 liveuser 978
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
979
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
980
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
981
		#可以省略的參數:
982
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
983
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
984
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
985
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("showSecond");
226 liveuser 986
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3 liveuser 987
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
988
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
989
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true");
990
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
991
		#$conf["arrayCountEqualCheck"][]=array();
992
		#參考資料來源:
993
		#array_keys=>http://php.net/manual/en/function.array-keys.php
994
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
995
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 996
 
3 liveuser 997
		#如果檢查失敗
998
		if($checkResult["status"]=="false"){
226 liveuser 999
 
3 liveuser 1000
			#設置錯誤識別
1001
			$result["status"]="false";
226 liveuser 1002
 
3 liveuser 1003
			#設置錯誤訊息
1004
			$result["error"]=$checkResult;
226 liveuser 1005
 
3 liveuser 1006
			#回傳結果
1007
			return $result;
226 liveuser 1008
 
3 liveuser 1009
			}#if end
226 liveuser 1010
 
3 liveuser 1011
		#如果檢查不通過
1012
		if($checkResult["passed"]=="false"){
226 liveuser 1013
 
3 liveuser 1014
			#設置錯誤識別
1015
			$result["status"]="false";
226 liveuser 1016
 
3 liveuser 1017
			#設置錯誤訊息
1018
			$result["error"]=$checkResult;
226 liveuser 1019
 
3 liveuser 1020
			#回傳結果
1021
			return $result;
226 liveuser 1022
 
3 liveuser 1023
			}#if end
226 liveuser 1024
 
3 liveuser 1025
		#設定時區
1026
		$conf_setTimeZone["timeZone"]=$conf["timeZone"];
1027
		$setTimeZone=time::setTimeZone($conf_setTimeZone);
1028
		unset($conf_setTimeZone);
226 liveuser 1029
 
3 liveuser 1030
		#如果設置時區失敗
1031
		if($setTimeZone["status"]=="false"){
226 liveuser 1032
 
3 liveuser 1033
			#設置錯誤識別
1034
			$result["status"]="false";
226 liveuser 1035
 
3 liveuser 1036
			#設置錯誤訊息
1037
			$result["error"]=$setTimeZone;
226 liveuser 1038
 
3 liveuser 1039
			#回傳結果
1040
			return $result;
226 liveuser 1041
 
3 liveuser 1042
			}#if end
226 liveuser 1043
 
3 liveuser 1044
		#取得民國年
1045
		$year = date("Y")-1911;
1046
 
1047
		#回傳民國的日期
1048
		$result["content"]=$year.date("年m月d日");
226 liveuser 1049
 
3 liveuser 1050
		#設置執行正常
1051
		$result["status"]="true";
226 liveuser 1052
 
3 liveuser 1053
		#回傳結果
1054
		return $result;
226 liveuser 1055
 
3 liveuser 1056
		}#function getChtDate end
1057
 
1058
	/*
1059
	#函式說明:
1060
	#回傳 西元的年月日 例如 2010年4月21日
1061
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1062
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
1063
	#$result["function"],當前執行的函式名稱.
1064
	#$result["content"],民國的年月日,格式為100年4月21日.
1065
	#必填參數:
1066
	#$conf["timeZone"],字串,時區代號,可以設定的時區列表:http://www.php.net/manual/en/timezones.php, ex:"Asia/Taipei".
1067
	$conf["timeZone"]="Asia/Taipei";
1068
	#可省略參數:
1069
	#無.
1070
	#參考資料:
1071
	#無.
1072
	#備註:
1073
	#無.
1074
	*/
1075
	public static function getWestDate(&$conf){
1076
 
1077
		#初始化要回傳的結果
1078
		$result=array();
226 liveuser 1079
 
3 liveuser 1080
		#設置當其函數名稱
1081
		$result["function"]=__FUNCTION__;
226 liveuser 1082
 
3 liveuser 1083
		#如果 $conf 不為陣列
1084
		if(gettype($conf)!="array"){
226 liveuser 1085
 
3 liveuser 1086
			#設置執行失敗
1087
			$result["status"]="false";
226 liveuser 1088
 
3 liveuser 1089
			#設置執行錯誤訊息
1090
			$result["error"][]="\$conf變數須為陣列形態";
1091
 
1092
			#如果傳入的參數為 null
1093
			if($conf==null){
226 liveuser 1094
 
3 liveuser 1095
				#設置執行錯誤訊息
1096
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 1097
 
3 liveuser 1098
				}#if end
1099
 
1100
			#回傳結果
1101
			return $result;
226 liveuser 1102
 
3 liveuser 1103
			}#if end
226 liveuser 1104
 
3 liveuser 1105
		#檢查參數
1106
		#函式說明:
1107
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1108
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1109
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
1110
		#$result["function"],當前執行的函式名稱.
1111
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1112
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1113
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1114
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
1115
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
1116
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
1117
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
1118
		#必填寫的參數:
1119
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1120
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1121
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1122
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("timeZone");
226 liveuser 1123
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3 liveuser 1124
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
1125
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1126
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1127
		#可以省略的參數:
1128
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
1129
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
1130
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1131
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("showSecond");
226 liveuser 1132
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3 liveuser 1133
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
1134
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1135
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true");
1136
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1137
		#$conf["arrayCountEqualCheck"][]=array();
1138
		#參考資料來源:
1139
		#array_keys=>http://php.net/manual/en/function.array-keys.php
1140
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1141
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 1142
 
3 liveuser 1143
		#如果檢查失敗
1144
		if($checkResult["status"]=="false"){
226 liveuser 1145
 
3 liveuser 1146
			#設置錯誤識別
1147
			$result["status"]="false";
226 liveuser 1148
 
3 liveuser 1149
			#設置錯誤訊息
1150
			$result["error"]=$checkResult;
226 liveuser 1151
 
3 liveuser 1152
			#回傳結果
1153
			return $result;
226 liveuser 1154
 
3 liveuser 1155
			}#if end
226 liveuser 1156
 
3 liveuser 1157
		#如果檢查不通過
1158
		if($checkResult["passed"]=="false"){
226 liveuser 1159
 
3 liveuser 1160
			#設置錯誤識別
1161
			$result["status"]="false";
226 liveuser 1162
 
3 liveuser 1163
			#設置錯誤訊息
1164
			$result["error"]=$checkResult;
226 liveuser 1165
 
3 liveuser 1166
			#回傳結果
1167
			return $result;
226 liveuser 1168
 
3 liveuser 1169
			}#if end
1170
 
1171
		#設定時區
1172
		$conf_setTimeZone["timeZone"]=$conf["timeZone"];
1173
		$setTimeZone=time::setTimeZone($conf_setTimeZone);
1174
		unset($conf_setTimeZone);
226 liveuser 1175
 
3 liveuser 1176
		#如果設置時區失敗
1177
		if($setTimeZone["status"]=="false"){
226 liveuser 1178
 
3 liveuser 1179
			#設置錯誤識別
1180
			$result["status"]="false";
226 liveuser 1181
 
3 liveuser 1182
			#設置錯誤訊息
1183
			$result["error"]=$setTimeZone;
226 liveuser 1184
 
3 liveuser 1185
			#回傳結果
1186
			return $result;
226 liveuser 1187
 
3 liveuser 1188
			}#if end
1189
 
1190
		#取得西元時間
1191
		$result["content"]=date("Y年m月d日");
226 liveuser 1192
 
3 liveuser 1193
		#設置執行正常
1194
		$result["status"]="true";
226 liveuser 1195
 
3 liveuser 1196
		#回傳結果
1197
		return $result;
1198
 
1199
		}#function getWestDate end
1200
 
1201
	/*
1202
	#函式說明:
1203
	#判斷當下是否在某段時間之前、後、之內、之外.
1204
	#回傳結果:
1205
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1206
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
1207
	#$result["function"],當前執行的函式名稱.
1208
	#$result["argu"],使用的參數.
1209
	#$result["passed"],若沒有符合條件則回傳"true";反之為"false".
1210
	#必填參數:
1211
	#$conf["deadline"],字串,爲條件的截止參考時間點,格式須爲 2011-05-27 23:59:59
1212
	$conf["deadline"]="";
1213
	#$conf["condition"],字串,爲轉址條件,可以用的值有:"before",代表在某段時間之前;"after",代表在某段時間之後;"betweenStartToDeadline",代表在某段時間之內;"besideStartToDeadline",代表在某段時間之外.
1214
	$conf["condition"]="";
226 liveuser 1215
	#可省略參數:
3 liveuser 1216
	#$conf["startTime"],字串,爲條件的開始的參考時間點,格式須爲 2011-05-27 23:59:59 ,適用於 $conf["condtion"] 爲 "betweenStartToDeadline" 或 "besideStartToDeadline".
1217
	#$conf["startTime"]="";
1218
	#$conf["timeZone"],字串,當前時區為何?預設為"Asia/Taipei",可以設定的時區列表:http://www.php.net/manual/en/timezones.php
1219
	#$conf["timeZone"]="Asia/Taipei";
1220
	#參考資料:
1221
	#無.
1222
	#備註:
1223
	#無.
1224
	*/
1225
	public static function deadline(&$conf){
226 liveuser 1226
 
3 liveuser 1227
		#初始化要回傳的結果
1228
		$result=array();
226 liveuser 1229
 
3 liveuser 1230
		#設置當其函數名稱
1231
		$result["function"]=__FUNCTION__;
226 liveuser 1232
 
3 liveuser 1233
		#如果 $conf 不為陣列
1234
		if(gettype($conf)!="array"){
226 liveuser 1235
 
3 liveuser 1236
			#設置執行失敗
1237
			$result["status"]="false";
226 liveuser 1238
 
3 liveuser 1239
			#設置執行錯誤訊息
1240
			$result["error"][]="\$conf變數須為陣列形態";
1241
 
1242
			#如果傳入的參數為 null
1243
			if($conf==null){
226 liveuser 1244
 
3 liveuser 1245
				#設置執行錯誤訊息
1246
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 1247
 
3 liveuser 1248
				}#if end
1249
 
1250
			#回傳結果
1251
			return $result;
226 liveuser 1252
 
3 liveuser 1253
			}#if end
226 liveuser 1254
 
3 liveuser 1255
		#儲存使用的參數
1256
		$result["argu"]=$conf;
226 liveuser 1257
 
3 liveuser 1258
		#檢查參數
1259
		#函式說明:
1260
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1261
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1262
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
1263
		#$result["function"],當前執行的函式名稱.
1264
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1265
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1266
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1267
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
1268
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
1269
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
1270
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
1271
		#必填寫的參數:
1272
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1273
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1274
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1275
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("deadline","condition");
226 liveuser 1276
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3 liveuser 1277
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
1278
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1279
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1280
		#可以省略的參數:
1281
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或集合.
1282
		$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("startTime","timeZone");
1283
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
1284
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
1285
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1286
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("startTime","timeZone");
226 liveuser 1287
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3 liveuser 1288
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
1289
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1290
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,"Asia/Taipei");
1291
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1292
		#$conf["arrayCountEqualCheck"][]=array();
1293
		#參考資料來源:
1294
		#array_keys=>http://php.net/manual/en/function.array-keys.php
1295
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1296
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 1297
 
3 liveuser 1298
		#如果檢查失敗
1299
		if($checkResult["status"]=="false"){
226 liveuser 1300
 
3 liveuser 1301
			#設置錯誤識別
1302
			$result["status"]="false";
226 liveuser 1303
 
3 liveuser 1304
			#設置錯誤訊息
1305
			$result["error"]=$checkResult;
226 liveuser 1306
 
3 liveuser 1307
			#回傳結果
1308
			return $result;
226 liveuser 1309
 
3 liveuser 1310
			}#if end
226 liveuser 1311
 
3 liveuser 1312
		#如果檢查不通過
1313
		if($checkResult["passed"]=="false"){
226 liveuser 1314
 
3 liveuser 1315
			#設置錯誤識別
1316
			$result["status"]="false";
226 liveuser 1317
 
3 liveuser 1318
			#設置錯誤訊息
1319
			$result["error"]=$checkResult;
226 liveuser 1320
 
3 liveuser 1321
			#回傳結果
1322
			return $result;
226 liveuser 1323
 
3 liveuser 1324
			}#if end
1325
 
1326
		#設定時區
1327
		$conf_setTimeZone["timeZone"]=$conf["timeZone"];
1328
		$setTimeZone=time::setTimeZone($conf_setTimeZone);
1329
		unset($conf_setTimeZone);
226 liveuser 1330
 
3 liveuser 1331
		#如果設置時區失敗
1332
		if($setTimeZone["status"]=="false"){
226 liveuser 1333
 
3 liveuser 1334
			#設置錯誤識別
1335
			$result["status"]="false";
226 liveuser 1336
 
3 liveuser 1337
			#設置錯誤訊息
1338
			$result["error"]=$setTimeZone;
226 liveuser 1339
 
3 liveuser 1340
			#回傳結果
1341
			return $result;
226 liveuser 1342
 
3 liveuser 1343
			}#if end
1344
 
1345
		#如果 $conf["startTime"] 有設置
1346
		if(isset($conf["startTime"])){
226 liveuser 1347
 
3 liveuser 1348
			#取得時間範圍的起始點
1349
			$startTime=strtotime(date($conf["startTime"]));
226 liveuser 1350
 
3 liveuser 1351
			#如果 $startTime 大於等於 $conf["deadline"]
1352
			if($startTime >= strtotime(date($conf["deadline"]))){
226 liveuser 1353
 
3 liveuser 1354
				#設置錯誤訊息
1355
				$result["error"][]="startTime參數 不能大於等於 deadline參數";
226 liveuser 1356
 
3 liveuser 1357
				#設置執行不正常
1358
				$result["status"]="false";
226 liveuser 1359
 
3 liveuser 1360
				#回傳結果
1361
				return $result;
226 liveuser 1362
 
1363
				}#if end
1364
 
3 liveuser 1365
			}#if end
1366
 
1367
		#把目前時間放入變數$now
1368
		$now=strtotime(date("Y-m-d H:i:s"));
1369
 
1370
		#截止日期
1371
		$deadLine=strtotime(date($conf["deadline"]));
226 liveuser 1372
 
3 liveuser 1373
		#截止日期同時為時間範圍的終點
1374
		$end=$deadLine;
1375
 
1376
		#如果條件是在某段時間之後
1377
		if($conf["condition"]=="after"){
1378
 
1379
			#如果現在的時間超過$deadLine
1380
			if($now >= $deadLine){
1381
 
1382
				#執行到這邊代表是不符合條件時間內
1383
				$result["passed"]="false";
226 liveuser 1384
 
3 liveuser 1385
				#設置執行正常
1386
				$result["status"]="true";
226 liveuser 1387
 
3 liveuser 1388
				#回傳結果
1389
				return $result;
226 liveuser 1390
 
3 liveuser 1391
				}#if end
226 liveuser 1392
 
3 liveuser 1393
			#反之
1394
			else{
226 liveuser 1395
 
3 liveuser 1396
				#執行到這邊代表是符合條件時間內
1397
				$result["passed"]="true";
226 liveuser 1398
 
3 liveuser 1399
				#設置執行正常
1400
				$result["status"]="true";
226 liveuser 1401
 
3 liveuser 1402
				#回傳結果
1403
				return $result;
226 liveuser 1404
 
3 liveuser 1405
				}#else end
226 liveuser 1406
 
3 liveuser 1407
			}#function end
1408
 
226 liveuser 1409
		#如果條件是在某段時間之前
3 liveuser 1410
		else if($conf["condition"]=="before"){
1411
 
1412
			#果現在的時間沒超過$deadLine
1413
			if($now <= $deadLine){
1414
 
1415
				#執行到這邊代表是不符合條件時間內
1416
				$result["passed"]="false";
226 liveuser 1417
 
3 liveuser 1418
				#設置執行正常
1419
				$result["status"]="true";
226 liveuser 1420
 
3 liveuser 1421
				#回傳結果
1422
				return $result;
1423
 
1424
				}#if end
226 liveuser 1425
 
3 liveuser 1426
			#反之
1427
			else{
226 liveuser 1428
 
3 liveuser 1429
				#執行到這邊代表是符合條件時間內
1430
				$result["passed"]="true";
226 liveuser 1431
 
3 liveuser 1432
				#設置執行正常
1433
				$result["status"]="true";
226 liveuser 1434
 
3 liveuser 1435
				#回傳結果
1436
				return $result;
226 liveuser 1437
 
3 liveuser 1438
				}#else end
226 liveuser 1439
 
3 liveuser 1440
			}#if end
1441
 
226 liveuser 1442
		#如果條件是在某段時間之內
3 liveuser 1443
		else if($conf["condition"]=="betweenStartToDeadline"){
1444
 
1445
			#檢查參數是否都設定了
1446
			#函式說明:
1447
			#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
1448
			#回傳結果:
1449
			#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1450
			#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1451
			#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1452
			#必填寫的參數:
1453
			$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
1454
			$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("startTime");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
1455
			#可以省略的參數:
226 liveuser 1456
			#$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
3 liveuser 1457
			$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
1458
			unset($conf["variableCheck"]["isexistMuti"]);
1459
 
1460
			#如果檢查失敗
1461
			if($checkResult["status"]=="false"){
226 liveuser 1462
 
3 liveuser 1463
				#設置行執行失敗
1464
				$result["status"]="false";
226 liveuser 1465
 
3 liveuser 1466
				#設置錯誤訊息
1467
				$result["error"]=$checkResult;
226 liveuser 1468
 
3 liveuser 1469
				#回傳結果
1470
				return $result;
226 liveuser 1471
 
3 liveuser 1472
				}#if end
1473
 
1474
			#如果檢查不通過
1475
			if($checkResult["passed"]=="false"){
226 liveuser 1476
 
3 liveuser 1477
				#設置行執行失敗
1478
				$result["status"]="false";
226 liveuser 1479
 
3 liveuser 1480
				#設置錯誤訊息
1481
				$result["error"]=$checkResult;
226 liveuser 1482
 
3 liveuser 1483
				#回傳結果
1484
				return $result;
226 liveuser 1485
 
3 liveuser 1486
				}#if end
226 liveuser 1487
 
3 liveuser 1488
			#如果現在的時間是在條件時間內
1489
			if($now <= $end && $now >= $startTime){
226 liveuser 1490
 
3 liveuser 1491
				#執行到這邊代表是不符合條件時間內
1492
				$result["passed"]="false";
226 liveuser 1493
 
3 liveuser 1494
				#設置執行正常
1495
				$result["status"]="true";
226 liveuser 1496
 
3 liveuser 1497
				#回傳結果
1498
				return $result;
226 liveuser 1499
 
3 liveuser 1500
				}#if end
226 liveuser 1501
 
3 liveuser 1502
			#反之
1503
			else{
226 liveuser 1504
 
3 liveuser 1505
				#執行到這邊代表是符合條件時間內
1506
				$result["passed"]="true";
226 liveuser 1507
 
3 liveuser 1508
				#設置執行正常
1509
				$result["status"]="true";
226 liveuser 1510
 
3 liveuser 1511
				#回傳結果
1512
				return $result;
226 liveuser 1513
 
3 liveuser 1514
				}#else end
226 liveuser 1515
 
3 liveuser 1516
			}#if end
1517
 
226 liveuser 1518
		#如果條件是在某段時間之外
3 liveuser 1519
		else if($conf["condition"]=="besideStartToDeadline"){
1520
 
1521
			#檢查參數是否都設定了
1522
			#函式說明:
1523
			#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
1524
			#回傳結果:
1525
			#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1526
			#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1527
			#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1528
			#必填寫的參數:
1529
			$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
1530
			$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("startTime");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
1531
			#可以省略的參數:
226 liveuser 1532
			#$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
3 liveuser 1533
			$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
1534
			unset($conf["variableCheck"]["isexistMuti"]);
1535
 
1536
			#如果檢查失敗
1537
			if($checkResult["status"]=="false"){
226 liveuser 1538
 
3 liveuser 1539
				#設置行執行失敗
1540
				$result["status"]="false";
226 liveuser 1541
 
3 liveuser 1542
				#設置錯誤訊息
1543
				$result["error"]=$checkResult;
226 liveuser 1544
 
3 liveuser 1545
				#回傳結果
1546
				return $result;
226 liveuser 1547
 
3 liveuser 1548
				}#if end
1549
 
1550
			#如果檢查不通過
1551
			if($checkResult["passed"]=="false"){
226 liveuser 1552
 
3 liveuser 1553
				#設置行執行失敗
1554
				$result["status"]="false";
226 liveuser 1555
 
3 liveuser 1556
				#設置錯誤訊息
1557
				$result["error"]=$checkResult;
226 liveuser 1558
 
3 liveuser 1559
				#回傳結果
1560
				return $result;
226 liveuser 1561
 
3 liveuser 1562
				}#if end
1563
 
1564
			#如果現在的時間是在條件時間外
1565
			if($now >= $end || $now <= $startTime){
226 liveuser 1566
 
3 liveuser 1567
				#執行到這邊代表是不符合條件時間內
1568
				$result["passed"]="false";
226 liveuser 1569
 
3 liveuser 1570
				#設置執行正常
1571
				$result["status"]="true";
226 liveuser 1572
 
3 liveuser 1573
				#回傳結果
1574
				return $result;
1575
 
1576
				}#if end
226 liveuser 1577
 
3 liveuser 1578
			#反之
1579
			else{
226 liveuser 1580
 
3 liveuser 1581
				#執行到這邊代表是符合條件時間內
1582
				$result["passed"]="true";
226 liveuser 1583
 
3 liveuser 1584
				#設置執行正常
1585
				$result["status"]="true";
226 liveuser 1586
 
3 liveuser 1587
				#回傳結果
1588
				return $result;
226 liveuser 1589
 
3 liveuser 1590
				}#else end
226 liveuser 1591
 
3 liveuser 1592
			}#if end
226 liveuser 1593
 
3 liveuser 1594
		#執行到這邊代表不正常
1595
		$result["status"]="false";
226 liveuser 1596
 
3 liveuser 1597
		#設定錯誤訊息
1598
		$result["error"][]="非預期的錯誤";
226 liveuser 1599
 
3 liveuser 1600
		#回傳結果
1601
		return $result;
226 liveuser 1602
 
3 liveuser 1603
		}//function deadline end
1604
 
1605
	/*
1606
	#函式說明:
1607
	#在某段時間之前、後、之內、之外,轉址到某處,若沒有符合條件則回傳"passed"
1608
	#回傳結果:
1609
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1610
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
1611
	#$result["function"],當前執行的函式名稱.
1612
	#$result["argu"],使用的參數.
1613
	#$result["content"],若沒有符合條件則回傳"passed".
1614
	#必填參數:
1615
	#$conf["deadline"],字串,爲條件的截止參考時間點,格式須爲 2011-05-27 23:59:59
1616
	$conf["deadline"]="";
1617
	#$conf["toWhere"],字串,爲要轉址到的地方.
1618
	$conf["toWhere"]="";
1619
	#$conf["condition"],字串,爲轉址條件,可以用的值有:"before",代表在某段時間之前;"after",代表在某段時間之後;"betweenStartToDeadline",代表在某段時間之內;"besideStartToDeadline",代表在某段時間之外.
1620
	$conf["condition"]="";
226 liveuser 1621
	#可省略參數:
3 liveuser 1622
	#$conf["startTime"],字串,爲條件的開始的參考時間點,格式須爲 2011-05-27 23:59:59 ,適用於 $conf["condtion"] 爲 "betweenStartToDeadline" 或 "besideStartToDeadline".
1623
	#$conf["startTime"]="";
1624
	#$conf["timeZone"],字串,當前時區為何?預設為"Asia/Taipei",可以設定的時區列表:http://www.php.net/manual/en/timezones.php
1625
	#$conf["timeZone"]="Asia/Taipei";
1626
	#參考資料:
1627
	#無.
1628
	#備註:
1629
	#無.
1630
	*/
1631
	public static function deadlineAction(&$conf){
1632
 
1633
		#初始化要回傳的結果
1634
		$result=array();
226 liveuser 1635
 
3 liveuser 1636
		#設置當其函數名稱
1637
		$result["function"]=__FUNCTION__;
226 liveuser 1638
 
3 liveuser 1639
		#如果 $conf 不為陣列
1640
		if(gettype($conf)!="array"){
226 liveuser 1641
 
3 liveuser 1642
			#設置執行失敗
1643
			$result["status"]="false";
226 liveuser 1644
 
3 liveuser 1645
			#設置執行錯誤訊息
1646
			$result["error"][]="\$conf變數須為陣列形態";
1647
 
1648
			#如果傳入的參數為 null
1649
			if($conf==null){
226 liveuser 1650
 
3 liveuser 1651
				#設置執行錯誤訊息
1652
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 1653
 
3 liveuser 1654
				}#if end
1655
 
1656
			#回傳結果
1657
			return $result;
226 liveuser 1658
 
3 liveuser 1659
			}#if end
226 liveuser 1660
 
3 liveuser 1661
		#取得使用的參數.
1662
		$result["argu"]=$conf;
226 liveuser 1663
 
3 liveuser 1664
		#檢查參數
1665
		#函式說明:
1666
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1667
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1668
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
1669
		#$result["function"],當前執行的函式名稱.
1670
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1671
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1672
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1673
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
1674
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
1675
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
1676
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
1677
		#必填寫的參數:
1678
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1679
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1680
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1681
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("deadline","toWhere","condition");
226 liveuser 1682
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3 liveuser 1683
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string");
1684
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1685
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1686
		#可以省略的參數:
1687
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或集合.
1688
		$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("startTime","timeZone");
1689
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
1690
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
1691
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1692
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("startTime","timeZone");
226 liveuser 1693
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3 liveuser 1694
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
1695
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1696
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,"Asia/Taipei");
1697
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1698
		#$conf["arrayCountEqualCheck"][]=array();
1699
		#參考資料來源:
1700
		#array_keys=>http://php.net/manual/en/function.array-keys.php
1701
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1702
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 1703
 
3 liveuser 1704
		#如果檢查失敗
1705
		if($checkResult["status"]=="false"){
226 liveuser 1706
 
3 liveuser 1707
			#設置錯誤識別
1708
			$result["status"]="false";
226 liveuser 1709
 
3 liveuser 1710
			#設置錯誤訊息
1711
			$result["error"]=$checkResult;
226 liveuser 1712
 
3 liveuser 1713
			#回傳結果
1714
			return $result;
226 liveuser 1715
 
3 liveuser 1716
			}#if end
226 liveuser 1717
 
3 liveuser 1718
		#如果檢查不通過
1719
		if($checkResult["passed"]=="false"){
226 liveuser 1720
 
3 liveuser 1721
			#設置錯誤識別
1722
			$result["status"]="false";
226 liveuser 1723
 
3 liveuser 1724
			#設置錯誤訊息
1725
			$result["error"]=$checkResult;
226 liveuser 1726
 
3 liveuser 1727
			#回傳結果
1728
			return $result;
226 liveuser 1729
 
3 liveuser 1730
			}#if end
226 liveuser 1731
 
3 liveuser 1732
		#函式說明:
1733
		#判斷當下是否在某段時間之前、後、之內、之外.
1734
		#回傳結果:
1735
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1736
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
1737
		#$result["function"],當前執行的函式名稱.
1738
		#$result["passed"],若沒有符合條件則回傳"true";反之為"false".
1739
		#必填參數:
1740
		#$conf["deadline"],字串,爲條件的截止參考時間點,格式須爲 2011-05-27 23:59:59
1741
		$conf["time::deadline"]["deadline"]=$conf["deadline"];
1742
		#$conf["condition"],字串,爲轉址條件,可以用的值有:"before",代表在某段時間之前;"after",代表在某段時間之後;"betweenStartToDeadline",代表在某段時間之內;"besideStartToDeadline",代表在某段時間之外.
1743
		$conf["time::deadline"]["condition"]=$conf["condition"];
226 liveuser 1744
		#可省略參數:
1745
 
3 liveuser 1746
		#若有指定 "startTime" 參數
1747
		if(isset($conf["startTime"])){
226 liveuser 1748
 
3 liveuser 1749
			#$conf["startTime"],字串,爲條件的開始的參考時間點,格式須爲 2011-05-27 23:59:59 ,適用於 $conf["condtion"] 爲 "betweenStartToDeadline" 或 "besideStartToDeadline".
1750
			$conf["time::deadline"]["startTime"]=$conf["startTime"];
226 liveuser 1751
 
3 liveuser 1752
			}#if end
226 liveuser 1753
 
3 liveuser 1754
		#若有指定 "timeZone" 參數
1755
		if(isset($conf["timeZone"])){
226 liveuser 1756
 
3 liveuser 1757
			#$conf["startTime"],字串,爲條件的開始的參考時間點,格式須爲 2011-05-27 23:59:59 ,適用於 $conf["condtion"] 爲 "betweenStartToDeadline" 或 "besideStartToDeadline".
1758
			$conf["time::deadline"]["timeZone"]=$conf["timeZone"];
226 liveuser 1759
 
3 liveuser 1760
			}#if end
226 liveuser 1761
 
3 liveuser 1762
		#參考資料:
1763
		#無.
1764
		#備註:
1765
		#無.
1766
		$deadline=time::deadline($conf["time::deadline"]);
1767
		unset($conf["time::deadline"]);
226 liveuser 1768
 
3 liveuser 1769
		#如果執行失敗
1770
		if($deadline["status"]=="false"){
226 liveuser 1771
 
3 liveuser 1772
			#設置錯誤識別
1773
			$result["status"]="false";
226 liveuser 1774
 
3 liveuser 1775
			#設置錯誤訊息
1776
			$result["error"]=$deadline;
226 liveuser 1777
 
3 liveuser 1778
			#回傳結果
1779
			return $result;
226 liveuser 1780
 
3 liveuser 1781
			}#if end
1782
 
1783
		#如果不是在指定時間條件下
1784
		if($deadline["passed"]=="false"){
226 liveuser 1785
 
3 liveuser 1786
			#設置錯誤識別
1787
			$result["status"]="true";
226 liveuser 1788
 
3 liveuser 1789
			#設置通過, 不許進行轉址
1790
			$result["content"]="passed";
226 liveuser 1791
 
3 liveuser 1792
			#回傳結果
1793
			return $result;
226 liveuser 1794
 
3 liveuser 1795
			}#if end
226 liveuser 1796
 
3 liveuser 1797
		#執行到這邊代表符合指定時間條件
226 liveuser 1798
 
3 liveuser 1799
		#進行轉址
1800
		#函式說明:
1801
		#設定session變數後,立即轉址.
1802
		#回傳的結果:
1803
		#$result["status"],執行是否成功,"true"代表成功,"false"代表不成功.
1804
		#$result["function"],當前執行的函數名稱.
1805
		#$result["error"],錯誤訊息陣列.
1806
		#必填參數:
1807
		#$conf["headerLocation"],為要轉址到的地方,若爲 $_SERVER["PHP_SELF"],則爲回到目前頁面,全民資安素養網爲 https://isafe.moe.edu.tw/.
1808
		$conf["header::redirectionNow"]["headerLocation"]=$conf["toWhere"];
1809
		#可省略參數:
1810
		#$conf["sessionName"],字串陣列,可以指派session變數的名稱.
1811
		#$conf["sessionName"]=array("");
1812
		#$conf["sessionValue"]字串陣列,可以指派session變數的內容.
1813
		#$conf["sessionValue"]=array("");
1814
		#參考資料:
1815
		#http://php.net/manual/en/reserved.variables.server.php
1816
		#備註:
1817
		#無.
1818
		$redirectionNow=header::redirectionNow($conf["header::redirectionNow"]);
1819
		unset($conf["header::redirectionNow"]);
226 liveuser 1820
 
3 liveuser 1821
		#如果執行失敗
1822
		if($redirectionNow["status"]=="false"){
226 liveuser 1823
 
3 liveuser 1824
			#設置錯誤識別
1825
			$result["status"]="false";
226 liveuser 1826
 
3 liveuser 1827
			#設置錯誤訊息
1828
			$result["error"]=$redirectionNow;
226 liveuser 1829
 
3 liveuser 1830
			#回傳結果
1831
			return $result;
226 liveuser 1832
 
3 liveuser 1833
			}#if end
226 liveuser 1834
 
3 liveuser 1835
		#不應該執行到這邊
226 liveuser 1836
 
3 liveuser 1837
		#設置執行失敗
1838
		$result["status"]="false";
1839
 
1840
		#設置不明錯誤原因
1841
		$result["error"]="unknown error";
226 liveuser 1842
 
3 liveuser 1843
		#回傳結果
1844
		return $result;
1845
 
1846
		}#function deadlineAction end
1847
 
1848
	/*
1849
	#函式說明:
1850
	#將時間轉換成用分鐘表示,適用於格式字串「3H5M15S」或「3H5M15」轉換成「185.25」的類型,結果會回傳分鐘數.
1851
	#回傳結果:
1852
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1853
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
1854
	#$result["function"],當前執行的函式名稱.
1855
	#$result["content"],轉換好的結果.
1856
	#必填參數:
1857
	#$conf["stringIn"],字串,爲要分割的字串.
1858
	$conf["stringIn"]="";
1859
	#$conf["hourSpiltSymbol"],字串,爲小時的單位代稱.
1860
	$conf["hourSpiltSymbol"]="";
1861
	#$conf["minSpiltSymbol"],字串,爲分鐘的單位代稱.
1862
	$conf["minSpiltSymbol"]="";
1863
	#$conf["secSpiltSymbol"],字串,爲秒的單位代稱.
1864
	$conf["secSpiltSymbol"]="";
1865
	#可省略參數:
1866
	#無.
1867
	#參考資料:
1868
	#無.
1869
	#備註:
1870
	#無.
226 liveuser 1871
	*/
3 liveuser 1872
	public static function timeToMin(&$conf){
1873
 
1874
		#初始化要回傳的結果
1875
		$result=array();
226 liveuser 1876
 
3 liveuser 1877
		#設置當其函數名稱
1878
		$result["function"]=__FUNCTION__;
226 liveuser 1879
 
3 liveuser 1880
		#如果 $conf 不為陣列
1881
		if(gettype($conf)!="array"){
226 liveuser 1882
 
3 liveuser 1883
			#設置執行失敗
1884
			$result["status"]="false";
226 liveuser 1885
 
3 liveuser 1886
			#設置執行錯誤訊息
1887
			$result["error"][]="\$conf變數須為陣列形態";
1888
 
1889
			#如果傳入的參數為 null
1890
			if($conf==null){
226 liveuser 1891
 
3 liveuser 1892
				#設置執行錯誤訊息
1893
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 1894
 
3 liveuser 1895
				}#if end
1896
 
1897
			#回傳結果
1898
			return $result;
226 liveuser 1899
 
3 liveuser 1900
			}#if end
226 liveuser 1901
 
3 liveuser 1902
		#檢查參數
1903
		#函式說明:
1904
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1905
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1906
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
1907
		#$result["function"],當前執行的函式名稱.
1908
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1909
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1910
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1911
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
1912
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
1913
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
1914
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
1915
		#必填寫的參數:
1916
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1917
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1918
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1919
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("stringIn","hourSpiltSymbol","minSpiltSymbol","secSpiltSymbol");
226 liveuser 1920
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3 liveuser 1921
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string","string");
1922
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1923
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1924
		#可以省略的參數:
1925
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或集合.
1926
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("startTime","timeZone");
1927
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
1928
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
1929
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1930
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("startTime","timeZone");
226 liveuser 1931
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3 liveuser 1932
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
1933
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1934
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,"Asia/Taipei");
1935
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1936
		#$conf["arrayCountEqualCheck"][]=array();
1937
		#參考資料來源:
1938
		#array_keys=>http://php.net/manual/en/function.array-keys.php
1939
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1940
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 1941
 
3 liveuser 1942
		#如果檢查失敗
1943
		if($checkResult["status"]=="false"){
226 liveuser 1944
 
3 liveuser 1945
			#設置錯誤識別
1946
			$result["status"]="false";
226 liveuser 1947
 
3 liveuser 1948
			#設置錯誤訊息
1949
			$result["error"]=$checkResult;
226 liveuser 1950
 
3 liveuser 1951
			#回傳結果
1952
			return $result;
226 liveuser 1953
 
3 liveuser 1954
			}#if end
226 liveuser 1955
 
3 liveuser 1956
		#如果檢查不通過
1957
		if($checkResult["passed"]=="false"){
226 liveuser 1958
 
3 liveuser 1959
			#設置錯誤識別
1960
			$result["status"]="false";
226 liveuser 1961
 
3 liveuser 1962
			#設置錯誤訊息
1963
			$result["error"]=$checkResult;
226 liveuser 1964
 
3 liveuser 1965
			#回傳結果
1966
			return $result;
226 liveuser 1967
 
3 liveuser 1968
			}#if end
1969
 
1970
		#以 $conf["hourSpiltSymbol"] 爲分割點進行字串分割
1971
		$spiltString_conf["stringIn"]=$conf["stringIn"];
1972
		$spiltString_conf["spiltSymbol"]=$conf["hourSpiltSymbol"];
1973
		$spiltString=stringProcess::spiltString($spiltString_conf);
1974
		unset($spiltString_conf);#清空變數避免出錯
1975
 
1976
		#如果分割失敗
1977
		if($spiltString["status"]=="false"){
226 liveuser 1978
 
3 liveuser 1979
			#設置錯誤識別
1980
			$result["status"]="false";
226 liveuser 1981
 
3 liveuser 1982
			#設置錯誤訊息
1983
			$result["error"]=$spiltString;
226 liveuser 1984
 
3 liveuser 1985
			#回傳結果
1986
			return $result;
226 liveuser 1987
 
3 liveuser 1988
			}#if end
226 liveuser 1989
 
3 liveuser 1990
		#如果分割好的筆數小於2
1991
		if($spiltString["dataCounts"]<2){
226 liveuser 1992
 
3 liveuser 1993
			#設置錯誤識別
1994
			$result["status"]="false";
226 liveuser 1995
 
3 liveuser 1996
			#設置錯誤訊息
1997
			$result["error"]=$spiltString;
226 liveuser 1998
 
3 liveuser 1999
			#增加錯誤訊息
2000
			$result["error"][]="請確認 stringIn 參數是否符合格式";
226 liveuser 2001
 
3 liveuser 2002
			#回傳結果
2003
			return $result;
226 liveuser 2004
 
3 liveuser 2005
			}#if end
2006
 
2007
		#將取得的小時放進 $hour 裏面
2008
		$hour=$spiltString["dataArray"][0];
2009
 
2010
		#以 $conf["minSpiltSymbol"] 爲分割點進行字串分割
2011
		$spiltString_conf["stringIn"]=$conf["stringIn"];
2012
		$spiltString_conf["spiltSymbol"]=$conf["minSpiltSymbol"];
2013
		$spiltString=stringProcess::spiltString($spiltString_conf);
2014
		unset($spiltString_conf);#清空變數避免出錯
226 liveuser 2015
 
3 liveuser 2016
		#如果分割失敗
2017
		if($spiltString["status"]=="false"){
226 liveuser 2018
 
3 liveuser 2019
			#設置錯誤識別
2020
			$result["status"]="false";
226 liveuser 2021
 
3 liveuser 2022
			#設置錯誤訊息
2023
			$result["error"]=$spiltString;
226 liveuser 2024
 
3 liveuser 2025
			#回傳結果
2026
			return $result;
226 liveuser 2027
 
3 liveuser 2028
			}#if end
226 liveuser 2029
 
3 liveuser 2030
		#如果分割好的筆數小於2
2031
		if($spiltString["dataCounts"]<2){
226 liveuser 2032
 
3 liveuser 2033
			#設置錯誤識別
2034
			$result["status"]="false";
226 liveuser 2035
 
3 liveuser 2036
			#設置錯誤訊息
2037
			$result["error"]=$spiltString;
226 liveuser 2038
 
3 liveuser 2039
			#增加錯誤訊息
2040
			$result["error"][]="請確認 stringIn 參數是否符合格式";
226 liveuser 2041
 
3 liveuser 2042
			#回傳結果
2043
			return $result;
226 liveuser 2044
 
3 liveuser 2045
			}#if end
226 liveuser 2046
 
3 liveuser 2047
		#以 $conf["minSpiltSymbol"] 爲分割點進行字串分割
2048
		$spiltString_conf["stringIn"]=$spiltString["dataArray"][0];
2049
		$spiltString_conf["spiltSymbol"]=$conf["hourSpiltSymbol"];
2050
		$spiltString=stringProcess::spiltString($spiltString_conf);
2051
		unset($spiltString_conf);#清空變數避免出錯
226 liveuser 2052
 
3 liveuser 2053
		#如果分割失敗
2054
		if($spiltString["status"]=="false"){
226 liveuser 2055
 
3 liveuser 2056
			#設置錯誤識別
2057
			$result["status"]="false";
226 liveuser 2058
 
3 liveuser 2059
			#設置錯誤訊息
2060
			$result["error"]=$spiltString;
226 liveuser 2061
 
3 liveuser 2062
			#回傳結果
2063
			return $result;
226 liveuser 2064
 
3 liveuser 2065
			}#if end
226 liveuser 2066
 
3 liveuser 2067
		#如果分割好的筆數小於2
2068
		if($spiltString["dataCounts"]<2){
226 liveuser 2069
 
3 liveuser 2070
			#設置錯誤識別
2071
			$result["status"]="false";
226 liveuser 2072
 
3 liveuser 2073
			#設置錯誤訊息
2074
			$result["error"]=$spiltString;
226 liveuser 2075
 
3 liveuser 2076
			#增加錯誤訊息
2077
			$result["error"][]="請確認 stringIn 參數是否符合格式";
226 liveuser 2078
 
3 liveuser 2079
			#回傳結果
2080
			return $result;
226 liveuser 2081
 
3 liveuser 2082
			}#if end
226 liveuser 2083
 
3 liveuser 2084
		#將取得的分鐘放進 $min 裏面
2085
		$min=$spiltString["dataArray"][1];
226 liveuser 2086
 
3 liveuser 2087
		#以 $conf["secSpiltSymbol"] 爲分割點進行字串分割
2088
		$spiltString_conf["stringIn"]=$conf["stringIn"];
2089
		$spiltString_conf["spiltSymbol"]=$conf["secSpiltSymbol"];
2090
		$spiltString=stringProcess::spiltString($spiltString_conf);
2091
		unset($spiltString_conf);#清空變數避免出錯
2092
 
2093
		#如果分割失敗
2094
		if($spiltString["status"]=="false"){
226 liveuser 2095
 
3 liveuser 2096
			#設置錯誤識別
2097
			$result["status"]="false";
226 liveuser 2098
 
3 liveuser 2099
			#設置錯誤訊息
2100
			$result["error"]=$spiltString;
226 liveuser 2101
 
3 liveuser 2102
			#回傳結果
2103
			return $result;
226 liveuser 2104
 
3 liveuser 2105
			}#if end
2106
 
2107
		#如果分割好的筆數為0
2108
		if($spiltString["dataCounts"]==0){
226 liveuser 2109
 
3 liveuser 2110
			#設置錯誤識別
2111
			$result["status"]="false";
226 liveuser 2112
 
3 liveuser 2113
			#設置錯誤訊息
2114
			$result["error"]=$spiltString;
226 liveuser 2115
 
3 liveuser 2116
			#增加錯誤訊息
2117
			$result["error"][]="請確認 stringIn 參數是否符合格式";
226 liveuser 2118
 
3 liveuser 2119
			#回傳結果
2120
			return $result;
226 liveuser 2121
 
3 liveuser 2122
			}#if end
2123
 
2124
		#以 $conf["minSpiltSymbol"] 爲分割點進行字串分割
2125
		$spiltString_conf["stringIn"]=$spiltString["dataArray"][0];
2126
		$spiltString_conf["spiltSymbol"]=$conf["minSpiltSymbol"];
2127
		$spiltString=stringProcess::spiltString($spiltString_conf);
2128
		unset($spiltString_conf);#清空變數避免出錯
2129
 
2130
		#如果分割失敗
2131
		if($spiltString["status"]=="false"){
226 liveuser 2132
 
3 liveuser 2133
			#設置錯誤識別
2134
			$result["status"]="false";
226 liveuser 2135
 
3 liveuser 2136
			#設置錯誤訊息
2137
			$result["error"]=$spiltString;
226 liveuser 2138
 
3 liveuser 2139
			#回傳結果
2140
			return $result;
226 liveuser 2141
 
3 liveuser 2142
			}#if end
226 liveuser 2143
 
3 liveuser 2144
		#如果分割好的筆數小於2
2145
		if($spiltString["dataCounts"]<2){
226 liveuser 2146
 
3 liveuser 2147
			#設置錯誤識別
2148
			$result["status"]="false";
226 liveuser 2149
 
3 liveuser 2150
			#設置錯誤訊息
2151
			$result["error"]=$spiltString;
226 liveuser 2152
 
3 liveuser 2153
			#增加錯誤訊息
2154
			$result["error"][]="請確認 stringIn 參數是否符合格式";
226 liveuser 2155
 
3 liveuser 2156
			#回傳結果
2157
			return $result;
226 liveuser 2158
 
3 liveuser 2159
			}#if end
226 liveuser 2160
 
3 liveuser 2161
		#將取得的秒數放進 $sec 裏面
2162
		$sec=$spiltString["dataArray"][1];
2163
 
2164
		#將小時、秒換算成分鐘加總,小數取到兩位
2165
		$result["content"]=$hour*60+$min+round($sec/60,2);
2166
 
2167
		#設置執行正常
2168
		$result["status"]="true";
2169
 
2170
		#回傳結果
226 liveuser 2171
		return $result;
2172
 
3 liveuser 2173
		}#function timeToMin end
226 liveuser 2174
 
3 liveuser 2175
	/*
2176
	#函式說明:
2177
	#求算上個月份是幾月
2178
	#回傳結果:
2179
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2180
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
2181
	#$result["function"],當前執行的函式名稱.
2182
	#$result["lastMonth"],上個月份
2183
	#$result["yearChanged"],若爲true則代表年度要減1,若爲false則年度不變。
2184
	#必填參數:
2185
	#$conf["thisMonth"],整數,當前的月份.
2186
	$conf["thisMonth"]=;
2187
	#可省略參數:
2188
	#無.
2189
	#參考資料:
2190
	#無.
2191
	#備註:
2192
	#無.
2193
	*/
2194
	public static function getLastMonth(&$conf){
2195
 
2196
		#初始化要回傳的結果
2197
		$result=array();
226 liveuser 2198
 
3 liveuser 2199
		#設置當其函數名稱
2200
		$result["function"]=__FUNCTION__;
226 liveuser 2201
 
3 liveuser 2202
		#如果 $conf 不為陣列
2203
		if(gettype($conf)!="array"){
226 liveuser 2204
 
3 liveuser 2205
			#設置執行失敗
2206
			$result["status"]="false";
226 liveuser 2207
 
3 liveuser 2208
			#設置執行錯誤訊息
2209
			$result["error"][]="\$conf變數須為陣列形態";
2210
 
2211
			#如果傳入的參數為 null
2212
			if($conf==null){
226 liveuser 2213
 
3 liveuser 2214
				#設置執行錯誤訊息
2215
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 2216
 
3 liveuser 2217
				}#if end
2218
 
2219
			#回傳結果
2220
			return $result;
226 liveuser 2221
 
3 liveuser 2222
			}#if end
226 liveuser 2223
 
3 liveuser 2224
		#檢查參數
2225
		#函式說明:
2226
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2227
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2228
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
2229
		#$result["function"],當前執行的函式名稱.
2230
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2231
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2232
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2233
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
2234
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
2235
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
2236
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
2237
		#必填寫的參數:
2238
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2239
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2240
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2241
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("thisMonth");
226 liveuser 2242
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3 liveuser 2243
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("integer");
2244
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2245
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2246
		#可以省略的參數:
2247
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或集合.
2248
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("startTime","timeZone");
2249
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
2250
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
2251
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2252
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("startTime","timeZone");
226 liveuser 2253
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3 liveuser 2254
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
2255
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2256
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,"Asia/Taipei");
2257
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2258
		#$conf["arrayCountEqualCheck"][]=array();
2259
		#參考資料來源:
2260
		#array_keys=>http://php.net/manual/en/function.array-keys.php
2261
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2262
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 2263
 
3 liveuser 2264
		#如果檢查失敗
2265
		if($checkResult["status"]=="false"){
226 liveuser 2266
 
3 liveuser 2267
			#設置錯誤識別
2268
			$result["status"]="false";
226 liveuser 2269
 
3 liveuser 2270
			#設置錯誤訊息
2271
			$result["error"]=$checkResult;
226 liveuser 2272
 
3 liveuser 2273
			#回傳結果
2274
			return $result;
226 liveuser 2275
 
3 liveuser 2276
			}#if end
226 liveuser 2277
 
3 liveuser 2278
		#如果檢查不通過
2279
		if($checkResult["passed"]=="false"){
226 liveuser 2280
 
3 liveuser 2281
			#設置錯誤識別
2282
			$result["status"]="false";
226 liveuser 2283
 
3 liveuser 2284
			#設置錯誤訊息
2285
			$result["error"]=$checkResult;
226 liveuser 2286
 
3 liveuser 2287
			#回傳結果
2288
			return $result;
226 liveuser 2289
 
3 liveuser 2290
			}#if end
2291
 
2292
		#如果 thisMonth參數 不為 1~12
2293
		if($conf["thisMonth"]<1 || $conf["thisMonth"]>12){
226 liveuser 2294
 
3 liveuser 2295
			#設置錯誤識別
2296
			$result["status"]="false";
226 liveuser 2297
 
3 liveuser 2298
			#設置錯誤訊息
2299
			$result["error"][]="thisMonth參數必須為「1~12」";
226 liveuser 2300
 
3 liveuser 2301
			#回傳結果
2302
			return $result;
226 liveuser 2303
 
3 liveuser 2304
			}#if end
2305
 
2306
		#如果目前是1月份
2307
		if($conf["thisMonth"]==1){
2308
 
2309
			#年度會減1
2310
			$result["yearChanged"]=true;
2311
 
2312
			#則上個月就是12月份
2313
			$result["lastMonth"]=12;
2314
 
2315
			#設置執行正常
2316
			$result["status"]="true";
2317
 
2318
			#回傳結果
226 liveuser 2319
			return $result;
2320
 
3 liveuser 2321
			}#if end
2322
 
2323
		#反之
2324
		else{
2325
 
2326
			#年度不改變
2327
			$result["yearChanged"]=false;
2328
 
2329
			#計算上個月份是幾月
2330
			$result["lastMonth"]=$conf["thisMonth"]-1;
226 liveuser 2331
 
3 liveuser 2332
			#設置執行正常
2333
			$result["status"]="true";
226 liveuser 2334
 
3 liveuser 2335
			#回傳結果
2336
			return $result;
226 liveuser 2337
 
3 liveuser 2338
			}#else end
226 liveuser 2339
 
3 liveuser 2340
		#執行到這邊代表不正常
2341
		$result["status"]="false";
226 liveuser 2342
 
3 liveuser 2343
		#設置執行錯誤
2344
		$result["error"][]="非預期的錯誤";
226 liveuser 2345
 
3 liveuser 2346
		#回傳結果
2347
		return $result;
2348
 
2349
		}#unction getLasrtMonth end
226 liveuser 2350
 
3 liveuser 2351
	/*
2352
	#函式說明:
2353
	#檢查當月份減1的時候,年度是否要減1,並回傳月份減1之後的西元年度.
2354
	#回傳結果:
2355
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2356
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
2357
	#$result["function"],當前執行的函式名稱.
2358
	#$result["yearChanged"],爲年份是否有改變,true表示有改變,false表示沒有改變.
2359
	#$result["changedWestYear"],回傳月份減1之後的西元年度.
2360
	#必填參數:
2361
	#$conf["thisMonth"],整數,目前的月份.
2362
	$conf["thisMonth"]=;
2363
	#$conf["thisWestYear"],整數,目前的西元年.
2364
	$conf["thisWestYear"]=;
2365
	#可省略參數:
2366
	#無.
2367
	#參考資料:
2368
	#無.
2369
	#備註:
2370
	#無.
226 liveuser 2371
	*/
3 liveuser 2372
	public static function checkWestYearWhenMonthChanged(&$conf){
2373
 
2374
		#初始化要回傳的結果
2375
		$result=array();
226 liveuser 2376
 
3 liveuser 2377
		#設置當其函數名稱
2378
		$result["function"]=__FUNCTION__;
226 liveuser 2379
 
3 liveuser 2380
		#如果 $conf 不為陣列
2381
		if(gettype($conf)!="array"){
226 liveuser 2382
 
3 liveuser 2383
			#設置執行失敗
2384
			$result["status"]="false";
226 liveuser 2385
 
3 liveuser 2386
			#設置執行錯誤訊息
2387
			$result["error"][]="\$conf變數須為陣列形態";
2388
 
2389
			#如果傳入的參數為 null
2390
			if($conf==null){
226 liveuser 2391
 
3 liveuser 2392
				#設置執行錯誤訊息
2393
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 2394
 
3 liveuser 2395
				}#if end
2396
 
2397
			#回傳結果
2398
			return $result;
226 liveuser 2399
 
3 liveuser 2400
			}#if end
226 liveuser 2401
 
3 liveuser 2402
		#檢查參數
2403
		#函式說明:
2404
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2405
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2406
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
2407
		#$result["function"],當前執行的函式名稱.
2408
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2409
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2410
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2411
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
2412
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
2413
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
2414
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
2415
		#必填寫的參數:
2416
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2417
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2418
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2419
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("thisMonth","thisWestYear");
226 liveuser 2420
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3 liveuser 2421
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("integer","integer");
2422
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2423
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2424
		#可以省略的參數:
2425
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或集合.
2426
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("startTime","timeZone");
2427
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
2428
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
2429
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2430
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("startTime","timeZone");
226 liveuser 2431
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3 liveuser 2432
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
2433
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2434
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,"Asia/Taipei");
2435
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2436
		#$conf["arrayCountEqualCheck"][]=array();
2437
		#參考資料來源:
2438
		#array_keys=>http://php.net/manual/en/function.array-keys.php
2439
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2440
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 2441
 
3 liveuser 2442
		#如果檢查失敗
2443
		if($checkResult["status"]=="false"){
226 liveuser 2444
 
3 liveuser 2445
			#設置錯誤識別
2446
			$result["status"]="false";
226 liveuser 2447
 
3 liveuser 2448
			#設置錯誤訊息
2449
			$result["error"]=$checkResult;
226 liveuser 2450
 
3 liveuser 2451
			#回傳結果
2452
			return $result;
226 liveuser 2453
 
3 liveuser 2454
			}#if end
226 liveuser 2455
 
3 liveuser 2456
		#如果檢查不通過
2457
		if($checkResult["passed"]=="false"){
226 liveuser 2458
 
3 liveuser 2459
			#設置錯誤識別
2460
			$result["status"]="false";
226 liveuser 2461
 
3 liveuser 2462
			#設置錯誤訊息
2463
			$result["error"]=$checkResult;
226 liveuser 2464
 
3 liveuser 2465
			#回傳結果
2466
			return $result;
226 liveuser 2467
 
3 liveuser 2468
			}#if end
2469
 
2470
		#檢查年份是否需要變更
2471
		#函式說明:
2472
		#求算上個月份是幾月
2473
		#回傳結果:
2474
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2475
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
2476
		#$result["function"],當前執行的函式名稱.
2477
		#$result["lastMonth"],上個月份
2478
		#$result["yearChanged"],若爲true則代表年度要減1,若爲false則年度不變。
2479
		#必填參數:
2480
		#$conf["thisMonth"],整數,當前的月份.
2481
		$conf["time::getLastMonth"]["thisMonth"]=$conf["thisMonth"];
2482
		$result_getLastMonth=time::getLastMonth($conf["time::getLastMonth"]);
2483
		unset($conf["time::getLastMonth"]);
2484
 
2485
		#如果取得失敗
2486
		if($result_getLastMonth["status"]=="false"){
226 liveuser 2487
 
3 liveuser 2488
			#設置錯誤識別
2489
			$result["status"]="false";
226 liveuser 2490
 
3 liveuser 2491
			#設置錯誤訊息
2492
			$result["error"]=$result_getLastMonth;
226 liveuser 2493
 
3 liveuser 2494
			#回傳結果
2495
			return $result;
226 liveuser 2496
 
3 liveuser 2497
			}#if end
226 liveuser 2498
 
3 liveuser 2499
		#如果 $result_getLastMonth["yearChanged"] 爲 true
2500
		if($result_getLastMonth["yearChanged"]==true){
2501
 
2502
			#設定年度有改變
2503
			$result["yearChanged"]=true;
2504
 
2505
			#設定變更後的年度
2506
			$result["changedWestYear"]=$conf["thisWestYear"]-1;
2507
 
2508
			#設置執行正常
2509
			$result["status"]="true";
2510
 
2511
			#回傳結果
2512
			return $result;
2513
 
2514
			}#if end
2515
 
2516
		else{
2517
 
2518
			#設定年度沒有改變
2519
			$result["yearChanged"]=false;
2520
 
2521
			#設定變更後的年度
2522
			$result["changedWestYear"]=$conf["thisWestYear"];
226 liveuser 2523
 
3 liveuser 2524
			#設置執行正常
2525
			$result["status"]="true";
226 liveuser 2526
 
3 liveuser 2527
			#回傳結果
2528
			return $result;
2529
 
2530
			}#else end
226 liveuser 2531
 
3 liveuser 2532
		#執行到這邊代表不正常
2533
		$result["status"]="false";
226 liveuser 2534
 
3 liveuser 2535
		#設置執行錯誤
2536
		$result["error"][]="非預期的錯誤";
226 liveuser 2537
 
3 liveuser 2538
		#回傳結果
2539
		return $result;
2540
 
2541
		}#function checkWestYearWhenMonthChanged end
226 liveuser 2542
 
2543
	/*
3 liveuser 2544
	#函式說明:
2545
	#計算時間點距離1970/01/01多少秒,亦即unixtime.
2546
	#回傳結果:
2547
	#$result["stauts"],執行是否成功,"true"代表執行成功;"false"代表執行失敗.
2548
	#$result["error"],錯誤訊息陣列.
2549
	#$result["content"],時間點距離1970/01/01的多少秒.
2550
	#$result["argu"],使用的參數.
2551
	#$result["unixtime"],執行本函式時的unixtime.
226 liveuser 2552
	#$result["oriDateAndTime"],原始輸入的內容,若replace0參數為"true",才會有該回傳內容.
3 liveuser 2553
	#必填參數:
2554
	#$conf["dateAndTime"],字串,格式爲 2011-05-27 23:59:59.
2555
	$conf["dateAndTime"]="";
2556
	#可省略參數:
2557
	#$conf["UTC"],字串,是否要用當前時區的設定去換算成unixtime,預設為"false",代表不要;反之為"true".
2558
	#$conf["UTC"]="false";
2559
	#$conf["replace0"],字串,是否要將連續為0的內容替換成當下時間,預設為"true"代表要;反之為"false".
2560
	#$conf["replace0"]="true";
2561
	#參考資料:
2562
	#無.
2563
	#備註:
2564
	#無.
2565
	*/
2566
	public static function caculateTimeAmount(&$conf){
226 liveuser 2567
 
3 liveuser 2568
		#初始化要回傳的結果
2569
		$result=array();
226 liveuser 2570
 
3 liveuser 2571
		#設置當其函數名稱
2572
		$result["function"]=__FUNCTION__;
226 liveuser 2573
 
3 liveuser 2574
		#如果 $conf 不為陣列
2575
		if(gettype($conf)!="array"){
226 liveuser 2576
 
3 liveuser 2577
			#設置執行失敗
2578
			$result["status"]="false";
226 liveuser 2579
 
3 liveuser 2580
			#設置執行錯誤訊息
2581
			$result["error"][]="\$conf變數須為陣列形態";
2582
 
2583
			#如果傳入的參數為 null
2584
			if($conf==null){
226 liveuser 2585
 
3 liveuser 2586
				#設置執行錯誤訊息
2587
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 2588
 
3 liveuser 2589
				}#if end
2590
 
2591
			#回傳結果
2592
			return $result;
226 liveuser 2593
 
3 liveuser 2594
			}#if end
226 liveuser 2595
 
3 liveuser 2596
		#取得使用的參數
2597
		$result["argu"]=$conf;
226 liveuser 2598
 
3 liveuser 2599
		#檢查參數
2600
		#函式說明:
2601
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2602
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2603
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
2604
		#$result["function"],當前執行的函式名稱.
2605
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2606
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2607
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2608
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
2609
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
2610
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
2611
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
2612
		#必填寫的參數:
2613
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2614
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2615
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2616
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("dateAndTime");
226 liveuser 2617
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3 liveuser 2618
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
2619
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2620
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2621
		#可以省略的參數:
2622
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或集合.
2623
		$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("UTC","replace0");
2624
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
2625
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
2626
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2627
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("UTC","replace0");
226 liveuser 2628
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3 liveuser 2629
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
2630
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2631
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false","true");
2632
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2633
		#$conf["arrayCountEqualCheck"][]=array();
2634
		#參考資料來源:
2635
		#array_keys=>http://php.net/manual/en/function.array-keys.php
2636
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2637
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 2638
 
3 liveuser 2639
		#如果檢查失敗
2640
		if($checkResult["status"]=="false"){
226 liveuser 2641
 
3 liveuser 2642
			#設置執行失敗的訊息
2643
			$result["status"]="false";
226 liveuser 2644
 
3 liveuser 2645
			#設置錯誤訊息
2646
			$result["error"]=$checkResult;
226 liveuser 2647
 
3 liveuser 2648
			#回傳結果
2649
			return $result;
226 liveuser 2650
 
3 liveuser 2651
			}#if end
226 liveuser 2652
 
3 liveuser 2653
		#如果檢查不通過
2654
		if($checkResult["passed"]=="false"){
226 liveuser 2655
 
3 liveuser 2656
			#設置執行失敗的訊息
2657
			$result["status"]="false";
226 liveuser 2658
 
3 liveuser 2659
			#設置錯誤訊息
2660
			$result["error"]=$checkResult;
226 liveuser 2661
 
3 liveuser 2662
			#回傳結果
2663
			return $result;
226 liveuser 2664
 
3 liveuser 2665
			}#if end
226 liveuser 2666
 
3 liveuser 2667
		#檢查 dateAndTime 參數的格式,正確格式爲 2011-05-27 23:59:59 - start
226 liveuser 2668
 
3 liveuser 2669
		#初始化要給 variableCheck::checkStringFormat 使用的參數
2670
		$sectionArguForCheckStringFormat=array();
226 liveuser 2671
 
3 liveuser 2672
		#"2011-05-27 23:59:59" 可以拆解成 "2011-"、"05-"、"27 23:"、"59:59" 4段
226 liveuser 2673
 
3 liveuser 2674
		#針對每個 section
2675
		for($i=0;$i<4;$i++){
226 liveuser 2676
 
3 liveuser 2677
			#判斷是哪一段
2678
			switch($i){
226 liveuser 2679
 
3 liveuser 2680
				#如果是 "2011-"
2681
				case 0:
226 liveuser 2682
 
3 liveuser 2683
					#初始化暫存的參數陣列
2684
					$argu=array();
226 liveuser 2685
 
3 liveuser 2686
					#長度為5bytes
2687
					$argu["length"]="5";
226 liveuser 2688
 
3 liveuser 2689
					#"-"結尾
2690
					$argu["endWith"]="-";
226 liveuser 2691
 
3 liveuser 2692
					#儲存section的參數
2693
					$sectionArguForCheckStringFormat[]=$argu;
226 liveuser 2694
 
3 liveuser 2695
					#跳出 switch
2696
					break;
226 liveuser 2697
 
3 liveuser 2698
				#如果是 "05-"
2699
				case 1:
226 liveuser 2700
 
3 liveuser 2701
					#初始化暫存的參數陣列
2702
					$argu=array();
226 liveuser 2703
 
3 liveuser 2704
					#長度為5bytes
2705
					$argu["length"]="3";
226 liveuser 2706
 
3 liveuser 2707
					#"-"結尾
2708
					$argu["endWith"]="-";
226 liveuser 2709
 
3 liveuser 2710
					#儲存section的參數
2711
					$sectionArguForCheckStringFormat[]=$argu;
226 liveuser 2712
 
3 liveuser 2713
					#跳出 switch
2714
					break;
226 liveuser 2715
 
3 liveuser 2716
				#如果是 "27 23:"
2717
				case 2:
226 liveuser 2718
 
3 liveuser 2719
					#初始化暫存的參數陣列
2720
					$argu=array();
226 liveuser 2721
 
3 liveuser 2722
					#長度為5bytes
2723
					$argu["length"]="6";
226 liveuser 2724
 
3 liveuser 2725
					#" "居中
2726
					$argu["centerWith"]=" ";
226 liveuser 2727
 
3 liveuser 2728
					#":"結尾
2729
					$argu["endWith"]=":";
226 liveuser 2730
 
3 liveuser 2731
					#儲存section的參數
2732
					$sectionArguForCheckStringFormat[]=$argu;
226 liveuser 2733
 
3 liveuser 2734
					#跳出 switch
2735
					break;
226 liveuser 2736
 
3 liveuser 2737
				#如果是 "59:59"
2738
				case 3:
226 liveuser 2739
 
3 liveuser 2740
					#初始化暫存的參數陣列
2741
					$argu=array();
226 liveuser 2742
 
3 liveuser 2743
					#長度為5bytes
2744
					$argu["length"]="5";
226 liveuser 2745
 
3 liveuser 2746
					#":"居中
2747
					$argu["centerWith"]=":";
226 liveuser 2748
 
3 liveuser 2749
					#儲存section的參數
2750
					$sectionArguForCheckStringFormat[]=$argu;
226 liveuser 2751
 
3 liveuser 2752
					#跳出 switch
2753
					break;
226 liveuser 2754
 
3 liveuser 2755
				#其他狀況
2756
				default:
226 liveuser 2757
 
3 liveuser 2758
					#設置執行失敗的識別
2759
					$result["status"]="false";
226 liveuser 2760
 
3 liveuser 2761
					#設置錯誤訊息
2762
					$result["error"][]="非預期的錯誤";
226 liveuser 2763
 
3 liveuser 2764
					#回傳結果
2765
					return $result;
226 liveuser 2766
 
3 liveuser 2767
				}#switch end
226 liveuser 2768
 
3 liveuser 2769
			}#for end
226 liveuser 2770
 
3 liveuser 2771
		#函式說明:
2772
		#檢查字串是否符合指定格式
2773
		#回傳結果:
2774
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2775
		#$result["passed"],檢查是否通過,"true"代表通過,"false"代表不通過.
2776
		#$result["content"],詳細結果訊息陣列,若passed為"false"則會有該內容.
2777
		#$result["newInputArgu"],剩下尚未檢驗格式的input.
2778
		#$result["function"],當前執行的函數.
2779
		#$result["error"],涵式錯誤訊息陣列.
2780
		#必填參數:
2781
		#$conf["input"],字串,要檢查格式的字串.
2782
		$conf["variableCheck::checkStringFormat"]["input"]=$conf["dateAndTime"];
2783
		#可省略參數:
2784
		#$conf["equalWith"],字串,輸入字串是否等於該參數內容.
2785
		#$conf["equalWith"]="";
2786
		#$conf["startWith"],字串,開頭要是什麼字串內容.
2787
		#$conf["startWith"]="";
2788
		#$conf["endWith"],字串,結尾要是什麼字串內容.
2789
		#$conf["endWith"]="";
2790
		#$conf["centerWith"],字串,非開頭(預設無,若有指定startWith參數,則為該參數內容)跟結尾(預設無,若有指定endWith參數,則為該參數內容)的內容中要有什麼字串.
2791
		#$conf["centerWith"]="";
2792
		#$conf["length"],字串整數,字串的長度要多少(bytes).
2793
		#$conf["length"]="";
2794
		#$conf["lengthGrapheme"],字串整數,字串的長度要多少字位(grapheme).
2795
		#$conf["lengthGrapheme"]="";
2796
		#$conf["section"],字串陣列,元素數量代表,輸入字串的格式可以區分成多少段.每個元素為本函式的參數陣列剔除input跟section參數.
2797
		$conf["variableCheck::checkStringFormat"]["section"]=$sectionArguForCheckStringFormat;
2798
		#參考資料:
2799
		#grapheme_strlen=>https://www.php.net/manual/en/function.grapheme-strlen.php
2800
		#grapheme/字位/可以書寫的最小單位=>https://zh.wikipedia.org/zh-tw/%E5%AD%97%E4%BD%8D
2801
		#grapheme_substr=>https://www.php.net/manual/en/function.grapheme-substr.php
2802
		#備註:
2803
		#無.
2804
		$checkStringFormat=variableCheck::checkStringFormat($conf["variableCheck::checkStringFormat"]);
2805
		unset($conf["variableCheck::checkStringFormat"]);
226 liveuser 2806
 
3 liveuser 2807
		#如果執行出錯
2808
		if($checkStringFormat["status"]==="false"){
226 liveuser 2809
 
3 liveuser 2810
			#設置執行失敗的訊息
2811
			$result["status"]="false";
226 liveuser 2812
 
3 liveuser 2813
			#設置錯誤訊息
2814
			$result["error"]=$checkStringFormat;
226 liveuser 2815
 
3 liveuser 2816
			#回傳結果
2817
			return $result;
226 liveuser 2818
 
3 liveuser 2819
			}#if end
226 liveuser 2820
 
3 liveuser 2821
		#如果格式不對
2822
		if($checkStringFormat["passed"]==="false"){
226 liveuser 2823
 
3 liveuser 2824
			#設置執行失敗的訊息
2825
			$result["status"]="false";
226 liveuser 2826
 
3 liveuser 2827
			#設置錯誤訊息
2828
			$result["error"]=$checkStringFormat;
226 liveuser 2829
 
3 liveuser 2830
			#回傳結果
2831
			return $result;
226 liveuser 2832
 
3 liveuser 2833
			}#if end
226 liveuser 2834
 
3 liveuser 2835
		#儲存當前的 unixtime
2836
		$result["unixtime"]=time();
226 liveuser 2837
 
3 liveuser 2838
		#如果要替換連續為0的內容
2839
		if($conf["replace0"]==="true"){
226 liveuser 2840
 
3 liveuser 2841
			#記錄原始輸入的 dateAndTime 參數
2842
			$result["oriDateAndTime"]=$conf["dateAndTime"];
226 liveuser 2843
 
3 liveuser 2844
			#初始化記錄 dateAndTime 參數是否有被修正
2845
			$dateAndTimeModified=array();
226 liveuser 2846
 
3 liveuser 2847
			#初始化記錄 dateAndTime 參數的年沒有被修正
2848
			$dateAndTimeModified["Y"]="false";
226 liveuser 2849
 
3 liveuser 2850
			#初始化記錄 dateAndTime 參數的月沒有被修正
2851
			$dateAndTimeModified["m"]="false";
226 liveuser 2852
 
3 liveuser 2853
			#初始化記錄 dateAndTime 參數的日沒有被修正
2854
			$dateAndTimeModified["d"]="false";
226 liveuser 2855
 
3 liveuser 2856
			#初始化記錄 dateAndTime 參數的時沒有被修正
2857
			$dateAndTimeModified["H"]="false";
226 liveuser 2858
 
3 liveuser 2859
			#初始化記錄 dateAndTime 參數的分沒有被修正
2860
			$dateAndTimeModified["i"]="false";
226 liveuser 2861
 
3 liveuser 2862
			#初始化記錄 dateAndTime 參數的秒沒有被修正
2863
			$dateAndTimeModified["s"]="false";
226 liveuser 2864
 
3 liveuser 2865
			#取得當前unixtime
2866
			$currentUnixTime=$result["unixtime"];
226 liveuser 2867
 
3 liveuser 2868
			#取得當前的年份
2869
			$currentYear=gmdate("Y",$currentUnixTime);
226 liveuser 2870
 
3 liveuser 2871
			#取得當前的月份
2872
			$currentMonth=gmdate("m",$currentUnixTime);
226 liveuser 2873
 
3 liveuser 2874
			#取得當前的日
2875
			$currentDay=gmdate("d",$currentUnixTime);
226 liveuser 2876
 
3 liveuser 2877
			#取得當前的小時
2878
			$currentHour=gmdate("H",$currentUnixTime);
226 liveuser 2879
 
3 liveuser 2880
			#取得當前的分鐘
2881
			$currentMin=gmdate("i",$currentUnixTime);
226 liveuser 2882
 
3 liveuser 2883
			#取得當前的秒鐘
2884
			$currentSec=gmdate("s",$currentUnixTime);
226 liveuser 2885
 
3 liveuser 2886
			#函式說明:
2887
			#將固定格式的字串分開,並回傳分開的結果.
2888
			#回傳結果:
2889
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2890
			#$result["error"],錯誤訊息陣列
2891
			#$result["function"],當前執行的函數名稱.
2892
			#$result["argu"],使用的參數.
2893
			#$result["oriStr"],要分割的原始字串內容
2894
			#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
2895
			#$result["dataCounts"],爲總共分成幾段
2896
			#$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
2897
			#必填參數:
2898
			#$conf["stringIn"],字串,要處理的字串.
2899
			$conf["stringProcess::spiltString"]["stringIn"]=$conf["dateAndTime"];
2900
			#$conf["spiltSymbol"],字串,爲以哪個符號作爲分割.
2901
			$conf["stringProcess::spiltString"]["spiltSymbol"]="-";
2902
			#可省略參數:
2903
			#$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
2904
			$conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
2905
			#參考資料:
2906
			#無.
2907
			#備註:
2908
			#無.
2909
			$spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
2910
			unset($conf["stringProcess::spiltString"]);
226 liveuser 2911
 
3 liveuser 2912
			#如果執行出錯
2913
			if($spiltString["status"]==="false"){
226 liveuser 2914
 
3 liveuser 2915
				#設置執行失敗的訊息
2916
				$result["status"]="false";
226 liveuser 2917
 
3 liveuser 2918
				#設置錯誤訊息
2919
				$result["error"]=$spiltString;
226 liveuser 2920
 
3 liveuser 2921
				#回傳結果
2922
				return $result;
226 liveuser 2923
 
3 liveuser 2924
				}#if end
226 liveuser 2925
 
3 liveuser 2926
			#如果沒有關鍵字存在
2927
			if($spiltString["found"]==="false"){
226 liveuser 2928
 
3 liveuser 2929
				#設置執行失敗的訊息
2930
				$result["status"]="false";
226 liveuser 2931
 
3 liveuser 2932
				#設置錯誤訊息
2933
				$result["error"]=$spiltString;
226 liveuser 2934
 
3 liveuser 2935
				#回傳結果
2936
				return $result;
226 liveuser 2937
 
3 liveuser 2938
				}#if end
226 liveuser 2939
 
3 liveuser 2940
			#如果沒有關鍵字存在
2941
			if($spiltString["found"]==="false"){
226 liveuser 2942
 
3 liveuser 2943
				#設置執行失敗的訊息
2944
				$result["status"]="false";
226 liveuser 2945
 
3 liveuser 2946
				#設置錯誤訊息
2947
				$result["error"]=$spiltString;
226 liveuser 2948
 
3 liveuser 2949
				#回傳結果
2950
				return $result;
226 liveuser 2951
 
3 liveuser 2952
				}#if end
226 liveuser 2953
 
3 liveuser 2954
			#如果分割出來不是3段
2955
			if($spiltString["dataCounts"]!==3){
226 liveuser 2956
 
3 liveuser 2957
				#設置執行失敗的訊息
2958
				$result["status"]="false";
226 liveuser 2959
 
3 liveuser 2960
				#設置錯誤訊息
2961
				$result["error"]=$spiltString;
226 liveuser 2962
 
3 liveuser 2963
				#回傳結果
2964
				return $result;
226 liveuser 2965
 
3 liveuser 2966
				}#if end
226 liveuser 2967
 
3 liveuser 2968
			#預設新的 dateAndTime 參數跟輸入參數沒有差異
2969
			$newDateAndTime=$conf["dateAndTime"];
226 liveuser 2970
 
3 liveuser 2971
			#如果西元年為0000
2972
			if($spiltString["dataArray"][0]==="0000"){
226 liveuser 2973
 
2974
				#重新組合新的  dateAndTime
3 liveuser 2975
				$newDateAndTime=$currentYear."-".$spiltString["dataArray"][1]."-".$spiltString["dataArray"][2];
226 liveuser 2976
 
3 liveuser 2977
				#更新到輸入參數
2978
				$conf["dateAndTime"]=$newDateAndTime;
226 liveuser 2979
 
3 liveuser 2980
				#記錄 dateAndTime 參數的年有被修正
2981
				$dateAndTimeModified["Y"]="true";
226 liveuser 2982
 
3 liveuser 2983
				}#if end
226 liveuser 2984
 
3 liveuser 2985
			#函式說明:
2986
			#將固定格式的字串分開,並回傳分開的結果.
2987
			#回傳結果:
2988
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2989
			#$result["error"],錯誤訊息陣列
2990
			#$result["function"],當前執行的函數名稱.
2991
			#$result["argu"],使用的參數.
2992
			#$result["oriStr"],要分割的原始字串內容
2993
			#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
2994
			#$result["dataCounts"],爲總共分成幾段
2995
			#$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
2996
			#必填參數:
2997
			#$conf["stringIn"],字串,要處理的字串.
2998
			$conf["stringProcess::spiltString"]["stringIn"]=$conf["dateAndTime"];
2999
			#$conf["spiltSymbol"],字串,爲以哪個符號作爲分割.
3000
			$conf["stringProcess::spiltString"]["spiltSymbol"]="-";
3001
			#可省略參數:
3002
			#$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
3003
			$conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
3004
			#參考資料:
3005
			#無.
3006
			#備註:
3007
			#無.
3008
			$spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
3009
			unset($conf["stringProcess::spiltString"]);
226 liveuser 3010
 
3 liveuser 3011
			#如果執行出錯
3012
			if($spiltString["status"]==="false"){
226 liveuser 3013
 
3 liveuser 3014
				#設置執行失敗的訊息
3015
				$result["status"]="false";
226 liveuser 3016
 
3 liveuser 3017
				#設置錯誤訊息
3018
				$result["error"]=$spiltString;
226 liveuser 3019
 
3 liveuser 3020
				#回傳結果
3021
				return $result;
226 liveuser 3022
 
3 liveuser 3023
				}#if end
226 liveuser 3024
 
3 liveuser 3025
			#如果沒有關鍵字存在
3026
			if($spiltString["found"]==="false"){
226 liveuser 3027
 
3 liveuser 3028
				#設置執行失敗的訊息
3029
				$result["status"]="false";
226 liveuser 3030
 
3 liveuser 3031
				#設置錯誤訊息
3032
				$result["error"]=$spiltString;
226 liveuser 3033
 
3 liveuser 3034
				#回傳結果
3035
				return $result;
226 liveuser 3036
 
3 liveuser 3037
				}#if end
226 liveuser 3038
 
3 liveuser 3039
			#如果沒有關鍵字存在
3040
			if($spiltString["found"]==="false"){
226 liveuser 3041
 
3 liveuser 3042
				#設置執行失敗的訊息
3043
				$result["status"]="false";
226 liveuser 3044
 
3 liveuser 3045
				#設置錯誤訊息
3046
				$result["error"]=$spiltString;
226 liveuser 3047
 
3 liveuser 3048
				#回傳結果
3049
				return $result;
226 liveuser 3050
 
3 liveuser 3051
				}#if end
226 liveuser 3052
 
3 liveuser 3053
			#如果分割出來不是3段
3054
			if($spiltString["dataCounts"]!==3){
226 liveuser 3055
 
3 liveuser 3056
				#設置執行失敗的訊息
3057
				$result["status"]="false";
226 liveuser 3058
 
3 liveuser 3059
				#設置錯誤訊息
3060
				$result["error"]=$spiltString;
226 liveuser 3061
 
3 liveuser 3062
				#回傳結果
3063
				return $result;
226 liveuser 3064
 
3 liveuser 3065
				}#if end
226 liveuser 3066
 
3 liveuser 3067
			#預設新的 dateAndTime 參數跟輸入參數沒有差異
3068
			$newDateAndTime=$conf["dateAndTime"];
226 liveuser 3069
 
3 liveuser 3070
			#如果年、月分別為0000、00
3071
			if( $dateAndTimeModified["Y"]==="true" && $spiltString["dataArray"][1]==="00" ){
226 liveuser 3072
 
3073
				#重新組合新的  dateAndTime
3 liveuser 3074
				$newDateAndTime=$spiltString["dataArray"][0]."-".$currentMonth."-".$spiltString["dataArray"][2];
226 liveuser 3075
 
3 liveuser 3076
				#更新到輸入參數
3077
				$conf["dateAndTime"]=$newDateAndTime;
226 liveuser 3078
 
3 liveuser 3079
				#記錄 dateAndTime 參數的月有被修正
3080
				$dateAndTimeModified["m"]="true";
226 liveuser 3081
 
3 liveuser 3082
				}#if end
226 liveuser 3083
 
3 liveuser 3084
			#函式說明:
3085
			#將固定格式的字串分開,並回傳分開的結果.
3086
			#回傳結果:
3087
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3088
			#$result["error"],錯誤訊息陣列
3089
			#$result["function"],當前執行的函數名稱.
3090
			#$result["argu"],使用的參數.
3091
			#$result["oriStr"],要分割的原始字串內容
3092
			#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
3093
			#$result["dataCounts"],爲總共分成幾段
3094
			#$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
3095
			#必填參數:
3096
			#$conf["stringIn"],字串,要處理的字串.
3097
			$conf["stringProcess::spiltString"]["stringIn"]=$conf["dateAndTime"];
3098
			#$conf["spiltSymbol"],字串,爲以哪個符號作爲分割.
3099
			$conf["stringProcess::spiltString"]["spiltSymbol"]=" ";
3100
			#可省略參數:
3101
			#$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
3102
			$conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
3103
			#參考資料:
3104
			#無.
3105
			#備註:
3106
			#無.
3107
			$spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
3108
			unset($conf["stringProcess::spiltString"]);
226 liveuser 3109
 
3 liveuser 3110
			#如果執行出錯
3111
			if($spiltString["status"]==="false"){
226 liveuser 3112
 
3 liveuser 3113
				#設置執行失敗的訊息
3114
				$result["status"]="false";
226 liveuser 3115
 
3 liveuser 3116
				#設置錯誤訊息
3117
				$result["error"]=$spiltString;
226 liveuser 3118
 
3 liveuser 3119
				#回傳結果
3120
				return $result;
226 liveuser 3121
 
3 liveuser 3122
				}#if end
226 liveuser 3123
 
3 liveuser 3124
			#如果沒有關鍵字存在
3125
			if($spiltString["found"]==="false"){
226 liveuser 3126
 
3 liveuser 3127
				#設置執行失敗的訊息
3128
				$result["status"]="false";
226 liveuser 3129
 
3 liveuser 3130
				#設置錯誤訊息
3131
				$result["error"]=$spiltString;
226 liveuser 3132
 
3 liveuser 3133
				#回傳結果
3134
				return $result;
226 liveuser 3135
 
3 liveuser 3136
				}#if end
226 liveuser 3137
 
3 liveuser 3138
			#如果沒有關鍵字存在
3139
			if($spiltString["found"]==="false"){
226 liveuser 3140
 
3 liveuser 3141
				#設置執行失敗的訊息
3142
				$result["status"]="false";
226 liveuser 3143
 
3 liveuser 3144
				#設置錯誤訊息
3145
				$result["error"]=$spiltString;
226 liveuser 3146
 
3 liveuser 3147
				#回傳結果
3148
				return $result;
226 liveuser 3149
 
3 liveuser 3150
				}#if end
226 liveuser 3151
 
3 liveuser 3152
			#如果分割出來不是2段
3153
			if($spiltString["dataCounts"]!==2){
226 liveuser 3154
 
3 liveuser 3155
				#設置執行失敗的訊息
3156
				$result["status"]="false";
226 liveuser 3157
 
3 liveuser 3158
				#設置錯誤訊息
3159
				$result["error"]=$spiltString;
226 liveuser 3160
 
3 liveuser 3161
				#回傳結果
3162
				return $result;
226 liveuser 3163
 
3 liveuser 3164
				}#if end
226 liveuser 3165
 
3 liveuser 3166
			#取得輸入參數的時分秒
3167
			$inputHMS=$spiltString["dataArray"][1];
226 liveuser 3168
 
3 liveuser 3169
			#函式說明:
3170
			#將固定格式的字串分開,並回傳分開的結果.
3171
			#回傳結果:
3172
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3173
			#$result["error"],錯誤訊息陣列
3174
			#$result["function"],當前執行的函數名稱.
3175
			#$result["argu"],使用的參數.
3176
			#$result["oriStr"],要分割的原始字串內容
3177
			#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
3178
			#$result["dataCounts"],爲總共分成幾段
3179
			#$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
3180
			#必填參數:
3181
			#$conf["stringIn"],字串,要處理的字串.
3182
			$conf["stringProcess::spiltString"]["stringIn"]=$spiltString["dataArray"][0];
3183
			#$conf["spiltSymbol"],字串,爲以哪個符號作爲分割.
3184
			$conf["stringProcess::spiltString"]["spiltSymbol"]="-";
3185
			#可省略參數:
3186
			#$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
3187
			$conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
3188
			#參考資料:
3189
			#無.
3190
			#備註:
3191
			#無.
3192
			$spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
3193
			unset($conf["stringProcess::spiltString"]);
226 liveuser 3194
 
3 liveuser 3195
			#如果執行出錯
3196
			if($spiltString["status"]==="false"){
226 liveuser 3197
 
3 liveuser 3198
				#設置執行失敗的訊息
3199
				$result["status"]="false";
226 liveuser 3200
 
3 liveuser 3201
				#設置錯誤訊息
3202
				$result["error"]=$spiltString;
226 liveuser 3203
 
3 liveuser 3204
				#回傳結果
3205
				return $result;
226 liveuser 3206
 
3 liveuser 3207
				}#if end
226 liveuser 3208
 
3 liveuser 3209
			#如果沒有關鍵字存在
3210
			if($spiltString["found"]==="false"){
226 liveuser 3211
 
3 liveuser 3212
				#設置執行失敗的訊息
3213
				$result["status"]="false";
226 liveuser 3214
 
3 liveuser 3215
				#設置錯誤訊息
3216
				$result["error"]=$spiltString;
226 liveuser 3217
 
3 liveuser 3218
				#回傳結果
3219
				return $result;
226 liveuser 3220
 
3 liveuser 3221
				}#if end
226 liveuser 3222
 
3 liveuser 3223
			#如果沒有關鍵字存在
3224
			if($spiltString["found"]==="false"){
226 liveuser 3225
 
3 liveuser 3226
				#設置執行失敗的訊息
3227
				$result["status"]="false";
226 liveuser 3228
 
3 liveuser 3229
				#設置錯誤訊息
3230
				$result["error"]=$spiltString;
226 liveuser 3231
 
3 liveuser 3232
				#回傳結果
3233
				return $result;
226 liveuser 3234
 
3 liveuser 3235
				}#if end
226 liveuser 3236
 
3 liveuser 3237
			#如果分割出來不是3段
3238
			if($spiltString["dataCounts"]!==3){
226 liveuser 3239
 
3 liveuser 3240
				#設置執行失敗的訊息
3241
				$result["status"]="false";
226 liveuser 3242
 
3 liveuser 3243
				#設置錯誤訊息
3244
				$result["error"]=$spiltString;
226 liveuser 3245
 
3 liveuser 3246
				#回傳結果
3247
				return $result;
226 liveuser 3248
 
3 liveuser 3249
				}#if end
226 liveuser 3250
 
3 liveuser 3251
			#預設新的 dateAndTime 參數跟輸入參數沒有差異
3252
			$newDateAndTime=$conf["dateAndTime"];
226 liveuser 3253
 
3 liveuser 3254
			#如果年、月、日分別為0000、00、00
3255
			if( $dateAndTimeModified["m"]==="true" && $spiltString["dataArray"][2]==="00" ){
226 liveuser 3256
 
3257
				#重新組合新的  dateAndTime
3 liveuser 3258
				$newDateAndTime=$spiltString["dataArray"][0]."-".$spiltString["dataArray"][1]."-".$currentDay." ".$inputHMS;
226 liveuser 3259
 
3 liveuser 3260
				#更新到輸入參數
3261
				$conf["dateAndTime"]=$newDateAndTime;
226 liveuser 3262
 
3 liveuser 3263
				#記錄 dateAndTime 參數的日有被修正
3264
				$dateAndTimeModified["d"]="true";
226 liveuser 3265
 
3 liveuser 3266
				}#if end
226 liveuser 3267
 
3 liveuser 3268
			#函式說明:
3269
			#將固定格式的字串分開,並回傳分開的結果.
3270
			#回傳結果:
3271
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3272
			#$result["error"],錯誤訊息陣列
3273
			#$result["function"],當前執行的函數名稱.
3274
			#$result["argu"],使用的參數.
3275
			#$result["oriStr"],要分割的原始字串內容
3276
			#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
3277
			#$result["dataCounts"],爲總共分成幾段
3278
			#$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
3279
			#必填參數:
3280
			#$conf["stringIn"],字串,要處理的字串.
3281
			$conf["stringProcess::spiltString"]["stringIn"]=$conf["dateAndTime"];
3282
			#$conf["spiltSymbol"],字串,爲以哪個符號作爲分割.
3283
			$conf["stringProcess::spiltString"]["spiltSymbol"]=" ";
3284
			#可省略參數:
3285
			#$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
3286
			$conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
3287
			#參考資料:
3288
			#無.
3289
			#備註:
3290
			#無.
3291
			$spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
3292
			unset($conf["stringProcess::spiltString"]);
226 liveuser 3293
 
3 liveuser 3294
			#如果執行出錯
3295
			if($spiltString["status"]==="false"){
226 liveuser 3296
 
3 liveuser 3297
				#設置執行失敗的訊息
3298
				$result["status"]="false";
226 liveuser 3299
 
3 liveuser 3300
				#設置錯誤訊息
3301
				$result["error"]=$spiltString;
226 liveuser 3302
 
3 liveuser 3303
				#回傳結果
3304
				return $result;
226 liveuser 3305
 
3 liveuser 3306
				}#if end
226 liveuser 3307
 
3 liveuser 3308
			#如果沒有關鍵字存在
3309
			if($spiltString["found"]==="false"){
226 liveuser 3310
 
3 liveuser 3311
				#設置執行失敗的訊息
3312
				$result["status"]="false";
226 liveuser 3313
 
3 liveuser 3314
				#設置錯誤訊息
3315
				$result["error"]=$spiltString;
226 liveuser 3316
 
3 liveuser 3317
				#回傳結果
3318
				return $result;
226 liveuser 3319
 
3 liveuser 3320
				}#if end
226 liveuser 3321
 
3 liveuser 3322
			#如果沒有關鍵字存在
3323
			if($spiltString["found"]==="false"){
226 liveuser 3324
 
3 liveuser 3325
				#設置執行失敗的訊息
3326
				$result["status"]="false";
226 liveuser 3327
 
3 liveuser 3328
				#設置錯誤訊息
3329
				$result["error"]=$spiltString;
226 liveuser 3330
 
3 liveuser 3331
				#回傳結果
3332
				return $result;
226 liveuser 3333
 
3 liveuser 3334
				}#if end
226 liveuser 3335
 
3 liveuser 3336
			#如果分割出來不是2段
3337
			if($spiltString["dataCounts"]!==2){
226 liveuser 3338
 
3 liveuser 3339
				#設置執行失敗的訊息
3340
				$result["status"]="false";
226 liveuser 3341
 
3 liveuser 3342
				#設置錯誤訊息
3343
				$result["error"]=$spiltString;
226 liveuser 3344
 
3 liveuser 3345
				#回傳結果
3346
				return $result;
226 liveuser 3347
 
3 liveuser 3348
				}#if end
226 liveuser 3349
 
3 liveuser 3350
			#取得輸入參數的年月日
3351
			$inputYMD=$spiltString["dataArray"][0];
226 liveuser 3352
 
3 liveuser 3353
			#函式說明:
3354
			#將固定格式的字串分開,並回傳分開的結果.
3355
			#回傳結果:
3356
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3357
			#$result["error"],錯誤訊息陣列
3358
			#$result["function"],當前執行的函數名稱.
3359
			#$result["argu"],使用的參數.
3360
			#$result["oriStr"],要分割的原始字串內容
3361
			#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
3362
			#$result["dataCounts"],爲總共分成幾段
3363
			#$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
3364
			#必填參數:
3365
			#$conf["stringIn"],字串,要處理的字串.
3366
			$conf["stringProcess::spiltString"]["stringIn"]=$spiltString["dataArray"][1];
3367
			#$conf["spiltSymbol"],字串,爲以哪個符號作爲分割.
3368
			$conf["stringProcess::spiltString"]["spiltSymbol"]=":";
3369
			#可省略參數:
3370
			#$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
3371
			$conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
3372
			#參考資料:
3373
			#無.
3374
			#備註:
3375
			#無.
3376
			$spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
3377
			unset($conf["stringProcess::spiltString"]);
226 liveuser 3378
 
3 liveuser 3379
			#如果執行出錯
3380
			if($spiltString["status"]==="false"){
226 liveuser 3381
 
3 liveuser 3382
				#設置執行失敗的訊息
3383
				$result["status"]="false";
226 liveuser 3384
 
3 liveuser 3385
				#設置錯誤訊息
3386
				$result["error"]=$spiltString;
226 liveuser 3387
 
3 liveuser 3388
				#回傳結果
3389
				return $result;
226 liveuser 3390
 
3 liveuser 3391
				}#if end
226 liveuser 3392
 
3 liveuser 3393
			#如果沒有關鍵字存在
3394
			if($spiltString["found"]==="false"){
226 liveuser 3395
 
3 liveuser 3396
				#設置執行失敗的訊息
3397
				$result["status"]="false";
226 liveuser 3398
 
3 liveuser 3399
				#設置錯誤訊息
3400
				$result["error"]=$spiltString;
226 liveuser 3401
 
3 liveuser 3402
				#回傳結果
3403
				return $result;
226 liveuser 3404
 
3 liveuser 3405
				}#if end
226 liveuser 3406
 
3 liveuser 3407
			#如果沒有關鍵字存在
3408
			if($spiltString["found"]==="false"){
226 liveuser 3409
 
3 liveuser 3410
				#設置執行失敗的訊息
3411
				$result["status"]="false";
226 liveuser 3412
 
3 liveuser 3413
				#設置錯誤訊息
3414
				$result["error"]=$spiltString;
226 liveuser 3415
 
3 liveuser 3416
				#回傳結果
3417
				return $result;
226 liveuser 3418
 
3 liveuser 3419
				}#if end
226 liveuser 3420
 
3 liveuser 3421
			#如果分割出來不是3段
3422
			if($spiltString["dataCounts"]!==3){
226 liveuser 3423
 
3 liveuser 3424
				#設置執行失敗的訊息
3425
				$result["status"]="false";
226 liveuser 3426
 
3 liveuser 3427
				#設置錯誤訊息
3428
				$result["error"]=$spiltString;
226 liveuser 3429
 
3 liveuser 3430
				#回傳結果
3431
				return $result;
226 liveuser 3432
 
3 liveuser 3433
				}#if end
226 liveuser 3434
 
3 liveuser 3435
			#如果年、月、日、時分別為0000、00、00、00
3436
			if( $dateAndTimeModified["d"]==="true" && $spiltString["dataArray"][0]==="00" ){
226 liveuser 3437
 
3438
				#重新組合新的  dateAndTime
3 liveuser 3439
				$newDateAndTime=$inputYMD." ".$currentHour.":".$spiltString["dataArray"][1].":".$spiltString["dataArray"][2];
226 liveuser 3440
 
3 liveuser 3441
				#更新到輸入參數
3442
				$conf["dateAndTime"]=$newDateAndTime;
226 liveuser 3443
 
3 liveuser 3444
				#記錄 dateAndTime 參數的時有被修正
3445
				$dateAndTimeModified["H"]="true";
226 liveuser 3446
 
3 liveuser 3447
				}#if end
226 liveuser 3448
 
3 liveuser 3449
			#反之
3450
			else{
226 liveuser 3451
 
3 liveuser 3452
				#確認小時格式是否正確
226 liveuser 3453
 
3 liveuser 3454
				#如果小時大於等於24
3455
				if((int)$spiltString["dataArray"][0]>=24){
226 liveuser 3456
 
3 liveuser 3457
					#設置執行失敗的訊息
3458
					$result["status"]="false";
226 liveuser 3459
 
3 liveuser 3460
					#設置錯誤訊息
3461
					$result["error"][]="Hour(".$spiltString["dataArray"][0].") not supported";
226 liveuser 3462
 
3 liveuser 3463
					#回傳結果
3464
					return $result;
226 liveuser 3465
 
3 liveuser 3466
					}#if end
226 liveuser 3467
 
3 liveuser 3468
				}#else end
226 liveuser 3469
 
3 liveuser 3470
			#函式說明:
3471
			#將固定格式的字串分開,並回傳分開的結果.
3472
			#回傳結果:
3473
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3474
			#$result["error"],錯誤訊息陣列
3475
			#$result["function"],當前執行的函數名稱.
3476
			#$result["argu"],使用的參數.
3477
			#$result["oriStr"],要分割的原始字串內容
3478
			#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
3479
			#$result["dataCounts"],爲總共分成幾段
3480
			#$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
3481
			#必填參數:
3482
			#$conf["stringIn"],字串,要處理的字串.
3483
			$conf["stringProcess::spiltString"]["stringIn"]=$conf["dateAndTime"];
3484
			#$conf["spiltSymbol"],字串,爲以哪個符號作爲分割.
3485
			$conf["stringProcess::spiltString"]["spiltSymbol"]=" ";
3486
			#可省略參數:
3487
			#$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
3488
			$conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
3489
			#參考資料:
3490
			#無.
3491
			#備註:
3492
			#無.
3493
			$spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
3494
			unset($conf["stringProcess::spiltString"]);
226 liveuser 3495
 
3 liveuser 3496
			#如果執行出錯
3497
			if($spiltString["status"]==="false"){
226 liveuser 3498
 
3 liveuser 3499
				#設置執行失敗的訊息
3500
				$result["status"]="false";
226 liveuser 3501
 
3 liveuser 3502
				#設置錯誤訊息
3503
				$result["error"]=$spiltString;
226 liveuser 3504
 
3 liveuser 3505
				#回傳結果
3506
				return $result;
226 liveuser 3507
 
3 liveuser 3508
				}#if end
226 liveuser 3509
 
3 liveuser 3510
			#如果沒有關鍵字存在
3511
			if($spiltString["found"]==="false"){
226 liveuser 3512
 
3 liveuser 3513
				#設置執行失敗的訊息
3514
				$result["status"]="false";
226 liveuser 3515
 
3 liveuser 3516
				#設置錯誤訊息
3517
				$result["error"]=$spiltString;
226 liveuser 3518
 
3 liveuser 3519
				#回傳結果
3520
				return $result;
226 liveuser 3521
 
3 liveuser 3522
				}#if end
226 liveuser 3523
 
3 liveuser 3524
			#如果沒有關鍵字存在
3525
			if($spiltString["found"]==="false"){
226 liveuser 3526
 
3 liveuser 3527
				#設置執行失敗的訊息
3528
				$result["status"]="false";
226 liveuser 3529
 
3 liveuser 3530
				#設置錯誤訊息
3531
				$result["error"]=$spiltString;
226 liveuser 3532
 
3 liveuser 3533
				#回傳結果
3534
				return $result;
226 liveuser 3535
 
3 liveuser 3536
				}#if end
226 liveuser 3537
 
3 liveuser 3538
			#如果分割出來不是2段
3539
			if($spiltString["dataCounts"]!==2){
226 liveuser 3540
 
3 liveuser 3541
				#設置執行失敗的訊息
3542
				$result["status"]="false";
226 liveuser 3543
 
3 liveuser 3544
				#設置錯誤訊息
3545
				$result["error"]=$spiltString;
226 liveuser 3546
 
3 liveuser 3547
				#回傳結果
3548
				return $result;
226 liveuser 3549
 
3 liveuser 3550
				}#if end
226 liveuser 3551
 
3 liveuser 3552
			#取得輸入參數的年月日
3553
			$inputYMD=$spiltString["dataArray"][0];
226 liveuser 3554
 
3 liveuser 3555
			#函式說明:
3556
			#將固定格式的字串分開,並回傳分開的結果.
3557
			#回傳結果:
3558
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3559
			#$result["error"],錯誤訊息陣列
3560
			#$result["function"],當前執行的函數名稱.
3561
			#$result["argu"],使用的參數.
3562
			#$result["oriStr"],要分割的原始字串內容
3563
			#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
3564
			#$result["dataCounts"],爲總共分成幾段
3565
			#$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
3566
			#必填參數:
3567
			#$conf["stringIn"],字串,要處理的字串.
3568
			$conf["stringProcess::spiltString"]["stringIn"]=$spiltString["dataArray"][1];
3569
			#$conf["spiltSymbol"],字串,爲以哪個符號作爲分割.
3570
			$conf["stringProcess::spiltString"]["spiltSymbol"]=":";
3571
			#可省略參數:
3572
			#$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
3573
			$conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
3574
			#參考資料:
3575
			#無.
3576
			#備註:
3577
			#無.
3578
			$spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
3579
			unset($conf["stringProcess::spiltString"]);
226 liveuser 3580
 
3 liveuser 3581
			#如果執行出錯
3582
			if($spiltString["status"]==="false"){
226 liveuser 3583
 
3 liveuser 3584
				#設置執行失敗的訊息
3585
				$result["status"]="false";
226 liveuser 3586
 
3 liveuser 3587
				#設置錯誤訊息
3588
				$result["error"]=$spiltString;
226 liveuser 3589
 
3 liveuser 3590
				#回傳結果
3591
				return $result;
226 liveuser 3592
 
3 liveuser 3593
				}#if end
226 liveuser 3594
 
3 liveuser 3595
			#如果沒有關鍵字存在
3596
			if($spiltString["found"]==="false"){
226 liveuser 3597
 
3 liveuser 3598
				#設置執行失敗的訊息
3599
				$result["status"]="false";
226 liveuser 3600
 
3 liveuser 3601
				#設置錯誤訊息
3602
				$result["error"]=$spiltString;
226 liveuser 3603
 
3 liveuser 3604
				#回傳結果
3605
				return $result;
226 liveuser 3606
 
3 liveuser 3607
				}#if end
226 liveuser 3608
 
3 liveuser 3609
			#如果沒有關鍵字存在
3610
			if($spiltString["found"]==="false"){
226 liveuser 3611
 
3 liveuser 3612
				#設置執行失敗的訊息
3613
				$result["status"]="false";
226 liveuser 3614
 
3 liveuser 3615
				#設置錯誤訊息
3616
				$result["error"]=$spiltString;
226 liveuser 3617
 
3 liveuser 3618
				#回傳結果
3619
				return $result;
226 liveuser 3620
 
3 liveuser 3621
				}#if end
226 liveuser 3622
 
3 liveuser 3623
			#如果分割出來不是3段
3624
			if($spiltString["dataCounts"]!==3){
226 liveuser 3625
 
3 liveuser 3626
				#設置執行失敗的訊息
3627
				$result["status"]="false";
226 liveuser 3628
 
3 liveuser 3629
				#設置錯誤訊息
3630
				$result["error"]=$spiltString;
226 liveuser 3631
 
3 liveuser 3632
				#回傳結果
3633
				return $result;
226 liveuser 3634
 
3 liveuser 3635
				}#if end
226 liveuser 3636
 
3 liveuser 3637
			#如果年、月、日、時、分分別為0000、00、00、00、00
3638
			if( $dateAndTimeModified["H"]==="true" && $spiltString["dataArray"][1]==="00" ){
226 liveuser 3639
 
3640
				#重新組合新的  dateAndTime
3 liveuser 3641
				$newDateAndTime=$inputYMD." ".$spiltString["dataArray"][0].":".$currentMin.":".$spiltString["dataArray"][2];
226 liveuser 3642
 
3 liveuser 3643
				#更新到輸入參數
3644
				$conf["dateAndTime"]=$newDateAndTime;
226 liveuser 3645
 
3 liveuser 3646
				#記錄 dateAndTime 參數的分有被修正
3647
				$dateAndTimeModified["i"]="true";
226 liveuser 3648
 
3 liveuser 3649
				}#if end
226 liveuser 3650
 
3 liveuser 3651
			#反之
3652
			else{
226 liveuser 3653
 
3 liveuser 3654
				#確認分鐘格式是否正確
226 liveuser 3655
 
3 liveuser 3656
				#如果分鐘大於等於60
3657
				if((int)$spiltString["dataArray"][1]>=60){
226 liveuser 3658
 
3 liveuser 3659
					#設置執行失敗的訊息
3660
					$result["status"]="false";
226 liveuser 3661
 
3 liveuser 3662
					#設置錯誤訊息
3663
					$result["error"][]="Min(".$spiltString["dataArray"][1].") not supported";
226 liveuser 3664
 
3 liveuser 3665
					#回傳結果
3666
					return $result;
226 liveuser 3667
 
3 liveuser 3668
					}#if end
226 liveuser 3669
 
3 liveuser 3670
				}#else end
226 liveuser 3671
 
3 liveuser 3672
			#函式說明:
3673
			#將固定格式的字串分開,並回傳分開的結果.
3674
			#回傳結果:
3675
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3676
			#$result["error"],錯誤訊息陣列
3677
			#$result["function"],當前執行的函數名稱.
3678
			#$result["argu"],使用的參數.
3679
			#$result["oriStr"],要分割的原始字串內容
3680
			#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
3681
			#$result["dataCounts"],爲總共分成幾段
3682
			#$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
3683
			#必填參數:
3684
			#$conf["stringIn"],字串,要處理的字串.
3685
			$conf["stringProcess::spiltString"]["stringIn"]=$conf["dateAndTime"];
3686
			#$conf["spiltSymbol"],字串,爲以哪個符號作爲分割.
3687
			$conf["stringProcess::spiltString"]["spiltSymbol"]=" ";
3688
			#可省略參數:
3689
			#$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
3690
			$conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
3691
			#參考資料:
3692
			#無.
3693
			#備註:
3694
			#無.
3695
			$spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
3696
			unset($conf["stringProcess::spiltString"]);
226 liveuser 3697
 
3 liveuser 3698
			#如果執行出錯
3699
			if($spiltString["status"]==="false"){
226 liveuser 3700
 
3 liveuser 3701
				#設置執行失敗的訊息
3702
				$result["status"]="false";
226 liveuser 3703
 
3 liveuser 3704
				#設置錯誤訊息
3705
				$result["error"]=$spiltString;
226 liveuser 3706
 
3 liveuser 3707
				#回傳結果
3708
				return $result;
226 liveuser 3709
 
3 liveuser 3710
				}#if end
226 liveuser 3711
 
3 liveuser 3712
			#如果沒有關鍵字存在
3713
			if($spiltString["found"]==="false"){
226 liveuser 3714
 
3 liveuser 3715
				#設置執行失敗的訊息
3716
				$result["status"]="false";
226 liveuser 3717
 
3 liveuser 3718
				#設置錯誤訊息
3719
				$result["error"]=$spiltString;
226 liveuser 3720
 
3 liveuser 3721
				#回傳結果
3722
				return $result;
226 liveuser 3723
 
3 liveuser 3724
				}#if end
226 liveuser 3725
 
3 liveuser 3726
			#如果沒有關鍵字存在
3727
			if($spiltString["found"]==="false"){
226 liveuser 3728
 
3 liveuser 3729
				#設置執行失敗的訊息
3730
				$result["status"]="false";
226 liveuser 3731
 
3 liveuser 3732
				#設置錯誤訊息
3733
				$result["error"]=$spiltString;
226 liveuser 3734
 
3 liveuser 3735
				#回傳結果
3736
				return $result;
226 liveuser 3737
 
3 liveuser 3738
				}#if end
226 liveuser 3739
 
3 liveuser 3740
			#如果分割出來不是2段
3741
			if($spiltString["dataCounts"]!==2){
226 liveuser 3742
 
3 liveuser 3743
				#設置執行失敗的訊息
3744
				$result["status"]="false";
226 liveuser 3745
 
3 liveuser 3746
				#設置錯誤訊息
3747
				$result["error"]=$spiltString;
226 liveuser 3748
 
3 liveuser 3749
				#回傳結果
3750
				return $result;
226 liveuser 3751
 
3 liveuser 3752
				}#if end
226 liveuser 3753
 
3 liveuser 3754
			#取得輸入參數的年月日
3755
			$inputYMD=$spiltString["dataArray"][0];
226 liveuser 3756
 
3 liveuser 3757
			#函式說明:
3758
			#將固定格式的字串分開,並回傳分開的結果.
3759
			#回傳結果:
3760
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3761
			#$result["error"],錯誤訊息陣列
3762
			#$result["function"],當前執行的函數名稱.
3763
			#$result["argu"],使用的參數.
3764
			#$result["oriStr"],要分割的原始字串內容
3765
			#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
3766
			#$result["dataCounts"],爲總共分成幾段
3767
			#$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
3768
			#必填參數:
3769
			#$conf["stringIn"],字串,要處理的字串.
3770
			$conf["stringProcess::spiltString"]["stringIn"]=$spiltString["dataArray"][1];
3771
			#$conf["spiltSymbol"],字串,爲以哪個符號作爲分割.
3772
			$conf["stringProcess::spiltString"]["spiltSymbol"]=":";
3773
			#可省略參數:
3774
			#$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
3775
			$conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
3776
			#參考資料:
3777
			#無.
3778
			#備註:
3779
			#無.
3780
			$spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
3781
			unset($conf["stringProcess::spiltString"]);
226 liveuser 3782
 
3 liveuser 3783
			#如果執行出錯
3784
			if($spiltString["status"]==="false"){
226 liveuser 3785
 
3 liveuser 3786
				#設置執行失敗的訊息
3787
				$result["status"]="false";
226 liveuser 3788
 
3 liveuser 3789
				#設置錯誤訊息
3790
				$result["error"]=$spiltString;
226 liveuser 3791
 
3 liveuser 3792
				#回傳結果
3793
				return $result;
226 liveuser 3794
 
3 liveuser 3795
				}#if end
226 liveuser 3796
 
3 liveuser 3797
			#如果沒有關鍵字存在
3798
			if($spiltString["found"]==="false"){
226 liveuser 3799
 
3 liveuser 3800
				#設置執行失敗的訊息
3801
				$result["status"]="false";
226 liveuser 3802
 
3 liveuser 3803
				#設置錯誤訊息
3804
				$result["error"]=$spiltString;
226 liveuser 3805
 
3 liveuser 3806
				#回傳結果
3807
				return $result;
226 liveuser 3808
 
3 liveuser 3809
				}#if end
226 liveuser 3810
 
3 liveuser 3811
			#如果沒有關鍵字存在
3812
			if($spiltString["found"]==="false"){
226 liveuser 3813
 
3 liveuser 3814
				#設置執行失敗的訊息
3815
				$result["status"]="false";
226 liveuser 3816
 
3 liveuser 3817
				#設置錯誤訊息
3818
				$result["error"]=$spiltString;
226 liveuser 3819
 
3 liveuser 3820
				#回傳結果
3821
				return $result;
226 liveuser 3822
 
3 liveuser 3823
				}#if end
226 liveuser 3824
 
3 liveuser 3825
			#如果分割出來不是3段
3826
			if($spiltString["dataCounts"]!==3){
226 liveuser 3827
 
3 liveuser 3828
				#設置執行失敗的訊息
3829
				$result["status"]="false";
226 liveuser 3830
 
3 liveuser 3831
				#設置錯誤訊息
3832
				$result["error"]=$spiltString;
226 liveuser 3833
 
3 liveuser 3834
				#回傳結果
3835
				return $result;
226 liveuser 3836
 
3 liveuser 3837
				}#if end
226 liveuser 3838
 
3 liveuser 3839
			#如果年、月、日、時、分、秒分別為0000、00、00、00、00、00
3840
			if( $dateAndTimeModified["i"]==="true" && $spiltString["dataArray"][2]==="00" ){
226 liveuser 3841
 
3842
				#重新組合新的  dateAndTime
3 liveuser 3843
				$newDateAndTime=$inputYMD." ".$spiltString["dataArray"][0].":".$spiltString["dataArray"][1].":".$currentSec;
226 liveuser 3844
 
3 liveuser 3845
				#更新到輸入參數
3846
				$conf["dateAndTime"]=$newDateAndTime;
226 liveuser 3847
 
3 liveuser 3848
				#記錄 dateAndTime 參數的分有被修正
3849
				$dateAndTimeModified["s"]="true";
226 liveuser 3850
 
3 liveuser 3851
				}#if end
226 liveuser 3852
 
3 liveuser 3853
			#反之
3854
			else{
226 liveuser 3855
 
3 liveuser 3856
				#確認秒鐘格式是否正確
226 liveuser 3857
 
3 liveuser 3858
				#如果秒鐘大於等於60
3859
				if((int)$spiltString["dataArray"][2]>=60){
226 liveuser 3860
 
3 liveuser 3861
					#設置執行失敗的訊息
3862
					$result["status"]="false";
226 liveuser 3863
 
3 liveuser 3864
					#設置錯誤訊息
3865
					$result["error"][]="Sec(".$spiltString["dataArray"][2].") not supported";
226 liveuser 3866
 
3 liveuser 3867
					#回傳結果
3868
					return $result;
226 liveuser 3869
 
3 liveuser 3870
					}#if end
226 liveuser 3871
 
3 liveuser 3872
				}#else end
226 liveuser 3873
 
3 liveuser 3874
			}#if end
226 liveuser 3875
 
3 liveuser 3876
		#檢查 dateAndTime 參數的格式,正確格式爲 2011-05-27 23:59:59 - end
226 liveuser 3877
 
3 liveuser 3878
		#產生date
3879
		$date=date($conf["dateAndTime"]);
226 liveuser 3880
 
3 liveuser 3881
		#如果要用 UTC 時間
3882
		if($conf["UTC"]==="true"){
226 liveuser 3883
 
3 liveuser 3884
			#產生gmdate
3885
			$date=gmdate($conf["dateAndTime"]);
226 liveuser 3886
 
3 liveuser 3887
			}#if end
226 liveuser 3888
 
3 liveuser 3889
		#取得時間量
3890
		$result["content"]=strtotime($date);
226 liveuser 3891
 
3 liveuser 3892
		#設置執行成功
3893
		$result["status"]="true";
226 liveuser 3894
 
3 liveuser 3895
		#回傳結果
3896
		return $result;
226 liveuser 3897
 
3898
		}#function caculateTimeAmount end
3899
 
3900
	/*
3 liveuser 3901
	#函式說明:
3902
	#計算當前時間點距離西元元年多少秒
3903
	#回傳結果:
3904
	#當前時間點距離1970/01/01的多少秒
3905
	#必填參數:
3906
	#無.
3907
	#可省略參數:
3908
	#無.
3909
	#參考資料:
3910
	#無.
3911
	#備註:
3912
	#無.
3913
	*/
3914
	public static function getMicrotime(){
226 liveuser 3915
 
3 liveuser 3916
		#回傳當前時間點距離1970/01/01多少秒
3917
		return microtime(true);
226 liveuser 3918
 
3 liveuser 3919
		}#function getMicrotime end
226 liveuser 3920
 
3 liveuser 3921
	/*
3922
	#函式說明:
3923
	#將時間往後,n天
3924
	#回傳結果:
3925
	#$result["stauts"],執行是否成功,"true"代表執行成功;"false"代表執行失敗
3926
	#$result["error"],錯誤訊息陣列.
226 liveuser 3927
	#$result["content"],往後延遲n天後的年月日.
3 liveuser 3928
	#$result["year"],修改後的年份.
226 liveuser 3929
	#$result["month"],修改後的月份.
3 liveuser 3930
	#$result["day"],修改後的日份.
3931
	#必填參數:
3932
	#$conf["delayDays"],字串,要往後延的天數.
3933
	$conf["delayDays"]="1";
3934
	#可省略參數:
3935
	#無.
3936
	#參考資料:
3937
	#datetime.add=>http://tw1.php.net/manual/en/datetime.add.php
3938
	#class.datetime=>http://tw1.php.net/manual/en/class.datetime.php
3939
	#datetime.format=>http://tw1.php.net/manual/en/datetime.format.php
3940
	#dateinterval.createfromdatestring=>http://tw1.php.net/manual/en/dateinterval.createfromdatestring.php
3941
	#備註:
3942
	#無.
3943
	*/
3944
	public static function addTime(&$conf){
226 liveuser 3945
 
3 liveuser 3946
		#初始化要回傳的結果
3947
		$result=array();
226 liveuser 3948
 
3 liveuser 3949
		#設置當其函數名稱
3950
		$result["function"]=__FUNCTION__;
226 liveuser 3951
 
3 liveuser 3952
		#如果 $conf 不為陣列
3953
		if(gettype($conf)!="array"){
226 liveuser 3954
 
3 liveuser 3955
			#設置執行失敗
3956
			$result["status"]="false";
226 liveuser 3957
 
3 liveuser 3958
			#設置執行錯誤訊息
3959
			$result["error"][]="\$conf變數須為陣列形態";
3960
 
3961
			#如果傳入的參數為 null
3962
			if($conf==null){
226 liveuser 3963
 
3 liveuser 3964
				#設置執行錯誤訊息
3965
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 3966
 
3 liveuser 3967
				}#if end
3968
 
3969
			#回傳結果
3970
			return $result;
226 liveuser 3971
 
3 liveuser 3972
			}#if end
226 liveuser 3973
 
3 liveuser 3974
		#檢查參數
3975
		#函式說明:
3976
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3977
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3978
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3979
		#$result["function"],當前執行的函式名稱.
3980
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3981
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3982
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3983
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
3984
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
3985
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
3986
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
3987
		#必填寫的參數:
3988
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3989
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3990
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3991
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("delayDays");
226 liveuser 3992
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3 liveuser 3993
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
3994
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3995
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3996
		#可以省略的參數:
3997
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或集合.
3998
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("startTime","timeZone");
3999
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
4000
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
4001
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4002
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("startTime","timeZone");
226 liveuser 4003
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3 liveuser 4004
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
4005
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4006
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,"Asia/Taipei");
4007
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4008
		#$conf["arrayCountEqualCheck"][]=array();
4009
		#參考資料來源:
4010
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4011
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4012
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 4013
 
3 liveuser 4014
		#如果檢查失敗
4015
		if($checkResult["status"]=="false"){
226 liveuser 4016
 
3 liveuser 4017
			#設置執行失敗的訊息
4018
			$result["status"]="false";
226 liveuser 4019
 
3 liveuser 4020
			#設置錯誤訊息
4021
			$result["error"]=$checkResult;
226 liveuser 4022
 
3 liveuser 4023
			#回傳結果
4024
			return $result;
226 liveuser 4025
 
3 liveuser 4026
			}#if end
226 liveuser 4027
 
3 liveuser 4028
		#如果檢查不通過
4029
		if($checkResult["passed"]=="false"){
226 liveuser 4030
 
3 liveuser 4031
			#設置執行失敗的訊息
4032
			$result["status"]="false";
226 liveuser 4033
 
3 liveuser 4034
			#設置錯誤訊息
4035
			$result["error"]=$checkResult;
226 liveuser 4036
 
3 liveuser 4037
			#回傳結果
4038
			return $result;
226 liveuser 4039
 
4040
			}#if end
4041
 
3 liveuser 4042
		#函式說明:
4043
		#取得系統時間目前的西元年、月、日、時、分、秒
4044
		#回傳結果:
4045
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4046
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
4047
		#$result["function"],當前執行的函式名稱.
4048
		#$result["thisWestYear"],當前西元年
4049
		#$result["thisMonth"],當前月份
4050
		#$result["weekDay"],為一個星期的第幾天,0代表第一天(星期日),6代表第七天(星期六)
4051
		#$result["thisDay"],當前日
4052
		#$result["thisHour"],當前小時
4053
		#$result["thisMin"],當前分鐘
4054
		#$result["thisSec"],當前秒數
4055
		#必填的參數
4056
		$conf["time"]["getSystemDateAndTime"]["timeZone"]="Asia/Taipei";#時區代號,可以設定的時區列表:http://www.php.net/manual/en/timezones.php
4057
		$thisTime=time::getSystemDateAndTime($conf["time"]["getSystemDateAndTime"]);
4058
		unset($conf["time"]["getSystemDateAndTime"]);
226 liveuser 4059
 
3 liveuser 4060
		#如果取得系統時間失敗
4061
		if($thisTime["status"]=="false"){
226 liveuser 4062
 
3 liveuser 4063
			#設置執行失敗的訊息
4064
			$result["status"]="false";
226 liveuser 4065
 
3 liveuser 4066
			#設置錯誤訊息
4067
			$result["error"]=$thisTime;
226 liveuser 4068
 
3 liveuser 4069
			#回傳結果
4070
			return $result;
226 liveuser 4071
 
3 liveuser 4072
			}#if end
226 liveuser 4073
 
3 liveuser 4074
		#建立 date 變數
4075
		$date=date_create($thisTime["thisWestYear"]."-".$thisTime["thisMonth"]."-".$thisTime["thisDay"]);
226 liveuser 4076
 
3 liveuser 4077
		#延後的日期節果
4078
		$modifyed=date_add($date, date_interval_create_from_date_string($conf["delayDays"]." days"));
226 liveuser 4079
 
3 liveuser 4080
		#設定輸出的格式
4081
		$modifyedDate=date_format($modifyed,'Y m d');
226 liveuser 4082
 
3 liveuser 4083
		#取得延後的年月日
4084
		#函式說明:
4085
		#將固定格式的字串分開,並回傳分開的結果。
4086
		#回傳的參數:
4087
		#$result["oriStr"],要分割的原始字串內容
4088
		#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
4089
		#$result["dataCounts"],爲總共分成幾段
4090
		#必填參數:
4091
		$conf["stringProcess"]["spiltString"]["stringIn"]=$modifyedDate;#要處理的字串。
4092
		$conf["stringProcess"]["spiltString"]["spiltSymbol"]=" ";#爲以哪個符號作爲分割
4093
		$spiltStr=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);
4094
		unset($conf["stringProcess"]["spiltString"]);
226 liveuser 4095
 
3 liveuser 4096
		#如果分割字串失敗
4097
		if($spiltStr["status"]=="false"){
226 liveuser 4098
 
3 liveuser 4099
			#設置執行失敗的訊息
4100
			$result["status"]="false";
226 liveuser 4101
 
3 liveuser 4102
			#設置錯誤訊息
4103
			$result["error"]=$spiltStr;
226 liveuser 4104
 
3 liveuser 4105
			#回傳結果
4106
			return $result;
226 liveuser 4107
 
3 liveuser 4108
			}#if end
226 liveuser 4109
 
3 liveuser 4110
		#如果分割出來沒有3段
4111
		if($spiltStr["dataCounts"]>3){
226 liveuser 4112
 
3 liveuser 4113
			#設置執行失敗的訊息
4114
			$result["status"]="false";
226 liveuser 4115
 
3 liveuser 4116
			#設置錯誤訊息
4117
			$result["error"]=$spiltStr;
226 liveuser 4118
 
3 liveuser 4119
			#回傳結果
4120
			return $result;
226 liveuser 4121
 
4122
			}#if end
4123
 
3 liveuser 4124
		#取得修改後的年月份
4125
		$result["year"]=$spiltStr["dataArray"][0];
4126
		$result["month"]=$spiltStr["dataArray"][1];
4127
		$result["day"]=$spiltStr["dataArray"][2];
226 liveuser 4128
 
3 liveuser 4129
		#將數字字串轉換成實際的數字
4130
		#回傳結果:
4131
		#$result["status"],執行成功與否,若爲"true",代表執行成功,若爲"false"代表執失敗。
4132
		#$result["error"],錯誤訊息陣列.
4133
		#$result["function"],當前執行的函數名稱.
4134
		#$result["content"],實際的數字.
4135
		#$result["ori"],未轉換的內容.
4136
		#必填參數:
4137
		#$conf["stringIn"],字串,要處理度數字字串。
4138
		$conf["stringProcess::stringIntToInt"]["stringIn"]=$result["month"];
4139
		#參考資料:
4140
		#http://www.phpf1.com/tutorial/php-string-to-int.html
4141
		$stringIntToInt=stringProcess::stringIntToInt($conf["stringProcess::stringIntToInt"]);
4142
		unset($conf["stringProcess::stringIntToInt"]);
226 liveuser 4143
 
3 liveuser 4144
		#如果分割字串失敗
4145
		if($stringIntToInt["status"]=="false"){
226 liveuser 4146
 
3 liveuser 4147
			#設置執行失敗的訊息
4148
			$result["status"]="false";
226 liveuser 4149
 
3 liveuser 4150
			#設置錯誤訊息
4151
			$result["error"]=$spiltStr;
226 liveuser 4152
 
3 liveuser 4153
			#回傳結果
4154
			return $result;
226 liveuser 4155
 
3 liveuser 4156
			}#if end
226 liveuser 4157
 
4158
		#取得轉換好的數字
4159
		$result["month"]=$stringIntToInt["content"];
4160
 
3 liveuser 4161
		#將數字字串轉換成實際的數字
4162
		#回傳結果:
4163
		#$result,爲實際的數字。
4164
		#必填參數:
4165
		$conf["stringProcess"]["stringIntToInt"]["stringIn"]=$result["day"];#要處理度數字字串。
4166
		$stringIntToInt=stringProcess::stringIntToInt($conf["stringProcess"]["stringIntToInt"]);
4167
		unset($conf["stringProcess"]["stringIntToInt"]);
226 liveuser 4168
 
3 liveuser 4169
		#如果分割字串失敗
4170
		if($stringIntToInt["status"]=="false"){
226 liveuser 4171
 
3 liveuser 4172
			#設置執行失敗的訊息
4173
			$result["status"]="false";
226 liveuser 4174
 
3 liveuser 4175
			#設置錯誤訊息
4176
			$result["error"]=$spiltStr;
226 liveuser 4177
 
3 liveuser 4178
			#回傳結果
4179
			return $result;
226 liveuser 4180
 
3 liveuser 4181
			}#if end
226 liveuser 4182
 
4183
		#取得轉換好的日數字
4184
		$result["day"]=$stringIntToInt["content"];
4185
 
3 liveuser 4186
		#執行到這邊代表執行正確
4187
		$result["status"]="true";
226 liveuser 4188
 
3 liveuser 4189
		#回傳結果
4190
		return $result;
226 liveuser 4191
 
3 liveuser 4192
		}#function addTime end
4193
 
4194
	/*
4195
	#函式說明:
4196
	#計算指定的西元年2月是否為閏月,計算2月份有幾天
4197
	#回傳結果:
4198
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4199
	#$result["error"],錯誤訊息陣列
4200
	#$result["function"],當前執行的函數名稱.
4201
	#$result["content"],"28"代表非閏月,"29"代表閏月.
4202
	#必填參數:
4203
	#$conf["year"],字串,要求算2月份有幾天的年份.
4204
	$conf["year"]="2000";
4205
	#可省略參數:
4206
	#無.
4207
	#參考資料:
4208
	#無.
4209
	#備註:
4210
	#無.
4211
	*/
4212
	public static function computeFebDays(&$conf){
226 liveuser 4213
 
3 liveuser 4214
		#初始化要回傳的結果
4215
		$result=array();
226 liveuser 4216
 
3 liveuser 4217
		#設置當其函數名稱
4218
		$result["function"]=__FUNCTION__;
226 liveuser 4219
 
3 liveuser 4220
		#如果 $conf 不為陣列
4221
		if(gettype($conf)!="array"){
226 liveuser 4222
 
3 liveuser 4223
			#設置執行失敗
4224
			$result["status"]="false";
226 liveuser 4225
 
3 liveuser 4226
			#設置執行錯誤訊息
4227
			$result["error"][]="\$conf變數須為陣列形態";
4228
 
4229
			#如果傳入的參數為 null
4230
			if($conf==null){
226 liveuser 4231
 
3 liveuser 4232
				#設置執行錯誤訊息
4233
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 4234
 
3 liveuser 4235
				}#if end
4236
 
4237
			#回傳結果
4238
			return $result;
226 liveuser 4239
 
3 liveuser 4240
			}#if end
226 liveuser 4241
 
3 liveuser 4242
		#檢查參數
4243
		#函式說明:
4244
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
4245
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4246
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
4247
		#$result["function"],當前執行的函式名稱.
4248
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
4249
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
4250
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
4251
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
4252
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
4253
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
4254
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
4255
		#必填寫的參數:
4256
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4257
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
4258
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4259
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("year");
226 liveuser 4260
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3 liveuser 4261
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
4262
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4263
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4264
		#可以省略的參數:
4265
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或集合.
4266
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("startTime","timeZone");
4267
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
4268
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
4269
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4270
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("startTime","timeZone");
226 liveuser 4271
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3 liveuser 4272
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
4273
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4274
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,"Asia/Taipei");
4275
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4276
		#$conf["arrayCountEqualCheck"][]=array();
4277
		#參考資料來源:
4278
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4279
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4280
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 4281
 
3 liveuser 4282
		#如果檢查失敗
4283
		if($checkResult["status"]=="false"){
226 liveuser 4284
 
3 liveuser 4285
			#設置執行失敗的訊息
4286
			$result["status"]="false";
226 liveuser 4287
 
3 liveuser 4288
			#設置錯誤訊息
4289
			$result["error"]=$checkResult;
226 liveuser 4290
 
3 liveuser 4291
			#回傳結果
4292
			return $result;
226 liveuser 4293
 
3 liveuser 4294
			}#if end
226 liveuser 4295
 
3 liveuser 4296
		#如果檢查不通過
4297
		if($checkResult["passed"]=="false"){
226 liveuser 4298
 
3 liveuser 4299
			#設置執行失敗的訊息
4300
			$result["status"]="false";
226 liveuser 4301
 
3 liveuser 4302
			#設置錯誤訊息
4303
			$result["error"]=$checkResult;
226 liveuser 4304
 
3 liveuser 4305
			#回傳結果
4306
			return $result;
226 liveuser 4307
 
3 liveuser 4308
			}#if end
226 liveuser 4309
 
3 liveuser 4310
		#預設為"28"非閏月
4311
		$result["content"]="28";
226 liveuser 4312
 
3 liveuser 4313
		#如果 $conf["year"]爲4的倍數
4314
		if($conf["year"]%4==0){
226 liveuser 4315
 
3 liveuser 4316
			#該年爲潤年,因此2月份爲29天
4317
			$result["content"]="29";
226 liveuser 4318
 
3 liveuser 4319
			#如果 $conf["year"] 爲100的倍數
4320
			if($conf["year"] %100==0){
226 liveuser 4321
 
3 liveuser 4322
				#百年不潤因此2月份爲28天
4323
				$result["content"]="28";
226 liveuser 4324
 
3 liveuser 4325
				#如果 $conf["year"] 爲400的倍數
4326
				if($conf["year"]%400==0){
226 liveuser 4327
 
3 liveuser 4328
					#四百年潤因此2月份爲29天
4329
					$result["content"]="29";
226 liveuser 4330
 
3 liveuser 4331
					}#if end
226 liveuser 4332
 
3 liveuser 4333
				}#if end
226 liveuser 4334
 
3 liveuser 4335
			}#if end
226 liveuser 4336
 
3 liveuser 4337
		#執行到這邊代表執行成功
4338
		$result["status"]="true";
226 liveuser 4339
 
3 liveuser 4340
		#回傳結果
4341
		return $result;
226 liveuser 4342
 
3 liveuser 4343
		}#function computeFebDays end
4344
 
4345
	/*
4346
	#函式說明:
4347
	#計算特定年月日為星期幾
4348
	#回傳結果:
4349
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4350
	#$result["error"],錯誤訊息陣列
4351
	#$result["function"],當前執行的函數名稱.
4352
	#$result["content"],0~6,依序代表星期天到星期六.
4353
	#必填參數:
4354
	#$conf["year"],字串,要求算該日為星期幾的所屬年份.
4355
	$conf["year"]="2014";
4356
	#$conf["month"],字串,要求算該日為星期幾的所屬月份.
4357
	$conf["month"]="08";
4358
	#$conf["day"],字串,要求算該日為星期幾的日.
4359
	$conf["day"]="03";
4360
	#可省略參數:
4361
	#無.
4362
	#參考資料:
4363
	#無.
4364
	#備註:
4365
	#無.
4366
	*/
4367
	public static function computeWeekNumber(&$conf){
226 liveuser 4368
 
3 liveuser 4369
		#初始化要回傳的結果
4370
		$result=array();
226 liveuser 4371
 
3 liveuser 4372
		#設置當其函數名稱
4373
		$result["function"]=__FUNCTION__;
226 liveuser 4374
 
3 liveuser 4375
		#如果 $conf 不為陣列
4376
		if(gettype($conf)!="array"){
226 liveuser 4377
 
3 liveuser 4378
			#設置執行失敗
4379
			$result["status"]="false";
226 liveuser 4380
 
3 liveuser 4381
			#設置執行錯誤訊息
4382
			$result["error"][]="\$conf變數須為陣列形態";
4383
 
4384
			#如果傳入的參數為 null
4385
			if($conf==null){
226 liveuser 4386
 
3 liveuser 4387
				#設置執行錯誤訊息
4388
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 4389
 
3 liveuser 4390
				}#if end
4391
 
4392
			#回傳結果
4393
			return $result;
226 liveuser 4394
 
3 liveuser 4395
			}#if end
226 liveuser 4396
 
3 liveuser 4397
		#檢查參數
4398
		#函式說明:
4399
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
4400
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4401
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
4402
		#$result["function"],當前執行的函式名稱.
4403
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
4404
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
4405
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
4406
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
4407
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
4408
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
4409
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
4410
		#必填寫的參數:
4411
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4412
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
4413
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4414
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("year","month","day");
226 liveuser 4415
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3 liveuser 4416
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string");
4417
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4418
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4419
		#可以省略的參數:
4420
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或集合.
4421
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("startTime","timeZone");
4422
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
4423
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
4424
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4425
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("startTime","timeZone");
226 liveuser 4426
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3 liveuser 4427
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
4428
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4429
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,"Asia/Taipei");
4430
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4431
		#$conf["arrayCountEqualCheck"][]=array();
4432
		#參考資料來源:
4433
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4434
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4435
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 4436
 
3 liveuser 4437
		#如果檢查失敗
4438
		if($checkResult["status"]=="false"){
226 liveuser 4439
 
3 liveuser 4440
			#設置執行失敗的訊息
4441
			$result["status"]="false";
226 liveuser 4442
 
3 liveuser 4443
			#設置錯誤訊息
4444
			$result["error"]=$checkResult;
226 liveuser 4445
 
3 liveuser 4446
			#回傳結果
4447
			return $result;
226 liveuser 4448
 
3 liveuser 4449
			}#if end
226 liveuser 4450
 
3 liveuser 4451
		#如果檢查不通過
4452
		if($checkResult["passed"]=="false"){
226 liveuser 4453
 
3 liveuser 4454
			#設置執行失敗的訊息
4455
			$result["status"]="false";
226 liveuser 4456
 
3 liveuser 4457
			#設置錯誤訊息
4458
			$result["error"]=$checkResult;
226 liveuser 4459
 
3 liveuser 4460
			#回傳結果
4461
			return $result;
226 liveuser 4462
 
3 liveuser 4463
			}#if end
226 liveuser 4464
 
3 liveuser 4465
		#合併年月日
4466
		$westDate=$conf["year"].$conf["month"].$conf["day"];
226 liveuser 4467
 
4468
		#執行系統命令取得今日星期幾
3 liveuser 4469
		#函式說明:
4470
		#呼叫shell執行系統命令,並取得回傳的內容.
4471
		#回傳結果:
4472
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4473
		#$result["error"],錯誤訊息陣列.
4474
		#$result["function"],當前執行的函數名稱.
4475
		#$result["argu"],使用的參數.
4476
		#$result["cmd"],執行的指令內容.
4477
		#$result["fullCmd"],如果參數 $conf["inBackGround"] 為 "true" 則會回傳該值.
4478
		#$result["output"],爲執行完二元碼後的輸出陣列,若 $conf["inBackGround"] 為 "true",則為當下的輸出.
4479
		#$result["tmpFileOutput"],儲存輸出的暫存檔案名稱,若 $conf["inBackGround"] 為 "true" 則會回傳該值.
4480
		#$result["running"],是否還在執行.
4481
		#$result["pid"],pid.
4482
		#$result["statusCode"],執行結束後的代碼.
4483
		#$result["escape"],陣列,儲存出新排序過且已經escape過的指令(key為"cmd")與參數(key為"argu").
4484
		#必填參數:
4485
		#$conf["command"],字串,要執行的指令.
4486
		$conf["external"]["callShell"]["command"]="date";
4487
		#$conf["fileArgu"],字串,變數__FILE__的內容.
4488
		$conf["external"]["callShell"]["fileArgu"]=__FILE__;
4489
		#可省略參數:
4490
		#$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
4491
		$conf["external"]["callShell"]["argu"]=array("-d",$westDate,"+%w");
4492
		#$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").
4493
		#$conf["arguIsAddr"]=array();
4494
		#$conf["pre"],陣列,要在本指令前執行的每個指令與參數.
4495
		#$conf["pre"][$i]["cmd"],字串,要在本指令前執行的第$i+1個指令.
4496
		#$conf["pre"][$i]["param"],陣列字串,要在本指令前執行的第$i+1個指令的參數.
4497
		#$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".
4498
		#$conf["enablePrintDescription"]="true";
4499
		#$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容加上使用的$conf["argu"]參數.
4500
		#$conf["printDescription"]="";
4501
		#$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".如果參數為"< 、<< 、> 、>> 、| 、2>&1"之一則不會過濾.
4502
		$conf["external"]["callShell"]["escapeshellarg"]="true";
4503
		#$conf["thereIsShellVar"],陣列字串,指令搭配的參數"argu",若含有「\'」,則取代為「"」.每個argu參數都要有對應的元素."true"代表要置換.
4504
		#$conf["thereIsShellVar"]=array();
4505
		#$conf["username"],字串,要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.
4506
		#$conf["username"]="";
4507
		#$conf["password"],字串,root的使用者密碼,預設不使用密碼,該參數不適用於apache環境.
4508
		#$conf["password"]="";
4509
		#$conf["useScript"],字串,是否要啟用Linux的script指令來記錄輸出,"true"代表要,Fedora的selinux會擋住該操作;"false"代表不要,預設為"false".
4510
		#$conf["useScript"]="";
4511
		#$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 "/tmp/.qbpwcf_tmp/external/callShell/".
4512
		#$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";
4513
		#$conf["inBackGround"],字串,是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用「;」區隔的多個指令將會出錯.
4514
		#$conf["inBackGround"]="";
4515
		#$conf["getErr"],字串,"true"代表將錯誤輸出變成標準輸出,反之"false"為不變動.
4516
		#$conf["getErr"]="false";
4517
		#$conf["doNotRun"],字串,"true"代表不執行指令,預設為"false"會執行指令.
4518
		#$conf["doNotRun"]="false";
4519
		#參考資料:
4520
		#exec=>http://php.net/manual/en/function.exec.php
4521
		#escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php
4522
		#escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php
4523
		#備註:
4524
		#不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行,使用root身份可能會被selinux阻擋.
4525
		#若使用的 command、argu 參數,含有 ~ 則會被視為字串,若有需要其於 shell 中代表的家目錄位置,可用 fileAccess::tildeToPath 來進行轉換.
4526
		$execResult=external::callShell($conf["external"]["callShell"]);
226 liveuser 4527
 
3 liveuser 4528
		#如果 $execResult["status"] 等於 "false"
4529
		if($execResult["status"]=="false"){
226 liveuser 4530
 
3 liveuser 4531
			#設置錯誤識別
4532
			$result["status"]="false";
226 liveuser 4533
 
3 liveuser 4534
			#設置錯誤訊息
4535
			$result["error"]=$execResult;
226 liveuser 4536
 
3 liveuser 4537
			#回傳結果
4538
			return $result;
226 liveuser 4539
 
3 liveuser 4540
			}#if end
226 liveuser 4541
 
3 liveuser 4542
		#取得week數字
4543
		$result["content"]=$execResult["output"][0];
226 liveuser 4544
 
3 liveuser 4545
		#設置執行成功的識別
4546
		$result["status"]="true";
226 liveuser 4547
 
3 liveuser 4548
		#回傳結果
4549
		return $result;
226 liveuser 4550
 
3 liveuser 4551
		}#function computeFebDays end
226 liveuser 4552
 
3 liveuser 4553
	/*
4554
	#函式說明:
4555
	#php內建的date()函數
4556
	#回傳結果:
4557
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4558
	#$result["error"],錯誤訊息陣列.
4559
	#$result["content"],自釘格式的時間字串.
4560
	#必填參數:
4561
	#$conf["timeZone"],字串,時區代號,可以設定的時區列表=> http://www.php.net/manual/en/timezones.php 台灣則為"Asia/Taipei".
4562
	$conf["timeZone"]="Asia/Taipei";
4563
	#$conf["format"],字串,要顯示哪些時間單位,格式與順序為何?西元年為'Y',月份為'm',日為'd',星期為D,以24計的時為'G'以12計的時為'h',分為'i',秒為's',當年的第幾個禮拜為'W',時區為'e',當年第幾天為'z',若想顯示英文字請輸入"\字母".
4564
	$conf["format"]="Y/m/d(星期D) G:i:s 第W周 時區:e";
4565
	#可省略參數:
4566
	#無.
4567
	#參考資料:
4568
	#http://php.net/manual/en/function.date.php
4569
	#備註:
4570
	#無.
4571
	*/
4572
	public static function buildInDate(&$conf){
4573
 
4574
		#初始化要回傳的內容
4575
		$result=array();
4576
 
4577
		#取得當前執行的函數名稱
4578
		$result["function"]=__FUNCTION__;
4579
 
4580
		#如果 $conf 不為陣列
4581
		if(gettype($conf)!="array"){
226 liveuser 4582
 
3 liveuser 4583
			#設置執行失敗
4584
			$result["status"]="false";
226 liveuser 4585
 
3 liveuser 4586
			#設置執行錯誤訊息
4587
			$result["error"][]="\$conf變數須為陣列形態";
4588
 
4589
			#如果傳入的參數為 null
4590
			if($conf==null){
226 liveuser 4591
 
3 liveuser 4592
				#設置執行錯誤訊息
4593
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 4594
 
3 liveuser 4595
				}#if end
4596
 
4597
			#回傳結果
4598
			return $result;
226 liveuser 4599
 
3 liveuser 4600
			}#if end
4601
 
4602
		#檢查參數
4603
		#函式說明:
4604
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
4605
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4606
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
4607
		#$result["function"],當前執行的函式名稱.
4608
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
4609
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
4610
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
4611
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
4612
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
4613
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
4614
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
4615
		#必填寫的參數:
4616
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4617
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
4618
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4619
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("timeZone","format");
226 liveuser 4620
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
3 liveuser 4621
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
4622
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4623
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4624
		#可以省略的參數:
4625
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
4626
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
4627
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4628
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("wordsLong");
226 liveuser 4629
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3 liveuser 4630
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
4631
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4632
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null);
4633
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4634
		#$conf["arrayCountEqualCheck"][]=array();
4635
		#參考資料來源:
4636
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4637
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4638
		unset($conf["variableCheck::checkArguments"]);
4639
 
4640
		#如果檢查有誤
4641
		if($checkResult["status"]=="false"){
226 liveuser 4642
 
3 liveuser 4643
			#設置錯誤識別
4644
			$result["status"]="false";
226 liveuser 4645
 
3 liveuser 4646
			#設置錯誤訊息
4647
			$result["error"]=$checkResult;
226 liveuser 4648
 
3 liveuser 4649
			#回傳結果
4650
			return $result;
226 liveuser 4651
 
3 liveuser 4652
			}#if end
226 liveuser 4653
 
3 liveuser 4654
		#如果檢查不通過
4655
		if($checkResult["passed"]=="false"){
226 liveuser 4656
 
3 liveuser 4657
			#設置錯誤識別
4658
			$result["status"]="false";
226 liveuser 4659
 
3 liveuser 4660
			#設置錯誤訊息
4661
			$result["error"]=$checkResult;
226 liveuser 4662
 
3 liveuser 4663
			#回傳結果
4664
			return $result;
226 liveuser 4665
 
3 liveuser 4666
			}#if end
4667
 
4668
		#設定時區
4669
		$conf_setTimeZone["timeZone"]=$conf["timeZone"];
4670
		time::setTimeZone($conf_setTimeZone);
4671
		unset($conf_setTimeZone);
4672
 
4673
		#取得時間
4674
		$thisTime=date($conf["format"]);
4675
 
4676
		#如果取得時間失敗
4677
		if($thisTime==false){
226 liveuser 4678
 
3 liveuser 4679
			#設置錯誤識別
4680
			$result["status"]="false";
226 liveuser 4681
 
3 liveuser 4682
			#設置錯誤訊息
4683
			$result["error"]="取得時間失敗";
226 liveuser 4684
 
3 liveuser 4685
			#回傳結果
4686
			return $result;
226 liveuser 4687
 
3 liveuser 4688
			}#if end
226 liveuser 4689
 
3 liveuser 4690
		#設置取得的時間
4691
		$result["content"]=$thisTime;
226 liveuser 4692
 
3 liveuser 4693
		#設置執行正常
4694
		$result["status"]="true";
4695
 
4696
		#回傳結果
4697
		return $result;
4698
 
4699
		}#function buildInDate end
4700
 
4701
	/*
4702
	#函式說明:
4703
	#取得當前系統支援的時區
4704
	#回傳結果:
4705
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4706
	#$result["error"],錯誤訊息陣列.
4707
	#$result["function"],當前執行的函數名稱.
4708
	#$result["content"]["timezone"][M]["name"],第M+1個區域的名稱.
4709
	#$result["content"]["timezone"][M]["dst"],第M+1個區域是否有用日光節約時間,true代表有;false代表沒有.
4710
	#$result["content"]["timezone"][M]["offset"]第M+1個區域資料的時差.
4711
	#$result["content"]["offsets"],存在的offset.
4712
	#必填參數:
4713
	#無.
4714
	#可省略參數:
4715
	#$conf["strHead"],字串,時區前面的字串,預設為"UTC".
4716
	#$conf["strHead"]="UTC";
4717
	#參考資料:
4718
	#-12的時區來源=>http://php.net/manual/en/timezones.others.php
4719
	#備註:
4720
	#建構中...
4721
	*/
4722
	public static function getPhpSupportedTimezone(&$conf){
226 liveuser 4723
 
3 liveuser 4724
		#初始化要回傳的結果
4725
		$result=array();
4726
 
4727
		#取得當前執行的函數名稱
4728
		$result["function"]=__FUNCTION__;
4729
 
4730
		#取得參數
4731
		$result["argu"]=$conf;
4732
 
4733
		#如果 $conf 不為陣列
4734
		if(gettype($conf)!="array"){
226 liveuser 4735
 
3 liveuser 4736
			#設置執行失敗
4737
			$result["status"]="false";
226 liveuser 4738
 
3 liveuser 4739
			#設置執行錯誤訊息
4740
			$result["error"][]="\$conf變數須為陣列形態";
226 liveuser 4741
 
3 liveuser 4742
			#如果傳入的參數為 null
4743
			if($conf==null){
226 liveuser 4744
 
3 liveuser 4745
				#設置執行錯誤訊息
4746
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 4747
 
3 liveuser 4748
				}#if end
4749
 
4750
			#回傳結果
4751
			return $result;
226 liveuser 4752
 
3 liveuser 4753
			}#if end
226 liveuser 4754
 
3 liveuser 4755
		#檢查參數
4756
		#函式說明:
4757
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
4758
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4759
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
4760
		#$result["function"],當前執行的函式名稱.
4761
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
4762
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
4763
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
4764
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
4765
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
4766
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
4767
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
4768
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
4769
		#必填寫的參數:
4770
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
226 liveuser 4771
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3 liveuser 4772
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4773
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4774
		#可以省略的參數:
4775
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4776
		#$conf["mustBeFilledVariableName"]=array();
4777
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
4778
		#$conf["mustBeFilledVariableType"]=array();
4779
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
4780
		#$conf["canBeEmptyString"]="false";
4781
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
4782
		#$conf["canNotBeEmpty"]=array();
4783
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
4784
		#$conf["canBeEmpty"]=array();
4785
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
4786
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("strHead");
4787
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4788
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("strHead");
226 liveuser 4789
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3 liveuser 4790
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
4791
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4792
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("UTC");
4793
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
4794
		#$conf["disallowAllSkipableVarIsEmpty"]="";
4795
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
4796
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
4797
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4798
		#$conf["arrayCountEqualCheck"][]=array();
4799
		#參考資料來源:
4800
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4801
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4802
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 4803
 
3 liveuser 4804
		#如果執行失敗
4805
		if($checkArguments["status"]==="false"){
226 liveuser 4806
 
3 liveuser 4807
			#設置執行失敗
4808
			$result["status"]="false";
226 liveuser 4809
 
3 liveuser 4810
			#設置執行失敗
4811
			$result["error"]=$checkArguments;
226 liveuser 4812
 
3 liveuser 4813
			#回傳結果
4814
			return $result;
226 liveuser 4815
 
3 liveuser 4816
			}#if end
226 liveuser 4817
 
3 liveuser 4818
		#如果檢查不通過
4819
		if($checkArguments["passed"]==="false"){
226 liveuser 4820
 
3 liveuser 4821
			#設置執行失敗
4822
			$result["status"]="false";
226 liveuser 4823
 
3 liveuser 4824
			#設置執行失敗
4825
			$result["error"]=$checkArguments;
226 liveuser 4826
 
3 liveuser 4827
			#回傳結果
4828
			return $result;
226 liveuser 4829
 
3 liveuser 4830
			}#if end
226 liveuser 4831
 
3 liveuser 4832
		$offsetArrays=array();
4833
		$timezone=array();
4834
		foreach(timezone_abbreviations_list() as $tzs){
226 liveuser 4835
 
3 liveuser 4836
			foreach($tzs as $tz){
226 liveuser 4837
 
3 liveuser 4838
				#沒有日光節約時間資訊的時區
4839
				if(!isset($tz["dst"])){
226 liveuser 4840
 
3 liveuser 4841
					#就視為不使用
4842
					$tz["dst"]=false;
226 liveuser 4843
 
3 liveuser 4844
					}
226 liveuser 4845
 
3 liveuser 4846
				#跳過沒有timezone id資訊的時區
4847
				if(!isset($tz["timezone_id"])){
226 liveuser 4848
 
3 liveuser 4849
					switch($tz["offset"]){
226 liveuser 4850
 
3 liveuser 4851
						case -43200:
4852
							$tz["timezone_id"]="Etc/GMT+12";
4853
							$tz["dst"]=false;
4854
							break;
226 liveuser 4855
 
3 liveuser 4856
						default:
4857
							continue 2;
226 liveuser 4858
						}
3 liveuser 4859
					}
226 liveuser 4860
 
3 liveuser 4861
				#計算正確的時區offset
4862
				$defaultTimeZone=date_default_timezone_get(); #取得系統設定的時區
4863
				date_default_timezone_set('UTC');
4864
				$utcTime=strtotime('2017-06-06 12:00:00');
226 liveuser 4865
				date_default_timezone_set($tz["timezone_id"]);
4866
				$hasDST=date('I',$utcTime);
4867
 
3 liveuser 4868
				#有用日光節約時間要再多減少一小時.
4869
				if($hasDST==="1"){
4870
					$gmdate=gmdate('Y-m-d H:i:s',$utcTime);
226 liveuser 4871
					$date=date('Y-m-d H:i:s',$utcTime-3600);
3 liveuser 4872
					}
4873
				else{
4874
					$gmdate=gmdate('Y-m-d H:i:s',$utcTime);
4875
					$date=date('Y-m-d H:i:s',$utcTime);
4876
					}
4877
				date_default_timezone_set("UTC");
4878
				(float)$offsetHour=(strtotime($date)-strtotime($gmdate))/3600.0;
226 liveuser 4879
 
3 liveuser 4880
				#還原成系統設定的時區
4881
				date_default_timezone_set($defaultTimeZone);
226 liveuser 4882
 
3 liveuser 4883
				#驗證時區的日光節約時間設定是對的
4884
				date_default_timezone_set('UTC');
4885
				$utcTime=strtotime('2017-07-06 12:00:00');
4886
				date_default_timezone_set($tz["timezone_id"]);
4887
				$dst=date('I',$utcTime);
226 liveuser 4888
 
3 liveuser 4889
				#修正有無使用日光節約時間
4890
				if($dst==="1" && $tz["dst"]===false){
226 liveuser 4891
 
3 liveuser 4892
					$tz["dst"]=true;
226 liveuser 4893
 
3 liveuser 4894
					}
4895
				else if($dst==="0" && $tz["dst"]===true){
226 liveuser 4896
 
3 liveuser 4897
					$tz["dst"]=false;
226 liveuser 4898
 
3 liveuser 4899
					}
226 liveuser 4900
 
3 liveuser 4901
				#將時區變成 $UTC-12 ~ $UTC+0 ~ $UTC+12
4902
				if($offsetHour>=0){
226 liveuser 4903
 
4904
					$offsetHour="+".$offsetHour;
4905
 
3 liveuser 4906
					}
226 liveuser 4907
 
3 liveuser 4908
				$offsetHour=$conf["strHead"].$offsetHour;
226 liveuser 4909
 
3 liveuser 4910
				if(!isset($tz["timezone_id"])){
226 liveuser 4911
 
3 liveuser 4912
					continue;
226 liveuser 4913
 
3 liveuser 4914
					}
4915
				else if($tz["timezone_id"]===null){
226 liveuser 4916
 
3 liveuser 4917
					continue;
226 liveuser 4918
 
3 liveuser 4919
					}
226 liveuser 4920
 
3 liveuser 4921
				$name=$tz["timezone_id"];
226 liveuser 4922
 
3 liveuser 4923
				$timezone[]=array('name'=>$name,'dst'=>$tz["dst"],'offset'=>(string)$offsetHour);
4924
				if(!in_array($offsetHour,$offsetArrays)){
226 liveuser 4925
 
3 liveuser 4926
					$offsetArrays[]=$offsetHour;
226 liveuser 4927
 
4928
					}
4929
 
3 liveuser 4930
				}
226 liveuser 4931
 
4932
			}#foreach end
4933
 
3 liveuser 4934
		#設置要回傳的內容
226 liveuser 4935
		$result["content"]=array("timezone"=>$timezone,"offsets"=>$offsetArrays);
4936
 
3 liveuser 4937
		#設置執行正常
4938
		$result["status"]="true";
226 liveuser 4939
 
4940
		#回傳結果
3 liveuser 4941
		return $result;
226 liveuser 4942
 
3 liveuser 4943
		}#function getPhpSupportedTimezone end
4944
 
4945
	/*
4946
	#函式說明:
4947
	#含時間單位的運算,目前支援小時跟分鐘的加總運算,運算結果單位為小時.
4948
	#回傳結果:
4949
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4950
	#$result["error"],錯誤訊息陣列.
4951
	#$result["function"],當前執行的函數名稱.
4952
	#$result["argu"],使用的參數.
4953
	#$result["content"][H],運作結果,以小時為單位表示.
4954
	#$result["content"][M],運作結果,以分鐘為單位表示.
4955
	#$result["content"][HM],運作結果,用Xh Ymin表示.
4956
	#必填參數:
4957
	#$conf["input"],字串,含時間單位的運算.
4958
	$conf["input"]="";
4959
	#可省略參數:
4960
	#無.
4961
	#參考資料:
4962
	#無.
4963
	#備註:
4964
	#可用於處理這樣的運算 1h+38min+2min+2min+5min+13min+2min+1min+8min+3min+4min+7min+10min+13min+4min+19min+2min+2min+12min+3min+2min+1min+3min+15min+25min+5min+2min+3min+3min+9min+2min+4min+6min+3min+13min+13min+6min+4min+2min+3min+1min+17min+4min+3min+11min+3min+8min+4min+2min+4min+7min+4min+4min+2min+2min+12min+10min+8min+2min+2min+3min+40min+3min+1h 28min
4965
	*/
4966
	public static function caculate(&$conf){
226 liveuser 4967
 
3 liveuser 4968
		#初始化要回傳的內容
4969
		$result=array();
226 liveuser 4970
 
3 liveuser 4971
		#取得當前函數名稱
4972
		$result["function"]=__FUNCTION__;
226 liveuser 4973
 
3 liveuser 4974
		#如果 $conf 不為陣列
4975
		if(gettype($conf)!="array"){
226 liveuser 4976
 
3 liveuser 4977
			#設置執行失敗
4978
			$result["status"]="false";
226 liveuser 4979
 
3 liveuser 4980
			#設置執行錯誤訊息
4981
			$result["error"][]="\$conf變數須為陣列形態";
4982
 
4983
			#如果傳入的參數為 null
4984
			if($conf==null){
226 liveuser 4985
 
3 liveuser 4986
				#設置執行錯誤訊息
4987
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 4988
 
3 liveuser 4989
				}#if end
4990
 
4991
			#回傳結果
4992
			return $result;
226 liveuser 4993
 
3 liveuser 4994
			}#if end
226 liveuser 4995
 
3 liveuser 4996
		#取得參數
4997
		$result["argu"]=$conf;
226 liveuser 4998
 
3 liveuser 4999
		#函式說明:
5000
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
5001
		#回傳結果:
5002
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5003
		#$result["error"],執行不正常結束的錯訊息陣列.
5004
		#$result["simpleError"],簡單表示的錯誤訊息.
5005
		#$result["function"],當前執行的函式名稱.
5006
		#$result["argu"],設置給予的參數.
5007
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
5008
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
5009
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
5010
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
5011
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
5012
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
5013
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
5014
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
5015
		#必填參數:
5016
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
5017
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
5018
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
5019
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
5020
		#可省略參數:
5021
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
5022
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("input");
5023
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
5024
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
5025
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
5026
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
5027
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
5028
		#$conf["canNotBeEmpty"]=array();
5029
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
5030
		#$conf["canBeEmpty"]=array();
5031
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
5032
		#$conf["skipableVariableCanNotBeEmpty"]=array();
5033
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
5034
		#$conf["skipableVariableName"]=array();
5035
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
5036
		#$conf["skipableVariableType"]=array();
5037
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
5038
		#$conf["skipableVarDefaultValue"]=array("");
5039
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
5040
		#$conf["disallowAllSkipableVarIsEmpty"]="";
5041
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
5042
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
5043
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
5044
		#$conf["arrayCountEqualCheck"][]=array();
5045
		#參考資料:
5046
		#array_keys=>http://php.net/manual/en/function.array-keys.php
5047
		#備註:
5048
		#無.
5049
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
5050
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 5051
 
3 liveuser 5052
		#如果檢查參數出錯
5053
		if($checkArguments["status"]==="false"){
226 liveuser 5054
 
3 liveuser 5055
			#設置執行不正常
5056
			$result["status"]="false";
5057
 
5058
			#執行到這邊代表檢查通過
5059
			$result["error"]=$checkArguments;
5060
 
5061
			#回傳結果
5062
			return $result;
226 liveuser 5063
 
3 liveuser 5064
			}#if end
226 liveuser 5065
 
3 liveuser 5066
		#如果檢查參數不通過
5067
		if($checkArguments["passed"]==="false"){
226 liveuser 5068
 
3 liveuser 5069
			#設置執行不正常
5070
			$result["status"]="false";
5071
 
5072
			#執行到這邊代表檢查通過
5073
			$result["error"]=$checkArguments;
5074
 
5075
			#回傳結果
5076
			return $result;
226 liveuser 5077
 
3 liveuser 5078
			}#if end
226 liveuser 5079
 
3 liveuser 5080
		#用『+』進行分割
5081
		#函式說明:
5082
		#將固定格式的字串分開,並回傳分開的結果.
5083
		#回傳結果:
5084
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5085
		#$result["error"],錯誤訊息陣列
5086
		#$result["function"],當前執行的函數名稱.
5087
		#$result["argu"],使用的參數.
5088
		#$result["oriStr"],要分割的原始字串內容
5089
		#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
5090
		#$result["dataCounts"],爲總共分成幾段
5091
		#$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
5092
		#必填參數:
5093
		#$conf["stringIn"],字串,要處理的字串.
5094
		$conf["stringProcess::spiltString"]["stringIn"]=$conf["input"];
5095
		#$conf["spiltSymbol"],字串,爲以哪個符號作爲分割.
5096
		$conf["stringProcess::spiltString"]["spiltSymbol"]="+";
5097
		#可省略參數:
5098
		#$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
5099
		#$conf["allowEmptyStr"]="false";
5100
		#參考資料:
5101
		#無.
5102
		#備註:
5103
		#無.
5104
		$spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
5105
		unset($conf["stringProcess::spiltString"]);
226 liveuser 5106
 
3 liveuser 5107
		#如果執行出錯
5108
		if($spiltString["status"]==="false"){
226 liveuser 5109
 
3 liveuser 5110
			#設置執行不正常
5111
			$result["status"]="false";
5112
 
5113
			#執行到這邊代表檢查通過
5114
			$result["error"]=$spiltString;
5115
 
5116
			#回傳結果
5117
			return $result;
226 liveuser 5118
 
3 liveuser 5119
			}#if end
226 liveuser 5120
 
3 liveuser 5121
		#如果分割出來的段數小於1
5122
		if($spiltString["dataCounts"]<1){
226 liveuser 5123
 
3 liveuser 5124
			#設置執行不正常
5125
			$result["status"]="false";
5126
 
5127
			#執行到這邊代表檢查通過
5128
			$result["error"]=$spiltString;
5129
 
5130
			#回傳結果
5131
			return $result;
226 liveuser 5132
 
3 liveuser 5133
			}#if end
226 liveuser 5134
 
3 liveuser 5135
		#確認每個時間字串是否含有空格
5136
		#函式說明:
5137
		#檢查多個字串中的每個字串是否有多個關鍵字
5138
		#回傳結果:
5139
		#$result["status"],整體來說,執行是否成功,"true"代表執行成功,"false"代表執行失敗。
5140
		#$result["function"],當前執行的函數名稱.
5141
		#$result["error"],錯誤訊息.
5142
		#$result["argu"],使用的參數.
5143
		#$result["foundedTrueKey"],結果為"true"的被搜尋元素key陣列,與其數值內容.
5144
		#$result["foundedKeyWords"],找到的關鍵字.
5145
		#$result["foundedFalseKey"],結果為"false"的被搜尋元素key陣列.
5146
		#$result["foundedTrueKeyWords"],二維陣列,各個字串有找到的關鍵字陣列.
5147
		#$result["foundedAll"],是否每個關鍵字都有找到,"true"代表每個都有找到,"false"代表沒有每個都找到.
5148
		#必填參數:
5149
		#$conf["keyWords"],字串陣列,想要搜尋的關鍵字.
5150
		$conf["search::findManyKeyWordsFromManyString"]["keyWords"]=array(" ");
5151
		#$conf["stringArray"],字串陣列,要被搜尋的字串內容陣列.
5152
		$conf["search::findManyKeyWordsFromManyString"]["stringArray"]=$spiltString["dataArray"];
5153
		#可省略參數:
5154
		#$conf["completeEqual"],字串,是否內容要完全符合,不能多出任何不符合的內容,預設為"false"不需要完全符合.
5155
		#$conf["completeEqual"]="true";
5156
		#參考資料:
5157
		#無.
5158
		#備註:
5159
		#無.
5160
		$findManyKeyWordsFromManyString=search::findManyKeyWordsFromManyString($conf["search::findManyKeyWordsFromManyString"]);
5161
		unset($conf["search::findManyKeyWordsFromManyString"]);
226 liveuser 5162
 
3 liveuser 5163
		#var_dump($findManyKeyWordsFromManyString);exit;
226 liveuser 5164
 
3 liveuser 5165
		#如果執行出錯
5166
		if($findManyKeyWordsFromManyString["status"]==="false"){
226 liveuser 5167
 
3 liveuser 5168
			#設置執行不正常
5169
			$result["status"]="false";
5170
 
5171
			#執行到這邊代表檢查通過
5172
			$result["error"]=$findManyKeyWordsFromManyString;
5173
 
5174
			#回傳結果
5175
			return $result;
226 liveuser 5176
 
3 liveuser 5177
			}#if end
226 liveuser 5178
 
3 liveuser 5179
		#如果含有空格,代表為小時+分鐘
5180
		if(count($findManyKeyWordsFromManyString["foundedTrueKey"])>0){
226 liveuser 5181
 
3 liveuser 5182
			#針對每個小時與分鐘字串
5183
			foreach($findManyKeyWordsFromManyString["foundedTrueKey"] as $index => $hourAndMinStr){
226 liveuser 5184
 
3 liveuser 5185
				#將小時與分鐘分開
5186
				#函式說明:
5187
				#將固定格式的字串分開,並回傳分開的結果.
5188
				#回傳結果:
5189
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5190
				#$result["error"],錯誤訊息陣列
5191
				#$result["function"],當前執行的函數名稱.
5192
				#$result["argu"],使用的參數.
5193
				#$result["oriStr"],要分割的原始字串內容
5194
				#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
5195
				#$result["dataCounts"],爲總共分成幾段
5196
				#$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
5197
				#必填參數:
5198
				#$conf["stringIn"],字串,要處理的字串.
5199
				$conf["stringProcess::spiltString"]["stringIn"]=$hourAndMinStr;
5200
				#$conf["spiltSymbol"],字串,爲以哪個符號作爲分割.
5201
				$conf["stringProcess::spiltString"]["spiltSymbol"]=" ";
5202
				#可省略參數:
5203
				#$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
5204
				#$conf["allowEmptyStr"]="false";
5205
				#參考資料:
5206
				#無.
5207
				#備註:
5208
				#無.
5209
				$spiltString_hourAndMinStr=stringProcess::spiltString($conf["stringProcess::spiltString"]);
5210
				unset($conf["stringProcess::spiltString"]);
226 liveuser 5211
 
3 liveuser 5212
				#如果執行出錯
5213
				if($spiltString_hourAndMinStr["status"]==="false"){
226 liveuser 5214
 
3 liveuser 5215
					#設置執行不正常
5216
					$result["status"]="false";
5217
 
5218
					#執行到這邊代表檢查通過
5219
					$result["error"]=$spiltString_hourAndMinStr;
5220
 
5221
					#回傳結果
5222
					return $result;
226 liveuser 5223
 
3 liveuser 5224
					}#if end
226 liveuser 5225
 
3 liveuser 5226
				#如果分割出來的段數不為2段
5227
				if($spiltString_hourAndMinStr["dataCounts"]!==2){
226 liveuser 5228
 
3 liveuser 5229
					#設置執行不正常
5230
					$result["status"]="false";
5231
 
5232
					#執行到這邊代表檢查通過
5233
					$result["error"]=$spiltString_hourAndMinStr;
5234
 
5235
					#回傳結果
5236
					return $result;
226 liveuser 5237
 
3 liveuser 5238
					}#if end
226 liveuser 5239
 
3 liveuser 5240
				#判斷小時是否為 H、h、Hour、hour、Hours、hours 結尾
5241
				#函式說明:
5242
				#取得符合多個特定字首與字尾的字串
5243
				#回傳結果:
5244
				#$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
5245
				#$result["function"],當前執行的函數名稱.
5246
				#$result["error"],錯誤訊息陣列.
5247
				#$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
5248
				#$result["content"],符合條件的字串,去掉字首字尾後的結果.
5249
				#$result["returnString"],爲符合字首字、尾條件的字串內容。
5250
				#$result["argu"],使用的參數.
5251
				#必填參數:
5252
				#$conf["checkString"],字串,要檢查的字串.
5253
				$conf["search::getMeetMultiConditionsString"]["checkString"]=$spiltString_hourAndMinStr["dataArray"][0];
5254
				#$conf["keyWord"],字串陣列,用來檢查字首、字首應該要有哪些字串之一,每個元素代表一個可能的條件,key為front者代表開頭的關鍵字,key為tail為代表結尾的官關鍵字.
5255
				$conf["search::getMeetMultiConditionsString"]["keyWord"][]=array("tail"=>"H");
5256
				$conf["search::getMeetMultiConditionsString"]["keyWord"][]=array("tail"=>"h");
5257
				$conf["search::getMeetMultiConditionsString"]["keyWord"][]=array("tail"=>"Hour");
5258
				$conf["search::getMeetMultiConditionsString"]["keyWord"][]=array("tail"=>"hour");
5259
				$conf["search::getMeetMultiConditionsString"]["keyWord"][]=array("tail"=>"Hours");
5260
				$conf["search::getMeetMultiConditionsString"]["keyWord"][]=array("tail"=>"hours");
5261
				#可省略參數:
5262
				#無.
5263
				#參考資料:
5264
				#無.
5265
				#備註:
5266
				#無.
5267
				$getMeetMultiConditionsString=search::getMeetMultiConditionsString($conf["search::getMeetMultiConditionsString"]);
5268
				unset($conf["search::getMeetMultiConditionsString"]);
226 liveuser 5269
 
3 liveuser 5270
				#如果執行出錯
5271
				if($getMeetMultiConditionsString["status"]==="false"){
226 liveuser 5272
 
3 liveuser 5273
					#設置執行不正常
5274
					$result["status"]="false";
5275
 
5276
					#執行到這邊代表檢查通過
5277
					$result["error"]=$getMeetMultiConditionsString;
5278
 
5279
					#回傳結果
5280
					return $result;
226 liveuser 5281
 
3 liveuser 5282
					}#if end
226 liveuser 5283
 
3 liveuser 5284
				#如果不是可以解析的時間單位
5285
				if($getMeetMultiConditionsString["founded"]==="false"){
226 liveuser 5286
 
3 liveuser 5287
					#設置執行不正常
5288
					$result["status"]="false";
5289
 
5290
					#執行到這邊代表檢查通過
5291
					$result["error"]=$getMeetMultiConditionsString;
5292
 
5293
					#回傳結果
5294
					return $result;
226 liveuser 5295
 
3 liveuser 5296
					}#if end
226 liveuser 5297
 
3 liveuser 5298
				#將小時轉換成分鐘
5299
				$resultMinFromHour=$getMeetMultiConditionsString["content"]*60;
226 liveuser 5300
 
3 liveuser 5301
				#判斷分鐘是否為 M、m、Min、min、Mins、mins 結尾
5302
				#函式說明:
5303
				#取得符合多個特定字首與字尾的字串
5304
				#回傳結果:
5305
				#$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
5306
				#$result["function"],當前執行的函數名稱.
5307
				#$result["error"],錯誤訊息陣列.
5308
				#$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
5309
				#$result["content"],符合條件的字串,去掉字首字尾後的結果.
5310
				#$result["returnString"],爲符合字首字、尾條件的字串內容。
5311
				#$result["argu"],使用的參數.
5312
				#必填參數:
5313
				#$conf["checkString"],字串,要檢查的字串.
5314
				$conf["search::getMeetMultiConditionsString"]["checkString"]=$spiltString_hourAndMinStr["dataArray"][1];
5315
				#$conf["keyWord"],字串陣列,用來檢查字首、字首應該要有哪些字串之一,每個元素代表一個可能的條件,key為front者代表開頭的關鍵字,key為tail為代表結尾的官關鍵字.
5316
				$conf["search::getMeetMultiConditionsString"]["keyWord"][]=array("tail"=>"M");
5317
				$conf["search::getMeetMultiConditionsString"]["keyWord"][]=array("tail"=>"m");
5318
				$conf["search::getMeetMultiConditionsString"]["keyWord"][]=array("tail"=>"Min");
5319
				$conf["search::getMeetMultiConditionsString"]["keyWord"][]=array("tail"=>"min");
5320
				$conf["search::getMeetMultiConditionsString"]["keyWord"][]=array("tail"=>"Mins");
5321
				$conf["search::getMeetMultiConditionsString"]["keyWord"][]=array("tail"=>"mins");
5322
				#可省略參數:
5323
				#無.
5324
				#參考資料:
5325
				#無.
5326
				#備註:
5327
				#無.
5328
				$getMeetMultiConditionsString=search::getMeetMultiConditionsString($conf["search::getMeetMultiConditionsString"]);
5329
				unset($conf["search::getMeetMultiConditionsString"]);
226 liveuser 5330
 
3 liveuser 5331
				#如果執行出錯
5332
				if($getMeetMultiConditionsString["status"]==="false"){
226 liveuser 5333
 
3 liveuser 5334
					#設置執行不正常
5335
					$result["status"]="false";
5336
 
5337
					#執行到這邊代表檢查通過
5338
					$result["error"]=$getMeetMultiConditionsString;
5339
 
5340
					#回傳結果
5341
					return $result;
226 liveuser 5342
 
3 liveuser 5343
					}#if end
226 liveuser 5344
 
3 liveuser 5345
				#如果不是可以解析的時間單位
5346
				if($getMeetMultiConditionsString["founded"]==="false"){
226 liveuser 5347
 
3 liveuser 5348
					#設置執行不正常
5349
					$result["status"]="false";
5350
 
5351
					#執行到這邊代表檢查通過
5352
					$result["error"]=$getMeetMultiConditionsString;
5353
 
5354
					#回傳結果
5355
					return $result;
226 liveuser 5356
 
3 liveuser 5357
					}#if end
226 liveuser 5358
 
3 liveuser 5359
				#加總分鐘
5360
				$resultMin=$resultMinFromHour+$getMeetMultiConditionsString["content"];
226 liveuser 5361
 
3 liveuser 5362
				#更新成用分鐘表示的時間
5363
				$spiltString["dataArray"][$index]=$resultMin;
226 liveuser 5364
 
3 liveuser 5365
				}#foreach end
226 liveuser 5366
 
3 liveuser 5367
			}#if end
226 liveuser 5368
 
3 liveuser 5369
		#針對每個小時或分鐘字串
5370
		foreach($findManyKeyWordsFromManyString["foundedFalseKey"] as $index => $singleTimeStr){
226 liveuser 5371
 
3 liveuser 5372
			#判斷 $singleTimeStr 是否為 H、h、Hour、hour、Hours、hours 結尾
5373
			#函式說明:
5374
			#取得符合多個特定字首與字尾的字串
5375
			#回傳結果:
5376
			#$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
5377
			#$result["function"],當前執行的函數名稱.
5378
			#$result["error"],錯誤訊息陣列.
5379
			#$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
5380
			#$result["content"],符合條件的字串,去掉字首字尾後的結果.
5381
			#$result["returnString"],爲符合字首字、尾條件的字串內容。
5382
			#$result["argu"],使用的參數.
5383
			#必填參數:
5384
			#$conf["checkString"],字串,要檢查的字串.
5385
			$conf["search::getMeetMultiConditionsString"]["checkString"]=$singleTimeStr;
5386
			#$conf["keyWord"],字串陣列,用來檢查字首、字首應該要有哪些字串之一,每個元素代表一個可能的條件,key為front者代表開頭的關鍵字,key為tail為代表結尾的官關鍵字.
5387
			$conf["search::getMeetMultiConditionsString"]["keyWord"][]=array("tail"=>"H");
5388
			$conf["search::getMeetMultiConditionsString"]["keyWord"][]=array("tail"=>"h");
5389
			$conf["search::getMeetMultiConditionsString"]["keyWord"][]=array("tail"=>"Hour");
5390
			$conf["search::getMeetMultiConditionsString"]["keyWord"][]=array("tail"=>"hour");
5391
			$conf["search::getMeetMultiConditionsString"]["keyWord"][]=array("tail"=>"Hours");
5392
			$conf["search::getMeetMultiConditionsString"]["keyWord"][]=array("tail"=>"hours");
5393
			#可省略參數:
5394
			#無.
5395
			#參考資料:
5396
			#無.
5397
			#備註:
5398
			#無.
5399
			$getMeetMultiConditionsString=search::getMeetMultiConditionsString($conf["search::getMeetMultiConditionsString"]);
5400
			unset($conf["search::getMeetMultiConditionsString"]);
226 liveuser 5401
 
3 liveuser 5402
			#如果執行出錯
5403
			if($getMeetMultiConditionsString["status"]==="false"){
226 liveuser 5404
 
3 liveuser 5405
				#設置執行不正常
5406
				$result["status"]="false";
5407
 
5408
				#執行到這邊代表檢查通過
5409
				$result["error"]=$getMeetMultiConditionsString;
5410
 
5411
				#回傳結果
5412
				return $result;
226 liveuser 5413
 
3 liveuser 5414
				}#if end
226 liveuser 5415
 
3 liveuser 5416
			#如果不是可以解析的時間單位
5417
			if($getMeetMultiConditionsString["founded"]==="false"){
226 liveuser 5418
 
3 liveuser 5419
				#可能為分鐘
5420
				#判斷分鐘是否為 M、m、Min、min、Mins、mins 結尾
5421
				#函式說明:
5422
				#取得符合多個特定字首與字尾的字串
5423
				#回傳結果:
5424
				#$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
5425
				#$result["function"],當前執行的函數名稱.
5426
				#$result["error"],錯誤訊息陣列.
5427
				#$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
5428
				#$result["content"],符合條件的字串,去掉字首字尾後的結果.
5429
				#$result["returnString"],爲符合字首字、尾條件的字串內容。
5430
				#$result["argu"],使用的參數.
5431
				#必填參數:
5432
				#$conf["checkString"],字串,要檢查的字串.
5433
				$conf["search::getMeetMultiConditionsString"]["checkString"]=$singleTimeStr;
5434
				#$conf["keyWord"],字串陣列,用來檢查字首、字首應該要有哪些字串之一,每個元素代表一個可能的條件,key為front者代表開頭的關鍵字,key為tail為代表結尾的官關鍵字.
5435
				$conf["search::getMeetMultiConditionsString"]["keyWord"][]=array("tail"=>"M");
5436
				$conf["search::getMeetMultiConditionsString"]["keyWord"][]=array("tail"=>"m");
5437
				$conf["search::getMeetMultiConditionsString"]["keyWord"][]=array("tail"=>"Min");
5438
				$conf["search::getMeetMultiConditionsString"]["keyWord"][]=array("tail"=>"min");
5439
				$conf["search::getMeetMultiConditionsString"]["keyWord"][]=array("tail"=>"Mins");
5440
				$conf["search::getMeetMultiConditionsString"]["keyWord"][]=array("tail"=>"mins");
5441
				#可省略參數:
5442
				#無.
5443
				#參考資料:
5444
				#無.
5445
				#備註:
5446
				#無.
5447
				$getMeetMultiConditionsString_singleTimeStr=search::getMeetMultiConditionsString($conf["search::getMeetMultiConditionsString"]);
5448
				unset($conf["search::getMeetMultiConditionsString"]);
226 liveuser 5449
 
3 liveuser 5450
				#如果執行出錯
5451
				if($getMeetMultiConditionsString_singleTimeStr["status"]==="false"){
226 liveuser 5452
 
3 liveuser 5453
					#設置執行不正常
5454
					$result["status"]="false";
5455
 
5456
					#執行到這邊代表檢查通過
5457
					$result["error"]=$getMeetMultiConditionsString_singleTimeStr;
5458
 
5459
					#回傳結果
5460
					return $result;
226 liveuser 5461
 
3 liveuser 5462
					}#if end
226 liveuser 5463
 
3 liveuser 5464
				#如果不是可以解析的時間單位
5465
				if($getMeetMultiConditionsString_singleTimeStr["founded"]==="false"){
226 liveuser 5466
 
3 liveuser 5467
					#設置執行不正常
5468
					$result["status"]="false";
5469
 
5470
					#執行到這邊代表檢查通過
5471
					$result["error"]=$getMeetMultiConditionsString_singleTimeStr;
5472
 
5473
					#回傳結果
5474
					return $result;
226 liveuser 5475
 
3 liveuser 5476
					}#if end
226 liveuser 5477
 
3 liveuser 5478
				#轉換成分鐘
5479
				$resultMin=$getMeetMultiConditionsString_singleTimeStr["content"];
226 liveuser 5480
 
3 liveuser 5481
				#更新成用分鐘表示的時間
5482
				$spiltString["dataArray"][$index]=$resultMin;
226 liveuser 5483
 
3 liveuser 5484
				#換下一個 $singleTimeStr
5485
				continue;
226 liveuser 5486
 
3 liveuser 5487
				}#if end
226 liveuser 5488
 
3 liveuser 5489
			#轉換成分鐘
5490
			$resultMin=$getMeetMultiConditionsString["content"]*60;
226 liveuser 5491
 
3 liveuser 5492
			#更新成用分鐘表示的時間
5493
			$spiltString["dataArray"][$index]=$resultMin;
226 liveuser 5494
 
3 liveuser 5495
			}#foreach end
226 liveuser 5496
 
3 liveuser 5497
		#初始化暫存分鐘的加總
5498
		$resultMin=0;
226 liveuser 5499
 
3 liveuser 5500
		#針對每個分鐘時間
5501
		foreach($spiltString["dataArray"] as $min){
226 liveuser 5502
 
3 liveuser 5503
			#加總
5504
			$resultMin=$resultMin+$min;
226 liveuser 5505
 
3 liveuser 5506
			}#foreach end
226 liveuser 5507
 
3 liveuser 5508
		#儲存計算好的分鐘時間結果
226 liveuser 5509
		$result["content"]["M"]=$resultMin;
5510
 
3 liveuser 5511
		#儲存計算好的小時時間結果
5512
		$result["content"]["H"]=$resultMin/60;
226 liveuser 5513
 
3 liveuser 5514
		#暫存不到1小時的分鐘
5515
		$minsLessOneHour=$result["content"]["M"]%60;
226 liveuser 5516
 
3 liveuser 5517
		#暫存剔除分鐘後的整數小時
5518
		$hours=($result["content"]["M"]-$minsLessOneHour)/60;
226 liveuser 5519
 
3 liveuser 5520
		#儲存換算成小時加分鐘的表示
5521
		$result["content"]["HM"]=$hours."h ".$minsLessOneHour."min";
226 liveuser 5522
 
3 liveuser 5523
		#設置執行正常
5524
		$result["status"]="true";
226 liveuser 5525
 
3 liveuser 5526
		#回傳結果
5527
		return $result;
226 liveuser 5528
 
3 liveuser 5529
		}#function caculate end
5530
 
5531
	/*
5532
	#函式說明:
5533
	#取得unixtime
5534
	#回傳結果:
5535
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5536
	#$result["error"],錯誤訊息陣列.
5537
	#$result["function"],當前執行的函數名稱.
5538
	#$result["content"],unixtime.
5539
	#必填參數:
5540
	#無.
5541
	#可省略參數:
5542
	#無.
5543
	#參考資料:
5544
	#無.
5545
	#備註:
5546
	#無.
5547
	*/
5548
	public static function unix(){
226 liveuser 5549
 
3 liveuser 5550
		#初始化要回傳的內容
5551
		$result=array();
226 liveuser 5552
 
3 liveuser 5553
		#取得當前函數名稱
5554
		$result["function"]=__FUNCTION__;
226 liveuser 5555
 
3 liveuser 5556
		#設置執行正常
5557
		$result["status"]="true";
226 liveuser 5558
 
3 liveuser 5559
		#設置unixtime
5560
		$result["content"]=time();
226 liveuser 5561
 
3 liveuser 5562
		#回傳結果
5563
		return $result;
226 liveuser 5564
 
3 liveuser 5565
		}#functino unix end
5566
 
5567
	}#class end
5568
 
5569
?>