public function commit()
 {
     $required_modules = $this->get_required_modules();
     $dom_document = $this->get_dom_document();
     $modules_node = $dom_document->createElement('modules');
     $dom_document->appendChild($modules_node);
     foreach ($required_modules as $rm) {
         $module_node = $dom_document->createElement('module');
         $module_node->setAttribute('name', $rm);
         $modules_node->appendChild($module_node);
     }
     parent::commit();
 }
 /**
  * Makes a backup of the old file, if there is one,
  * and then writes the values to file in our custom format.
  */
 public function commit()
 {
     ## Make a backup copy of the old file, if it exists.
     ##if (file_exists($this->get_name())) {
     ##    $old_filename = $this->get_name();
     ##    $time = time();
     ##
     ##    $backup_filename = preg_replace('/(?=\.txt$)/', "-$time", $old_filename);
     ##
     ##    rename($old_filename, $backup_filename);
     ##}
     #
     #$file_handle = fopen($this->get_name(), 'w');
     $dom_document = $this->get_dom_document();
     #print_r($dom_document);
     #$dom_document->appendChild($date_element);
     ## Write the database class and renderer filenames, if any.
     #fwrite($file_handle, "\n# Database class and renderer.\n\n");
     #
     #if (isset($this->database_class_file)) {
     #    fwrite($file_handle, 'database.class=' . $this->database_class_file->get_name() . "\n");
     #}
     #
     #if (isset($this->database_renderer_class_file)) {
     #    fwrite($file_handle, 'database.renderer=' . $this->database_renderer_class_file->get_name() . "\n");
     #}
     #
     ## Write the table class and renderer filenames, if any.
     #fwrite($file_handle, "\n# Table classes and renderers.\n\n");
     #
     #if (is_array($this->table_class_files)) {
     #    $table_names = array_keys($this->table_class_files);
     #    sort($table_names);
     #
     #    foreach ($table_names as $table_name) {
     #        fwrite($file_handle, "table.$table_name.class=" . $this->table_class_files[$table_name]->get_name() . "\n");
     #    }
     #}
     #
     #if (is_array($this->table_renderer_class_files)) {
     #    $table_names = array_keys($this->table_renderer_class_files);
     #    sort($table_names);
     #
     #    foreach ($table_names as $table_name) {
     #        fwrite($file_handle, "table.$table_name.renderer=" . $this->table_renderer_class_files[$table_name]->get_name() . "\n");
     #    }
     #}
     #
     ## Write the row class and renderer filenames, if any.
     #fwrite($file_handle, "\n# Row classes and renderers.\n\n");
     #
     #if (is_array($this->row_class_files)) {
     #    $table_names = array_keys($this->row_class_files);
     #    sort($table_names);
     #
     #    foreach ($table_names as $table_name) {
     #        fwrite($file_handle, "row.$table_name.class=" . $this->row_class_files[$table_name]->get_name() . "\n");
     #    }
     #}
     #
     #if (is_array($this->row_renderer_class_files)) {
     #    $table_names = array_keys($this->row_renderer_class_files);
     #    sort($table_names);
     #
     #    foreach ($table_names as $table_name) {
     #        fwrite($file_handle, "row.$table_name.renderer=" . $this->row_renderer_class_files[$table_name]->get_name() . "\n");
     #    }
     #}
     #
     ## Write the field class and renderer filenames, if any.
     #fwrite($file_handle, "\n# Field classes and renderers.\n\n");
     #
     #if (is_array($this->field_class_files)) {
     #    $table_names = array_keys($this->field_class_files);
     #    sort($table_names);
     #
     #    foreach ($table_names as $table_name) {
     #        if (is_array($this->field_class_files[$table_name])) {
     #            $field_names = array_keys($this->field_class_files[$table_name]);
     #            sort($field_names);
     #
     #            foreach ($field_names as $field_name) {
     #                fwrite($file_handle, "field.$table_name.$field_name.class=" . $this->field_class_files[$table_name][$field_name]->get_name() . "\n");
     #            }
     #        }
     #    }
     #}
     #
     #if (is_array($this->field_renderer_class_files)) {
     #    $table_names = array_keys($this->field_renderer_class_files);
     #    sort($table_names);
     #
     #    foreach ($table_names as $table_name) {
     #        if (is_array($this->field_renderer_class_files[$table_name])) {
     #            $field_names = array_keys($this->field_renderer_class_files[$table_name]);
     #            sort($field_names);
     #
     #            foreach ($field_names as $field_name) {
     #                fwrite($file_handle, "field.$table_name.$field_name.renderer=" . $this->field_renderer_class_files[$table_name][$field_name]->get_name() . "\n");
     #            }
     #        }
     #    }
     #}
     #
     #fclose($file_handle);
     /*
      * The database node.
      */
     $database_element = $dom_document->createElement('database');
     $dom_document->appendChild($database_element);
     $database_class_filename_element = $dom_document->createElement('class_filename', $this->database_class_file->get_name());
     $database_element->appendChild($database_class_filename_element);
     $database_renderer_class_filename_element = $dom_document->createElement('renderer_class_filename', $this->database_renderer_class_file->get_name());
     $database_element->appendChild($database_renderer_class_filename_element);
     /*
      * Loop for the tables.
      */
     foreach ($this->get_table_names() as $table_name) {
         $table_element = $dom_document->createElement('table');
         $table_element->setAttribute('name', $table_name);
         $database_element->appendChild($table_element);
         if (isset($this->table_class_files[$table_name])) {
             $table_class_name_element = $dom_document->createElement('table_class_name', $this->table_class_files[$table_name]->get_name());
             $table_element->appendChild($table_class_name_element);
         }
         if (isset($this->table_renderer_class_files[$table_name])) {
             $table_renderer_class_name_element = $dom_document->createElement('table_renderer_class_name', $this->table_renderer_class_files[$table_name]->get_name());
             $table_element->appendChild($table_renderer_class_name_element);
         }
     }
     parent::commit();
 }