response = array( 'response' => null, 'error' => '', ); $this->set_requirements(); } /** * Set initial requirements */ protected function set_requirements() { $file = dirname( __FILE__ ) . '/ct-validation-requirements.php'; if ( file_exists( $file ) ) { $this->requirements = require $file; } } /** * Return config for key * * @param string $key Key to return config for. */ public function config( $key ) { if ( isset( $this->requirements[ $key ] ) ) { return $this->requirements[ $key ]; } return false; } /** * Return value for key * * @param string $key Key to return value for. */ public function value( $key ) { $config = $this->config( $key ); if ( $config ) { return $config['value']; } return null; } /** * Maybe return error * * @param string $key Key to return error for. */ public function error( $key ) { $config = $this->config( $key ); if ( $config ) { return $config['error']; } return ''; } /** * Return message for key & values * * @param string $key Key for message. * @param string $values Values to return message for. */ public function message( $key, $values = array() ) { $error_text = $this->error( $key ); if ( $error_text ) { foreach ( $values as $search => $repalce ) { $error_text = str_replace( ":{$search}", $repalce, $error_text ); } } return $error_text; } /** * Check version * * @param string $key Key to compare. * @param string $value Value to compare. */ public function version( $key, $value ) { $response = $this->response; $need_version = $this->value( $key ); if ( version_compare( $value, $need_version ) >= 0 ) { $response['response'] = true; } else { $response['response'] = false; $response['error'] = $this->message( $key, array( 'required' => $need_version, ) ); } return $response; } /** * Compare key & value * * @param string $key Key to compare. * @param string $value Value to compare. */ public function compare( $key, $value ) { $response = $this->response; $good_value = $this->value( $key ); if ( false === $good_value ) { $response['response'] = true; return $response; } if ( (int) $value >= (int) $good_value ) { $response['response'] = true; } else { $response['response'] = false; $response['error'] = $this->message( $key, array( 'required' => $good_value, 'value' => $value, ) ); } return $response; } /** * Check key & value * * @param string $key Key to check. * @param string $value Value to check. */ public function is( $key, $value ) { $response = $this->response; $good_value = $this->value( $key ); if ( null === $good_value ) { $response['response'] = true; return $response; } if ( (bool) $value === (bool) $good_value ) { $response['response'] = true; } else { $response['response'] = false; $response['error'] = $this->message( $key, array( 'required' => $good_value, 'value' => $value, ) ); } return $response; } }