Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/Ecombricks/Framework/Validator/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/Ecombricks/Framework/Validator/CodeValidator.php
<?php
/**
 * Copyright © eComBricks. All rights reserved.
 * See LICENSE.txt for license details.
 */
namespace Ecombricks\Framework\Validator;

/**
 * Code validator
 */
class CodeValidator extends \Ecombricks\Framework\Validator\StringValidator
{
    
    /**
     * Is number first character allowed
     * 
     * @var bool
     */
    protected $isNumberFirstCharacterAllowed = false;
    
    /**
     * Constructor
     * 
     * @param array $options
     * @return void
     */
    public function __construct($options = [])
    {
        parent::__construct($options);
        if (isset($options['number_first_character_allowed'])) {
            $this->setIsNumberFirstCharacterAllowed(($options['number_first_character_allowed']) ? true : false);
        }
    }
    
    /**
     * Initialize
     * 
     * @return $this
     */
    public function _construct()
    {
        parent::_construct();
        $this
            ->setMinLength(2)
            ->setMaxLength(32)
            ->setLabel('code');
        return $this;
    }
    
    /**
     * Get is number first character allowed
     * 
     * @return bool
     */
    public function getIsNumberFirstCharacterAllowed()
    {
        return $this->isNumberFirstCharacterAllowed;
    }
    
    /**
     * Set is number first character allowed
     * 
     * @param bool $isNumberFirstCharacterAllowed
     * @return $this
     */
    public function setIsNumberFirstCharacterAllowed($isNumberFirstCharacterAllowed)
    {
        $this->isNumberFirstCharacterAllowed = $isNumberFirstCharacterAllowed;
        return $this;
    }
    
    /**
     * Check if is number first character allowed
     * 
     * @return bool
     */
    public function isNumberFirstCharacterAllowed()
    {
        return $this->getIsNumberFirstCharacterAllowed();
    }
    
    /**
     * Callback validator function
     * 
     * @param string $value
     * @return bool
     */
    public function callbackValidatorFunction($value)
    {
        return $this->checkUniqueness($value, 'getIdByCode');
    }
    
    /**
     * Add validators
     * 
     * @param mixed $value
     * @return $this
     */
    protected function addValidators($value)
    {
        parent::addValidators($value);
        $this->addRegexValidator($value);
        if ($this->hasRegexValidator()) {
            $this->getRegexValidator()
                ->setPattern(
                    ($this->isNumberFirstCharacterAllowed()) ? 
                        '/^[a-z0-9]+[a-z0-9_]*$/' : 
                        '/^[a-z]+[a-z0-9_]*$/'
                )
                ->setMessage(
                    ($this->isNumberFirstCharacterAllowed()) ? 
                        __(
                            '%1 may only contain letters (a-z), numbers (0-9) or underscore(_), the first character must be a letter or a number', 
                            $this->getLabelFirstLetterUppercased()
                        ) :
                        __(
                            '%1 may only contain letters (a-z), numbers (0-9) or underscore(_), the first character must be a letter', 
                            $this->getLabelFirstLetterUppercased()
                        ),
                    \Zend_Validate_Regex::NOT_MATCH
                );
        }
        $this->addCallbackValidator($value);
        if ($this->hasCallbackValidator()) {
            $this->getCallbackValidator()
                ->setMessage(
                    __('%1 with the same code is already exists.', $this->getObjectLabelFirstLetterUppercased()),
                    \Zend_Validate_Callback::INVALID_VALUE
                );
        }
        return $this;
    }
    
}

Spamworldpro Mini