Completed
Push — master ( 54b5b7...2ab477 )
by Maciej
14s
created

wfv-validate.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
defined( 'ABSPATH' ) || die();
3
/*
4
Plugin Name: WFV - Form Validation
5
Plugin URI:  https://macder.github.io/wfv/
6
Description: A simple fluid and concise API to manage user input, validation, feedback, and safe output.
7
Version:     0.11.0
8
Author:      Maciej Derulski
9
Author URI:  https://github.com/macder
10
License:     BSD 3-Clause
11
License URI: https://github.com/macder/wp-form-validation/blob/master/LICENSE
12
*/
13
14
define( 'WFV_VALIDATE_VERSION', '0.11.0' );
15
define( 'WFV_VALIDATE__MINIMUM_WP_VERSION', '3.7' );
16
define( 'WFV_VALIDATE__PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
17
define( 'WFV_VALIDATE__ACTION_POST', 'validate_form' );
18
19
require_once WFV_VALIDATE__PLUGIN_DIR . '/vendor/autoload.php';
20
21
use WFV\FormComposite;
22
use WFV\Agent\InspectionAgent;
23
use WFV\Artisan\Director;
24
use WFV\Artisan\FormArtisan;
25
use WFV\Factory\ValidatorFactory;
26
27
/**
28
 *
29
 *
30
 * @since 0.10.0
31
 *
32
 * @param string $action
33
 * @param array $form Form arguments
34
 * @param bool $trim Trim whitespace from beginning and end of string
35
 */
36
function wfv_create( $action, array &$form, $trim = true ) {
0 ignored issues
show
wfv_create uses the super-global variable $_POST which is generally not recommended.

Instead of super-globals, we recommend to explicitly inject the dependencies of your class. This makes your code less dependent on global state and it becomes generally more testable:

// Bad
class Router
{
    public function generate($path)
    {
        return $_SERVER['HOST'].$path;
    }
}

// Better
class Router
{
    private $host;

    public function __construct($host)
    {
        $this->host = $host;
    }

    public function generate($path)
    {
        return $this->host.$path;
    }
}

class Controller
{
    public function myAction(Request $request)
    {
        // Instead of
        $page = isset($_GET['page']) ? intval($_GET['page']) : 1;

        // Better (assuming you use the Symfony2 request)
        $page = $request->query->get('page', 1);
    }
}
Loading history...
37
	$inspect = new InspectionAgent( $action );
38
	$input = ( true === $inspect->safe_submit() ) ? $_POST : array();
39
40
	$builder = new FormArtisan( $form );
41
	$form = ( new Director( $action ) )
42
		->with( 'input', [ $input, $trim ] )
43
		->with( 'rules' )
44
		->with( 'errors' )
45
		->with( 'validator' )
46
		->compose( $builder );
47
48
	if( $input ) {
49
		wfv_validate( $form );
50
	}
51
}
52
53
/**
54
 *
55
 *
56
 * @since 0.11.0
57
 *
58
 * @param FormComposite $form
59
 * @return bool
60
 */
61
function wfv_validate( FormComposite $form ) {
62
	$factory = ( new ValidatorFactory() )
63
		->add( $form->rules()->unique() );
64
	return $form->validate( $factory )->is_valid();
65
}
66