1: <?php
2: 3: 4: 5: 6:
7:
8: if(!defined('XOOPS_ROOT_PATH'))
9: {
10: exit;
11: }
12:
13: class Profile_FormType
14: {
15: const STRING = 'string';
16: const TEXT = 'text';
17: const INT = 'int';
18: const FLOAT = 'float';
19: const DATE = 'date';
20: const CHECKBOX = 'checkbox';
21: const SELECTBOX = 'selectbox';
22: const URI = 'uri';
23: }
24:
25: interface Profile_iFieldType
26: {
27: public function showField( $obj, $key, $option=0);
28: public function getTableQuery();
29: public function setInitVar( $obj, $key, $default);
30: public function getDefault( $option);
31: public function getXObjType();
32: public function getFormPropertyClass();
33:
34: public function getSearchFormString( $key);
35: public function getOption( $obj, $key=null);
36: }
37:
38:
39: 40: 41:
42: class Profile_FieldTypeString implements Profile_iFieldType
43: {
44: const TYPE = 'string';
45:
46: public function showField( $obj, $key, $option=0)
47: {
48: if($option==Profile_ActionType::NONE||$option==Profile_ActionType::VIEW){
49: $value = $obj->getShow($key);
50: }
51: elseif($option==Profile_ActionType::EDIT){
52: $value = $obj->get($key);
53: }
54:
55: return $value;
56: }
57:
58: public function getTableQuery()
59: {
60: return 'VARCHAR(255) NOT NULL';
61: }
62:
63: public function setInitVar( $obj, $key, $default)
64: {
65: $obj->initVar($key, $this->getXObjType(), $default, false, 255);
66: }
67:
68: public function getDefault( $option)
69: {
70: return isset($option) ? $option : '';
71: }
72:
73: public function getXObjType()
74: {
75: return XOBJ_DTYPE_STRING;
76: }
77:
78: public function getFormPropertyClass()
79: {
80: return 'XCube_StringProperty';
81: }
82:
83: public function getSearchFormString( $key)
84: {
85: return '<dt></dt><dd><input type="text" value="" name="<{$key}>" /></dd>';
86: }
87:
88: public function getOption( $obj, $key=null)
89: {
90: return $obj->get('options');
91: }
92: }
93:
94:
95: 96: 97:
98: class Profile_FieldTypeText implements Profile_iFieldType
99: {
100: const TYPE = 'text';
101:
102: public function showField( $obj, $key, $option=0)
103: {
104: if($option==Profile_ActionType::NONE||$option==Profile_ActionType::VIEW){
105: switch($obj->get('option')){
106: case 'html':
107: case 'none':
108: $value = $obj->get($key);
109: break;
110: case 'bbcode':
111: default:
112: $value = $obj->getShow($key);
113: break;
114: }
115: }
116: elseif($option==Profile_ActionType::EDIT){
117: $value = $obj->get($key);
118: }
119: return $value;
120: }
121:
122: public function getTableQuery()
123: {
124: return 'text NOT NULL';
125: }
126:
127: public function setInitVar( $obj, $key, $default)
128: {
129: $obj->initVar($key, $this->getXObjType(), $default, false);
130: }
131:
132: public function getDefault( $option)
133: {
134: return '';
135: }
136:
137: public function getXObjType()
138: {
139: return XOBJ_DTYPE_TEXT;
140: }
141:
142: public function getFormPropertyClass()
143: {
144: return 'XCube_TextProperty';
145: }
146:
147: public function getSearchFormString( $key)
148: {
149: return '<dt></dt><dd><input type="text" value="" name="<{$key}>" /> <input type="text" value="" name="<{$key}>" /></dd>';
150: }
151:
152: public function getOption( $obj, $key=null)
153: {
154: return $obj->get('options');
155: }
156: }
157:
158:
159: 160: 161:
162: class Profile_FieldTypeInt implements Profile_iFieldType
163: {
164: const TYPE = 'int';
165:
166: public function showField( $obj, $key, $option=0)
167: {
168: return $obj->get($key);
169: }
170:
171: public function getTableQuery()
172: {
173: return 'INT(11) SIGNED NOT NULL';
174: }
175:
176: public function setInitVar( $obj, $key, $default)
177: {
178: $obj->initVar($key, $this->getXObjType(), $default, false);
179: }
180:
181: public function getDefault( $option)
182: {
183: return isset($option) ? $option : '';
184: }
185:
186: public function getXObjType()
187: {
188: return XOBJ_DTYPE_INT;
189: }
190:
191: public function getFormPropertyClass()
192: {
193: return 'XCube_IntProperty';
194: }
195:
196: public function getSearchFormString( $key)
197: {
198: return '<dt></dt><dd><input type="text" value="" name="<{$key}>" /></dd>';
199: }
200:
201: public function getOption( $obj, $key=null)
202: {
203: return $obj->get('options');
204: }
205: }
206:
207:
208:
209: 210: 211:
212: class Profile_FieldTypeFloat implements Profile_iFieldType
213: {
214: const TYPE = 'float';
215:
216: public function showField( $obj, $key, $option=0)
217: {
218: return $obj->get($key);
219: }
220:
221: public function getTableQuery()
222: {
223: return 'decimal(10,4) UNSIGNED NOT NULL';
224: }
225:
226: public function setInitVar( $obj, $key, $default)
227: {
228: $obj->initVar($key, $this->getXObjType(), $default, false);
229: }
230:
231: public function getDefault( $option)
232: {
233: return isset($option) ? $option : 0;
234: }
235:
236: public function getXObjType()
237: {
238: return XOBJ_DTYPE_FLOAT;
239: }
240:
241: public function getFormPropertyClass()
242: {
243: return 'XCube_FloatProperty';
244: }
245:
246: public function getSearchFormString( $key)
247: {
248: return '<dt></dt><dd><input type="text" value="" name="<{$key}>" /></dd>';
249: }
250:
251: public function getOption( $obj, $key=null)
252: {
253: return $obj->get('options');
254: }
255: }
256:
257:
258: 259: 260:
261: class Profile_FieldTypeDate implements Profile_iFieldType
262: {
263: const TYPE = 'date';
264:
265: public function showField( $obj, $key, $option=0)
266: {
267: if($option==Profile_ActionType::NONE){
268: $value = $obj->get($key);
269: }
270: elseif($option==Profile_ActionType::EDIT){
271: $value = date(_PHPDATEPICKSTRING, $obj->get($key));
272: }
273: elseif($option==Profile_ActionType::VIEW){
274: $value = ($obj->get($key)) ? formatTimestamp($obj->get($key), "s") : "";
275: }
276: return $value;
277: }
278:
279: public function getTableQuery()
280: {
281: return 'INT(11) UNSIGNED NOT NULL';
282: }
283:
284: public function setInitVar( $obj, $key, $default)
285: {
286: $obj->initVar($key, $this->getXObjType(), $default, false);
287: }
288:
289: public function getDefault( $option)
290: {
291: return time();
292: }
293:
294: public function getXObjType()
295: {
296: return XOBJ_DTYPE_INT;
297: }
298:
299: public function getFormPropertyClass()
300: {
301: return 'XCube_StringProperty';
302: }
303:
304: public function getSearchFormString( $key)
305: {
306: return '<dt></dt><dd><input type="text" value="" name="<{$key}>" class="datePicker" /> <input type="text" value="" name="<{$key}>" class="datePicker" /></dd>';
307: }
308:
309: public function getOption( $obj, $key=null)
310: {
311: return $obj->get('options');
312: }
313: }
314:
315:
316: 317: 318:
319: class Profile_FieldTypeCheckbox implements Profile_iFieldType
320: {
321: const TYPE = 'checkbox';
322:
323: public function showField( $obj, $key, $option=0)
324: {
325: if($option==Profile_ActionType::NONE||$option==Profile_ActionType::EDIT){
326: $value = $obj->get($key);
327: }
328: elseif($option==Profile_ActionType::VIEW){
329: $handler = Legacy_Utils::getModuleHandler('definitions', 'profile');
330: $objs = $handler->getObjects(new Criteria('field_name', $key));
331: if(count($objs)>0){
332: $def = array_shift($objs);
333: $optArr = $def->mFieldType->getOption($def);
334: }
335: $yes = $optArr[0] ? $optArr[0] : _YES;
336: $no = $optArr[1] ? $optArr[1] : _NO;
337: $value = $obj->get($key)==true ? $yes : $no;
338: }
339: return $value;
340: }
341:
342: public function getTableQuery()
343: {
344: return 'TINYINT(1) UNSIGNED NOT NULL';
345: }
346:
347: public function setInitVar( $obj, $key, $default)
348: {
349: $obj->initVar($key, $this->getXObjType(), $default, false);
350: }
351:
352: public function getDefault( $option)
353: {
354: $optionArr = explode('|', $option);
355: return isset($optionArr[2]) ? $optionArr[2] : 0;
356: }
357:
358: public function getXObjType()
359: {
360: return XOBJ_DTYPE_BOOL;
361: }
362:
363: public function getFormPropertyClass()
364: {
365: return 'XCube_BoolProperty';
366: }
367:
368: public function getSearchFormString( $key)
369: {
370: return '<dt></dt><dd><input type="checkbox" value="" name="<{$key}>" /></dd>';
371: }
372:
373: public function getOption( $obj, $key=null)
374: {
375: return explode("|", $obj->get('options'));
376: }
377: }
378:
379:
380: 381: 382:
383: class Profile_FieldTypeSelectbox implements Profile_iFieldType
384: {
385: const TYPE = 'selectbox';
386:
387: public function showField( $obj, $key, $option=0)
388: {
389: if($option==Profile_ActionType::NONE||$option==Profile_ActionType::VIEW){
390: $value = $obj->getShow($key);
391: }
392: elseif($option==Profile_ActionType::EDIT){
393: $value = $obj->get($key);
394: }
395: return $value;
396: }
397:
398: public function getTableQuery()
399: {
400: return 'VARCHAR(60) NOT NULL';
401: }
402:
403: public function setInitVar( $obj, $key, $default)
404: {
405: $obj->initVar($key, $this->getXObjType(), $default, false);
406: }
407:
408: public function getDefault( $option)
409: {
410: return '';
411: }
412:
413: public function getXObjType()
414: {
415: return XOBJ_DTYPE_STRING;
416: }
417:
418: public function getFormPropertyClass()
419: {
420: return 'XCube_StringProperty';
421: }
422:
423: public function getSearchFormString( $key)
424: {
425: return '<dt></dt><dd></dd>';
426: }
427:
428: public function getOption( $obj, $key=null)
429: {
430: return explode("|", $obj->get('options'));
431: }
432: }
433:
434:
435: 436: 437:
438: class Profile_FieldTypeCategory implements Profile_iFieldType
439: {
440: const TYPE = 'category';
441:
442: public function showField( $obj, $key, $option=0)
443: {
444: return $obj->get($key);
445: }
446:
447: public function getTableQuery()
448: {
449: return 'INT(11) SIGNED NOT NULL';
450: }
451:
452: public function setInitVar( $obj, $key, $default)
453: {
454: $obj->initVar($key, $this->getXObjType(), $default, false);
455: }
456:
457: public function getDefault( $option)
458: {
459: return 0;
460: }
461:
462: public function getXObjType()
463: {
464: return XOBJ_DTYPE_INT;
465: }
466:
467: public function getFormPropertyClass()
468: {
469: return 'XCube_IntProperty';
470: }
471:
472: public function getSearchFormString( $key)
473: {
474: return '<dt></dt><dd><input type="text" value="" name="<{$key}>" /></dd>';
475: }
476:
477: public function getOption( $obj, $key=null)
478: {
479: return $obj->get('options');
480: }
481: }
482:
483:
484: 485: 486:
487: class Profile_FieldTypeUri implements Profile_iFieldType
488: {
489: const TYPE = 'uri';
490:
491: public function showField( $obj, $key, $option=0)
492: {
493: if($option==Profile_ActionType::NONE||$option==Profile_ActionType::VIEW){
494: $value = $obj->getShow($key);
495: }
496: elseif($option==Profile_ActionType::EDIT){
497: $value = $obj->get($key);
498: }
499: return $value;
500: }
501:
502: public function getTableQuery()
503: {
504: return 'text NOT NULL';
505: }
506:
507: public function setInitVar( $obj, $key, $default)
508: {
509: $obj->initVar($key, $this->getXObjType(), $default, false);
510: }
511:
512: public function getDefault( $option)
513: {
514: return '';
515: }
516:
517: public function getXObjType()
518: {
519: return XOBJ_DTYPE_TEXT;
520: }
521:
522: public function getFormPropertyClass()
523: {
524: return 'XCube_TextProperty';
525: }
526:
527: public function getSearchFormString( $key)
528: {
529: return '<dt></dt><dd></dd>';
530: }
531:
532: public function getOption( $obj, $key=null)
533: {
534: return $obj->get('options');
535: }
536: }
537:
538:
539:
540: 541: 542:
543: class Profile_ActionType
544: {
545: const NONE = 0;
546: const EDIT = 1;
547: const VIEW = 2;
548: }
549:
550: ?>
551: