Completed
Push — issue-2719 ( c98c0f )
by Ravinder
383:18 queued 375:02
created

Give_Settings_Advanced   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 192
Duplicated Lines 6.25 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
dl 12
loc 192
rs 10
c 0
b 0
f 0
wmc 9
lcom 1
cbo 2

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 12 12 2
B get_settings() 0 128 4
A get_sections() 0 7 1
A render_remove_cache_button() 0 15 2

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
/**
3
 * Give Settings Page/Tab
4
 *
5
 * @package     Give
6
 * @subpackage  Classes/Give_Settings_Advanced
7
 * @copyright   Copyright (c) 2016, WordImpress
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_Advanced' ) ) :
17
18
	/**
19
	 * Give_Settings_Advanced.
20
	 *
21
	 * @sine 1.8
22
	 */
23
	class Give_Settings_Advanced extends Give_Settings_Page {
24
25
		/**
26
		 * Constructor.
27
		 */
28 View Code Duplication
		public function __construct() {
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in 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...
29
			$this->id    = 'advanced';
30
			$this->label = __( 'Advanced', 'give' );
31
32
			$this->default_tab = 'advanced-options';
33
34
			if ( $this->id === give_get_current_setting_tab() ) {
35
				add_action( 'give_admin_field_remove_cache_button', array( $this, 'render_remove_cache_button' ), 10, 1 );
36
			}
37
38
			parent::__construct();
39
		}
40
41
		/**
42
		 * Get settings array.
43
		 *
44
		 * @since  1.8
45
		 * @return array
46
		 */
47
		public function get_settings() {
48
			$settings = array();
49
50
			$current_section = give_get_current_setting_section();
51
52
			switch ( $current_section ) {
53
				case 'advanced-options':
54
					$settings = array(
55
						array(
56
							'id'   => 'give_title_data_control_2',
57
							'type' => 'title',
58
						),
59
						array(
60
							'name'    => __( 'Remove Data on Uninstall', 'give' ),
61
							'desc'    => __( 'When the plugin is deleted, completely remove all Give data. This includes all Give settings, forms, form meta, donor, donor data, donations. Everything.', 'give' ),
62
							'id'      => 'uninstall_on_delete',
63
							'type'    => 'radio_inline',
64
							'default' => 'disabled',
65
							'options' => array(
66
								'enabled'  => __( 'Yes, Remove all data', 'give' ),
67
								'disabled' => __( 'No, keep my Give settings and donation data', 'give' ),
68
							),
69
						),
70
						array(
71
							'name'    => __( 'Default User Role', 'give' ),
72
							'desc'    => __( 'Assign default user roles for donors when donors opt to register as a WP User.', 'give' ),
73
							'id'      => 'donor_default_user_role',
74
							'type'    => 'select',
75
							'default' => 'give_donor',
76
							'options' => give_get_user_roles(),
77
						),
78
						array(
79
							/* translators: %s: the_content */
80
							'name'    => sprintf( __( '%s filter', 'give' ), '<code>the_content</code>' ),
81
							/* translators: 1: https://codex.wordpress.org/Plugin_API/Filter_Reference/the_content 2: the_content */
82
							'desc'    => sprintf( __( 'If you are seeing extra social buttons, related posts, or other unwanted elements appearing within your forms then you can disable WordPress\' content filter. <a href="%1$s" target="_blank">Learn more</a> about %2$s filter.', 'give' ), esc_url( 'https://codex.wordpress.org/Plugin_API/Filter_Reference/the_content' ), '<code>the_content</code>' ),
83
							'id'      => 'the_content_filter',
84
							'default' => 'enabled',
85
							'type'    => 'radio_inline',
86
							'options' => array(
87
								'enabled'  => __( 'Enabled', 'give' ),
88
								'disabled' => __( 'Disabled', 'give' ),
89
							),
90
						),
91
						array(
92
							'name'    => __( 'Script Loading Location', 'give' ),
93
							'desc'    => __( 'This allows you to load your Give scripts either in the <code>&lt;head&gt;</code> or footer of your website.', 'give' ),
94
							'id'      => 'scripts_footer',
95
							'type'    => 'radio_inline',
96
							'default' => 'disabled',
97
							'options' => array(
98
								'disabled' => __( 'Head', 'give' ),
99
								'enabled'  => __( 'Footer', 'give' ),
100
							),
101
						),
102
						array(
103
							'name'    => __( 'Akismet SPAM Protection', 'give' ),
104
							'desc'    => __( 'Add a layer of SPAM protection to your donation submissions with Akismet. When enabled, donation submissions will be first sent to Akismet\'s API if you have the plugin activated and configured.', 'give' ),
105
							'id'      => 'akismet_spam_protection',
106
							'type'    => 'radio_inline',
107
							'default' => ( give_check_akismet_key() ) ? 'enabled' : 'disabled',
108
							'options' => array(
109
								'enabled'  => __( 'Enabled', 'give' ),
110
								'disabled' => __( 'Disabled', 'give' ),
111
							),
112
						),
113
						array(
114
							'name' => '',
115
							'id'   => 'give-clear-cache',
116
							'text' => __( 'Remove Cache', 'give' ),
117
							'desc' => __( 'Click this button if you want to delete Give\'s cache.' ),
118
							'type' => 'remove_cache_button'
0 ignored issues
show
introduced by
Each line in an array declaration must end in a comma
Loading history...
119
						),
120
						array(
121
							'name'  => __( 'Advanced Settings Docs Link', 'give' ),
122
							'id'    => 'advanced_settings_docs_link',
123
							'url'   => esc_url( 'http://docs.givewp.com/settings-advanced' ),
124
							'title' => __( 'Advanced Settings', 'give' ),
125
							'type'  => 'give_docs_link',
126
						),
127
						array(
128
							'id'   => 'give_title_data_control_2',
129
							'type' => 'sectionend',
130
						),
131
					);
132
					break;
133
			}
134
135
			/**
136
			 * Hide caching setting by default.
137
			 *
138
			 * @since 2.0
139
			 */
140
			if ( apply_filters( 'give_settings_advanced_show_cache_setting', false ) ) {
141
				array_splice( $settings, 1, 0, array(
142
					array(
143
						'name'    => __( 'Cache', 'give' ),
144
						'desc'    => __( 'If caching is enabled the plugin will start caching custom post type related queries and reduce the overall load time.', 'give' ),
145
						'id'      => 'cache',
146
						'type'    => 'radio_inline',
147
						'default' => 'enabled',
148
						'options' => array(
149
							'enabled'  => __( 'Enabled', 'give' ),
150
							'disabled' => __( 'Disabled', 'give' ),
151
						),
152
					)
0 ignored issues
show
introduced by
Comma required after last value in array declaration
Loading history...
153
				) );
154
			}
155
0 ignored issues
show
Coding Style introduced by
Functions must not contain multiple empty lines in a row; found 2 empty lines
Loading history...
156
157
			/**
158
			 * Filter the advanced settings.
159
			 * Backward compatibility: Please do not use this filter. This filter is deprecated in 1.8
160
			 */
161
			$settings = apply_filters( 'give_settings_advanced', $settings );
162
163
			/**
164
			 * Filter the settings.
165
			 *
166
			 * @since  1.8
167
			 *
168
			 * @param  array $settings
169
			 */
170
			$settings = apply_filters( 'give_get_settings_' . $this->id, $settings );
171
172
			// Output.
173
			return $settings;
174
		}
175
176
		/**
177
		 * Get sections.
178
		 *
179
		 * @since 1.8
180
		 * @return array
181
		 */
182
		public function get_sections() {
183
			$sections = array(
184
				'advanced-options' => __( 'Advanced Options', 'give' ),
185
			);
186
187
			return apply_filters( 'give_get_sections_' . $this->id, $sections );
188
		}
189
190
191
		/**
192
		 *  Render remove_cache_button field type
193
		 *
194
		 * @since  2.1
195
		 * @access public
196
		 *
197
		 * @param array $field
198
		 */
199
		public function render_remove_cache_button( $field ) {
200
			?>
201
			<tr valign="top" <?php echo ! empty( $field['wrapper_class'] ) ? 'class="' . $field['wrapper_class'] . '"' : '' ?>>
0 ignored issues
show
introduced by
Expected next thing to be a escaping function, not '$field'
Loading history...
introduced by
Expected next thing to be a escaping function, not '!'
Loading history...
202
				<th scope="row" class="titledesc">
203
					<label
204
						for="<?php echo esc_attr( $field['id'] ); ?>"><?php echo esc_html( $field['name'] ) ?></label>
205
				</th>
206
				<td class="give-forminp">
207
					<button type="button" id="<?php echo esc_attr( $field['id'] ); ?>"
208
					        class="button button-secondary"><?php echo esc_html( $field['text'] ) ?></button>
209
					<?php echo Give_Admin_Settings::get_field_description( $field ); ?>
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'Give_Admin_Settings'
Loading history...
210
				</td>
211
			</tr>
212
			<?php
213
		}
214
	}
215
216
endif;
217
218
return new Give_Settings_Advanced();
219