/** * Renames a table in the database. * * @param string $oldTable The name of the table to be renamed * @param string $newTable The new name for the table. * @param string $backup Non-MySQL: Table prefix * @param string $prefix Non-MySQL: For the table - used to rename constraints in non-mysql databases * * @return self Returns this object to support chaining. * * @throws \RuntimeException */ public function renameTable($oldTable, $newTable, $backup = null, $prefix = null) { $this->_db->renameTable($oldTable, $newTable, $backup, $prefix); return $this; }
/** * Method to backup all tables in a database with a given prefix. * * @param JDatabaseDriver $db JDatabaseDriver object. * @param string $prefix Database table prefix. * * @return boolean True on success. * * @since 3.1 */ public function backupDatabase($db, $prefix) { $return = true; $backup = 'bak_' . $prefix; // Get the tables in the database. $tables = $db->getTableList(); if ($tables) { foreach ($tables as $table) { // If the table uses the given prefix, back it up. if (strpos($table, $prefix) === 0) { // Backup table name. $backupTable = str_replace($prefix, $backup, $table); // Drop the backup table. try { $db->dropTable($backupTable, true); } catch (RuntimeException $e) { JFactory::getApplication()->enqueueMessage(JText::sprintf('INSTL_DATABASE_ERROR_BACKINGUP', $e->getMessage()), 'notice'); $return = false; } // Rename the current table to the backup table. try { $db->renameTable($table, $backupTable, $backup, $prefix); } catch (RuntimeException $e) { JFactory::getApplication()->enqueueMessage(JText::sprintf('INSTL_DATABASE_ERROR_BACKINGUP', $e->getMessage()), 'notice'); $return = false; } } } } return $return; }
/** * Method to backup all tables in a database with a given prefix. * * @param JDatabaseDriver $db JDatabaseDriver object. * @param string $name Name of the database to process. * @param string $prefix Database table prefix. * * @return boolean True on success. * * @since 3.0 */ public function backupDatabase($db, $name, $prefix) { $return = true; $backup = 'bak_' . $prefix; // Get the tables in the database. $tables = $db->getTableList(); if ($tables) { foreach ($tables as $table) { // If the table uses the given prefix, back it up. if (strpos($table, $prefix) === 0) { // Backup table name. $backupTable = str_replace($prefix, $backup, $table); // Drop the backup table. try { $db->dropTable($backupTable, true); } catch (RuntimeException $e) { $this->setError($e->getMessage()); $return = false; } // Rename the current table to the backup table. try { $db->renameTable($table, $backupTable, $backup, $prefix); } catch (RuntimeException $e) { $this->setError($e->getMessage()); $return = false; } } } } return $return; }