Give_Settings_License::get_settings()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 21

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 0
dl 0
loc 21
rs 9.584
c 0
b 0
f 0
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() ) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

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.

Loading history...
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