PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.19.3
GiveWP – Donation Plugin and Fundraising Platform v2.19.3
4.16.3 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 / Onboarding / Wizard / Page.php
give / src / Onboarding / Wizard Last commit date
templates 4 years ago FormPreview.php 4 years ago Page.php 4 years ago
Page.php
233 lines
1 <?php
2
3 namespace Give\Onboarding\Wizard;
4
5 defined('ABSPATH') || exit;
6
7 use Give\Onboarding\FormRepository;
8 use Give\Onboarding\Helpers\FormatList;
9 use Give\Onboarding\Helpers\LocationList;
10 use Give\Onboarding\LocaleCollection;
11 use Give\Onboarding\SettingsRepositoryFactory;
12 use Give\Onboarding\Setup\Page as SetupPage;
13
14 /**
15 * Onboarding Wizard admin page class
16 *
17 * Responsible for setting up and rendering Onboarding Wizard page at
18 * wp-admin/?page=give-onboarding-wizard
19 *
20 * @since 2.8.0
21 */
22 class Page
23 {
24
25 /** @var string $slug Page slug used for displaying onboarding wizard */
26 protected $slug = 'give-onboarding-wizard';
27
28 /** @var FormRepository */
29 protected $formRepository;
30
31 /** @var SettingsRepository */
32 protected $settingsRepository;
33
34 /** @var SettingsRepository */
35 protected $onboardingSettingsRepository;
36
37 /** @var LocaleCollection */
38 protected $localeCollection;
39
40 /**
41 * @param FormRepository $formRepository
42 * @param SettingsRepositoryFactory $settingsRepositoryFactory
43 */
44 public function __construct(
45 FormRepository $formRepository,
46 SettingsRepositoryFactory $settingsRepositoryFactory,
47 LocaleCollection $localeCollection
48 ) {
49 $this->formRepository = $formRepository;
50 $this->settingsRepository = $settingsRepositoryFactory->make('give_settings');
51 $this->onboardingSettingsRepository = $settingsRepositoryFactory->make('give_onboarding');
52 $this->localeCollection = $localeCollection;
53 }
54
55 /**
56 * Adds Onboarding Wizard as dashboard page
57 *
58 * Register Onboarding Wizard as an admin page route
59 *
60 * @since 2.8.0
61 **/
62 public function add_page()
63 {
64 add_submenu_page('', '', '', 'manage_options', $this->slug);
65 }
66
67 /**
68 * Conditionally renders Onboarding Wizard
69 *
70 * If the current page query matches the onboarding wizard's slug, method renders the onboarding wizard.
71 *
72 * @since 2.8.0
73 **/
74 public function setup_wizard()
75 {
76 if (empty($_GET['page']) || $this->slug !== $_GET['page']) { // WPCS: CSRF ok, input var ok.
77 return;
78 } else {
79 $this->render_page();
80 }
81 }
82
83 /**
84 * Renders onboarding wizard markup
85 *
86 * Uses an object buffer to display the onboarding wizard template
87 *
88 * @since 2.8.0
89 **/
90 public function render_page()
91 {
92 ob_start();
93 include_once plugin_dir_path(__FILE__) . 'templates/index.php';
94 exit;
95 }
96
97 /**
98 * Enqueues onboarding wizard scripts/styles
99 *
100 * Enqueues scripts/styles necessary for loading the Onboarding Wizard React app,
101 * and localizes some additional data for the app to access.
102 *
103 * @since 2.8.0
104 **/
105 public function enqueue_scripts()
106 {
107 if (empty($_GET['page']) || $this->slug !== $_GET['page']) { // WPCS: CSRF ok, input var ok.
108 return;
109 }
110
111 wp_enqueue_style(
112 'give-google-font-montserrat',
113 'https://fonts.googleapis.com/css?family=Montserrat:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i&display=swap',
114 [],
115 null
116 );
117
118 wp_enqueue_style(
119 'give-google-font-open-sans',
120 'https://fonts.googleapis.com/css2?family=Open+Sans:wght@600&display=swap',
121 [],
122 null
123 );
124
125 wp_enqueue_style(
126 'give-admin-onboarding-wizard',
127 GIVE_PLUGIN_URL . 'assets/dist/css/admin-onboarding-wizard.css',
128 [
129 'give-google-font-montserrat',
130 'give-google-font-open-sans',
131 ],
132 GIVE_VERSION
133 );
134
135 wp_enqueue_script(
136 'give-admin-onboarding-wizard-app',
137 GIVE_PLUGIN_URL . 'assets/dist/js/admin-onboarding-wizard.js',
138 ['wp-element', 'wp-api', 'wp-i18n'],
139 GIVE_VERSION,
140 true
141 );
142
143 wp_set_script_translations('give-admin-onboarding-wizard-app', 'give');
144
145 $formID = $this->formRepository->getDefaultFormID();
146 $featureGoal = get_post_meta($formID, '_give_goal_option', true);
147 $featureComments = get_post_meta($formID, '_give_donor_comment', true);
148 $featureTerms = get_post_meta($formID, '_give_terms_option', true);
149 $offlineDonations = get_post_meta($formID, '_give_customize_offline_donations', true);
150 $featureAnonymous = get_post_meta($formID, '_give_anonymous_donation', true);
151 $featureCompany = get_post_meta($formID, '_give_company_field', true);
152
153 $currency = $this->settingsRepository->get('currency') ?: 'USD';
154 $baseCountry = $this->settingsRepository->get('base_country') ?: 'US';
155 $baseState = $this->settingsRepository->get('base_state') ?: '';
156
157 global $current_user;
158
159 wp_localize_script(
160 'give-admin-onboarding-wizard-app',
161 'giveOnboardingWizardData',
162 [
163 'apiRoot' => esc_url_raw(rest_url()),
164 'apiNonce' => wp_create_nonce('wp_rest'),
165 'setupUrl' => SetupPage::getSetupPageEnabledOrDisabled() === SetupPage::ENABLED ? admin_url(
166 'edit.php?post_type=give_forms&page=give-setup'
167 ) : admin_url('edit.php?post_type=give_forms'),
168 'formPreviewUrl' => admin_url('?page=give-form-preview'),
169 'localeCurrency' => $this->localeCollection->pluck('currency_code'),
170 'currencies' => FormatList::fromKeyValue(give_get_currencies_list()),
171 'currencySelected' => $currency,
172 'countries' => LocationList::getCountries(),
173 'countrySelected' => $baseCountry,
174 'states' => LocationList::getStates($baseCountry),
175 'stateSelected' => $baseState,
176 'features' => FormatList::fromValueKey(
177 [
178 'donation-goal' => ('enabled' == $featureGoal),
179 'donation-comments' => ('enabled' == $featureComments),
180 'terms-conditions' => ('enabled' == $featureTerms),
181 'offline-donations' => ('enabled' == $offlineDonations),
182 'anonymous-donations' => ('enabled' == $featureAnonymous),
183 'company-donations' => in_array($featureCompany, ['required', 'optional']),
184 // Note: The company field has two values for enabled, "required" and "optional".
185 ]
186 ),
187 'causeTypes' => FormatList::fromKeyValue(
188 include GIVE_PLUGIN_DIR . 'src/Onboarding/Config/CauseTypes.php'
189 ),
190 'adminEmail' => $current_user->user_email,
191 'adminFirstName' => $current_user->first_name,
192 'adminLastName' => $current_user->last_name,
193 'adminUserID' => $current_user->ID,
194 'websiteUrl' => get_bloginfo('url'),
195 'websiteName' => get_bloginfo('sitename'),
196 'addons' => $this->onboardingSettingsRepository->get('addons') ?: [],
197 ]
198 );
199 }
200
201 public function redirect()
202 {
203 // Bail if no activation redirect
204 if ( ! \Give_Cache::get('_give_activation_redirect', true) || wp_doing_ajax()) {
205 return;
206 }
207
208 // Delete the redirect transient
209 \Give_Cache::delete(\Give_Cache::get_key('_give_activation_redirect'));
210
211 // Bail if activating from network, or bulk
212 if (is_network_admin() || isset($_GET['activate-multi'])) {
213 return;
214 }
215
216 $redirect = add_query_arg('page', 'give-onboarding-wizard', admin_url());
217
218 $upgrade = get_option('give_version_upgraded_from');
219
220 if ( ! $upgrade) {
221 // First time install
222 wp_safe_redirect($redirect);
223 exit;
224 }
225 }
226 }
227
228 register_meta('user', 'marketing_optin', [
229 'type' => 'string',
230 'show_in_rest' => true,
231 'single' => true,
232 ]);
233