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