CodeIgniter Forums
DB Utility Class manipulation - Printable Version

+- CodeIgniter Forums (https://forum.codeigniter.com)
+-- Forum: Archived Discussions (https://forum.codeigniter.com/forumdisplay.php?fid=20)
+--- Forum: Archived Development & Programming (https://forum.codeigniter.com/forumdisplay.php?fid=23)
+--- Thread: DB Utility Class manipulation (/showthread.php?tid=58376)



DB Utility Class manipulation - El Forum - 06-07-2013

[eluser]xeroblast[/eluser]
i am here to ask about what you think i've done. if it is good practice or not.

i tried to edit the DB Utility class constructor ( system/database/DB_utility )
from :
Code:
function __construct()
{
// Assign the main database object to $this->db
$CI =& get_instance();
$this->db =& $CI->db;
log_message('debug', "Database Utility Class Initialized");
}
to :
Code:
function __construct( $config = array() )
{
// Assign the main database object to $this->db
$CI =& get_instance();
if ( count( $config ) == 0 ) {
  $this->db =& $CI->db;
} else {
  $this->db =& $CI->load->database( $config, TRUE );
}
log_message('debug', "Database Utility Class Initialized");
}
so that i can be able to backup multiple databases by calling my model
Code:
function create_backup( $db_name )
{
$config['hostname'] = "localhost";
$config['username'] = 'db_username';
$config['password'] = 'db_password';
$config['database'] = $db_name;
$config['dbdriver'] = "mysql";
$config['dbprefix'] = "";
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;
$config['cache_on'] = FALSE;
$config['cachedir'] = "";
$config['char_set'] = "utf8";
$config['dbcollat'] = "utf8_general_ci";
$this->load->database( $config );
$this->load->dbutil( $config );
$prefs = array(
  'format'  => 'txt'
);
$backup =& $this->dbutil->backup( $prefs );
$this->load->helper( 'file' );
if ( write_file( '/home/'.$this->session->userdata( 'linux_user' ).'/tmp/'.$db_name.'_'.date('Y-m-d_H-i', time()).'.sql', $backup ) ) {
  return true;
}
return false;
}
controller :
Code:
$this->my_model->create_backup( 'my_database' );

what do you think?