' . $customPage['title'] . '', 'read', 'ManageBackups' . $customPage['slug'], $customPage['callback'] ); MainWP_Menu::add_left_menu( array( 'title' => $customPage['title'], 'parent_key' => 'mainwp_tab', 'slug' => 'ManageBackups' . $customPage['slug'], 'href' => 'admin.php?page=ManageBackups' . $customPage['slug'], 'icon' => '', ), 1 ); } elseif ( $enable_legacy_backup ) { add_submenu_page( 'mainwp_tab', esc_html__( 'Backups', 'mainwp' ), '' . esc_html__( 'Backups', 'mainwp' ) . '', 'read', 'ManageBackups', array( static::get_class_name(), 'render_manager' ) ); if ( \mainwp_current_user_can( 'dashboard', 'add_backup_tasks' ) ) { if ( ! MainWP_Menu::is_disable_menu_item( 3, 'ManageBackupsAddNew' ) ) { add_submenu_page( 'mainwp_tab', esc_html__( 'Add New Schedule', 'mainwp' ), '
' . esc_html__( 'Add New', 'mainwp' ) . '
', 'read', 'ManageBackupsAddNew', array( static::get_class_name(), 'render_new' ) ); } } } else { return; } /** * This hook allows you to add extra sub pages to the Backups page via the 'mainwp-getsubpages-backups' filter. * * @link http://codex.mainwp.com/#mainwp-getsubpages-backups */ $sub_pages = array(); $sub_pages = apply_filters_deprecated( 'mainwp-getsubpages-backups', array( $sub_pages ), '4.0.7.2', 'mainwp_getsubpages_backups' ); // @deprecated Use 'mainwp_getsubpages_backups' instead. NOSONAR - not IP. static::$subPages = apply_filters( 'mainwp_getsubpages_backups', $sub_pages ); if ( isset( static::$subPages ) && is_array( static::$subPages ) ) { foreach ( static::$subPages as $subPage ) { if ( MainWP_Menu::is_disable_menu_item( 3, 'ManageBackups' . $subPage['slug'] ) ) { continue; } add_submenu_page( 'mainwp_tab', $subPage['title'], '
' . $subPage['title'] . '
', 'read', 'ManageBackups' . $subPage['slug'], $subPage['callback'] ); } } static::init_left_menu( static::$subPages, $enable_legacy_backup ); } /** * Instantiate legacy backups subpages. * * @uses \MainWP\Dashboard\MainWP_Menu::is_disable_menu_item() */ public static function init_subpages_menu() { //phpcs:ignore -- NOSONAR - complex. if ( static::$hideSubmenuBackups && ( empty( static::$subPages ) || ! is_array( static::$subPages ) ) ) { return; } ?> esc_html__( 'Backups', 'mainwp' ), 'parent_key' => 'managesites', 'slug' => 'ManageBackups', 'href' => 'admin.php?page=ManageBackups', 'icon' => '', ), 1 ); $init_sub_subleftmenu = array( array( 'title' => esc_html__( 'Manage Backups', 'mainwp' ), 'parent_key' => 'ManageBackups', 'href' => 'admin.php?page=ManageBackups', 'slug' => 'ManageBackups', 'right' => '', ), array( 'title' => esc_html__( 'Add New', 'mainwp' ), 'parent_key' => 'ManageBackups', 'href' => 'admin.php?page=ManageBackupsAddNew', 'slug' => 'ManageBackupsAddNew', 'right' => 'add_backup_tasks', ), ); MainWP_Menu::init_subpages_left_menu( $subPages, $init_sub_subleftmenu, 'ManageBackups', 'ManageBackups' ); foreach ( $init_sub_subleftmenu as $item ) { if ( MainWP_Menu::is_disable_menu_item( 3, $item['slug'] ) ) { continue; } MainWP_Menu::add_left_menu( $item, 2 ); } } } /** * Render MainWP Legacy Backups Page Header. * * @param string $shownPage The page slug shown at this moment. * * @uses \MainWP\Dashboard\MainWP_Menu::is_disable_menu_item() * @uses \MainWP\Dashboard\MainWP_UI::render_top_header() * @uses \MainWP\Dashboard\MainWP_UI::render_page_navigation() */ public static function render_header( $shownPage = '' ) { //phpcs:ignore -- NOSONAR - complex. $params = array( 'title' => esc_html__( 'Backups', 'mainwp' ), ); MainWP_UI::render_top_header( $params ); $renderItems = array(); $renderItems[] = array( 'title' => esc_html__( 'Manage Backups', 'mainwp' ), 'href' => 'admin.php?page=ManageBackups', 'active' => ( '' === $shownPage ) ? true : false, 'disabled' => MainWP_Menu::is_disable_menu_item( 3, 'ManageBackups' ) ? true : false, ); if ( ! MainWP_Menu::is_disable_menu_item( 3, 'ManageBackupsAddNew' ) ) { $renderItems[] = array( 'title' => esc_html__( 'Add New', 'mainwp' ), 'href' => 'admin.php?page=ManageBackupsAddNew', 'access' => \mainwp_current_user_can( 'dashboard', 'add_backup_tasks' ), 'active' => ( 'AddNew' === $shownPage ) ? true : false, 'disabled' => MainWP_Menu::is_disable_menu_item( 3, 'ManageBackupsAddNew' ) ? true : false, ); } if ( ! MainWP_Menu::is_disable_menu_item( 3, 'ManageBackupsEdit' ) ) { if ( 'ManageBackupsEdit' === $shownPage ) { $renderItems[] = array( 'title' => esc_html__( 'Edit', 'mainwp' ), 'href' => '#', 'active' => true, ); } } if ( isset( static::$subPages ) && is_array( static::$subPages ) ) { foreach ( static::$subPages as $subPage ) { if ( MainWP_Menu::is_disable_menu_item( 3, 'ManageBackups' . $subPage['slug'] ) ) { continue; } $item = array(); $item['title'] = esc_html( $subPage['title'] ); $item['href'] = 'admin.php?page=ManageBackups' . $subPage['slug']; $item['active'] = ( $subPage['slug'] === $shownPage ) ? true : false; $renderItems[] = $item; } } MainWP_UI::render_page_navigation( $renderItems ); } /** * Render MainWP Legacy Backups Footer. */ public static function render_footer() { echo ''; } /** * Render Legacy Backups page. * * @uses \MainWP\Dashboard\MainWP_DB_Backup::get_backup_task_by_id() * @uses \MainWP\Dashboard\MainWP_DB_Backup::get_backup_tasks_for_user() * @uses \MainWP\Dashboard\MainWP_UI::render_modal_edit_notes() * @uses \MainWP\Dashboard\MainWP_Manage_Backups_Handler::can_edit_backuptask() * @uses \MainWP\Dashboard\MainWP_Manage_Backups_Handler::validate_backup_tasks() */ public static function render_manager() { //phpcs:ignore -- NOSONAR - complex. $backupTask = null; //phpcs:disable WordPress.Security.NonceVerification.Recommended if ( isset( $_GET['id'] ) ) { if ( ! \mainwp_current_user_can( 'dashboard', 'edit_backup_tasks' ) ) { \mainwp_do_not_have_permissions( esc_html__( 'edit backup tasks', 'mainwp' ) ); return; } $backupTaskId = intval( $_GET['id'] ); $backupTask = MainWP_DB_Backup::instance()->get_backup_task_by_id( $backupTaskId ); if ( ! MainWP_Manage_Backups_Handler::can_edit_backuptask( $backupTask ) ) { $backupTask = null; } if ( ! empty( $backupTask ) ) { if ( ! MainWP_Manage_Backups_Handler::validate_backup_tasks( array( $backupTask ) ) ) { $backupTask = MainWP_DB_Backup::instance()->get_backup_task_by_id( $backupTaskId ); } } } $primary_methods = array(); $primary_methods = apply_filters_deprecated( 'mainwp-getprimarybackup-methods', array( $primary_methods ), '4.0.7.2', 'mainwp_getprimarybackup_methods' ); // @deprecated Use 'mainwp_getprimarybackup_methods' instead. NOSONAR - not IP. $primaryBackupMethods = apply_filters( 'mainwp_getprimarybackup_methods', $primary_methods ); if ( ! is_array( $primaryBackupMethods ) ) { $primaryBackupMethods = array(); } if ( null === $backupTask ) { $backup_items = MainWP_DB_Backup::instance()->get_backup_tasks_for_user(); if ( ! MainWP_Manage_Backups_Handler::validate_backup_tasks( $backup_items ) ) { $backup_items = MainWP_DB_Backup::instance()->get_backup_tasks_for_user(); } static::render_header( '' ); ?>
', '' ); // NOSONAR - noopener - open safe. ?>
' . esc_html__( 'The backup task was added successfully', 'mainwp' ) . '

'; } ?>
display( $backup_items ); ?>
esc_html__( 'Task Name', 'mainwp' ), 'type' => esc_html__( 'Type', 'mainwp' ), 'schedule' => esc_html__( 'Schedule', 'mainwp' ), 'destination' => esc_html__( 'Destination', 'mainwp' ), 'websites' => esc_html__( 'Websites', 'mainwp' ), 'details' => esc_html__( 'Details', 'mainwp' ), 'trigger' => esc_html__( 'Trigger', 'mainwp' ), 'actions' => esc_html__( 'Trigger', 'mainwp' ), ); if ( ! $can_trigger ) { unset( $columns['trigger'] ); } foreach ( $backup_items as $item ) { $sites = ( empty( $item->sites ) ? array() : explode( ',', $item->sites ) ); $groups = ( empty( $item->groups ) ? array() : explode( ',', $item->groups ) ); foreach ( $groups as $group ) { $websites = MainWP_DB::instance()->get_websites_by_group_id( $group ); if ( empty( $websites ) ) { continue; } foreach ( $websites as $website ) { if ( ! in_array( $website->id, $sites ) ) { $sites[] = $website->id; } } } $item->the_sites = $sites; $this->single_row( $item, $columns ); } } ?>
$title ) { if ( method_exists( $this, 'column_' . $column_name ) ) { echo ''; echo call_user_func( array( $this, 'column_' . $column_name ), $item ); // phpcs:ignore WordPress.Security.EscapeOutput echo ''; } else { echo ''; } } ?> sprintf( ' ' . esc_html__( 'Edit', 'mainwp' ) . '', $item->id ), 'delete' => sprintf( ' ' . esc_html__( 'Delete', 'mainwp' ) . '', $item->id ), ); if ( ! \mainwp_current_user_can( 'dashboard', 'edit_backup_tasks' ) ) { unset( $actions['edit'] ); } if ( ! \mainwp_current_user_can( 'dashboard', 'delete_backup_tasks' ) ) { unset( $actions['delete'] ); } if ( 1 === (int) $item->paused ) { if ( \mainwp_current_user_can( 'dashboard', 'pause_resume_backup_tasks' ) ) { $actions['resume'] = sprintf( ' ' . esc_html__( 'Resume', 'mainwp' ) . '', $item->id ); } } elseif ( \mainwp_current_user_can( 'dashboard', 'pause_resume_backup_tasks' ) ) { $actions['pause'] = sprintf( ' ' . esc_html__( 'Pause', 'mainwp' ) . '', $item->id ); } $out = ''; return $out; } /** * Column Task Name. * * @param mixed $item Item to go in column. * * @return string Action content. */ public function column_task_name( $item ) { return stripslashes( $item->name ); } /** * Column Type. * * @param mixed $item Item to go in column. * * @return string Action content. */ public function column_type( $item ) { return 'db' === $item->type ? esc_html__( 'DATABASE BACKUP', 'mainwp' ) : esc_html__( 'FULL BACKUP', 'mainwp' ); } /** * Column Schdule. * * @param mixed $item Item to go in column. * * @return string Action content. */ public function column_schedule( $item ) { return strtoupper( $item->schedule ); } /** * Column Destination. * * @param mixed $item Item to go in column. * * @return string Action content. */ public function column_destination( $item ) { $extraOutput = apply_filters( 'mainwp_backuptask_column_destination', '', $item->id ); if ( '' !== $extraOutput ) { return trim( $extraOutput, '
' ); } return esc_html__( 'SERVER', 'mainwp' ); } /** * Column Websites. * * @param mixed $item Item to go in column. */ public function column_websites( $item ) { if ( 0 === count( $item->the_sites ) ) { echo( '' . count( $item->the_sites ) . '' ); } else { echo count( $item->the_sites ); } } /** * Column Details. * * @param mixed $item Item to go in column. * * @return string Action content. * * @uses \MainWP\Dashboard\MainWP_Utility::format_timestamp() * @uses \MainWP\Dashboard\MainWP_Utility::get_timestamp() */ public function column_details( $item ) { $output = '' . esc_html__( 'LAST RUN MANUALLY: ', 'mainwp' ) . '' . ( empty( $item->last_run_manually ) ? '-' : MainWP_Utility::format_timestamp( MainWP_Utility::get_timestamp( $item->last_run_manually ) ) ) . '
'; $output .= '' . esc_html__( 'LAST RUN: ', 'mainwp' ) . '' . ( empty( $item->last_run ) ? '-' : MainWP_Utility::format_timestamp( MainWP_Utility::get_timestamp( $item->last_run ) ) ) . '
'; $output .= '' . esc_html__( 'LAST COMPLETED: ', 'mainwp' ) . '' . ( empty( $item->completed ) ? '-' : MainWP_Utility::format_timestamp( MainWP_Utility::get_timestamp( $item->completed ) ) ) . '
'; $output .= '' . esc_html__( 'NEXT RUN: ', 'mainwp' ) . '' . ( empty( $item->last_run ) ? esc_html__( 'Any minute', 'mainwp' ) : MainWP_Utility::format_timestamp( ( 'daily' === $item->schedule ? ( 60 * 60 * 24 ) : ( 'weekly' === $item->schedule ? ( 60 * 60 * 24 * 7 ) : ( 60 * 60 * 24 * 30 ) ) ) + MainWP_Utility::get_timestamp( $item->last_run ) ) ); $output .= ''; if ( ! empty( $item->last_run ) && $item->completed < $item->last_run ) { $output .= esc_html__( '
CURRENTLY RUNNING: ', 'mainwp' ) . '
'; $completed_sites = $item->completed_sites; if ( '' !== $completed_sites ) { $completed_sites = json_decode( $completed_sites, 1 ); } if ( ! is_array( $completed_sites ) ) { $completed_sites = array(); } $output .= count( $completed_sites ) . '/' . count( $item->the_sites ); } return $output; } /** * Column Trigger. * * @param mixed $item Item to go in column. * * @return string Action content. */ public function column_trigger( $item ) { return ' ' . esc_html__( 'Run now', 'mainwp' ) . ''; } /** * Render edit. * * @param mixed $task Task to edit. */ public static function render_edit( $task ) { static::render_header( 'ManageBackupsEdit' ); ?>
sites ) { $selected_websites = explode( ',', $task->sites ); } if ( '' !== $task->groups ) { $selected_groups = explode( ',', $task->groups ); } } ?>
$selected_websites, 'selected_groups' => $selected_groups, 'enable_offline_sites' => true, ); MainWP_UI_Select_Sites::select_sites_box( $sel_params ); ?>
get_backup_task_by_id( $backupTaskId ); if ( ! MainWP_Manage_Backups_Handler::can_edit_backuptask( $backupTask ) ) { $backupTask = null; } if ( ! empty( $backupTask ) ) { if ( ! MainWP_Manage_Backups_Handler::validate_backup_tasks( array( $backupTask ) ) ) { $backupTask = MainWP_DB_Backup::instance()->get_backup_task_by_id( $backupTaskId ); } } } $task = $backupTask; $globalArchiveFormat = get_option( 'mainwp_archiveFormat' ); if ( false === $globalArchiveFormat ) { $globalArchiveFormat = 'tar.gz'; } if ( 'zip' === $globalArchiveFormat ) { $globalArchiveFormatText = 'Zip'; } elseif ( 'tar' === $globalArchiveFormat ) { $globalArchiveFormatText = 'Tar'; } elseif ( 'tar.gz' === $globalArchiveFormat ) { $globalArchiveFormatText = 'Tar GZip'; } elseif ( 'tar.bz2' === $globalArchiveFormat ) { $globalArchiveFormatText = 'Tar BZip2'; } $archiveFormat = isset( $task ) ? $task->archiveFormat : 'site'; $useGlobal = ( 'global' === $archiveFormat ); $useSite = ( empty( $archiveFormat ) || 'site' === $archiveFormat ); static::render_task_details( $task, $globalArchiveFormatText, $archiveFormat, $useGlobal, $useSite ); } /** * Render Task Details. * * @param mixed $task Task to perform. * @param mixed $globalArchiveFormatText Global Archived Format Text. * @param mixed $archiveFormat Archive Format. * @param mixed $useGlobal Use Global. * @param mixed $useSite Use Site. */ public static function render_task_details( $task, $globalArchiveFormatText, $archiveFormat, $useGlobal, $useSite ) { // phpcs:ignore -- NOSONAR - complex. ?>

type ? 'style="display: none;"' : ''; ?>
>

excludebackup ? 'checked' : '' ); ?>>

excludecache ? 'checked' : '' ); ?>>

excludenonwp ? 'checked' : '' ); ?>>

excludezip ? 'checked' : '' ); ?>>

', '' ); // NOSONAR - noopener - open safe. ?>

/>
default-indi-value="1">
default-indi-value="1">
default-indi-value="tar.gz">
default-indi-value="1" >
/>
default-indi-value="155" >
>
/>
default-indi-value="1">
/>
default-indi-value="1">
/>
default-indi-value="1">
/>
primary_backup_method ) ? $website->primary_backup_method : 'global'; $primary_methods = array(); $primary_methods = apply_filters_deprecated( 'mainwp-getprimarybackup-methods', array( $primary_methods ), '4.0.7.2', 'mainwp_getprimarybackup_methods' ); // @deprecated Use 'mainwp_getprimarybackup_methods' instead. NOSONAR - not IP. $primaryBackupMethods = apply_filters( 'mainwp_getprimarybackup_methods', $primary_methods ); if ( ! is_array( $primaryBackupMethods ) ) { $primaryBackupMethods = array(); } ?>

', '' ); // NOSONAR - noopener - open safe. ?>