File indexing completed on 2024-12-22 05:33:35
0001 <?php 0002 0003 /** 0004 * ocs-webserver 0005 * 0006 * Copyright 2016 by pling GmbH. 0007 * 0008 * This file is part of ocs-webserver. 0009 * 0010 * This program is free software: you can redistribute it and/or modify 0011 * it under the terms of the GNU Affero General Public License as 0012 * published by the Free Software Foundation, either version 3 of the 0013 * License, or (at your option) any later version. 0014 * 0015 * This program is distributed in the hope that it will be useful, 0016 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0018 * GNU Affero General Public License for more details. 0019 * 0020 * You should have received a copy of the GNU Affero General Public License 0021 * along with this program. If not, see <http://www.gnu.org/licenses/>. 0022 **/ 0023 class Default_Form_Register extends Zend_Form 0024 { 0025 0026 /** 0027 * @throws Zend_Exception 0028 * @throws Zend_Form_Exception 0029 * @throws Zend_Validate_Exception 0030 */ 0031 public function init() 0032 { 0033 $this->setMethod('POST'); 0034 $this->setAction('/register/'); 0035 $this->addElementPrefixPath('Local', 'Local/'); 0036 $this->setAttrib('id', 'registerForm'); 0037 $this->setAttrib('class', 'standard-form row-fluid center'); 0038 $redir = $this->createElement('hidden', 'redirect')->setDecorators(array('ViewHelper')); 0039 $this->addElement($redir); 0040 0041 $usernameValidChars = new Zend_Validate_Regex('/^(?=.{4,20}$)(?![-])(?!.*[-]{2})[a-z0-9-]+(?<![-])$/'); 0042 $userExistCheck = new Local_Validate_UsernameExists(); 0043 $userExistCheck->setMessage('This username already exists.', Local_Validate_UsernameExists::EXISTS); 0044 $userExistCheck->setMessage('This username already exists.'); 0045 $userEmptyCheck = new Zend_Validate_NotEmpty(); 0046 $userEmptyCheck->setMessage('RegisterFormUsernameErr', Zend_Validate_NotEmpty::IS_EMPTY); 0047 $userNameLength = new Zend_Validate_StringLength(array('min' => 4, 'max' => 20)); 0048 0049 $fname = $this->createElement('text', 'username') 0050 ->setDecorators(array('ViewHelper', 'Errors')) 0051 ->setRequired(true) 0052 ->addFilter(new Zend_Filter_StringTrim()) 0053 ->addFilter(new Zend_Filter_StripNewlines()) 0054 ->addValidator($userEmptyCheck, true) 0055 ->addValidator($userNameLength, true) 0056 ->addValidator($usernameValidChars, true) 0057 ->addValidator($userExistCheck, true) 0058 ->setAttrib('placeholder', 'Username (4 chars minimum)') 0059 ->setAttrib('class', 'form-control'); 0060 0061 $opencode = Zend_Registry::get('config')->settings->server->opencode; 0062 if ($opencode->host) { 0063 $groupNameExists = new Local_Validate_GroupnameExistsInOpenCode(); 0064 $fname->addValidator($groupNameExists, true); 0065 } 0066 0067 $mailValidCheck = new Zend_Validate_EmailAddress(); 0068 $mailValidCheck->setMessage('RegisterFormEmailErrNotValid', Zend_Validate_EmailAddress::INVALID) 0069 ->setMessage('RegisterFormEmailErrNotValid', Zend_Validate_EmailAddress::INVALID_FORMAT) 0070 ->setMessage('RegisterFormEmailErrNotValid', Zend_Validate_EmailAddress::INVALID_LOCAL_PART) 0071 ->setMessage("RegisterFormEmailErrWrongHost", Zend_Validate_EmailAddress::INVALID_HOSTNAME) 0072 ->setMessage("RegisterFormEmailErrWrongHost2", Zend_Validate_Hostname::INVALID_HOSTNAME) 0073 ->setMessage("RegisterFormEmailErrHostLocal", Zend_Validate_Hostname::LOCAL_NAME_NOT_ALLOWED) 0074 ->setOptions(array('domain' => true)); 0075 0076 $mailExistCheck = new Local_Validate_EmailExists(); 0077 $mailExistCheck->setMessage('RegisterFormEmailErrAlreadyRegistered', Local_Validate_EmailExists::EXISTS); 0078 0079 $mailEmpty = new Zend_Validate_NotEmpty(); 0080 $mailEmpty->setMessage('RegisterFormEmailErrEmpty', Zend_Validate_NotEmpty::IS_EMPTY); 0081 0082 $mailValidatorChain = new Zend_Validate(); 0083 $mailValidatorChain->addValidator($mailEmpty, true) 0084 ->addValidator($mailValidCheck, true) 0085 ->addValidator($mailExistCheck, true); 0086 0087 $mail = $this->createElement('text', 'mail') 0088 ->setLabel('RegisterFormEmailLabel') 0089 ->addValidator($mailEmpty, true) 0090 ->addValidator($mailValidCheck, true) 0091 ->addValidator($mailExistCheck, true) 0092 ->setDecorators(array('ViewHelper', 'Errors')) 0093 ->setRequired(true) 0094 ->setAttrib('placeholder', 'Email') 0095 ->setAttrib('class', 'form-control'); 0096 0097 $pass1 = $this->createElement('password', 'password1') 0098 ->setLabel('RegisterFormPasswordLabel') 0099 ->setRequired(true)//->addErrorMessage('RegisterFormPasswordErr') 0100 ->setDecorators(array('ViewHelper', 'Errors')) 0101 ->setAttrib('placeholder', 'Password') 0102 ->addValidator('stringLength', true, array(6, 200)) 0103 ->setAttrib('placeholder', 'Password (6 chars minimum)') 0104 ->setAttrib('class', 'form-control'); 0105 0106 $pass2 = $this->createElement('password', 'password2') 0107 ->setLabel('RegisterFormPassword2Label') 0108 ->setRequired(true) 0109 ->addErrorMessage('RegisterFormPassword2Err') 0110 ->setDecorators(array('ViewHelper', 'Errors')) 0111 ->setAttrib('placeholder', 'Confirm Password') 0112 ->setAttrib('class', 'form-control'); 0113 0114 $passValid = new Local_Validate_PasswordConfirm($pass2->getValue()); 0115 $pass1->addValidator($passValid, true); 0116 0117 $submit = $this->createElement('button', 'login'); 0118 $submit->setLabel('Register'); 0119 $submit->setDecorators(array('ViewHelper')); 0120 $submit->setAttrib('class', 'btn btn-native btn-min-width'); 0121 $submit->setAttrib('type', 'submit'); 0122 0123 $this->addElement($fname) 0124 ->addElement($mail) 0125 ->addElement($pass1) 0126 ->addElement($pass2) 0127 ->addElement($submit); 0128 0129 if (APPLICATION_ENV == 'development') { 0130 return; 0131 } 0132 0133 $this->addPrefixPath('Cgsmith\\Form\\Element', APPLICATION_LIB . '/Cgsmith/Form/Element', Zend_Form::ELEMENT); 0134 $this->addElementPrefixPath('Cgsmith\\Validate\\', APPLICATION_LIB . '/Cgsmith/Validate/', 0135 Zend_Form_Element::VALIDATE); 0136 $captcha = $this->createElement('recaptcha', 'g-recaptcha-response', array( 0137 'siteKey' => Zend_Registry::get('config')->recaptcha->sitekey, 0138 'secretKey' => Zend_Registry::get('config')->recaptcha->secretkey, 0139 )); 0140 0141 $this->addElement($captcha); 0142 } 0143 0144 }