69 lines
2.2 KiB
PHP
69 lines
2.2 KiB
PHP
<?php
|
|
|
|
/*
|
|
* @copyright Copyright (C) 2005-2010 Keyboard Monkeys Ltd. http://www.kb-m.com
|
|
* @license http://creativecommons.org/licenses/BSD/ BSD License
|
|
* @author Keyboard Monkey Ltd
|
|
* @since CommunityID 0.9
|
|
* @package CommunityID
|
|
* @packager Keyboard Monkeys
|
|
*/
|
|
|
|
|
|
class Model_Field extends Zend_Db_Table_Row_Abstract
|
|
{
|
|
const TYPE_TEXT = 1;
|
|
const TYPE_DATE = 2;
|
|
const TYPE_GENDER = 3;
|
|
const TYPE_COUNTRY = 4;
|
|
const TYPE_LANGUAGE = 5;
|
|
const TYPE_TIMEZONE = 6;
|
|
const TYPE_EMAIL = 7;
|
|
|
|
public function getFormElement()
|
|
{
|
|
$varname = 'field_' . $this->id;
|
|
|
|
switch ($this->type) {
|
|
case self::TYPE_TEXT:
|
|
$el = new Monkeys_Form_Element_Text($varname);
|
|
break;
|
|
case self::TYPE_DATE:
|
|
$el = new Monkeys_Form_Element_Date($varname);
|
|
$el->addValidator('date', false, array('format_type' => 'Y-m-d'))
|
|
->setShowEmptyValues(true)
|
|
->setStartEndYear(1900, date('Y') - 7)
|
|
->setReverseYears(true);
|
|
break;
|
|
case self::TYPE_GENDER:
|
|
translate('Male');
|
|
translate('Female');
|
|
$el = new Monkeys_Form_Element_Radio($varname);
|
|
$el->setSeparator('  ')
|
|
->addMultiOption('M', 'Male')
|
|
->addMultiOption('F', 'Female');
|
|
break;
|
|
case self::TYPE_COUNTRY:
|
|
$el = new Monkeys_Form_Element_Country($varname);
|
|
break;
|
|
case self::TYPE_LANGUAGE:
|
|
$el = new Monkeys_Form_Element_Language($varname);
|
|
break;
|
|
case self::TYPE_TIMEZONE:
|
|
$el = new Monkeys_Form_Element_Timezone($varname);
|
|
break;
|
|
case self::TYPE_EMAIL:
|
|
$el = new Monkeys_Form_Element_Text($varname);
|
|
$el->addValidator('EmailAddress');
|
|
break;
|
|
default:
|
|
throw new Exception('Unknown field type: ' . $this->type);
|
|
break;
|
|
}
|
|
$el->setLabel($this->name);
|
|
$el->setValue($this->value);
|
|
|
|
return $el;
|
|
}
|
|
}
|