PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.7.5
GiveWP – Donation Plugin and Fundraising Platform v2.7.5
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 5 years ago
Form.php
195 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 * Option name
25 *
26 * @since 2.7.0
27 * @var string
28 */
29 private $optionName = 'form_page_url_prefix';
30
31 /**
32 * Route base
33 *
34 * @since 2.7.0
35 * @var string
36 */
37 private $defaultBase = 'give';
38
39 /**
40 * Route base
41 *
42 * @since 2.7.0
43 * @var string
44 */
45 private $base;
46
47 /**
48 * Form constructor.
49 *
50 * @param Controller $controller
51 */
52 public function init( $controller ) {
53 $this->setBasePrefix();
54 $controller->init();
55
56 add_action( 'init', [ $this, 'addRule' ] );
57 add_action( 'query_vars', [ $this, 'addQueryVar' ] );
58 add_action( 'give-settings_save_advanced', [ $this, 'updateRule' ], 11 );
59 }
60
61 /**
62 * Setup base prefix
63 *
64 * @since 2.7.0
65 */
66 public function setBasePrefix() {
67 $this->base = give_get_option( $this->optionName, $this->defaultBase );
68 }
69
70
71 /**
72 * Add rewrite rule
73 *
74 * @since 2.7.0
75 */
76 public function addRule() {
77 add_rewrite_rule(
78 "{$this->base}/(.+?)/?$",
79 sprintf(
80 'index.php?url_prefix=%1$s&give_form_id=$matches[1]',
81 $this->base
82 ),
83 'top'
84 );
85 }
86
87
88 /**
89 * Add query var
90 *
91 * @since 2.7.0
92 * @param array $queryVars
93 *
94 * @return array
95 */
96 public function addQueryVar( $queryVars ) {
97 $queryVars[] = 'give_form_id';
98 $queryVars[] = 'url_prefix';
99
100 return $queryVars;
101 }
102
103 /**
104 * Get form URL.
105 *
106 * @since 2.7.0
107 * @since 2.8.0 Add support for all permalink settings.
108 *
109 * @param int $form_id
110 *
111 * @return string
112 */
113 public function getURL( $form_id ) {
114 return get_option( 'permalink_structure' )
115 ? home_url( "/{$this->base}/{$form_id}" )
116 : add_query_arg(
117 [
118 'give_form_id' => $form_id,
119 'url_prefix' => $this->base,
120 ],
121 home_url()
122 );
123 }
124
125
126 /**
127 * Get url base.
128 *
129 * @since 2.7.0
130 * @return string
131 */
132 public function getBase() {
133 return $this->base;
134 }
135
136 /**
137 * Get url base.
138 *
139 * @since 2.7.0
140 * @return string
141 */
142 public function getOptionName() {
143 return $this->optionName;
144 }
145
146
147 /**
148 * Update route rule
149 *
150 * @since 2.7.0
151 */
152 public function updateRule() {
153 global $wp_rewrite;
154
155 $updateBase = give_get_option( $this->optionName, $this->defaultBase );
156
157 if ( $updateBase !== $this->base ) {
158 $this->base = $updateBase;
159
160 // Save rewrite rule manually.
161 $this->addRule();
162 flush_rewrite_rules();
163 $wp_rewrite->wp_rewrite_rules();
164 }
165 }
166
167 /**
168 * Get queried form ID.
169 *
170 * @since 2.7.0
171 * @return int
172 */
173 public function getQueriedFormID() {
174 $formId = 0;
175
176 if ( $queryVar = get_query_var( 'give_form_id' ) ) {
177 $form = current(
178 get_posts(
179 [
180 'name' => $queryVar,
181 'numberposts' => 1,
182 'post_type' => 'give_forms',
183 ]
184 )
185 );
186
187 if ( $form instanceof WP_Post ) {
188 $formId = $form->ID;
189 }
190 }
191
192 return $formId;
193 }
194 }
195