20a21,76 > // If the database URL is a string, we have a single database to back up. > // If it's an array, back up each database listed in the array. > // If neither, return an error. > > $databases = array(); > if (is_array($GLOBALS["db_url"])) { > $databases = $GLOBALS["db_url"]; > } else { > if (is_string($GLOBALS["db_url"])) { > $databases['default'] = $GLOBALS["db_url"]; > } else { > $error = "Global db_url is neither a string nor an array."; > return $error; > } > } > > // Back up each database into its own file, using the db name to > // differentiate file names. > > $db_file = array(); > $errors = array(); > foreach ($databases as $db_name => $db_url) { > $error = backup_single_database($db_file_name, $prefix_dir, $db_name, rawurldecode($db_url)); > if (is_null($error)) { > $db_file[] = $db_file_name; > } else { > $errors[] = $error; > } > } > > // If any errors, concatenate them. Else, return null. > > if (count($errors) > 0) { > return implode("
", $errors); > } else { > return(null); > } > > } // End of backup_database() > > /** > * Backs up a single database. > * > * @param string $db_file This is set to the name of the file which holds > * the database. > * > * @param string $prefix_dir The directory name to prefix to the backup. > * > * @param string $db_name The name of the database, which is made part of > * the backup file name. > * > * @return mixed NULL is returned on success. Otherwise an error is returned. > */ > > function backup_single_database(&$db_file_name, $prefix_dir = "", $db_name = "", $db_url) { > 25c81 < $db_data = parse_url($GLOBALS["db_url"]); --- > $db_data = parse_url($db_url); 31c87 < $db_file_tmp = tempnam("/tmp", "drupal-backup-db-"); --- > $db_file_tmp = tempnam("/tmp", "drupal-backup-db-" . $db_name); 43c99 < $db_file = "drupal-backup-db-" . $date_string --- > $db_file_name = "drupal-backup-db-" . $db_name . "-" . $date_string 82,83c138,139 < if (!rename($db_file_tmp, $db_file)) { < $error = "Renaming file '$db_file_tmp' to '$db_file' failed"; --- > if (!rename($db_file_tmp, $db_file_name)) { > $error = "Renaming file '$db_file_tmp' to '$db_file_name' failed"; 90c146 < } // End of backup_database() --- > } // End of backup_single_database() 211c267,268 < $file_list .= $parent_dir . $db_file; --- > //$file_list .= $parent_dir . $db_file; > $file_list .= $parent_dir . implode(" " . $parent_dir, $db_file); 297,299c354,358 < if (!unlink($db_file)) { < $error = "Unable to delete file '$db_file'"; < return($error); --- > foreach ($db_file as $db_file_name) { > if (!unlink($db_file_name)) { > $error = "Unable to delete file '$db_file_name'"; > return($error); > }