PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.22.1
GiveWP – Donation Plugin and Fundraising Platform v2.22.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 / 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
220 lines
1 <?php
2
3 namespace Give\Onboarding\Wizard;
4
5 defined('ABSPATH') || exit;
6
7 use Give\DonationForms\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 **/
66 public function add_page()
67 {
68 add_submenu_page('', '', '', 'manage_options', $this->slug);
69 }
70
71 /**
72 * Conditionally renders Onboarding Wizard
73 *
74 * If the current page query matches the onboarding wizard's slug, method renders the onboarding wizard.
75 *
76 * @since 2.8.0
77 **/
78 public function setup_wizard()
79 {
80 if (empty($_GET['page']) || $this->slug !== $_GET['page']) { // WPCS: CSRF ok, input var ok.
81 return;
82 } else {
83 $this->render_page();
84 }
85 }
86
87 /**
88 * Renders onboarding wizard markup
89 *
90 * Uses an object buffer to display the onboarding wizard template
91 *
92 * @since 2.8.0
93 **/
94 public function render_page()
95 {
96 ob_start();
97 include_once plugin_dir_path(__FILE__) . 'templates/index.php';
98 exit;
99 }
100
101 /**
102 * Enqueues onboarding wizard scripts/styles
103 *
104 * Enqueues scripts/styles necessary for loading the Onboarding Wizard React app,
105 * and localizes some additional data for the app to access.
106 *
107 * @since 2.8.0
108 **/
109 public function enqueue_scripts()
110 {
111 global $current_user;
112
113 if (empty($_GET['page']) || $this->slug !== $_GET['page']) { // WPCS: CSRF ok, input var ok.
114 return;
115 }
116
117 wp_enqueue_style(
118 'give-google-font-montserrat',
119 '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',
120 [],
121 null
122 );
123
124 wp_enqueue_style(
125 'give-google-font-open-sans',
126 'https://fonts.googleapis.com/css2?family=Open+Sans:wght@600&display=swap',
127 [],
128 null
129 );
130
131 $formID = $this->formRepository->getDefaultFormID();
132 $featureGoal = get_post_meta($formID, '_give_goal_option', true);
133 $featureComments = get_post_meta($formID, '_give_donor_comment', true);
134 $featureTerms = get_post_meta($formID, '_give_terms_option', true);
135 $offlineDonations = get_post_meta($formID, '_give_customize_offline_donations', true);
136 $featureAnonymous = get_post_meta($formID, '_give_anonymous_donation', true);
137 $featureCompany = get_post_meta($formID, '_give_company_field', true);
138
139 $currency = $this->settingsRepository->get('currency') ?: 'USD';
140 $baseCountry = $this->settingsRepository->get('base_country') ?: 'US';
141 $baseState = $this->settingsRepository->get('base_state') ?: '';
142 $data = [
143 'apiRoot' => esc_url_raw(rest_url()),
144 'apiNonce' => wp_create_nonce('wp_rest'),
145 'setupUrl' => SetupPage::getSetupPageEnabledOrDisabled() === SetupPage::ENABLED ?
146 admin_url('edit.php?post_type=give_forms&page=give-setup') :
147 DonationFormsAdminPage::getUrl(),
148 'formPreviewUrl' => admin_url('?page=give-form-preview'),
149 'localeCurrency' => $this->localeCollection->pluck('currency_code'),
150 'currencies' => FormatList::fromKeyValue(give_get_currencies_list()),
151 'currencySelected' => $currency,
152 'countries' => LocationList::getCountries(),
153 'countrySelected' => $baseCountry,
154 'states' => LocationList::getStates($baseCountry),
155 'stateSelected' => $baseState,
156 'features' => FormatList::fromValueKey(
157 [
158 'donation-goal' => ('enabled' === $featureGoal),
159 'donation-comments' => ('enabled' === $featureComments),
160 'terms-conditions' => ('enabled' === $featureTerms),
161 'offline-donations' => ('enabled' === $offlineDonations),
162 'anonymous-donations' => ('enabled' === $featureAnonymous),
163 'company-donations' => in_array($featureCompany, ['required', 'optional']),
164 // Note: The company field has two values for enabled, "required" and "optional".
165 ]
166 ),
167 'causeTypes' => FormatList::fromKeyValue(
168 include GIVE_PLUGIN_DIR . 'src/Onboarding/Config/CauseTypes.php'
169 ),
170 'adminEmail' => $current_user->user_email,
171 'adminFirstName' => $current_user->first_name,
172 'adminLastName' => $current_user->last_name,
173 'adminUserID' => $current_user->ID,
174 'websiteUrl' => get_bloginfo('url'),
175 'websiteName' => get_bloginfo('sitename'),
176 'addons' => $this->onboardingSettingsRepository->get('addons') ?: [],
177 ];
178
179 EnqueueScript::make(
180 'give-admin-onboarding-wizard-app',
181 'assets/dist/js/admin-onboarding-wizard.js'
182 )->loadInFooter()
183 ->registerTranslations()
184 ->registerLocalizeData('giveOnboardingWizardData', $data)
185 ->enqueue();
186 }
187
188 public function redirect()
189 {
190 // Bail if no activation redirect
191 if (!\Give_Cache::get('_give_activation_redirect', true) || wp_doing_ajax()) {
192 return;
193 }
194
195 // Delete the redirect transient
196 \Give_Cache::delete(\Give_Cache::get_key('_give_activation_redirect'));
197
198 // Bail if activating from network, or bulk
199 if (is_network_admin() || isset($_GET['activate-multi'])) {
200 return;
201 }
202
203 $redirect = add_query_arg('page', 'give-onboarding-wizard', admin_url());
204
205 $upgrade = get_option('give_version_upgraded_from');
206
207 if (!$upgrade) {
208 // First time install
209 wp_safe_redirect($redirect);
210 exit;
211 }
212 }
213 }
214
215 register_meta('user', 'marketing_optin', [
216 'type' => 'string',
217 'show_in_rest' => true,
218 'single' => true,
219 ]);
220