⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 backup.class.inc.php

📁 This is the script which used on 10minutemail.com for temporary email.
💻 PHP
字号:
<?php

/** 
 * GentleSource News Script
 * 
 * (C) Ralf Stadtaus http://www.gentlesource.com/
 */


//require_once 'database.class.inc.php';




/**
 * Handle backups
 */
class t12l_backup
{




    /**
     * 
     * 
     * @access public
     */
    function t12l_backup()
    {
    }

// -----------------------------------------------------------------------------




    /**
     * Export data
     * 
     * @access public
     */
    function export()
    {
        global $t12l;
        
        $path = T12L_ROOT . $t12l['backup_directory'];
        
        // Create directory and .htaccess
        if (!is_dir($path)) {
            mkdir($path);    
            $htcontent = "deny from all";
            file_put_contents($path . '.htaccess', $htcontent);
            
        }
        
//        set_time_limit(600);
        ini_set('max_execution_time', 600);
        ignore_user_abort(true);
        
        //Get database content
        $filename   = $path . $this->filename();          
        $source     = array("\x00", "\x0a", "\x0d", "\x1a");
        $target     = array('\0', '\n', '\r', '\Z');       
        $dump       = array();
        while(list($key, $val) = each($t12l['tables']))
        {
            if ($key == 'setting') {
                $sql = "SELECT * FROM " . $val . " WHERE setting_name != 'administration_login' AND setting_name != 'script_url' AND setting_name != 'database_version'";
            } else {
                $sql = "SELECT * FROM " . $val;
            }
            
            if ($res = t12l_database::query($sql)) {
                while ($row = $res->fetchRow())
                {
                    $tmp   = array();
                    $tmp[] = 'INSERT INTO `' . $val . '` ';
                    $tmp[] = '(`' . join('`, `', array_keys($row)) . '`)';
                    $tmp[] = ' VALUES ';
                    $tmp[] = "('" . str_replace($source, $target, join("', '", array_values($row))) . "');";
                    $dump[]= join('', $tmp);
                }                
            }
        }
        $content = join("\n", $dump);
        
        // Write file
        if (file_put_contents($filename, $content)) {
            return true;
        }
    }

// -----------------------------------------------------------------------------




    /**
     * Create file name
     * 
     * @access public
     */
    function filename()
    {
        global $t12l;
        $filename  = $t12l['backup_file_prefix'];
        $filename .= date('Y-m-d_H-i-s', t12l_time::current_timestamp());
        $filename .= '.sql';
        return $filename;
    }

// -----------------------------------------------------------------------------




    /**
     * List available backup files
     * 
     * @access public
     */
    function file_list()
    {
        global $t12l;
        $list = array();
        if (!is_dir(T12L_ROOT . $t12l['backup_directory'])) {
//            return $list;
        }
        require_once 'Find.php';        
        if ($items = &File_Find::glob( '#' . $t12l['backup_file_prefix'] . '(.*?)\.sql#', T12L_ROOT . $t12l['backup_directory'], "perl" )) {
            if (PEAR::isError($items)) {
                t12l_system_debug::add_message($items->getMessage(), $items->getDebugInfo(), 'error', $items->getBacktrace());
                return $list;
            }
            arsort($items);
            while (list($key, $val) = each($items))
            {
                $date = $this->file_date($val);
                $time = str_replace('-', ':', substr($val, strrpos($val, '_') +1, 8));
                $list[] = array('file' => $val,
                                'path' => T12L_ROOT . $t12l['backup_directory'],
                                'date' => $date,
                                'time' => $time
                                );
            }
        }
        return $list;

    }

// -----------------------------------------------------------------------------




    /**
     * Create formatted date from file name
     * 
     * @access public
     */
    function file_date($val)
    {
        global $t12l;
        $date = substr($val, strpos($val, $t12l['backup_file_prefix']) + strlen($t12l['backup_file_prefix']), 10);
        $date = strtotime($date, t12l_time::current_timestamp());
        $date = t12l_time::format_date($date);
        return $date;

    }

// -----------------------------------------------------------------------------




    /**
     * Delete file
     * 
     * @access public
     */
    function delete($file)
    {
        global $t12l;
        if (is_file(T12L_ROOT . $t12l['backup_directory'] . trim($file))) {
            if (unlink(T12L_ROOT . $t12l['backup_directory'] . trim($file))) {
                return true;
            }
        }

    }

// -----------------------------------------------------------------------------




    /**
     * Import file
     * 
     * @access public
     */
    function import($file)
    {
        global $t12l;

        $file = T12L_ROOT . $t12l['backup_directory'] . trim($file);
        $error = false;
//        set_time_limit(600);
        ini_set('max_execution_time', 600);
        ignore_user_abort(true);
        if (is_file($file)) {
            if (!$sql = t12l_installation::parse_sql(file($file))) {
                $t12l['message'][] = $t12l['text']['txt_parse_backup_file_failed'];
                return false;
            }
            reset($sql);
            
            // Truncate tables
            foreach ($t12l['tables'] AS $table => $name)
            {
                if ($table == 'setting') {
                    $del = 'DELETE FROM `' . $name . '` WHERE `setting_name` != \'administration_login\' AND `setting_name` != \'script_url\' AND `setting_name` != \'database_version\'';
                    $res =  t12l_database::query($del);                    
                } else {
                    t12l_database::query('TRUNCATE `' . $name . '`;');
                }
            }
            foreach ($sql AS $statement)
            {
                // Replace prefix
                if (!$res = t12l_database::query($statement)) {
                    $error = true;
                } 
            }
        }
        if ($error == false) {
            return true;
        }

    }

// -----------------------------------------------------------------------------




} // End of class








?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -