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