PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.19.7
GiveWP – Donation Plugin and Fundraising Platform v2.19.7
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
217 lines
1 <?php
2
3 namespace Give\Onboarding\Wizard;
4
5 defined('ABSPATH') || exit;
6
7 use Give\Helpers\EnqueueScript;
8 use Give\Onboarding\FormRepository;
9 use Give\Onboarding\Helpers\FormatList;
10 use Give\Onboarding\Helpers\LocationList;
11 use Give\Onboarding\LocaleCollection;
12 use Give\Onboarding\SettingsRepositoryFactory;
13 use Give\Onboarding\Setup\Page as SetupPage;
14
15 /**
16 * Onboarding Wizard admin page class
17 *
18 * Responsible for setting up and rendering Onboarding Wizard page at
19 * wp-admin/?page=give-onboarding-wizard
20 *
21 * @since 2.8.0
22 */
23 class Page
24 {
25
26 /** @var string $slug Page slug used for displaying onboarding wizard */
27 protected $slug = 'give-onboarding-wizard';
28
29 /** @var FormRepository */
30 protected $formRepository;
31
32 /** @var SettingsRepository */
33 protected $settingsRepository;
34
35 /** @var SettingsRepository */
36 protected $onboardingSettingsRepository;
37
38 /** @var LocaleCollection */
39 protected $localeCollection;
40
41 /**
42 * @param FormRepository $formRepository
43 * @param SettingsRepositoryFactory $settingsRepositoryFactory
44 */
45 public function __construct(
46 FormRepository $formRepository,
47 SettingsRepositoryFactory $settingsRepositoryFactory,
48 LocaleCollection $localeCollection
49 ) {
50 $this->formRepository = $formRepository;
51 $this->settingsRepository = $settingsRepositoryFactory->make('give_settings');
52 $this->onboardingSettingsRepository = $settingsRepositoryFactory->make('give_onboarding');
53 $this->localeCollection = $localeCollection;
54 }
55
56 /**
57 * Adds Onboarding Wizard as dashboard page
58 *
59 * Register Onboarding Wizard as an admin page route
60 *
61 * @since 2.8.0
62 **/
63 public function add_page()
64 {
65 add_submenu_page('', '', '', 'manage_options', $this->slug);
66 }
67
68 /**
69 * Conditionally renders Onboarding Wizard
70 *
71 * If the current page query matches the onboarding wizard's slug, method renders the onboarding wizard.
72 *
73 * @since 2.8.0
74 **/
75 public function setup_wizard()
76 {
77 if (empty($_GET['page']) || $this->slug !== $_GET['page']) { // WPCS: CSRF ok, input var ok.
78 return;
79 } else {
80 $this->render_page();
81 }
82 }
83
84 /**
85 * Renders onboarding wizard markup
86 *
87 * Uses an object buffer to display the onboarding wizard template
88 *
89 * @since 2.8.0
90 **/
91 public function render_page()
92 {
93 ob_start();
94 include_once plugin_dir_path(__FILE__) . 'templates/index.php';
95 exit;
96 }
97
98 /**
99 * Enqueues onboarding wizard scripts/styles
100 *
101 * Enqueues scripts/styles necessary for loading the Onboarding Wizard React app,
102 * and localizes some additional data for the app to access.
103 *
104 * @since 2.8.0
105 **/
106 public function enqueue_scripts()
107 {
108 global $current_user;
109
110 if (empty($_GET['page']) || $this->slug !== $_GET['page']) { // WPCS: CSRF ok, input var ok.
111 return;
112 }
113
114 wp_enqueue_style(
115 'give-google-font-montserrat',
116 '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',
117 [],
118 null
119 );
120
121 wp_enqueue_style(
122 'give-google-font-open-sans',
123 'https://fonts.googleapis.com/css2?family=Open+Sans:wght@600&display=swap',
124 [],
125 null
126 );
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 admin_url('edit.php?post_type=give_forms'),
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