|
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() { |
|
|
|
|
|
|
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' ) |
|
|
|
|
|
|
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
|
|
|
|
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.