コード例 #1
0
    function get_excluded($browse_dir = null)
    {
        $schedule_id = $this->check_schedule();
        $schedule = new HM\BackUpWordPress\Scheduled_Backup(sanitize_text_field(urldecode($schedule_id)));
        ob_start();
        ?>
    <div class="hmbkp-exclude-settings">

	<?php 
        if ($schedule->get_excludes()) {
            ?>

		<h3>
			<?php 
            _e('Currently Excluded', 'backupwordpress');
            ?>
		</h3>

		<p><?php 
            _e('We automatically detect and ignore common <abbr title="Version Control Systems">VCS</abbr> folders and other backup plugin folders.', 'backupwordpress');
            ?>
</p>

		<table class="widefat">

			<tbody>

			<?php 
            foreach (array_diff($schedule->get_excludes(), $schedule->backup->default_excludes()) as $key => $exclude) {
                $exclude_path = new SplFileInfo(trailingslashit($schedule->backup->get_root()) . ltrim(str_ireplace($schedule->backup->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 
                }
                ?>

					</th>

					<td>
						<code><?php 
                echo esc_html(str_ireplace($schedule->backup->get_root(), '', $exclude));
                ?>
</code>

					</td>

					<td>

						<?php 
                if (in_array($exclude, $schedule->backup->default_excludes()) || hmbkp_path() === untrailingslashit($exclude)) {
                    ?>

							<?php 
                    _e('Default rule', 'backupwordpress');
                    ?>

						<?php 
                } elseif (defined('HMBKP_EXCLUDE') && false !== strpos(HMBKP_EXCLUDE, $exclude)) {
                    ?>

							<?php 
                    _e('Defined in wp-config.php', 'backupwordpress');
                    ?>

						<?php 
                } else {
                    ?>

							<a href="#" onclick="event.preventDefault(); mainwp_backupwp_remove_exclude_rule('<?php 
                    echo $exclude;
                    ?>
', this);"  class="delete-action"><?php 
                    _e('Stop excluding', 'backupwordpress');
                    ?>
</a>

						<?php 
                }
                ?>

					</td>

				</tr>

			<?php 
            }
            ?>

			</tbody>

		</table>

	<?php 
        }
        ?>

	<h3 id="directory-listing"><?php 
        _e('Directory Listing', 'backupwordpress');
        ?>
</h3>

	<p><?php 
        _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 = $schedule->backup->get_root();
        if (isset($browse_dir)) {
            $untrusted_directory = urldecode($browse_dir);
            // Only allow real sub directories of the site root to be browsed
            if (false !== strpos($untrusted_directory, $schedule->backup->get_root()) && is_dir($untrusted_directory)) {
                $directory = $untrusted_directory;
            }
        }
        $exclude_string = $schedule->backup->exclude_string('regex');
        // Kick off a recursive filesize scan
        $files = $schedule->list_directory_by_total_filesize($directory);
        if ($files) {
            ?>

            <table class="widefat">
                <thead>
                <tr>
                        <th></th>
                        <th scope="col"><?php 
            _e('Name', 'backupwordpress');
            ?>
</th>
                        <th scope="col" class="column-format"><?php 
            _e('Size', 'backupwordpress');
            ?>
</th>
                        <th scope="col" class="column-format"><?php 
            _e('Permissions', 'backupwordpress');
            ?>
</th>
                        <th scope="col" class="column-format"><?php 
            _e('Type', 'backupwordpress');
            ?>
</th>
                        <th scope="col" class="column-format"><?php 
            _e('Status', 'backupwordpress');
            ?>
</th>
                </tr>

                <tr>

                        <th scope="row">
                                <div class="dashicons dashicons-admin-home"></div>
                        </th>

                        <th scope="col">

                                <?php 
            if ($schedule->backup->get_root() !== $directory) {
                // echo esc_url( remove_query_arg( 'hmbkp_directory_browse' ) );
                ?>
                                        <a href="#" onclick="event.preventDefault(); mainwp_backupwp_directory_browse('', this)"><?php 
                echo esc_html($schedule->backup->get_root());
                ?>
</a>
                                        <code>/</code>

                                        <?php 
                $parents = array_filter(explode('/', str_replace(trailingslashit($schedule->backup->get_root()), '', trailingslashit(dirname($directory)))));
                foreach ($parents as $directory_basename) {
                    ?>

                                                <a href="#" onclick="event.preventDefault(); mainwp_backupwp_directory_browse('<?php 
                    echo urlencode(substr($directory, 0, strpos($directory, $directory_basename)) . $directory_basename);
                    ?>
', this)" ><?php 
                    echo esc_html($directory_basename);
                    ?>
</a>
                                                <code>/</code>

                                        <?php 
                }
                ?>

                                        <?php 
                echo esc_html(basename($directory));
                ?>

                                <?php 
            } else {
                ?>

                                        <?php 
                echo esc_html($schedule->backup->get_root());
                ?>

                                <?php 
            }
            ?>

                        </th>

                        <td class="column-filesize">

                                <?php 
            if ($schedule->is_site_size_being_calculated()) {
                ?>

                                        <span class="spinner"></span>

                                <?php 
            } else {
                $root = new SplFileInfo($schedule->backup->get_root());
                $size = $schedule->filesize($root, true);
                if (false !== $size) {
                    $size = size_format($size);
                    if (!$size) {
                        $size = '0 B';
                    }
                    ?>

                                                <code>

                                                        <?php 
                    echo esc_html($size);
                    ?>

                                                        <a class="dashicons dashicons-update"
                                                           href="<?php 
                    echo wp_nonce_url(add_query_arg('hmbkp_recalculate_directory_filesize', urlencode($schedule->backup->get_root())), 'hmbkp-recalculate_directory_filesize');
                    ?>
"><span><?php 
                    _e('Refresh', 'backupwordpress');
                    ?>
</span></a>

                                                </code>


                                        <?php 
                }
                ?>

                                <?php 
            }
            ?>

                        <td>
                                <?php 
            echo esc_html(substr(sprintf('%o', fileperms($schedule->backup->get_root())), -4));
            ?>
                        </td>

                        <td>

                                <?php 
            if (is_link($schedule->backup->get_root())) {
                _e('Symlink', 'backupwordpress');
            } elseif (is_dir($schedule->backup->get_root())) {
                _e('Folder', 'backupwordpress');
            }
            ?>

                        </td>

                        <td></td>

                </tr>

                </thead>

                <tbody>

                <?php 
            foreach ($files as $size => $file) {
                $is_excluded = $is_unreadable = false;
                // Check if the file is excluded
                if ($exclude_string && preg_match('(' . $exclude_string . ')', str_ireplace(trailingslashit($schedule->backup->get_root()), '', HM\BackUpWordPress\Backup::conform_dir($file->getPathname())))) {
                    $is_excluded = true;
                }
                // Skip unreadable files
                if (!@realpath($file->getPathname()) || !$file->isReadable()) {
                    $is_unreadable = true;
                }
                ?>

                        <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 
                }
                ?>

                                </td>

                                <td>

                                        <?php 
                if ($is_unreadable) {
                    ?>

                                                <code class="strikethrough"
                                                      title="<?php 
                    echo esc_attr($file->getRealPath());
                    ?>
"><?php 
                    echo esc_html($file->getBasename());
                    ?>
</code>

                                        <?php 
                } elseif ($file->isFile()) {
                    ?>

                                                <code
                                                        title="<?php 
                    echo esc_attr($file->getRealPath());
                    ?>
"><?php 
                    echo esc_html($file->getBasename());
                    ?>
</code>

                                        <?php 
                } elseif ($file->isDir()) {
                    //echo add_query_arg( 'hmbkp_directory_browse', urlencode( $file->getPathname() ) );
                    ?>
                                                <code title="<?php 
                    echo esc_attr($file->getRealPath());
                    ?>
"><a
                                                        href="#" onclick="event.preventDefault(); mainwp_backupwp_directory_browse('<?php 
                    echo urlencode($file->getPathname());
                    ?>
', this)" ><?php 
                    echo esc_html($file->getBasename());
                    ?>
</a></code>

                                        <?php 
                }
                ?>

                                </td>

                                <td class="column-format column-filesize">

                                        <?php 
                if ($file->isDir() && $schedule->is_site_size_being_calculated()) {
                    ?>

                                                <span class="spinner"></span>

                                        <?php 
                } else {
                    $size = $schedule->filesize($file);
                    if (false !== $size) {
                        $size = size_format($size);
                        if (!$size) {
                            $size = '0 B';
                        }
                        ?>

                                                        <code>

                                                                <?php 
                        echo esc_html($size);
                        ?>

                                                                <?php 
                        if ($file->isDir()) {
                            ?>

                                                                        <a title="<?php 
                            _e('Recalculate the size of this directory', 'backupwordpress');
                            ?>
"
                                                                           class="dashicons dashicons-update"
                                                                           href="<?php 
                            echo wp_nonce_url(add_query_arg('hmbkp_recalculate_directory_filesize', urlencode($file->getPathname())), 'hmbkp-recalculate_directory_filesize');
                            ?>
"><span><?php 
                            _e('Refresh', 'backupwordpress');
                            ?>
</span></a>

                                                                <?php 
                        }
                        ?>

                                                        </code>


                                                <?php 
                    } else {
                        ?>

                                                        <code>--</code>

                                                <?php 
                    }
                }
                ?>

                                </td>

                                <td>
                                        <?php 
                echo esc_html(substr(sprintf('%o', $file->getPerms()), -4));
                ?>
                                </td>

                                <td>

                                        <?php 
                if ($file->isLink()) {
                    ?>

                                                <span
                                                        title="<?php 
                    echo esc_attr($file->GetRealPath());
                    ?>
"><?php 
                    _e('Symlink', 'backupwordpress');
                    ?>
</span>

                                        <?php 
                } elseif ($file->isDir()) {
                    _e('Folder', 'backupwordpress');
                } else {
                    _e('File', 'backupwordpress');
                }
                ?>

                                </td>

                                <td class="column-format">

                                        <?php 
                if ($is_unreadable) {
                    ?>

                                                <strong
                                                        title="<?php 
                    _e('Unreadable files won\'t be backed up.', 'backupwordpress');
                    ?>
"><?php 
                    _e('Unreadable', 'backupwordpress');
                    ?>
</strong>

                                        <?php 
                } elseif ($is_excluded) {
                    ?>

                                                <strong><?php 
                    _e('Excluded', 'backupwordpress');
                    ?>
</strong>

                                        <?php 
                } else {
                    $exclude_path = $file->getPathname();
                    // Excluded directories need to be trailingslashed
                    if ($file->isDir()) {
                        $exclude_path = trailingslashit($file->getPathname());
                    }
                    ?>

                                                <a href="#" onclick="event.preventDefault(); mainwp_backupwp_exclude_add_rule('<?php 
                    echo urlencode($exclude_path);
                    ?>
', this)"
                                                   class="button-secondary"><?php 
                    _e('Exclude &rarr;', 'backupwordpress');
                    ?>
</a>

                                        <?php 
                }
                ?>

                                </td>

                        </tr>

                <?php 
            }
            ?>
                </tbody>
        </table>

                <?php 
        }
        ?>

                <p class="submit">
                        <a href="#" onclick="event.preventDefault(); mainwp_backupwp_edit_exclude_done()"
                           class="button-primary"><?php 
        _e('Done', 'backupwordpress');
        ?>
</a>
                </p>

        </div>

        <?php 
        $output = ob_get_clean();
        $information['e'] = $output;
        return $information;
    }