1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
<?php
namespace AutomateWoo\AdminNotices;
use AutomateWoo\AdminNotices; use AutomateWoo\Workflow_Query; use AutomateWoo\Admin;
/** * Display an admin notice on plugin update * * @since 5.1.0 * @package AutomateWoo */ class WelcomeNoticeManager { const NOTICE_ID = 'welcome';
/** * Attach callbacks. */ public static function init() { add_action( 'automatewoo_first_installed', [ __CLASS__, 'add_admin_notice' ], 10, 2 ); add_action( 'automatewoo/admin_notice/' . self::NOTICE_ID, [ __CLASS__, 'output_admin_notice' ] ); }
/** * Add a welcome admin notice - generally to be called when the plugin is installed for the first time. */ public static function add_admin_notice() { AdminNotices::add_notice( 'welcome' ); }
/** * Determines if the notice should be removed * * @return bool True if there are any Workflows created and hence the notice is going to be removed */ public static function maybe_remove_notice() { $query = new Workflow_Query(); $query->set_limit( 1 );
if ( count( $query->get_results() ) > 0 ) { AdminNotices::remove_notice( 'welcome' ); return true; }
return false; }
/** * Outputs the update notice including details about the update. */ public static function output_admin_notice() {
if ( self::maybe_remove_notice() ) { return; }
$title = __( 'Welcome to AutomateWoo!', 'automatewoo' ); $description = __( 'Create your first workflow easily with our presets, or build your own from scratch.', 'automatewoo' ); $links = [ [ 'text' => __( 'Browse presets', 'automatewoo' ), 'href' => Admin::page_url( 'workflow-presets' ), 'class' => 'button-primary', 'data_link_type' => 'presets', 'target' => '_self', ], [ 'text' => __( 'Learn more', 'automatewoo' ), 'href' => Admin::get_docs_link( 'getting-started', 'welcome-notice' ), 'class' => 'button-secondary', 'data_link_type' => 'getting_started', 'target' => '_blank', ], ];
Admin::get_view( 'welcome-notice', [ 'notice_identifier' => self::NOTICE_ID, 'title' => $title, 'description' => $description, 'links' => $links, ] ); } }
|