diff --git a/classes/actions/class-content-scan.php b/classes/actions/class-content-scan.php index e31f00b67..38d491e0b 100644 --- a/classes/actions/class-content-scan.php +++ b/classes/actions/class-content-scan.php @@ -59,12 +59,18 @@ public function update_stats() { return; } + // Bail if content helpers are not available (can happen during plugin updates). + $content_helpers = \progress_planner()->get_activities__content_helpers(); + if ( null === $content_helpers ) { + return; + } + // Get posts. $posts = \get_posts( [ 'posts_per_page' => static::SCAN_POSTS_PER_PAGE, 'paged' => $current_page, - 'post_type' => \progress_planner()->get_activities__content_helpers()->get_post_types_names(), + 'post_type' => $content_helpers->get_post_types_names(), 'post_status' => 'publish', ] ); @@ -88,9 +94,15 @@ public function update_stats() { * @return int */ public function get_total_pages() { + // Bail if content helpers are not available (can happen during plugin updates). + $content_helpers = \progress_planner()->get_activities__content_helpers(); + if ( null === $content_helpers ) { + return 0; + } + // Get the total number of posts. $total_posts_count = 0; - foreach ( \progress_planner()->get_activities__content_helpers()->get_post_types_names() as $post_type ) { + foreach ( $content_helpers->get_post_types_names() as $post_type ) { $total_posts_count += \wp_count_posts( $post_type )->publish; } // Calculate the total pages to scan. diff --git a/classes/actions/class-content.php b/classes/actions/class-content.php index 6a0c3ec93..7d3f7dcfc 100644 --- a/classes/actions/class-content.php +++ b/classes/actions/class-content.php @@ -157,10 +157,16 @@ public function delete_post( $post_id ) { * @return bool */ private function should_skip_saving( $post ) { + // Bail if content helpers are not available (can happen during plugin updates). + $content_helpers = \progress_planner()->get_activities__content_helpers(); + if ( null === $content_helpers ) { + return true; + } + // Bail if the post is not included in the post-types we're tracking. if ( ! \in_array( $post->post_type, - \progress_planner()->get_activities__content_helpers()->get_post_types_names(), + $content_helpers->get_post_types_names(), true ) ) { return true; diff --git a/classes/actions/class-maintenance.php b/classes/actions/class-maintenance.php index 46157f481..f8ea6e1d8 100644 --- a/classes/actions/class-maintenance.php +++ b/classes/actions/class-maintenance.php @@ -128,6 +128,11 @@ public function on_switch_theme() { * @return void */ protected function create_maintenance_activity( $type ) { + // Bail if the class doesn't exist (can happen during plugin updates). + if ( ! \class_exists( Activities_Maintenance::class ) ) { + return; + } + $activity = new Activities_Maintenance(); $activity->type = $type; $activity->save(); diff --git a/classes/class-base.php b/classes/class-base.php index 09cf1192f..7978a9367 100644 --- a/classes/class-base.php +++ b/classes/class-base.php @@ -51,7 +51,7 @@ * @method \Progress_Planner\UI\Popover get_ui__popover() * @method \Progress_Planner\Admin\Widgets\Content_Activity get_admin__widgets__content_activity() * @method \Progress_Planner\UI\Chart get_ui__chart() - * @method \Progress_Planner\Activities\Content_Helpers get_activities__content_helpers() + * @method \Progress_Planner\Activities\Content_Helpers|null get_activities__content_helpers() * @method \Progress_Planner\Admin\Widgets\Challenge get_admin__widgets__challenge() * @method \Progress_Planner\Admin\Widgets\Activity_Scores get_admin__widgets__activity_scores() * @method \Progress_Planner\Utils\Date get_utils__date()