Example #1
0
 /**
  * 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;
 }