// 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.
$upload_dir = wp_upload_dir();
$mediaExcludes = array('/backupbuddy_backups', '/pb_backupbuddy', '/backupbuddy_temp');
$mediaSignatures = backupbuddy_core::hashGlob($upload_dir['basedir'], $sha1, $mediaExcludes, $handle_utf8 = true);
// Calculate child theme file signatures, excluding main theme directory..
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);
}
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' => $activePlugins, 'activeTheme' => get_template(), 'activeChildTheme' => get_stylesheet(), 'themeSignatures' => backupbuddy_core::hashGlob(get_template_directory(), $sha1), 'childThemeSignatures' => $childThemeSignatures, 'pluginSignatures' => backupbuddy_core::hashGlob(WP_PLUGIN_DIR, $sha1, $inactivePluginDirs), 'mediaSignatures' => $mediaSignatures, 'mediaCount' => count($mediaSignatures), 'notifications' => array());
Example #2
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);
 }