Completed
Push — es6/issue-1475 ( 93c1ad )
by Ravinder
1139:39 queued 1133:44
created

Give_Shortcode_Totals   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 115
Duplicated Lines 6.09 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 0
Metric Value
dl 7
loc 115
rs 10
c 0
b 0
f 0
wmc 8
lcom 0
cbo 1

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 7 7 1
B define_fields() 0 95 7

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
 * The [give_totals] Shortcode Generator class
4
 *
5
 * @package     Give/Admin/Shortcodes
6
 * @copyright   Copyright (c) 2016, WordImpress
7
 * @license     https://opensource.org/licenses/gpl-license GNU Public License
8
 * @since       2.1
9
 */
10
11
// Exit if accessed directly.
12
if ( ! defined( 'ABSPATH' ) ) {
13
	exit;
14
}
15
16
/**
17
 * Class Give_Shortcode_Totals
18
 */
19
class Give_Shortcode_Totals extends Give_Shortcode_Generator {
20
21
	/**
22
	 * Class constructor
23
	 */
24 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...
25
26
		$this->shortcode['title'] = __( 'Give Totals', 'give' );
27
		$this->shortcode['label'] = __( 'Give Totals', 'give' );
28
29
		parent::__construct( 'give_totals' );
30
	}
31
32
	/**
33
	 * Define the shortcode attribute fields
34
	 *
35
	 * @since 2.1
36
	 * @return array
37
	 */
38
	public function define_fields() {
39
40
		$category_options = array();
41
		$category_lists   = array();
42
		$categories       = get_terms( 'give_forms_category', apply_filters( 'give_forms_category_dropdown', array() ) );
43
		if ( give_is_setting_enabled( give_get_option( 'categories' ) ) && ! is_wp_error( $categories ) ) {
44
			foreach ( $categories as $category ) {
45
				$category_options[ absint( $category->term_id ) ] = esc_html( $category->name );
46
			}
47
48
			$category_lists['type']    = 'listbox';
49
			$category_lists['name']    = 'cats';
50
			$category_lists['label']   = __( 'Select a Donation Form Category:', 'give' );
51
			$category_lists['tooltip'] = __( 'Select a Donation Form Category', 'give' );
52
			$category_lists['options'] = $category_options;
53
		}
54
55
		$tag_options = array();
56
		$tag_lists   = array();
57
		$tags        = get_terms( 'give_forms_tag', apply_filters( 'give_forms_tag_dropdown', array() ) );
58
		if ( give_is_setting_enabled( give_get_option( 'tags' ) ) && ! is_wp_error( $tags ) ) {
59
			$tags = get_terms( 'give_forms_tag', apply_filters( 'give_forms_tag_dropdown', array() ) );
60
			foreach ( $tags as $tag ) {
61
				$tag_options[ absint( $tag->term_id ) ] = esc_html( $tag->name );
62
			}
63
64
			$tag_lists['type']    = 'listbox';
65
			$tag_lists['name']    = 'tags';
66
			$tag_lists['label']   = __( 'Select a Donation Form Tag:', 'give' );
67
			$tag_lists['tooltip'] = __( 'Select a Donation Form Tag', 'give' );
68
			$tag_lists['options'] = $tag_options;
69
		}
70
71
		return array(
72
			array(
73
				'type' => 'container',
74
				'html' => sprintf( '<p class="give-totals-shortcode-container-message">%s</p>',
75
					 __( 'This shortcode shows the total amount raised towards a custom goal for one or several forms regardless of whether they have goals enabled or not.', 'give' )
0 ignored issues
show
Coding Style introduced by
This line of the multi-line function call does not seem to be indented correctly. Expected 20 spaces, but found 21.
Loading history...
76
				),
77
			),
78
			array(
79
				'type' => 'container',
80
				'html' => sprintf( '<p class="strong margin-top">%s</p>', __( 'Shortcode Configuration', 'give' ) ),
81
			),
82
			array(
83
				'type'        => 'textbox',
84
				'name'        => 'ids',
85
				'label'       => __( 'Donation Form IDs:', 'give' ),
86
				'tooltip'     => __( 'Enter the IDs separated by commas for the donation forms you would like to combine within the totals.', 'give' ),
87
			),
88
			$category_lists,
89
			$tag_lists,
90
			array(
91
				'type'    => 'textbox',
92
				'name'    => 'total_goal',
93
				'label'   => __( 'Total Goal:', 'give' ),
94
				'tooltip' => __( 'Enter the total goal amount that you would like to display.', 'give' ),
95
			),
96
			array(
97
				'type'      => 'textbox',
98
				'name'      => 'message',
99
				'label'     => __( 'Message:', 'give' ),
100
				'tooltip'   => __( 'Enter a message to display encouraging donors to support the goal.', 'give' ),
101
				'value'     => apply_filters( 'give_totals_message', __( 'Hey! We\'ve raised {total} of the {total_goal} we are trying to raise for this campaign!', 'give' ) ),
102
				'multiline' => true,
103
				'minWidth'  => 300,
104
				'minHeight' => 60,
105
			),
106
			array(
107
				'type'    => 'textbox',
108
				'name'    => 'link',
109
				'label'   => __( 'Link:', 'give' ),
110
				'tooltip' => __( 'Enter a link to the main campaign donation form.', 'give' ),
111
			),
112
			array(
113
				'type'    => 'textbox',
114
				'name'    => 'link_text',
115
				'label'   => __( 'Link Text:', 'give' ),
116
				'tooltip' => __( 'Enter hyperlink text for the link to the main campaign donation form.', 'give' ),
117
				'value'   => __( 'Donate!', 'give' ),
118
			),
119
			array(
120
				'type'    => 'listbox',
121
				'name'    => 'progress_bar',
122
				'label'   => __( 'Show Progress Bar:', 'give' ),
123
				'tooltip' => __( 'Select whether you would like to show a goal progress bar.', 'give' ),
124
				'options' => array(
125
					'true'  => __( 'Show', 'give' ),
126
					'false' => __( 'Hide', 'give' ),
127
				),
128
				'value'   => 'true',
129
			),
130
131
		);
132
	}
133
}
134
135
new Give_Shortcode_Totals;
136