~desarrollokumbia/kumbia/ActiveRecord

« back to all changes in this revision

Viewing changes to active_record2/active_record_validator.php

  • Committer: Emilio Silveira
  • Date: 2010-08-25 05:50:34 UTC
  • Revision ID: emilio.rst@gmail.com-20100825055034-9xcge203v5cqz3vx
Adicionado convenio respecto al patron identidad donde al realizar una 
insercion en la tabla, el valor para el ultimo id generado se carga en 
el objeto automaticamente.

Show diffs side-by-side

added added

removed removed

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