PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.9.0
GiveWP – Donation Plugin and Fundraising Platform v4.9.0
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Route / Form.php
give / src / Route Last commit date
Form.php 4 years ago PayPalWebhooks.php 4 years ago Route.php 4 years ago
Form.php
221 lines
1 <?php
2
3 /**
4 * Handle Embed Donation Form Route
5 *
6 * @package Give
7 * @since 2.7.0
8 */
9
10 namespace Give\Route;
11
12 use Give\Controller\Form as Controller;
13 use WP_Post;
14
15 defined('ABSPATH') || exit;
16
17 /**
18 * Template class.
19 *
20 * @since 2.7.0
21 */
22 class Form
23 {
24 /**
25 * Option name
26 *
27 * @since 2.7.0
28 * @var string
29 */
30 private $optionName = 'form_page_url_prefix';
31
32 /**
33 * Route base
34 *
35 * @since 2.7.0
36 * @var string
37 */
38 private $defaultBase = 'give';
39
40 /**
41 * Route base
42 *
43 * @since 2.7.0
44 * @var string
45 */
46 private $base;
47
48 /**
49 * @since 2.8.0
50 * @var Controller
51 */
52 private $controller;
53
54 /**
55 * Form constructor.
56 *
57 * @since 2.8.0
58 *
59 * @param Controller $controller
60 */
61 public function __construct(Controller $controller)
62 {
63 $this->controller = $controller;
64 }
65
66 /**
67 * Form constructor.
68 */
69 public function init()
70 {
71 $this->setBasePrefix();
72 $this->controller->init();
73
74 add_action('init', [$this, 'addRule']);
75 add_action('query_vars', [$this, 'addQueryVar']);
76 add_action('give-settings_save_advanced', [$this, 'updateRule'], 11);
77 }
78
79 /**
80 * Setup base prefix
81 *
82 * @since 2.7.0
83 */
84 public function setBasePrefix()
85 {
86 $this->base = give_get_option($this->optionName, $this->defaultBase);
87 }
88
89 /**
90 * Add rewrite rule
91 *
92 * @since 2.7.0
93 */
94 public function addRule()
95 {
96 add_rewrite_rule(
97 "{$this->base}/(.+?)/?$",
98 sprintf(
99 'index.php?url_prefix=%1$s&give_form_id=$matches[1]',
100 $this->base
101 ),
102 'top'
103 );
104 }
105
106 /**
107 * Add query var
108 *
109 * @since 2.7.0
110 *
111 * @param array $queryVars
112 *
113 * @return array
114 */
115 public function addQueryVar($queryVars)
116 {
117 $queryVars[] = 'give_form_id';
118 $queryVars[] = 'url_prefix';
119
120 return $queryVars;
121 }
122
123 /**
124 * Get form URL.
125 *
126 * @since 2.7.0
127 * @since 2.8.0 Add support for all permalink settings.
128 * @since 2.8.0 Specify URL scheme to avoid mixed content when loaded in the admin.
129 *
130 * @param int $form_id
131 *
132 * @return string
133 */
134 public function getURL($form_id)
135 {
136 $scheme = (is_ssl()) ? 'https' : 'http';
137
138 return get_option('permalink_structure')
139 ? home_url("/{$this->base}/{$form_id}", $scheme)
140 : esc_url(add_query_arg(
141 [
142 'give_form_id' => $form_id,
143 'url_prefix' => $this->base,
144 ],
145 home_url('', $scheme)
146 ));
147 }
148
149 /**
150 * Get url base.
151 *
152 * @since 2.7.0
153 * @return string
154 */
155 public function getBase()
156 {
157 return $this->base;
158 }
159
160 /**
161 * Get url base.
162 *
163 * @since 2.7.0
164 * @return string
165 */
166 public function getOptionName()
167 {
168 return $this->optionName;
169 }
170
171 /**
172 * Update route rule
173 *
174 * @since 2.7.0
175 */
176 public function updateRule()
177 {
178 global $wp_rewrite;
179
180 $updateBase = give_get_option($this->optionName, $this->defaultBase);
181
182 if ($updateBase !== $this->base) {
183 $this->base = $updateBase;
184
185 // Save rewrite rule manually.
186 $this->addRule();
187 flush_rewrite_rules();
188 $wp_rewrite->wp_rewrite_rules();
189 }
190 }
191
192 /**
193 * Get queried form ID.
194 *
195 * @since 2.7.0
196 * @return int
197 */
198 public function getQueriedFormID()
199 {
200 $formId = 0;
201
202 if ($queryVar = get_query_var('give_form_id')) {
203 $form = current(
204 get_posts(
205 [
206 'name' => $queryVar,
207 'numberposts' => 1,
208 'post_type' => 'give_forms',
209 ]
210 )
211 );
212
213 if ($form instanceof WP_Post) {
214 $formId = $form->ID;
215 }
216 }
217
218 return $formId;
219 }
220 }
221