/web/htdocs/www.euroroma.net/home/zenphoto/zp-core/zp-extensions/auto_backup.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php

/**
 * This plugin provides a facility to periodically run the Zenphoto backup utility. Use it to
 * insure that database backups are done on a regular basis.
 *
 * <b>NOTE:</b> The WEB site must be visited for this plugin to be able to check if it is time
 * to run. Inacative sites may not get backed up as frequently as the interval specifies.
 * Of course, if the site is inactive, there probably is little need to do the backup
 * in the first place.
 *
 * Backups are run under the master administrator authority.
 *
 * @author Stephen Billard (sbillard)
 * @package plugins
 * @subpackage utilities
 */
$plugin_is_filter ADMIN_PLUGIN THEME_PLUGIN;
$plugin_description gettext("Periodically backup the Zenphoto database.");
$plugin_author "Stephen Billard (sbillard)";

$option_interface 'auto_backup';
if ((
getOption('last_backup_run') + getOption('backup_interval') * 86400) < time()) { // register if it is time for a backup
    
require_once(dirname(dirname(__FILE__)) . '/admin-functions.php');
    
zp_register_filter('admin_head''auto_backup::timer_handler');
    
zp_register_filter('theme_head''auto_backup::timer_handler');
}

/**
 * Option handler class
 *
 */
class auto_backup {

    
/**
     * class instantiation function
     *
     */
    
function auto_backup() {
        
setOptionDefault('backup_interval'7);
        
setOptionDefault('backups_to_keep'5);
    }

    
/**
     * Reports the supported options
     *
     * @return array
     */
    
function getOptionsSupported() {
        
$options = array(gettext('Run interval')         => array('key'         => 'backup_interval''type'     => OPTION_TYPE_TEXTBOX,
                                        
'order'     => 1,
                                        
'desc'     => gettext('The run interval (in days) for auto backup.')),
                        
gettext('Backups to keep') => array('key'         => 'backups_to_keep''type'     => OPTION_TYPE_TEXTBOX,
                                        
'order'     => 0,
                                        
'desc'     => gettext('Auto backup will keep only this many backup sets. Older sets will be removed.'))
        );
        if (
$d getOption('last_backup_run')) {
            
$options[gettext('Last backup')] = array('key'         => 'last_backup_run''type'     => OPTION_TYPE_NOTE,
                            
'order'     => 2,
                            
'desc'     => '<p class="notebox">' sprintf(gettext('Auto Backup last ran %s.'), date('Y-m-d H:i:s'$d)) . '</p>');
        }
        return 
$options;
    }

    function 
handleOption($option$currentValue) {

    }

    
/**
     * Handles the periodic start of the backup/restore utility to backup the database
     * @param string $discard
     */
    
static function timer_handler($discard) {
        
$curdir getcwd();
        
$folder SERVERPATH "/" BACKUPFOLDER;
        if (!
is_dir($folder)) {
            
mkdir($folderFOLDER_MOD);
        }
        
chdir($folder);
        
$filelist safe_glob('*' '.zdb');
        
$list = array();
        foreach (
$filelist as $file) {
            
$list[$file] = filemtime($file);
        }
        
chdir($curdir);
        
asort($list);
        
$list array_flip($list);
        
$keep getOption('backups_to_keep');
        while (
count($list) >= $keep) {
            
$file array_shift($list);
            @
chmod(SERVERPATH "/" BACKUPFOLDER '/' $file0777);
            
unlink(SERVERPATH "/" BACKUPFOLDER '/' $file);
        }
        
cron_starter(SERVERPATH '/' ZENFOLDER '/' UTILITIES_FOLDER '/backup_restore.php', array('backup' => 1'autobackup' => 1'compress' => sprintf('%u'getOption('backup_compression')), 'XSRFTag' => 'backup'), 3
        
);
        return 
$discard;
    }

}

?>