JezK
Edit File: schedule-form-excludes.php
<?php namespace HM\BackUpWordPress; $excludes = $schedule->get_excludes(); $user_excludes = $excludes->get_user_excludes(); ?> <div class="hmbkp-exclude-settings"> <h3> <?php esc_html_e( 'Currently Excluded', 'backupwordpress' ); ?> </h3> <p> <?php esc_html_e( 'We automatically detect and ignore common Version Control Systems folders and other backup plugin folders.', 'backupwordpress' ); ?> </p> <table class="widefat"> <tbody> <?php foreach ( $user_excludes as $key => $exclude ) : $exclude_path = new \SplFileInfo( trailingslashit( Path::get_root() ) . ltrim( str_ireplace( Path::get_root(), '', $exclude ), '/' ) ); ?> <tr> <th scope="row"> <?php if ( $exclude_path->isFile() ) : ?> <div class="dashicons dashicons-media-default"></div> <?php elseif ( $exclude_path->isDir() ) : ?> <div class="dashicons dashicons-portfolio"></div> <?php endif; ?> </th> <td> <code><?php echo esc_html( str_ireplace( Path::get_root(), '', $exclude ) ); ?></code> </td> <td> <?php if ( ( in_array( $exclude, $excludes->get_default_excludes() ) ) || ( Path::get_path() === trailingslashit( Path::get_root() ) . untrailingslashit( $exclude ) ) ) : ?> <?php esc_html_e( 'Default rule', 'backupwordpress' ); ?> <?php elseif ( defined( 'HMBKP_EXCLUDE' ) && false !== strpos( HMBKP_EXCLUDE, $exclude ) ) : ?> <?php printf( esc_html__( 'Defined in %s', 'backupwordpress' ), 'wp-config.php' ); ?> <?php else : ?> <a href="<?php echo admin_action_url( 'remove_exclude_rule', array( 'hmbkp_remove_exclude' => $exclude, 'hmbkp_schedule_id' => $schedule->get_id(), ) ); ?>" class="delete-action"> <?php esc_html_e( 'Stop excluding', 'backupwordpress' ); ?> </a> <?php endif; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <h3 id="directory-listing"> <?php esc_html_e( 'Your Site', 'backupwordpress' ); ?> </h3> <p> <?php esc_html_e( 'Here\'s a directory listing of all files on your site, you can browse through and exclude files or folders that you don\'t want included in your backup.', 'backupwordpress' ); ?> </p> <?php // The directory to display. $directory = isset( $_GET['hmbkp_directory_browse'] ) && is_string( $_GET['hmbkp_directory_browse'] ) ? $_GET['hmbkp_directory_browse'] : ''; $directory = sanitize_exclusion_directory_path( $directory ); $site_size = new Site_Size( 'file' ); $excluded_site_size = new Site_Size( 'file', $excludes ); // Kick off a recursive filesize scan. $files = list_directory_by_total_filesize( $directory, $excludes ); ?> <table class="widefat"> <thead> <tr> <th></th> <th scope="col"><?php esc_html_e( 'Name', 'backupwordpress' ); ?></th> <th scope="col" class="column-format"><?php esc_html_e( 'Included Size', 'backupwordpress' ); ?></th> <th scope="col" class="column-format"><?php esc_html_e( 'Permissions', 'backupwordpress' ); ?></th> <th scope="col" class="column-format"><?php esc_html_e( 'Type', 'backupwordpress' ); ?></th> <th scope="col" class="column-format"><?php esc_html_e( 'Status', 'backupwordpress' ); ?></th> </tr> <tr> <th scope="row"> <div class="dashicons dashicons-admin-home"></div> </th> <th scope="col"> <?php if ( Path::get_root() !== $directory ) : ?> <a href="<?php echo esc_url( remove_query_arg( 'hmbkp_directory_browse' ) ); ?>"> <?php echo esc_html( Path::get_root() ); ?> </a> <code>/</code> <?php $parents = array_filter( explode( '/', str_replace( trailingslashit( Path::get_root() ), '', trailingslashit( dirname( $directory ) ) ) ) ); foreach ( $parents as $directory_basename ) : ?> <a href="<?php echo esc_url( add_query_arg( 'hmbkp_directory_browse', urlencode( substr( $directory, 0, strpos( $directory, $directory_basename ) ) . $directory_basename ) ) ); ?>"> <?php echo esc_html( $directory_basename ); ?> </a> <code>/</code> <?php endforeach; ?> <?php echo esc_html( basename( $directory ) ); ?> <?php else : ?> <?php echo esc_html( Path::get_root() ); ?> <?php endif; ?> </th> <td class="column-filesize"> <?php if ( Site_Size::is_site_size_being_calculated() ) : ?> <span class="spinner is-active"></span> <?php else : $root = new \SplFileInfo( Path::get_root() ); $size = $site_size->filesize( $root ); $excluded_size = $excluded_site_size->filesize( $root ); $excluded_size = is_same_size_format( $size, $excluded_size ) ? (int) size_format( $excluded_size ) : size_format( $excluded_size ); ?> <code> <?php /* translators: 1: Excluded size 2: Overall site size */ printf( esc_html__( '%1$s of %2$s', 'backupwordpress' ), $excluded_size, size_format( $size ) ); ?> <a class="dashicons dashicons-update" href="<?php echo esc_url( wp_nonce_url( add_query_arg( 'hmbkp_recalculate_directory_filesize', urlencode( Path::get_root() ) ), 'hmbkp-recalculate_directory_filesize' ) ); ?>"> <span><?php esc_html_e( 'Refresh', 'backupwordpress' ); ?></span> </a> </code> <?php endif; ?> <td> <code><?php echo esc_html( substr( sprintf( '%o', fileperms( Path::get_root() ) ), - 4 ) ); ?></code> </td> <td> <code> <?php if ( is_link( Path::get_root() ) ) : esc_html_e( 'Symlink', 'backupwordpress' ); elseif ( is_dir( Path::get_root() ) ) : esc_html_e( 'Folder', 'backupwordpress' ); endif; ?> </code> </td> <td></td> </tr> </thead> <tbody> <?php if ( $files ) : foreach ( $files as $size => $file ) : $is_excluded = $is_unreadable = false; // Check if the file is excluded. if ( $excludes->is_file_excluded( $file ) ) : $is_excluded = true; endif; // Skip unreadable files. if ( ! @realpath( $file->getPathname() ) || ! $file->isReadable() ) : $is_unreadable = true; endif; ?> <tr> <td> <?php if ( $is_unreadable ) : ?> <div class="dashicons dashicons-dismiss"></div> <?php elseif ( $file->isFile() ) : ?> <div class="dashicons dashicons-media-default"></div> <?php elseif ( $file->isDir() ) : ?> <div class="dashicons dashicons-portfolio"></div> <?php endif; ?> </td> <td> <?php if ( $is_unreadable ) : ?> <code class="strikethrough" title="<?php echo esc_attr( wp_normalize_path( $file->getRealPath() ) ); ?>"> <?php echo esc_html( $file->getBasename() ); ?> </code> <?php elseif ( $file->isFile() ) : ?> <code title="<?php echo esc_attr( wp_normalize_path( $file->getRealPath() ) ); ?>"> <?php echo esc_html( $file->getBasename() ); ?> </code> <?php elseif ( $file->isDir() ) : ?> <code title="<?php echo esc_attr( wp_normalize_path( $file->getRealPath() ) ); ?>"> <a href="<?php echo esc_url( add_query_arg( 'hmbkp_directory_browse', urlencode( wp_normalize_path( $file->getPathname() ) ) ) ); ?>"> <?php echo esc_html( $file->getBasename() ); ?> </a> </code> <?php endif; ?> </td> <td class="column-format column-filesize"> <?php if ( $file->isDir() && Site_Size::is_site_size_being_calculated() ) : ?> <span class="spinner is-active"></span> <?php else : $size = $site_size->filesize( $file ); if ( false !== $size ) : $size = $size; $excluded_size = $excluded_site_size->filesize( $file ); ?> <code> <?php // Display `included of total size` info for directories and excluded files only. if ( $file->isDir() || ( $file->isFile() && $is_excluded ) ) : if ( $excluded_size ) { $excluded_size = is_same_size_format( $size, $excluded_size ) ? (int) size_format( $excluded_size ) : size_format( $excluded_size ); } if ( $size ) { $size = size_format( $size ); } /* translators: 1: Excluded size 2: Overall directory/file size */ printf( esc_html__( '%1$s of %2$s', 'backupwordpress' ), $excluded_size, $size ); elseif ( ! $is_unreadable ) : echo esc_html( size_format( $size ) ); else : echo '-'; endif; ?> </code> <?php else : ?> <code>--</code> <?php endif; endif; ?> </td> <td> <code> <?php if ( ! $is_unreadable ) : echo esc_html( substr( sprintf( '%o', $file->getPerms() ), - 4 ) ); else : echo '-'; endif; ?> </code> </td> <td> <code> <?php if ( $file->isLink() ) : ?> <span title="<?php echo esc_attr( wp_normalize_path( $file->getRealPath() ) ); ?>"> <?php esc_html_e( 'Symlink', 'backupwordpress' ); ?> </span> <?php elseif ( $file->isDir() ) : esc_html_e( 'Folder', 'backupwordpress' ); else : esc_html_e( 'File', 'backupwordpress' ); endif; ?> </code> </td> <td class="column-format"> <?php if ( $is_unreadable ) : ?> <strong title="<?php esc_attr_e( 'Unreadable files won\'t be backed up.', 'backupwordpress' ); ?>"> <?php esc_html_e( 'Unreadable', 'backupwordpress' ); ?> </strong> <?php elseif ( $is_excluded ) : ?> <strong><?php esc_html_e( 'Excluded', 'backupwordpress' ); ?></strong> <?php else : $exclude_path = $file->getPathname(); // Excluded directories need to be trailingslashed. if ( $file->isDir() ) : $exclude_path = trailingslashit( wp_normalize_path( $file->getPathname() ) ); endif; ?> <a href="<?php echo esc_url( wp_nonce_url( add_query_arg( array( 'hmbkp_schedule_id' => $schedule->get_id(), 'action' => 'hmbkp_add_exclude_rule', 'hmbkp_exclude_pathname' => urlencode( $exclude_path ), ), admin_url( 'admin-post.php' ) ), 'hmbkp-add-exclude-rule', 'hmbkp-add-exclude-rule-nonce' ) ); ?>" class="button-secondary"> <?php esc_html_e( 'Exclude →', 'backupwordpress' ); ?> </a> <?php endif; ?> </td> </tr> <?php endforeach; ?> <?php else : ?> <tr> <td colspan="5"> <span class="description"><?php esc_html_e( 'This folder is empty', 'backupwordpress' ); ?></span> </td> </tr> <?php endif; ?> </tbody> </table> <p class="submit"> <a href="<?php echo esc_url( get_settings_url() ) ?>" class="button-primary"> <?php esc_html_e( 'Done', 'backupwordpress' ); ?> </a> </p> </div>