PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.7.1
GiveWP – Donation Plugin and Fundraising Platform v2.7.1
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 6 years ago
Form.php
185 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 * @param int $form_id
108 *
109 * @return string
110 */
111 public function getURL( $form_id ) {
112 return home_url( "/{$this->base}/{$form_id}" );
113 }
114
115
116 /**
117 * Get url base.
118 *
119 * @since 2.7.0
120 * @return string
121 */
122 public function getBase() {
123 return $this->base;
124 }
125
126 /**
127 * Get url base.
128 *
129 * @since 2.7.0
130 * @return string
131 */
132 public function getOptionName() {
133 return $this->optionName;
134 }
135
136
137 /**
138 * Update route rule
139 *
140 * @since 2.7.0
141 */
142 public function updateRule() {
143 global $wp_rewrite;
144
145 $updateBase = give_get_option( $this->optionName, $this->defaultBase );
146
147 if ( $updateBase !== $this->base ) {
148 $this->base = $updateBase;
149
150 // Save rewrite rule manually.
151 $this->addRule();
152 flush_rewrite_rules();
153 $wp_rewrite->wp_rewrite_rules();
154 }
155 }
156
157 /**
158 * Get queried form ID.
159 *
160 * @since 2.7.0
161 * @return int
162 */
163 public function getQueriedFormID() {
164 $formId = 0;
165
166 if ( $queryVar = get_query_var( 'give_form_id' ) ) {
167 $form = current(
168 get_posts(
169 [
170 'name' => $queryVar,
171 'numberposts' => 1,
172 'post_type' => 'give_forms',
173 ]
174 )
175 );
176
177 if ( $form instanceof WP_Post ) {
178 $formId = $form->ID;
179 }
180 }
181
182 return $formId;
183 }
184 }
185