View difference between Paste ID: drivkSdg and B7KXSJM4
SHOW: | | - or go back to the newest paste.
1
<?php
2
3
4
class ValidateRules
5
{
6
    
7
    static private $folderName = 'rules';
8
9
    /**
10
     * get external validation rules and instance of Validation() object
11
     *   
12-
     * @name name of file rules or send array of validate rules
12+
     * @param string/array name of file rules or send array of validate rules
13-
     * @name instanceName name of instance Validatio::forge() 
13+
     * @param string instanceName name of instance Validatio::forge() 
14
     * 
15
     * @return instance of Validation::forge()
16
     */
17
    public static function getRules($name, $instanceName = null)
18
    {
19
        if($instanceName)
20
        {
21
            $instance = \Validation::forge($instanceName);
22
        } else {
23
            $instance = \Validation::forge(\Str::random());
24
        }
25
        
26
        if(is_array($name))
27
        {
28
            $storeRules = array();
29
            foreach($name as $filename)
30-
        $rules = include($file);
30+
31
                $storeRules[] = include(self::getFileRules($filename));
32-
        $debug = '';
32+
33
            
34
            $rules = array();
35
            foreach($storeRules as $arrayRule)
36
            {
37
                $rules = array_merge($rules, $arrayRule);
38
            }
39
                     
40
        } else {
41
            
42
            $rules = include(self::getFileRules($name));
43
            
44
        }
45
        
46
        foreach($rules as $field => $item)
47
        {
48
            $instance->add_field( $field, $item['label'], self::convertToString($item['rules']) );
49
        }
50
        
51
        return $instance;
52
    }
53
54
55
    /**
56
     * @param string $name filename rules
57
     * @return string path file
58
     */
59
    private static function getFileRules($name)
60
    {
61
        $fileName = explode('_', $name);
62
        
63
        $file = APPPATH. DS .$fileName[0]. DS .self::$folderName. DS .$name.'.php';
64
        
65
        return $file;
66
    }
67
    
68
    
69
    /**
70
     * @param array $rules
71
     * @return string
72
     */
73
    private static function convertToString($rules = array())
74
    {
75
        $string = '';
76
        foreach($rules as $name => $rule)
77
        {
78
            
79
            if(is_array($rule))
80
            {
81
                $string .= $name.'[';
82
                $string .= implode(',', $rule);
83
                $string .= ']|';
84
            }
85
            elseif($name == $rule)
86
            {
87
                $string .= $rule . '|';
88
            } else {
89
                $string .= $name.'['.$rule.']|';
90
            }
91
            
92
        }
93
        
94
        $string = trim(rtrim($string, '|'));
95
        
96
        return $string;
97
    }
98
    
99
    
100
}