<?php
class FormValidator {

    private array $fieldValidation;

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

    public function isValid(array $req) {
        if(!isset($req['csrf']) || $req['csrf'] !== $_SESSION['csrf']) {
            return false;
        }

        foreach($this->fieldValidation as $field => $params) {
            if(isset($req[$field]) && strlen(trim($req[$field])) > 0) {
                if(isset($params['regex'])) {
                    if(!preg_match($params['regex'], $req[$field])) {
                        return false;
                    }
                }
                else if(isset($params['equals']) && $params['equals'] !== $req[$field]) {
                    return false;
                }
            }
            else if(isset($params['required']) && $params['required']) {
                return false;
            }
        }

        return true;
    }

}
?>