/** * Comprueba y actualiza la estructura de la tabla si es necesario * @param type $table_name * @return boolean */ protected function check_table($table_name) { $done = TRUE; $consulta = ''; $xml_columnas = array(); $xml_restricciones = array(); if ($this->get_xml_table($table_name, $xml_columnas, $xml_restricciones)) { if ($this->db->table_exists($table_name)) { if (!$this->db->check_table_aux($table_name)) { $this->new_error_msg('Error al convertir la tabla a InnoDB.'); } /// eliminamos restricciones $restricciones = $this->db->get_constraints($table_name); $consulta2 = $this->db->compare_constraints($table_name, $xml_restricciones, $restricciones, TRUE); if ($consulta2 != '') { if (!$this->db->exec($consulta2)) { $this->new_error_msg('Error al comprobar la tabla ' . $table_name); } } /// comparamos las columnas $columnas = $this->db->get_columns($table_name); $consulta .= $this->db->compare_columns($table_name, $xml_columnas, $columnas); /// comparamos las restricciones $restricciones = $this->db->get_constraints($table_name); $consulta .= $this->db->compare_constraints($table_name, $xml_restricciones, $restricciones); } else { /// generamos el sql para crear la tabla $consulta .= $this->db->generate_table($table_name, $xml_columnas, $xml_restricciones); $consulta .= $this->install(); } if ($consulta != '') { if (!$this->db->exec($consulta)) { $this->new_error_msg('Error al comprobar la tabla ' . $table_name); $done = FALSE; } } } else { $this->new_error_msg('Error con el xml.'); $done = FALSE; } return $done; }