public function __construct(array $values = array(), $insert = false, $options = array()) { parent::__construct($options); $this->setName($insert ? 'adduser' : 'edituser')->setAction('#')->setMethod('post')->setAttrib('id', $insert ? 'adduser' : 'edituser'); # username $usernameInDbValidator = new FansubCMS_Validator_NoRecordExists('User_Model_User', 'name'); $usernameInDbValidator->setMessages(array(FansubCMS_Validator_NoRecordExists::RECORD_EXISTS => 'user_form_error_user_exists')); $username = $this->createElement('text', 'username')->addFilter('StripTags')->addFilter('StringTrim')->addValidator('NotEmpty', true, array('messages' => array(Zend_Validate_NotEmpty::IS_EMPTY => 'default_form_error_empty_value')))->addValidator('StringLength', true, array(3, 255))->setRequired(true)->setValue(isset($values['name']) ? $values['name'] : null)->setLabel('user_admin_field_username'); if ($insert === true) { $username->addValidator($usernameInDbValidator); } # password $password = $this->createElement('password', 'password1'); $password->setRequired($insert ? true : false)->setLabel('user_admin_field_password'); if ($insert) { $password->addValidator('NotEmpty', true, array('messages' => array(Zend_Validate_NotEmpty::IS_EMPTY => 'default_form_error_empty_value'))); } $password->addValidator('StringLength', false, array('min' => 8, 'max' => 64, 'messages' => array(Zend_Validate_StringLength::TOO_LONG => 'default_form_error_length', Zend_Validate_StringLength::TOO_SHORT => 'default_form_error_length'))); # retype password $repassword = $this->createElement('password', 'password2'); $repassword->addValidator('StringLength', true, array('min' => 8, 'max' => 64, 'messages' => array(Zend_Validate_StringLength::TOO_LONG => 'default_form_error_length', Zend_Validate_StringLength::TOO_SHORT => 'default_form_error_length')))->setRequired($insert ? true : false)->setLabel('user_admin_field_retype_password'); if ($insert) { $repassword->addValidator('NotEmpty', true, array('messages' => array(Zend_Validate_NotEmpty::IS_EMPTY => 'default_form_error_empty_value'))); } $repassword->addValidator('Identical', false, array('messages' => array(Zend_Validate_Identical::NOT_SAME => 'user_form_error_passwords_not_match'))); # Email $email = $this->createElement('text', 'email'); $email->addFilter('StripTags')->addFilter('StringTrim')->addValidator('NotEmpty', true, array('messages' => array(Zend_Validate_NotEmpty::IS_EMPTY => 'default_form_error_empty_value')))->addValidator('EmailAddress', false, array('allow' => Zend_Validate_Hostname::ALLOW_DNS, 'domain' => true, 'messages' => array(Zend_Validate_EmailAddress::DOT_ATOM => 'default_form_error_email', Zend_Validate_EmailAddress::INVALID_FORMAT => 'default_form_error_email', Zend_Validate_EmailAddress::INVALID_HOSTNAME => 'default_form_error_email', Zend_Validate_EmailAddress::INVALID_LOCAL_PART => 'default_form_error_email', Zend_Validate_EmailAddress::INVALID_MX_RECORD => 'default_form_error_email', Zend_Validate_EmailAddress::INVALID_SEGMENT => 'default_form_error_email', Zend_Validate_EmailAddress::LENGTH_EXCEEDED => 'default_form_error_email', Zend_Validate_EmailAddress::QUOTED_STRING => 'default_form_error_email')))->setRequired(true)->setValue(isset($values['email']) ? $values['email'] : null)->setLabel('email'); # Roles $roles = $this->createElement('multiCheckbox', 'roles')->setLabel('user_admin_field_roles')->setValue(isset($values['User_Model_Role']) ? $values['User_Model_Role'] : null)->setMultiOptions(User_Model_Role::getRoles()); # Tasks $table = Doctrine_Core::getTable('User_Model_Task'); if (count($table->getTasks())) { $tasks = $this->createElement('multiCheckbox', 'tasks')->setLabel('user_admin_field_tasks')->setValue(isset($values['User_Model_Task']) ? $values['User_Model_Task'] : null)->setMultiOptions($table->getTasks()); } # Profiltext $description = $this->createElement('textarea', 'description'); $description->addFilter('StripTags')->addFilter('StringTrim')->setValue(isset($values['description']) ? $values['description'] : null)->setAttrib('cols', 40)->setAttrib('rows', 15)->setLabel('description'); $team = $this->createElement('radio', 'show_team')->setMultiOptions(array('yes' => 'yes_term', 'no' => 'no_term'))->setLabel('user_admin_field_show_team')->setValue(isset($values['show_team']) ? $values['show_team'] : 'yes'); $active = $this->createElement('radio', 'active')->setMultiOptions(array('yes' => 'yes_term', 'no' => 'no_term'))->setLabel('user_admin_field_active')->setValue(isset($values['active']) ? $values['active'] : 'yes'); $activated = $this->createElement('radio', 'activated')->setMultiOptions(array('yes' => 'yes_term', 'no' => 'no_term'))->setLabel('user_admin_field_activated')->setValue(isset($values['activated']) ? $values['activated'] : 'yes'); # add elements to the form $this->addElement($username)->addElement($password)->addElement($repassword)->addElement($email)->addElement($roles); if (isset($tasks)) { $this->addElement($tasks); } $this->addElement($description)->addElement($team)->addElement($active)->addElement($activated)->addElement('submit', $insert ? 'add' : 'update', array('label' => $insert ? 'add' : 'update', 'class' => 'button')); }
public function __construct($action, $options = null) { parent::__construct($options); $this->setName('postcomment')->setAction($action)->setMethod('post')->setAttrib('id', 'postcomment'); # author $authorValidatorDB = new FansubCMS_Validator_NoRecordExists('User_Model_User', 'name'); $authorValidatorDB->setMessages(array(FansubCMS_Validator_NoRecordExists::RECORD_EXISTS => 'news_comment_form_error_author_user_exists')); $author = $this->createElement('text', 'author'); $author->addFilter('StripTags')->addFilter('StringTrim')->addValidator('NotEmpty', true, array('messages' => array(Zend_Validate_NotEmpty::IS_EMPTY => 'default_form_error_empty_value')))->addValidator('stringLength', true, array('min' => 3, 'max' => 32, 'messages' => array(Zend_Validate_StringLength::TOO_LONG => 'news_comment_form_error_author_length', Zend_Validate_StringLength::TOO_SHORT => 'news_comment_form_error_author_length')))->addValidator($authorValidatorDB)->setRequired(true)->setLabel('news_comment_field_author'); # email $email = $this->createElement('text', 'email'); $email->addValidator('NotEmpty', true, array('messages' => array(Zend_Validate_NotEmpty::IS_EMPTY => 'default_form_error_empty_value')))->addFilter('StripTags')->addFilter('StringTrim')->addValidator('EmailAddress', false, array('allow' => Zend_Validate_Hostname::ALLOW_DNS, 'domain' => true, 'messages' => array(Zend_Validate_EmailAddress::DOT_ATOM => 'default_form_error_email', Zend_Validate_EmailAddress::INVALID_FORMAT => 'default_form_error_email', Zend_Validate_EmailAddress::INVALID_HOSTNAME => 'default_form_error_email', Zend_Validate_EmailAddress::INVALID_LOCAL_PART => 'default_form_error_email', Zend_Validate_EmailAddress::INVALID_MX_RECORD => 'default_form_error_email', Zend_Validate_EmailAddress::INVALID_SEGMENT => 'default_form_error_email', Zend_Validate_EmailAddress::LENGTH_EXCEEDED => 'default_form_error_email', Zend_Validate_EmailAddress::QUOTED_STRING => 'default_form_error_email')))->setRequired(true)->setLabel('news_comment_field_email'); # url $url = $this->createElement('text', 'url'); $url->setRequired(false)->addFilter('StripTags')->addFilter('StringTrim')->setLabel('news_comment_field_website'); # comment $comment = $this->createElement('Textarea', 'comment'); $comment->setRequired(true)->addFilter('StringTrim')->addValidator('NotEmpty', true, array('messages' => array(Zend_Validate_NotEmpty::IS_EMPTY => 'default_form_error_empty_value')))->setAttrib('rows', 15)->setAttrib('cols', 40)->setLabel('news_comment_field_text'); #captcha if (!User_Model_User::isLoggedIn()) { $imgUrl = substr($_SERVER['PHP_SELF'], 0, -9) . '/media/common/images/tmp'; // little hack to have the correct baseurl $imgUrl = str_replace('//', '/', $imgUrl); $captcha = new Zend_Form_Element_Captcha('captcha', array('label' => 'captcha', 'captcha' => array('captcha' => 'Image', 'wordLen' => 6, 'timeout' => 300, 'height' => 80, 'width' => 150, 'startImage' => null, 'font' => realpath(APPLICATION_PATH . '/data/ttf') . '/captcha.ttf', 'imgurl' => $imgUrl, 'imgDir' => HTTP_PATH . DIRECTORY_SEPARATOR . 'media' . DIRECTORY_SEPARATOR . 'common' . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'tmp'), 'errorMessages' => array('default_form_error_captcha_wrong'))); $captcha->setRequired(true); } # add elements to the form if (!User_Model_User::isLoggedIn()) { $this->addElement($author)->addElement($email); } $this->addElement($url)->addElement($comment); if (!User_Model_User::isLoggedIn()) { $this->addElement($captcha); } # commit button $this->addElement('submit', 'submit', array('label' => 'news_comment_field_submit', 'class' => 'button')); }