414 行
		
	
	
	
		
			9.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			414 行
		
	
	
	
		
			9.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Code Igniter
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * An open source application development framework for PHP 5.1.6 or newer
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @package		CodeIgniter
							 | 
						||
| 
								 | 
							
								 * @author		ExpressionEngine Dev Team
							 | 
						||
| 
								 | 
							
								 * @copyright	Copyright (c) 2008 - 2011, EllisLab, Inc.
							 | 
						||
| 
								 | 
							
								 * @license		http://codeigniter.com/user_guide/license.html
							 | 
						||
| 
								 | 
							
								 * @link		http://codeigniter.com
							 | 
						||
| 
								 | 
							
								 * @since		Version 1.0
							 | 
						||
| 
								 | 
							
								 * @filesource
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// ------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Database Utility Class
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @category	Database
							 | 
						||
| 
								 | 
							
								 * @author		ExpressionEngine Dev Team
							 | 
						||
| 
								 | 
							
								 * @link		http://codeigniter.com/user_guide/database/
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								class CI_DB_utility extends CI_DB_forge {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var $db;
							 | 
						||
| 
								 | 
							
									var $data_cache		= array();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Constructor
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * Grabs the CI super object instance so we can access it.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									function CI_DB_utility()
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										// Assign the main database object to $this->db
							 | 
						||
| 
								 | 
							
										$CI =& get_instance();
							 | 
						||
| 
								 | 
							
										$this->db =& $CI->db;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										log_message('debug', "Database Utility Class Initialized");
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// --------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * List databases
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @access	public
							 | 
						||
| 
								 | 
							
									 * @return	bool
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									function list_databases()
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										// Is there a cached result?
							 | 
						||
| 
								 | 
							
										if (isset($this->data_cache['db_names']))
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											return $this->data_cache['db_names'];
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										$query = $this->db->query($this->_list_databases());
							 | 
						||
| 
								 | 
							
										$dbs = array();
							 | 
						||
| 
								 | 
							
										if ($query->num_rows() > 0)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											foreach ($query->result_array() as $row)
							 | 
						||
| 
								 | 
							
											{
							 | 
						||
| 
								 | 
							
												$dbs[] = current($row);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										$this->data_cache['db_names'] = $dbs;
							 | 
						||
| 
								 | 
							
										return $this->data_cache['db_names'];
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// --------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Determine if a particular database exists
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @access	public
							 | 
						||
| 
								 | 
							
									 * @param	string
							 | 
						||
| 
								 | 
							
									 * @return	boolean
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									function database_exists($database_name)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										// Some databases won't have access to the list_databases() function, so
							 | 
						||
| 
								 | 
							
										// this is intended to allow them to override with their own functions as
							 | 
						||
| 
								 | 
							
										// defined in $driver_utility.php
							 | 
						||
| 
								 | 
							
										if (method_exists($this, '_database_exists'))
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											return $this->_database_exists($database_name);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										else
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											return ( ! in_array($database_name, $this->list_databases())) ? FALSE : TRUE;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// --------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Optimize Table
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @access	public
							 | 
						||
| 
								 | 
							
									 * @param	string	the table name
							 | 
						||
| 
								 | 
							
									 * @return	bool
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									function optimize_table($table_name)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										$sql = $this->_optimize_table($table_name);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										if (is_bool($sql))
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
												show_error('db_must_use_set');
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										$query = $this->db->query($sql);
							 | 
						||
| 
								 | 
							
										$res = $query->result_array();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Note: Due to a bug in current() that affects some versions
							 | 
						||
| 
								 | 
							
										// of PHP we can not pass function call directly into it
							 | 
						||
| 
								 | 
							
										return current($res);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// --------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Optimize Database
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @access	public
							 | 
						||
| 
								 | 
							
									 * @return	array
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									function optimize_database()
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										$result = array();
							 | 
						||
| 
								 | 
							
										foreach ($this->db->list_tables() as $table_name)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											$sql = $this->_optimize_table($table_name);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											if (is_bool($sql))
							 | 
						||
| 
								 | 
							
											{
							 | 
						||
| 
								 | 
							
												return $sql;
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											$query = $this->db->query($sql);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											// Build the result array...
							 | 
						||
| 
								 | 
							
											// Note: Due to a bug in current() that affects some versions
							 | 
						||
| 
								 | 
							
											// of PHP we can not pass function call directly into it
							 | 
						||
| 
								 | 
							
											$res = $query->result_array();
							 | 
						||
| 
								 | 
							
											$res = current($res);
							 | 
						||
| 
								 | 
							
											$key = str_replace($this->db->database.'.', '', current($res));
							 | 
						||
| 
								 | 
							
											$keys = array_keys($res);
							 | 
						||
| 
								 | 
							
											unset($res[$keys[0]]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											$result[$key] = $res;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										return $result;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// --------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Repair Table
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @access	public
							 | 
						||
| 
								 | 
							
									 * @param	string	the table name
							 | 
						||
| 
								 | 
							
									 * @return	bool
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									function repair_table($table_name)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										$sql = $this->_repair_table($table_name);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										if (is_bool($sql))
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											return $sql;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										$query = $this->db->query($sql);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Note: Due to a bug in current() that affects some versions
							 | 
						||
| 
								 | 
							
										// of PHP we can not pass function call directly into it
							 | 
						||
| 
								 | 
							
										$res = $query->result_array();
							 | 
						||
| 
								 | 
							
										return current($res);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// --------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Generate CSV from a query result object
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @access	public
							 | 
						||
| 
								 | 
							
									 * @param	object	The query result object
							 | 
						||
| 
								 | 
							
									 * @param	string	The delimiter - comma by default
							 | 
						||
| 
								 | 
							
									 * @param	string	The newline character - \n by default
							 | 
						||
| 
								 | 
							
									 * @param	string	The enclosure - double quote by default
							 | 
						||
| 
								 | 
							
									 * @return	string
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									function csv_from_result($query, $delim = ",", $newline = "\n", $enclosure = '"')
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										if ( ! is_object($query) OR ! method_exists($query, 'list_fields'))
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											show_error('You must submit a valid result object');
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										$out = '';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// First generate the headings from the table column names
							 | 
						||
| 
								 | 
							
										foreach ($query->list_fields() as $name)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											$out .= $enclosure.str_replace($enclosure, $enclosure.$enclosure, $name).$enclosure.$delim;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										$out = rtrim($out);
							 | 
						||
| 
								 | 
							
										$out .= $newline;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Next blast through the result array and build out the rows
							 | 
						||
| 
								 | 
							
										foreach ($query->result_array() as $row)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											foreach ($row as $item)
							 | 
						||
| 
								 | 
							
											{
							 | 
						||
| 
								 | 
							
												$out .= $enclosure.str_replace($enclosure, $enclosure.$enclosure, $item).$enclosure.$delim;
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											$out = rtrim($out);
							 | 
						||
| 
								 | 
							
											$out .= $newline;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										return $out;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// --------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Generate XML data from a query result object
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @access	public
							 | 
						||
| 
								 | 
							
									 * @param	object	The query result object
							 | 
						||
| 
								 | 
							
									 * @param	array	Any preferences
							 | 
						||
| 
								 | 
							
									 * @return	string
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									function xml_from_result($query, $params = array())
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										if ( ! is_object($query) OR ! method_exists($query, 'list_fields'))
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											show_error('You must submit a valid result object');
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Set our default values
							 | 
						||
| 
								 | 
							
										foreach (array('root' => 'root', 'element' => 'element', 'newline' => "\n", 'tab' => "\t") as $key => $val)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if ( ! isset($params[$key]))
							 | 
						||
| 
								 | 
							
											{
							 | 
						||
| 
								 | 
							
												$params[$key] = $val;
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Create variables for convenience
							 | 
						||
| 
								 | 
							
										extract($params);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Load the xml helper
							 | 
						||
| 
								 | 
							
										$CI =& get_instance();
							 | 
						||
| 
								 | 
							
										$CI->load->helper('xml');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Generate the result
							 | 
						||
| 
								 | 
							
										$xml = "<{$root}>".$newline;
							 | 
						||
| 
								 | 
							
										foreach ($query->result_array() as $row)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											$xml .= $tab."<{$element}>".$newline;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											foreach ($row as $key => $val)
							 | 
						||
| 
								 | 
							
											{
							 | 
						||
| 
								 | 
							
												$xml .= $tab.$tab."<{$key}>".xml_convert($val)."</{$key}>".$newline;
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											$xml .= $tab."</{$element}>".$newline;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										$xml .= "</$root>".$newline;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										return $xml;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// --------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Database Backup
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @access	public
							 | 
						||
| 
								 | 
							
									 * @return	void
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									function backup($params = array())
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										// If the parameters have not been submitted as an
							 | 
						||
| 
								 | 
							
										// array then we know that it is simply the table
							 | 
						||
| 
								 | 
							
										// name, which is a valid short cut.
							 | 
						||
| 
								 | 
							
										if (is_string($params))
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											$params = array('tables' => $params);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// ------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Set up our default preferences
							 | 
						||
| 
								 | 
							
										$prefs = array(
							 | 
						||
| 
								 | 
							
															'tables'		=> array(),
							 | 
						||
| 
								 | 
							
															'ignore'		=> array(),
							 | 
						||
| 
								 | 
							
															'filename'		=> '',
							 | 
						||
| 
								 | 
							
															'format'		=> 'gzip', // gzip, zip, txt
							 | 
						||
| 
								 | 
							
															'add_drop'		=> TRUE,
							 | 
						||
| 
								 | 
							
															'add_insert'	=> TRUE,
							 | 
						||
| 
								 | 
							
															'newline'		=> "\n"
							 | 
						||
| 
								 | 
							
														);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Did the user submit any preferences? If so set them....
							 | 
						||
| 
								 | 
							
										if (count($params) > 0)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											foreach ($prefs as $key => $val)
							 | 
						||
| 
								 | 
							
											{
							 | 
						||
| 
								 | 
							
												if (isset($params[$key]))
							 | 
						||
| 
								 | 
							
												{
							 | 
						||
| 
								 | 
							
													$prefs[$key] = $params[$key];
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// ------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Are we backing up a complete database or individual tables?
							 | 
						||
| 
								 | 
							
										// If no table names were submitted we'll fetch the entire table list
							 | 
						||
| 
								 | 
							
										if (count($prefs['tables']) == 0)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											$prefs['tables'] = $this->db->list_tables();
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// ------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Validate the format
							 | 
						||
| 
								 | 
							
										if ( ! in_array($prefs['format'], array('gzip', 'zip', 'txt'), TRUE))
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											$prefs['format'] = 'txt';
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// ------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Is the encoder supported?  If not, we'll either issue an
							 | 
						||
| 
								 | 
							
										// error or use plain text depending on the debug settings
							 | 
						||
| 
								 | 
							
										if (($prefs['format'] == 'gzip' AND ! @function_exists('gzencode'))
							 | 
						||
| 
								 | 
							
										OR ($prefs['format'] == 'zip'  AND ! @function_exists('gzcompress')))
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if ($this->db->db_debug)
							 | 
						||
| 
								 | 
							
											{
							 | 
						||
| 
								 | 
							
												return $this->db->display_error('db_unsuported_compression');
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											$prefs['format'] = 'txt';
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// ------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Set the filename if not provided - Only needed with Zip files
							 | 
						||
| 
								 | 
							
										if ($prefs['filename'] == '' AND $prefs['format'] == 'zip')
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											$prefs['filename'] = (count($prefs['tables']) == 1) ? $prefs['tables'] : $this->db->database;
							 | 
						||
| 
								 | 
							
											$prefs['filename'] .= '_'.date('Y-m-d_H-i', time());
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// ------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Was a Gzip file requested?
							 | 
						||
| 
								 | 
							
										if ($prefs['format'] == 'gzip')
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											return gzencode($this->_backup($prefs));
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// ------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Was a text file requested?
							 | 
						||
| 
								 | 
							
										if ($prefs['format'] == 'txt')
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											return $this->_backup($prefs);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// ------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Was a Zip file requested?
							 | 
						||
| 
								 | 
							
										if ($prefs['format'] == 'zip')
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											// If they included the .zip file extension we'll remove it
							 | 
						||
| 
								 | 
							
											if (preg_match("|.+?\.zip$|", $prefs['filename']))
							 | 
						||
| 
								 | 
							
											{
							 | 
						||
| 
								 | 
							
												$prefs['filename'] = str_replace('.zip', '', $prefs['filename']);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											// Tack on the ".sql" file extension if needed
							 | 
						||
| 
								 | 
							
											if ( ! preg_match("|.+?\.sql$|", $prefs['filename']))
							 | 
						||
| 
								 | 
							
											{
							 | 
						||
| 
								 | 
							
												$prefs['filename'] .= '.sql';
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											// Load the Zip class and output it
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											$CI =& get_instance();
							 | 
						||
| 
								 | 
							
											$CI->load->library('zip');
							 | 
						||
| 
								 | 
							
											$CI->zip->add_data($prefs['filename'], $this->_backup($prefs));
							 | 
						||
| 
								 | 
							
											return $CI->zip->get_zip();
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* End of file DB_utility.php */
							 | 
						||
| 
								 | 
							
								/* Location: ./system/database/DB_utility.php */
							 |