s->id; return update_option( self::HIDDEN_OPTION, array_unique( $hidden ) ); } /** * Undo hiding of the task list. * * @return bool */ public function unhide() { $hidden = get_option( self::HIDDEN_OPTION, array() ); $hidden = array_diff( $hidden, array( $this->hidden_id ? $this->hidden_id : $this->id ) ); return update_option( self::HIDDEN_OPTION, $hidden ); } /** * Check if all viewable tasks are complete. * * @return bool */ public function is_complete() { $viewable_tasks = $this->get_viewable_tasks(); return array_reduce( $viewable_tasks, function( $is_complete, $task ) { return ! $task->is_complete() ? false : $is_complete; }, true ); } /** * Check if a task list has previously been marked as complete. * * @return bool */ public function has_previously_completed() { $complete = get_option( self::COMPLETED_OPTION, array() ); return in_array( $this->get_list_id(), $complete, true ); } /** * Add task to the task list. * * @param Task $task Task class. */ public function add_task( $task ) { if ( ! is_subclass_of( $task, 'Automattic\WooCommerce\Admin\Features\OnboardingTasks\Task' ) ) { return new \WP_Error( 'woocommerce_task_list_invalid_task', __( 'Task is not a subclass of `Task`', 'woocommerce' ) ); } if ( array_search( $task, $this->tasks, true ) ) { return; } $task_class_name = substr( get_class( $task ), strrpos( get_class( $task ), '\\' ) + 1 ); $this->task_class_id_map[ $task_class_name ] = $task->get_id(); $this->tasks[] = $task; } /** * Get only visible tasks in list. * * @param string $task_id id of task. * @return Task */ public function get_task( $task_id ) { return current( array_filter( $this->tasks, function( $task ) use ( $task_id ) { return $task->get_id() === $task_id; } ) ); } /** * Get only visible tasks in list. * * @return array */ public function get_viewable_tasks() { return array_values( array_filter( $this->tasks, function( $task ) { return $task->can_view(); } ) ); } /** * Get task list sections. * * @return array */ public function get_sections() { return $this->sections; } /** * Track list completion of viewable tasks. */ public function possibly_track_completion() { if ( ! $this->is_complete() ) { return; } if ( $this->has_previously_completed() ) { return; } $completed_lists = get_option( self::COMPLETED_OPTION, array() ); $completed_lists[] = $this->get_list_id(); update_option( self::COMPLETED_OPTION, $completed_lists ); $this->record_tracks_event( 'tasks_completed' ); } /** * Sorts the attached tasks array. * * @param array $sort_by list of columns with sort order. * @return TaskList returns $this, for chaining. */ public function sort_tasks( $sort_by = array() ) { $sort_by = count( $sort_by ) > 0 ? $sort_by : $this->sort_by; if ( 0 !== count( $sort_by ) ) { usort( $this->tasks, function( $a, $b ) use ( $sort_by ) { return Task::sort( $a, $b, $sort_by ); } ); } return $this; } /** * Prefix event for track event naming. * * @param string $event_name Event name. * @return string */ public function prefix_event( $event_name ) { if ( null !== $this->event_prefix ) { return $this->event_prefix . $event_name; } return $this->get_list_id() . '_tasklist_' . $event_name; } /** * Returns option to keep completed task list. * * @return string */ public function get_keep_completed_task_list() { return get_option( 'woocommerce_task_list_keep_completed', 'no' ); } /** * Remove reminder bar four weeks after store creation. */ public static function possibly_remove_reminder_bar() { $bar_hidden = get_option( self::REMINDER_BAR_HIDDEN_OPTION, 'no' ); $active_for_four_weeks = WCAdminHelper::is_wc_admin_active_for( WEEK_IN_SECONDS * 4 ); if ( 'yes' === $bar_hidden || ! $active_for_four_weeks ) { return; } update_option( self::REMINDER_BAR_HIDDEN_OPTION, 'yes' ); } /** * Get the list for use in JSON. * * @return array */ public function get_json() { $this->possibly_track_completion(); $tasks_json = array(); foreach ( $this->tasks as $task ) { $json = $task->get_json(); if ( $json['canView'] ) { $tasks_json[] = $json; } } return array( 'id' => $this->get_list_id(), 'title' => $this->title, 'isHidden' => $this->is_hidden(), 'isVisible' => $this->is_visible(), 'isComplete' => $this->is_complete(), 'tasks' => $tasks_json, 'eventPrefix' => $this->prefix_event( '' ), 'displayProgressHeader' => $this->display_progress_header, 'keepCompletedTaskList' => $this->get_keep_completed_task_list(), 'sections' => array_map( function( $section ) { return $section->get_json(); }, $this->sections ), ); } }
Fatal error: Uncaught Error: Class 'Automattic\WooCommerce\Admin\Features\OnboardingTasks\TaskList' not found in /home/hvshopir/public_html/wp-content/plugins/woocommerce/src/Admin/Features/OnboardingTasks/TaskLists.php:322 Stack trace: #0 /home/hvshopir/public_html/wp-content/plugins/woocommerce/src/Admin/Features/OnboardingTasks/TaskLists.php(125): Automattic\WooCommerce\Admin\Features\OnboardingTasks\TaskLists::add_list(Array) #1 /home/hvshopir/public_html/wp-content/plugins/woocommerce/src/Admin/Features/OnboardingTasks/TaskLists.php(70): Automattic\WooCommerce\Admin\Features\OnboardingTasks\TaskLists::init_default_lists() #2 /home/hvshopir/public_html/wp-content/plugins/woocommerce/src/Admin/Features/OnboardingTasks/Init.php(43): Automattic\WooCommerce\Admin\Features\OnboardingTasks\TaskLists::init() #3 /home/hvshopir/public_html/wp-content/plugins/woocommerce/src/Admin/Features/Features.php(139): Automattic\WooCommerce\Admin\Features\OnboardingTasks\Init->__construct() #4 /home/hvshopir/public_html/wp-includes/class in /home/hvshopir/public_html/wp-content/plugins/woocommerce/src/Admin/Features/OnboardingTasks/TaskLists.php on line 322