Server IP : 15.235.198.142 / Your IP : 216.73.216.150 Web Server : Apache/2.4.58 (Ubuntu) System : Linux ballsack 6.8.0-45-generic #45-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 30 12:02:04 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/rhodeworks/wp-content/plugins/nextgen-gallery/src/DataMapper/ |
Upload File : |
<?php namespace Imagely\NGG\DataMapper; trait Validation { /** * Hide the above attributes added to Models from var_dump() and the like * * @return array */ public function __debugInfo() { $properties = get_object_vars( $this ); unset( $properties['default_messages'] ); unset( $properties['default_patterns'] ); return $properties; } /** * @param string $validator * @return string */ public function _get_default_error_message_for( $validator ) { $retval = false; if ( isset( ValidationMessages::$default_messages[ $validator ] ) ) { $retval = ValidationMessages::$default_messages[ $validator ]; } return $retval; } /** * @param string $formatter * @return string */ public function get_default_pattern_for( $formatter ) { $retval = false; if ( isset( ValidationMessages::$default_patterns[ $formatter ] ) ) { $retval = ValidationMessages::$default_patterns[ $formatter ]; } return $retval; } /** * @param string|array<string> $str * @return string */ public function humanize_string( $str ) { $retval = []; if ( is_array( $str ) ) { foreach ( $str as $s ) { $retval[] = $this->humanize_string( $s ); } } else { $retval = ucfirst( str_replace( '_', ' ', $str ) ); } return $retval; } /** * Returns TRUE if a property is empty. * * @deprecated Don't use this, it's silly. * @param string $var * @return bool */ public function is_empty( $var, $element = false ) { if ( is_array( $var ) && $element ) { if ( isset( $var[ $element ] ) ) { $var = $var[ $element ]; } else { $var = false; } } return ( is_null( $var ) or ( is_string( $var ) and strlen( $var ) == 0 ) or $var === false ); } /** * @param string $property * @param int $length * @param string $comparison_operator ===, !=, <, >, <=, or >= * @param bool|string $msg * @return array */ public function validates_length_of( $property, $length, $comparison_operator = '=', $msg = false ) { $valid = true; $default_msg = $this->_get_default_error_message_for( __METHOD__ ); if ( ! $this->is_empty( $this->$property ) ) { switch ( $comparison_operator ) { case '=': case '==': $valid = strlen( $this->$property ) == $length; $default_msg = $this->_get_default_error_message_for( 'validates_equals' ); break; case '!=': case '!': $valid = strlen( $this->$property ) != $length; $default_msg = $this->_get_default_error_message_for( 'validates_equals' ); break; case '<': $valid = strlen( $this->$property ) < $length; $default_msg = $this->_get_default_error_message_for( 'validates_less_than' ); break; case '>': $valid = strlen( $this->$property ) > $length; $default_msg = $this->_get_default_error_message_for( 'validates_greater_than' ); break; case '<=': $valid = strlen( $this->$property ) <= $length; $default_msg = $this->_get_default_error_message_for( 'validates_less_than' ); break; case '>=': $valid = strlen( $this->$property ) >= $length; $default_msg = $this->_get_default_error_message_for( 'validates_greater_than' ); break; } } else { $valid = false; } if ( ! $valid ) { if ( ! $msg ) { $error_msg = sprintf( $default_msg, $this->humanize_string( $property ) ); } else { $error_msg = $msg; } return [ $property => [ $error_msg ] ]; } return []; } /** * @param string $property * @param int|float $comparison * @param string $comparison_operator * @param string $msg * @return array */ public function validates_numericality_of( $property, $comparison = false, $comparison_operator = false, $int_only = false, $msg = false ) { $default_msg = $this->_get_default_error_message_for( __METHOD__ ); if ( ! $this->is_empty( $this->$property ) ) { $invalid = false; if ( is_numeric( $this->$property ) ) { $this->$property += 0; if ( $int_only ) { $invalid = ! is_int( $this->$property ); } if ( ! $invalid ) { switch ( $comparison_operator ) { case '=': case '==': $invalid = ( $this->$property == $comparison ) ? false : true; $default_msg = $this->_get_default_error_message_for( 'validates_equals' ); break; case '!=': case '!': $invalid = ( $this->$property != $comparison ) ? false : true; $default_msg = $this->_get_default_error_message_for( 'validates_equals' ); break; case '<': $invalid = ( $this->$property < $comparison ) ? false : true; $default_msg = $this->_get_default_error_message_for( 'validates_less_than' ); break; case '>': $invalid = ( $this->$property > $comparison ) ? false : true; $default_msg = $this->_get_default_error_message_for( 'validates_greater_than' ); break; case '<=': $invalid = ( $this->$property <= $comparison ) ? false : true; $default_msg = $this->_get_default_error_message_for( 'validates_less_than' ); break; case '>=': $invalid = ( $this->$property >= $comparison ) ? false : true; $default_msg = $this->_get_default_error_message_for( 'validates_greater_than' ); break; } } } else { $invalid = true; } if ( $invalid ) { if ( ! $msg ) { $error_msg = sprintf( $default_msg, $this->humanize_string( $property ) ); } else { $error_msg = $msg; } return [ $property => [ $error_msg ] ]; } } return []; } /** * @param string $property * @param array $values * @param string $msg * @return array */ public function validates_inclusion_of( $property, $values = [], $msg = false ) { if ( ! is_array( $values ) ) { $values = [ $values ]; } if ( ! in_array( $this->$property, $values ) ) { if ( ! $msg ) { $msg = $this->_get_default_error_message_for( __METHOD__ ); $msg = sprintf( $msg, $this->humanize_string( $property ) ); } return [ $property => [ $msg ] ]; } return []; } /** * @param string|array $property * @param string $pattern * @param string $msg * @return array */ public function validates_format_of( $property, $pattern, $msg = false ) { // We do not validate blank values - we rely on "validates_presence_of" for that. if ( ! $this->is_empty( $this->$property ) ) { // If it doesn't match, then it's an error. if ( ! preg_match( $pattern, $this->$property ) ) { // Get default message. if ( ! $msg ) { $msg = $this->_get_default_error_message_for( __METHOD__ ); $msg = sprintf( $msg, $this->humanize_string( $property ) ); } return [ $property => [ $msg ] ]; } } return []; } /** * @param string $property * @param array $exclusions * @param string $msg (optional) * @return array */ public function validates_exclusion_of( $property, $exclusions, $msg = false ) { $invalid = false; foreach ( $exclusions as $exclusion ) { if ( $exclusion == $this->$property ) { $invalid = true; break; } } if ( $invalid ) { if ( ! $msg ) { $msg = $this->_get_default_error_message_for( __METHOD__ ); $msg = sprintf( $msg, $this->humanize_string( $property ) ); } return [ $property => [ $msg ] ]; } return []; } /** * @param string $property * @param string $confirmation * @param string $msg * @return array */ public function validates_confirmation_of( $property, $confirmation, $msg = false ) { if ( $this->$property != $this->$confirmation ) { if ( ! $msg ) { $msg = $this->_get_default_error_message_for( __METHOD__ ); $msg = sprintf( $msg, $this->humanize_string( $property ) ); } return [ $property => [ $msg ] ]; } return []; } /** * @param string $property * @param array $scope * @param string $msg * @return array */ public function validates_uniqueness_of( $property, $scope = [], $msg = false ) { // Get any entities that have the same property. $mapper = $this->get_mapper(); $key = $mapper->get_primary_key_column(); $mapper->select( $key ); $mapper->limit( 1 ); $mapper->where_and( [ "{$property} = %s", $this->$property ] ); if ( ! $this->is_new() ) { $mapper->where_and( [ "{$key} != %s", $this->id() ] ); } foreach ( $scope as $another_property ) { $mapper->where_and( [ "{$another_property} = %s", $another_property ] ); } $result = $mapper->run_query(); // If there's a result, it means that the entity is NOT unique. if ( $result ) { // Get default msg. if ( ! $msg ) { $msg = $this->_get_default_error_message_for( __METHOD__ ); $msg = sprintf( $msg, $this->humanize_string( $property ) ); } return [ $property => [ $msg ] ]; } return []; } /** * @param string $property * @param array $with * @param string $msg * @return array */ public function validates_presence_of( $property, $with = [], $msg = false ) { $missing = []; $invalid = true; // Is a value present? if ( ! $this->is_empty( $this->$property ) ) { $invalid = false; // This property must be present with at least another property. if ( $with ) { if ( ! is_array( $with ) ) { $with = [ $with ]; } foreach ( $with as $other ) { if ( $this->is_empty( $this->$other ) ) { $invalid = true; $missing[] = $other; } } } } // Add error. if ( $invalid ) { if ( ! $msg ) { // If missing isn't empty, it means that we're to use the "with" error message. if ( $missing ) { $missing = implode( ', ', $this->humanize_string( $missing ) ); $msg = sprintf( $this->_get_default_error_message_for( 'validates_presence_with' ), $property, $missing ); } else { // Has no 'with' arguments. Use the default error msg. $msg = sprintf( $this->_get_default_error_message_for( __METHOD__ ), $property ); } } return [ $property => [ $msg ] ]; } return []; } } /** * This class exists to prevent the Validation trait from adding any new attributes to the classes that use it and is * only used by the above Validation trait. */ class ValidationMessages { public static $default_messages = [ 'validates_presence_of' => '%s should be present', 'validates_presence_with' => '%s should be present with %s', 'validates_uniqueness_of' => '%s should be unique', 'validates_confirmation_of' => '%s should match confirmation', 'validates_exclusion_of' => '%s is reserved', 'validates_format_of' => '%s is invalid', 'validates_inclusion_of' => '%s is not included in the list', 'validates_numericality_of' => '%s is not numeric', 'validates_less_than' => '%s is too small', 'validates_greater_than' => '%s is too large', 'validates_equals' => '%s is invalid', ]; public static $default_patterns = [ 'email_address' => '//', ]; }