Completed
Branch master (16c0f9)
by
unknown
02:07
created

Auto_Load_Next_Post_Admin_Notices   A

Complexity

Total Complexity 16

Size/Duplication

Total Lines 137
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 0
Metric Value
dl 0
loc 137
rs 10
c 0
b 0
f 0
wmc 16
lcom 1
cbo 0

7 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 8 1
A check_wp() 0 10 2
A dont_bug_me() 0 10 3
C add_notices() 0 28 7
A requirement_wp_notice() 0 3 1
A theme_check_notice() 0 3 1
A plugin_review_notice() 0 5 1
1
<?php
2
/**
3
 * Display notices in the WordPress admin.
4
 *
5
 * @since    1.3.2
6
 * @version  1.4.10
7
 * @author   Sébastien Dumont
8
 * @category Admin
9
 * @package  Auto Load Next Post
10
 * @license  GPL-2.0+
11
 */
12
13
// Exit if accessed directly.
14
if ( ! defined( 'ABSPATH' ) ) {
15
	exit;
16
}
17
18
if ( ! class_exists( 'Auto_Load_Next_Post_Admin_Notices' ) ) {
19
20
	class Auto_Load_Next_Post_Admin_Notices {
21
22
		/**
23
		 * Activation date.
24
		 *
25
		 * @access public
26
		 * @static
27
		 * @since  1.4.10
28
		 * @var    string
29
		 */
30
		public static $install_date;
31
32
		/**
33
		 * Constructor
34
		 *
35
		 * @access  public
36
		 * @since   1.3.2
37
		 * @version 1.4.10
38
		 */
39
		public function __construct() {
40
			self::$install_date = get_site_option( 'auto_load_next_post_install_date', time() );
41
42
			add_action( 'admin_init', array( $this, 'check_wp' ), 12 );
43
			add_action( 'admin_init', array( $this, 'dont_bug_me' ), 15 );
44
45
			add_action( 'admin_notices', array( $this, 'add_notices' ), 0 );
46
		} // END __construct()
47
48
		/**
49
		 * Checks that the WordPress version meets the plugin requirement.
50
		 *
51
		 * @access public
52
		 * @since  1.0.0
53
		 * @global string $wp_version
54
		 * @return bool
55
		 */
56
		public function check_wp() {
57
			global $wp_version;
58
59
			if ( ! version_compare( $wp_version, AUTO_LOAD_NEXT_POST_WP_VERSION_REQUIRE, '>=' ) ) {
60
				add_action( 'admin_notices', array( $this, 'requirement_wp_notice' ) );
61
				return false;
62
			}
63
64
			return true;
65
		} // END check_wp()
66
67
		/**
68
		 * Dont bug the user if they do not want any notices.
69
		 *
70
		 * @access public
71
		 * @since  1.4.10
72
		 * @global $current_user
73
		 */
74
		public function dont_bug_me() {
75
			global $current_user;
76
77
			// If the user is allowed to install plugins and requested to hide the notice then hide it for that user.
78
			if ( ! empty( $_GET['hide_auto_load_next_post_review_notice'] ) && current_user_can( 'install_plugins' ) ) {
79
				add_user_meta( $current_user->ID, 'auto_load_next_post_hide_review_notice', '1', true );
80
				// Redirect to the plugins page.
81
				wp_safe_redirect( admin_url( 'plugins.php' ) ); exit;
1 ignored issue
show
Coding Style Compatibility introduced by
The method dont_bug_me() contains an exit expression.

An exit expression should only be used in rare cases. For example, if you write a short command line script.

In most cases however, using an exit expression makes the code untestable and often causes incompatibilities with other libraries. Thus, unless you are absolutely sure it is required here, we recommend to refactor your code to avoid its usage.

Loading history...
82
			}
83
		} // END dont_bug_me()
84
85
		/**
86
		 * Checks if the theme supports the plugin and display the plugin review
87
		 * notice after 7 days or more from the time the plugin was installed.
88
		 *
89
		 * @access  public
90
		 * @since   1.3.2
91
		 * @version 1.4.10
92
		 * @global  $current_user
93
		 */
94
		public function add_notices() {
95
			global $current_user;
96
97
			$template = get_option('template');
98
99
			if ( ! supports_alnp() ) {
100
				// If user hides theme support notice then set active theme.
101
				if ( ! empty( $_GET['hide_auto_load_next_post_theme_support_check'] ) ) {
102
					update_option( 'auto_load_next_post_theme_support_check', $template );
103
					return;
104
				}
105
106
				if ( get_option( 'auto_load_next_post_theme_support_check' ) !== $template ) {
107
					add_action( 'admin_notices', array( $this, 'theme_check_notice' ) );
108
				}
109
			}
110
111
			// Is admin notice hidden?
112
			$hide_notice = get_user_meta( $current_user->ID, 'auto_load_next_post_hide_review_notice', true );
113
114
			// Check if we need to display the review plugin notice.
115
			if ( current_user_can( 'install_plugins' ) && empty( $hide_notice ) ) {
116
				// If it has been a week or more since activating the plugin then display the review notice.
117
				if ( ( time() - self::$install_date ) > WEEK_IN_SECONDS ) {
118
					add_action( 'admin_notices', array( $this, 'plugin_review_notice' ) );
119
				}
120
			}
121
		} // END add_notices()
122
123
		/**
124
		 * Show the WordPress requirement notice.
125
		 *
126
		 * @access public
127
		 * @since  1.4.3
128
		 */
129
		public function requirement_wp_notice() {
130
			include( dirname( __FILE__ ) . '/views/html-notice-requirement-wp.php' );
131
		} // END requirement_wp_notice()
132
133
		/**
134
		 * Show the theme check notice.
135
		 *
136
		 * @access public
137
		 * @since  1.3.2
138
		 */
139
		public function theme_check_notice() {
140
			include( dirname( __FILE__ ) . '/views/html-notice-theme-support.php' );
141
		} // END theme_check_notice()
142
143
		/**
144
		 * Show the plugin review notice.
145
		 *
146
		 * @access  public
147
		 * @since   1.4.4
148
		 * @version 1.4.10
149
		 */
150
		public function plugin_review_notice() {
151
			$install_date = self::$install_date;
152
153
			include( dirname( __FILE__ ) . '/views/html-notice-please-review.php' );
154
		} // END plugin_review_notice()
155
156
	} // END class.
157
158
} // END if class exists.
159
160
return new Auto_Load_Next_Post_Admin_Notices();
161