1
|
|
|
<?php |
2
|
|
|
/** |
3
|
|
|
* Give Settings Page/Tab |
4
|
|
|
* |
5
|
|
|
* @package Give |
6
|
|
|
* @subpackage Classes/Give_Settings_License |
7
|
|
|
* @copyright Copyright (c) 2016, GiveWP |
8
|
|
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License |
9
|
|
|
* @since 1.8 |
10
|
|
|
*/ |
11
|
|
|
|
12
|
|
|
if ( ! defined( 'ABSPATH' ) ) { |
13
|
|
|
exit; // Exit if accessed directly. |
14
|
|
|
} |
15
|
|
|
|
16
|
|
|
if ( ! class_exists( 'Give_Settings_License' ) ) : |
17
|
|
|
|
18
|
|
|
/** |
19
|
|
|
* Give_Settings_License. |
20
|
|
|
* |
21
|
|
|
* @sine 1.8 |
22
|
|
|
*/ |
23
|
|
|
class Give_Settings_License extends Give_Settings_Page { |
24
|
|
|
|
25
|
|
|
/** |
26
|
|
|
* Constructor. |
27
|
|
|
*/ |
28
|
|
|
public function __construct() { |
29
|
|
|
$this->id = 'licenses'; |
30
|
|
|
$this->label = esc_html__( 'Licenses', 'give' ); |
31
|
|
|
|
32
|
|
|
parent::__construct(); |
33
|
|
|
|
34
|
|
|
// Filter to remove the license tab. |
35
|
|
|
add_filter( 'give-settings_tabs_array', array( $this, 'remove_license_tab' ), 9999999, 1 ); |
36
|
|
|
|
37
|
|
|
} |
38
|
|
|
|
39
|
|
|
/** |
40
|
|
|
* Get settings array. |
41
|
|
|
* |
42
|
|
|
* @since 1.8 |
43
|
|
|
* @return array |
44
|
|
|
*/ |
45
|
|
|
public function get_settings() { |
46
|
|
|
$settings = array(); |
47
|
|
|
|
48
|
|
|
/** |
49
|
|
|
* Filter the licenses settings. |
50
|
|
|
* Backward compatibility: Please do not use this filter. This filter is deprecated in 1.8 |
51
|
|
|
*/ |
52
|
|
|
$settings = apply_filters( 'give_settings_licenses', $settings ); |
53
|
|
|
|
54
|
|
|
/** |
55
|
|
|
* Filter the settings. |
56
|
|
|
* |
57
|
|
|
* @since 1.8 |
58
|
|
|
* |
59
|
|
|
* @param array $settings |
60
|
|
|
*/ |
61
|
|
|
$settings = apply_filters( 'give_get_settings_' . $this->id, $settings ); |
62
|
|
|
|
63
|
|
|
// Output. |
64
|
|
|
return $settings; |
65
|
|
|
} |
66
|
|
|
|
67
|
|
|
/** |
68
|
|
|
* Remove the license tab if no Give addon |
69
|
|
|
* is activated. |
70
|
|
|
* |
71
|
|
|
* @param array $tabs Give Settings Tabs. |
72
|
|
|
* |
73
|
|
|
* @since 2.1.4 |
74
|
|
|
* |
75
|
|
|
* @return array |
76
|
|
|
*/ |
77
|
|
|
public function remove_license_tab( $tabs ) { |
78
|
|
|
/** |
79
|
|
|
* Remove the license tab if no Give licensed addon |
80
|
|
|
* is activated. |
81
|
|
|
*/ |
82
|
|
|
if ( ! $this->is_show_setting_page() ) { |
83
|
|
|
unset( $tabs['licenses'] ); |
84
|
|
|
} |
85
|
|
|
|
86
|
|
|
return $tabs; |
87
|
|
|
} |
88
|
|
|
|
89
|
|
|
/** |
90
|
|
|
* Returns if at least one Give addon is activated. |
91
|
|
|
* Note: note only for internal logic |
92
|
|
|
* |
93
|
|
|
* @since 2.1.4 |
94
|
|
|
* @access private |
95
|
|
|
* |
96
|
|
|
* @return bool |
97
|
|
|
*/ |
98
|
|
|
private function is_show_setting_page() { |
99
|
|
|
$licensed_addons = Give_License::get_licensed_addons(); |
100
|
|
|
$activated_plugins = get_option( 'active_plugins', array() ); |
101
|
|
|
|
102
|
|
|
// Get list of network enabled plugin. |
103
|
|
View Code Duplication |
if ( is_multisite() ) { |
|
|
|
|
104
|
|
|
$sitewide_activated_plugins = array_keys( get_site_option( 'active_sitewide_plugins', array() ) ); |
105
|
|
|
$activated_plugins = ! empty( $activated_plugins ) |
106
|
|
|
? array_merge( $sitewide_activated_plugins, $activated_plugins ) |
107
|
|
|
: $sitewide_activated_plugins; |
108
|
|
|
} |
109
|
|
|
|
110
|
|
|
return (bool) count( array_intersect( $activated_plugins, $licensed_addons ) ); |
111
|
|
|
} |
112
|
|
|
} |
113
|
|
|
|
114
|
|
|
endif; |
115
|
|
|
|
116
|
|
|
return new Give_Settings_License(); |
117
|
|
|
|
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.