WC_Admin_Dashboard_Setup{}WC 1.0

WC_Admin_Dashboard_Setup Class.

No Hooks.

Usage

$WC_Admin_Dashboard_Setup = new WC_Admin_Dashboard_Setup();
// use class methods

Methods

  1. public __construct()
  2. public get_button_link( $task )
  3. public get_completed_tasks_count()
  4. private get_next_task()
  5. public get_task_list()
  6. public get_tasks()
  7. public render()
  8. public set_task_list( $task_list )
  9. public should_display_widget()

Code of WC_Admin_Dashboard_Setup{} WC 6.7.0

class WC_Admin_Dashboard_Setup {

	/**
	 * Check for task list initialization.
	 */
	private $initalized = false;

	/**
	 * The task list.
	 */
	private $task_list = null;

	/**
	 * The tasks.
	 */
	private $tasks = null;

	/**
	 * # of completed tasks.
	 *
	 * @var int
	 */
	private $completed_tasks_count = 0;

	/**
	 * WC_Admin_Dashboard_Setup constructor.
	 */
	public function __construct() {
		if ( $this->should_display_widget() ) {
			add_meta_box(
				'wc_admin_dashboard_setup',
				__( 'WooCommerce Setup', 'woocommerce' ),
				array( $this, 'render' ),
				'dashboard',
				'normal',
				'high'
			);
		}
	}

	/**
	 * Render meta box output.
	 */
	public function render() {
		$version = Constants::get_constant( 'WC_VERSION' );
		wp_enqueue_style( 'wc-dashboard-setup', WC()->plugin_url() . '/assets/css/dashboard-setup.css', array(), $version );

		$task = $this->get_next_task();
		if ( ! $task ) {
			return;
		}

		$button_link           = $this->get_button_link( $task );
		$completed_tasks_count = $this->get_completed_tasks_count();
		$step_number           = $this->get_completed_tasks_count() + 1;
		$tasks_count           = count( $this->get_tasks() );

		// Given 'r' (circle element's r attr), dashoffset = ((100-$desired_percentage)/100) * PI * (r*2).
		$progress_percentage = ( $completed_tasks_count / $tasks_count ) * 100;
		$circle_r            = 6.5;
		$circle_dashoffset   = ( ( 100 - $progress_percentage ) / 100 ) * ( pi() * ( $circle_r * 2 ) );

		include __DIR__ . '/views/html-admin-dashboard-setup.php';
	}

	/**
	 * Get the button link for a given task.
	 *
	 * @param Task $task Task.
	 * @return string
	 */
	public function get_button_link( $task ) {
		$url = $task->get_json()['actionUrl'];

		if ( substr( $url, 0, 4 ) === 'http' ) {
			return $url;
		} elseif ( $url ) {
			return wc_admin_url( '&path=' . $url );
		}

		return admin_url( 'admin.php?page=wc-admin&task=' . $task->get_id() );
	}

	/**
	 * Get the task list.
	 *
	 * @return array
	 */
	public function get_task_list() {
		if ( $this->task_list || $this->initalized ) {
			return $this->task_list;
		}

		$this->set_task_list( TaskLists::get_list( 'setup' ) );
		$this->initalized = true;
		return $this->task_list;
	}

	/**
	 * Set the task list.
	 */
	public function set_task_list( $task_list ) {
		return $this->task_list = $task_list;
	}

	/**
	 * Get the tasks.
	 *
	 * @return array
	 */
	public function get_tasks() {
		if ( $this->tasks ) {
			return $this->tasks;
		}

		$this->tasks = $this->get_task_list()->get_viewable_tasks();
		return $this->tasks;
	}

	/**
	 * Return # of completed tasks
	 *
	 * @return integer
	 */
	public function get_completed_tasks_count() {
		$completed_tasks = array_filter(
			$this->get_tasks(),
			function( $task ) {
				return $task->is_complete();
			}
		);

		return count( $completed_tasks );
	}

	/**
	 * Get the next task.
	 *
	 * @return array|null
	 */
	private function get_next_task() {
		foreach ( $this->get_tasks() as $task ) {
			if ( false === $task->is_complete() ) {
				return $task;
			}
		}

		return null;
	}

	/**
	 * Check to see if we should display the widget
	 *
	 * @return bool
	 */
	public function should_display_widget() {
		if ( ! class_exists( 'Automattic\WooCommerce\Admin\Features\Features' ) || ! class_exists( 'Automattic\WooCommerce\Admin\Features\OnboardingTasks\TaskLists' ) ) {
			return false;
		}

		if ( ! Features::is_enabled( 'onboarding' ) || ! WC()->is_wc_admin_active() ) {
			return false;
		}

		if ( ! current_user_can( 'manage_woocommerce' ) ) {
			return false;
		}

		if ( ! $this->get_task_list() || $this->get_task_list()->is_complete() || $this->get_task_list()->is_hidden() ) {
			return false;
		}

		return true;
	}

}