if ($result['meta_key'] == '_wp_attachment_metadata') {
                $data = unserialize($result['file']);
                foreach ($data['sizes'] as $size) {
                    // Go through each sized thumbnail file.
                    $mediaFiles[$size['file']] = array('modified' => $mediaFiles[$data['file']]['modified']);
                }
            }
        }
    }
    // end foreach $results.
    unset($results);
    return $mediaFiles;
}
// End backupbuddy_dbMediaSince().
// Get list of active plugins and remove BackupBuddy from it so we don't update any BackupBuddy files when deploying. Could cause issues with the API replacing files mid-deploy.
$activePlugins = backupbuddy_api::getActivePlugins();
foreach ($activePlugins as $activePluginIndex => $activePlugin) {
    if (false !== strpos($activePlugin['name'], 'BackupBuddy')) {
        unset($activePlugins[$activePluginIndex]);
    }
}
$activePluginDirs = array();
foreach ($activePlugins as $activePluginDir => $activePlugin) {
    $activePluginDirs[] = dirname(WP_PLUGIN_DIR . '/' . $activePluginDir);
}
$allPluginDirs = glob(WP_PLUGIN_DIR . '/*', GLOB_ONLYDIR);
$inactivePluginDirs = array_diff($allPluginDirs, $activePluginDirs);
// Remove active plugins from directories of all plugins to get directories of inactive plugins to exclude later.
$inactivePluginDirs[] = pb_backupbuddy::plugin_path();
// Also exclude BackupBuddy directory.
// Calculate media files signatures.
    $memory_limit = 32;
}
$root = get_template_directory();
$generate_sha1 = true;
//echo 'mem:' . memory_get_usage(true) . '<br>';
$files = (array) pb_backupbuddy::$filesystem->deepglob($root);
//echo 'mem:' . memory_get_usage(true) . '<br>';
$root_len = strlen($root);
$hashedFiles = array();
foreach ($files as $file_id => &$file) {
    $stat = stat($file);
    if (FALSE === $stat) {
        pb_backupbuddy::status('error', 'Unable to read file `' . $file . '` stat.');
    }
    $new_file = substr($file, $root_len);
    $sha1 = '';
    if (true === $generate_sha1 && $stat['size'] < 1073741824) {
        // < 100mb
        $sha1 = sha1_file($file);
    }
    $hashedFiles[$new_file] = array('size' => $stat['size'], 'modified' => $stat['mtime'], 'sha1' => $sha1);
    unset($files[$file_id]);
    // Better to free memory or leave out for performance?
}
unset($files);
//echo 'mem:' . memory_get_usage(true) . '<br>';
//echo 'filecount: ' . count( $new_files ) . '<br>';
//print_r( $new_files );
global $wp_version;
return array('backupbuddyVersion' => pb_backupbuddy::settings('version'), 'wordpressVersion' => $wp_version, 'localTime' => time(), 'php' => array('upload_max_filesize' => $upload_max_filesize, 'max_execution_time' => $max_execution_time, 'memory_limit' => $memory_limit), 'abspath' => ABSPATH, 'siteurl' => site_url(), 'homeurl' => home_url(), 'activePlugins' => backupbuddy_api::getActivePlugins(), 'activeTheme' => get_template(), 'themeSignatures' => $hashedFiles, 'notifications' => array());
Ejemplo n.º 3
0
    if (null === $results || false === $results) {
        pb_backupbuddy::status('error', 'Error #238933: Unable to calculate media with query `' . $sql . '`. Check database permissions or contact host.');
    }
    foreach ((array) $results as $result) {
        if ($result['meta_key'] == '_wp_attached_file') {
            $mediaFiles[$result['file']] = array('modified' => $result['file_modified']);
        }
        if (true === $includeThumbs) {
            if ($result['meta_key'] == '_wp_attachment_metadata') {
                $data = unserialize($result['file']);
                foreach ($data['sizes'] as $size) {
                    $mediaFiles[$size['file']] = array('modified' => $mediaFiles[$data['file']]['modified']);
                }
            }
        }
    }
    unset($results);
    return $mediaFiles;
}
$upload_dir = wp_upload_dir();
$excludes = array('/backupbuddy_backups', '/pb_backupbuddy', '/backupbuddy_temp');
$mediaSignatures = backupbuddy_hashGlob($upload_dir['basedir'], $sha = false, $excludes);
//backupbuddy_dbMediaSince( $includeThumbs = true );
/*
echo '<pre>';
print_r( $mediaSignatures );
echo '</pre>';
*/
global $wp_version;
return array('backupbuddyVersion' => pb_backupbuddy::settings('version'), 'wordpressVersion' => $wp_version, 'localTime' => time(), 'php' => array('upload_max_filesize' => $upload_max_filesize, 'max_execution_time' => $max_execution_time, 'memory_limit' => $memory_limit, 'max_post_size' => $max_post_size), 'abspath' => ABSPATH, 'siteurl' => site_url(), 'homeurl' => home_url(), 'tables' => $dbTables, 'dbPrefix' => $wpdb->prefix, 'activePlugins' => backupbuddy_api::getActivePlugins(), 'activeTheme' => get_template(), 'themeSignatures' => backupbuddy_hashGlob(get_template_directory()), 'mediaSignatures' => $mediaSignatures, 'mediaCount' => count($mediaSignatures), 'notifications' => array());
unset($mediaSignatures);
Ejemplo n.º 4
0
 public static function files_init($state = array())
 {
     $start_time = time(true);
     $state = array_merge(array('current_step' => 'media', 'step_start' => time(), 'sha1' => false), $state);
     /* STEPS
      *	1. Generate list of files, leaving stats blank.
      *	2. Loop through list. Skip anything set to delete. If scantime is too old, calculate filesize, mtime, and optional sha1. Compare with existing values & update them.  If they changed then mark sent to false.
      *
      * array[filename] => {
      *	size
      *	mtime
      *	sha1
      *	scantime
      *	[sent]
      *	[delete]
      * }
      *
      */
     /***** MEDIA *****/
     if ('1' != pb_backupbuddy::$options['live']['scan_media']) {
         pb_backupbuddy::status('details', 'Scanning media files disabled based on settings.');
     } else {
         $upload_dir = wp_upload_dir();
         $mediaExcludes = array('/backupbuddy_backups', '/pb_backupbuddy', '/backupbuddy_temp');
         $mediaExcludes = array_merge($mediaExcludes, self::_getOption('media_excludes', true));
         $scandir = $upload_dir['basedir'];
         pb_backupbuddy::status('details', 'Scanning directory `' . $scandir . '`.');
         $mediaSignatures = backupbuddy_core::hashGlob($scandir, $state['sha1'], $mediaExcludes);
         self::_processSignatures($type = 'media', $mediaSignatures);
         unset($mediaSignatures);
         pb_backupbuddy::status('details', 'Time elapsed since files_init: `' . (time() - $start_time) . '` secs.');
     }
     /***** THEMES & CHILDTHEMES *****/
     if ('1' != pb_backupbuddy::$options['live']['scan_themes']) {
         pb_backupbuddy::status('details', 'Scanning theme files disabled based on settings.');
     } else {
         $themeExcludes = self::_getOption('theme_excludes', true);
         $scandir = get_theme_root();
         pb_backupbuddy::status('details', 'Scanning directory `' . $scandir . '`.');
         $themeSignatures = backupbuddy_core::hashGlob($scandir, $state['sha1'], $themeExcludes);
         self::_processSignatures($type = 'theme', $themeSignatures);
         unset($themeSignatures);
         pb_backupbuddy::status('details', 'Time elapsed since files_init: `' . (time() - $start_time) . '` secs.');
     }
     /***** CHILDTHEME *****/
     /*
     $childThemeExcludes = self::_getOption( pb_backupbuddy::$options['live']['childtheme_excludes'] );
     if ( get_stylesheet_directory() == get_template_directory() ) { // Theme & childtheme are same so do not send any childtheme files!
     	$childThemeSignatures = array();
     } else {
     	$childThemeSignatures = backupbuddy_core::hashGlob( get_stylesheet_directory(), $sha1, $childThemeExcludes );
     }
     self::_processSignatures( $type = 'childtheme', $childThemeSignatures );
     unset( $childThemeSignatures );
     pb_backupbuddy::status( 'details', 'Time elapsed since files_init: `' . ( time() - $start_time ) . '` secs.' );
     */
     /***** PLUGIN *****/
     if ('1' != pb_backupbuddy::$options['live']['scan_plugins']) {
         pb_backupbuddy::status('details', 'Scanning plugin files disabled based on settings.');
     } else {
         $activePlugins = backupbuddy_api::getActivePlugins();
         foreach ($activePlugins as $activePluginIndex => $activePlugin) {
             if (false !== strpos($activePlugin['name'], 'BackupBuddy')) {
                 unset($activePlugins[$activePluginIndex]);
             }
         }
         $activePluginDirs = array();
         foreach ($activePlugins as $activePluginDir => $activePlugin) {
             $activePluginDirs[] = dirname(WP_PLUGIN_DIR . '/' . $activePluginDir);
         }
         $allPluginDirs = glob(WP_PLUGIN_DIR . '/*', GLOB_ONLYDIR);
         $inactivePluginDirs = array_diff($allPluginDirs, $activePluginDirs);
         // Remove active plugins from directories of all plugins to get directories of inactive plugins to exclude later.
         $pluginExcludes = array_merge($inactivePluginDirs, self::_getOption('plugin_excludes', true));
         $scandir = WP_PLUGIN_DIR;
         pb_backupbuddy::status('details', 'Scanning directory `' . $scandir . '`.');
         $pluginSignatures = backupbuddy_core::hashGlob($scandir, $state['sha1'], $pluginExcludes);
         self::_processSignatures($type = 'plugins', $pluginSignatures);
         unset($pluginSignatures);
         pb_backupbuddy::status('details', 'Time elapsed since files_init: `' . (time() - $start_time) . '` secs.');
     }
     /***** CUSTOM *****/
     if ('1' != pb_backupbuddy::$options['live']['scan_custom']) {
         pb_backupbuddy::status('details', 'Scanning custom additional directories disabled based on settings.');
     } else {
         $customIncludes = self::_getOption('custom_includes', true);
         $customSignatures = array();
         $abspath_len = strlen(ABSPATH);
         foreach ($customIncludes as $customInclude) {
             if ('' == $customInclude || substr($customInclude, 0, $abspath_len) !== ABSPATH) {
                 // Not within ABSPATH.
                 continue;
             }
             pb_backupbuddy::status('details', 'Scanning directory `' . $customInclude . '`.');
             $customSignatures = array_merge($customSignatures, backupbuddy_core::hashGlob($customInclude, $state['sha1']));
         }
         self::_processSignatures($type = 'custom', $customSignatures);
         unset($customSignatures);
         pb_backupbuddy::status('details', 'Time elapsed since files_init: `' . (time() - $start_time) . '` secs.');
     }
     echo 'Total time: ' . (time() - $start_time);
 }