~desarrollokumbia/kumbia/ActiveRecord

« back to all changes in this revision

Viewing changes to active_record2/active_record_validator.php

  • Committer: Emilio Silveira
  • Date: 2010-07-30 03:22:48 UTC
  • Revision ID: emilio.rst@gmail.com-20100730032248-9n4vnvcist5rjze1
Cambios multiples.

Implementado en ActiveRecord create y update con validaciones y 
disparadores before y after

Show diffs side-by-side

added added

removed removed

Lines of Context:
90
90
                        return TRUE;
91
91
                }
92
92
                                
93
 
                // Columnas con valor por defectos
94
 
                $default = array();
 
93
                // Columnas autogeneradas
 
94
                $autogen = array();
95
95
                
96
 
                // Verifica si existe columnas con valor por defectos
97
 
                if(isset($validators['default'])) {
 
96
                // Verifica si existe columnas autogeneradas
 
97
                if(isset($validators['auto'])) {
98
98
                        
99
99
                        // Itera en cada definicion de validacion
100
 
                        foreach($validators['default'] as $v) {
101
 
                                // Verifica las condiciones para cuando la columna es con valor por defecto
102
 
                                $default[$v] = $this->defaultValidator($model, $v);
 
100
                        foreach($validators['auto'] as $v) {
 
101
                                // Si es una columna sin configuracion especial
 
102
                                if(is_string($v)) {
 
103
                                        $column = $v;                                   
 
104
                                        $params = NULL;
 
105
                                } else {
 
106
                                        $column = $v[0];
 
107
                                        unset($v[0]);
 
108
                                        $params = $v;
 
109
                                }
 
110
                                
 
111
                                // Verifica las condiciones para cuando la columna es autogenerada
 
112
                                $autogen[$column] = $this->autoValidator($model, $column, $params, $update);
103
113
                        }
104
114
                        
105
115
                        // Aprovecha y libera memoria :)
106
 
                        unset($validators['default']);
 
116
                        unset($validators['auto']);
107
117
                        
108
118
                }
109
119
                
117
127
                        foreach($validators['notNull'] as $v) {
118
128
                                // Si es una columna sin configuracion especial
119
129
                                if(is_string($v)) {
120
 
                                        // Si es con valor por defecto entonces salta la validacion
121
 
                                        if(isset($default[$v]) && $default[$v]) {
 
130
                                        // Si es autogenerada entonces salta la validacion
 
131
                                        if(isset($autogen[$v]) && $autogen[$v]) {
122
132
                                                continue;
123
133
                                        }
124
134
                                        
125
135
                                        $column = $v;                                   
126
136
                                        $params = NULL;
127
137
                                } else {
128
 
                                        // Si es con valor por defecto entonces salta la validacion
129
 
                                        if(isset($default[$v[0]]) && $default[$v[0]]) {
 
138
                                        // Si es autogenerada entonces salta la validacion
 
139
                                        if(isset($autogen[$v[0]]) && $autogen[$v[0]]) {
130
140
                                                continue;
131
141
                                        }
132
142
                                        
152
162
                                
153
163
                                // Si es una columna sin configuracion especial
154
164
                                if(is_string($v)) {
155
 
                                        // Si es con valor por defecto entonces salta la validacion
156
 
                                        if(isset($default[$v]) && $default[$v]) {
 
165
                                        // Si es autogenerada entonces salta la validacion
 
166
                                        if(isset($autogen[$v]) && $autogen[$v]) {
157
167
                                                continue;
158
168
                                        }
159
169
 
160
170
                                        $column = $v;                                   
161
171
                                        $params = NULL;
162
172
                                } else {
163
 
                                        // Si es con valor por defecto entonces salta la validacion
164
 
                                        if(is_string($v[0]) && isset($default[$v[0]]) && $default[$v[0]]) {
 
173
                                        // Si es autogenerada entonces salta la validacion
 
174
                                        if(is_string($v[0]) && isset($autogen[$v[0]]) && $autogen[$v[0]]) {
165
175
                                                continue;
166
176
                                        }
167
177
                                        
187
197
         * 
188
198
         * @param ActiveRecord $model
189
199
         * @param string $column columna a validar
 
200
         * @param array $params
 
201
         * @param boolean $update
190
202
         * @return boolean
191
203
         */
192
 
        public function defaultValidator($model, $column)
 
204
        public function autoValidator($model, $column, $params, $update)
193
205
        {
194
 
                // Se ha indicado el campo y no se considera nulo, por lo tanto no se tomara por defecto
 
206
                // Se ha indicado el campo y no se considera nulo, por lo tanto no se autogenerará
195
207
                if(isset($model->$column) && $model->$column != '') {
196
 
                        // Se considera con valor por defecto cuando sea nulo
 
208
                        // Se considera para autogenerar cuando sea nulo 
197
209
                        return FALSE;
198
210
                }
199
211
                
200
 
                // Valor por defecto
201
 
                return TRUE;
 
212
                // Se verifica para cuando es autogenerado
 
213
                if($params) {
 
214
                        // Autogenerado al actualizar
 
215
                        if(isset($params['update'])) {
 
216
                                return $update == $params['update'];
 
217
                        }
 
218
                                
 
219
                        // Autogenerado al crear y al actualizar
 
220
                        return isset($params['createAndUpdate']);
 
221
                }
 
222
                
 
223
                // Autogenerado al crear
 
224
                return !$update;
202
225
        }
203
226
        
204
227
        /**