PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.27.0
GiveWP – Donation Plugin and Fundraising Platform v2.27.0
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 3 years ago
Page.php
215 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('givewp-admin-fonts');
125
126 $formID = $this->formRepository->getDefaultFormID();
127 $featureGoal = get_post_meta($formID, '_give_goal_option', true);
128 $featureComments = get_post_meta($formID, '_give_donor_comment', true);
129 $featureTerms = get_post_meta($formID, '_give_terms_option', true);
130 $offlineDonations = get_post_meta($formID, '_give_customize_offline_donations', true);
131 $featureAnonymous = get_post_meta($formID, '_give_anonymous_donation', true);
132 $featureCompany = get_post_meta($formID, '_give_company_field', true);
133
134 $currency = $this->settingsRepository->get('currency') ?: 'USD';
135 $baseCountry = $this->settingsRepository->get('base_country') ?: 'US';
136 $baseState = $this->settingsRepository->get('base_state') ?: '';
137 $data = [
138 'apiRoot' => esc_url_raw(rest_url()),
139 'apiNonce' => wp_create_nonce('wp_rest'),
140 'setupUrl' => SetupPage::getSetupPageEnabledOrDisabled() === SetupPage::ENABLED ?
141 admin_url('edit.php?post_type=give_forms&page=give-setup') :
142 DonationFormsAdminPage::getUrl(),
143 'formPreviewUrl' => admin_url('?page=give-form-preview'),
144 'localeCurrency' => $this->localeCollection->pluck('currency_code'),
145 'currencies' => FormatList::fromKeyValue(give_get_currencies_list()),
146 'currencySelected' => $currency,
147 'countries' => LocationList::getCountries(),
148 'countrySelected' => $baseCountry,
149 'states' => LocationList::getStates($baseCountry),
150 'stateSelected' => $baseState,
151 'features' => FormatList::fromValueKey(
152 [
153 'donation-goal' => ('enabled' === $featureGoal),
154 'donation-comments' => ('enabled' === $featureComments),
155 'terms-conditions' => ('enabled' === $featureTerms),
156 'offline-donations' => ('enabled' === $offlineDonations),
157 'anonymous-donations' => ('enabled' === $featureAnonymous),
158 'company-donations' => in_array($featureCompany, ['required', 'optional']),
159 // Note: The company field has two values for enabled, "required" and "optional".
160 ]
161 ),
162 'causeTypes' => FormatList::fromKeyValue(
163 include GIVE_PLUGIN_DIR . 'src/Onboarding/Config/CauseTypes.php'
164 ),
165 'adminEmail' => $current_user->user_email,
166 'adminFirstName' => $current_user->first_name,
167 'adminLastName' => $current_user->last_name,
168 'adminUserID' => $current_user->ID,
169 'websiteUrl' => get_bloginfo('url'),
170 'websiteName' => get_bloginfo('sitename'),
171 'addons' => $this->onboardingSettingsRepository->get('addons') ?: [],
172 ];
173
174 EnqueueScript::make(
175 'give-admin-onboarding-wizard-app',
176 'assets/dist/js/admin-onboarding-wizard.js'
177 )->loadInFooter()
178 ->registerTranslations()
179 ->registerLocalizeData('giveOnboardingWizardData', $data)
180 ->enqueue();
181 }
182
183 public function redirect()
184 {
185 // Bail if no activation redirect
186 if (!\Give_Cache::get('_give_activation_redirect', true) || wp_doing_ajax()) {
187 return;
188 }
189
190 // Delete the redirect transient
191 \Give_Cache::delete(\Give_Cache::get_key('_give_activation_redirect'));
192
193 // Bail if activating from network, or bulk
194 if (is_network_admin() || isset($_GET['activate-multi'])) {
195 return;
196 }
197
198 $redirect = add_query_arg('page', 'give-onboarding-wizard', admin_url());
199
200 $upgrade = get_option('give_version_upgraded_from');
201
202 if (!$upgrade) {
203 // First time install
204 wp_safe_redirect($redirect);
205 exit;
206 }
207 }
208 }
209
210 register_meta('user', 'marketing_optin', [
211 'type' => 'string',
212 'show_in_rest' => true,
213 'single' => true,
214 ]);
215