Server IP : 192.158.238.246 / Your IP : 3.16.42.17 Web Server : LiteSpeed System : Linux uniform.iwebfusion.net 4.18.0-553.27.1.lve.1.el8.x86_64 #1 SMP Wed Nov 20 15:58:00 UTC 2024 x86_64 User : jenniferflocom ( 1321) PHP Version : 8.1.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/7779/task/7779/cwd/plugins/give/src/Onboarding/Wizard/ |
Upload File : |
<?php namespace Give\Onboarding\Wizard; defined('ABSPATH') || exit; use Give\DonationForms\V2\DonationFormsAdminPage; use Give\Helpers\EnqueueScript; use Give\Onboarding\FormRepository; use Give\Onboarding\Helpers\FormatList; use Give\Onboarding\Helpers\LocationList; use Give\Onboarding\LocaleCollection; use Give\Onboarding\SettingsRepository; use Give\Onboarding\SettingsRepositoryFactory; use Give\Onboarding\Setup\Page as SetupPage; /** * Onboarding Wizard admin page class * * Responsible for setting up and rendering Onboarding Wizard page at * wp-admin/?page=give-onboarding-wizard * * @since 2.8.0 */ class Page { /** @var string $slug Page slug used for displaying onboarding wizard */ protected $slug = 'give-onboarding-wizard'; /** @var FormRepository */ protected $formRepository; /** @var SettingsRepository */ protected $settingsRepository; /** @var SettingsRepository */ protected $onboardingSettingsRepository; /** @var LocaleCollection */ protected $localeCollection; /** * @param FormRepository $formRepository * @param SettingsRepositoryFactory $settingsRepositoryFactory * @param LocaleCollection $localeCollection */ public function __construct( FormRepository $formRepository, SettingsRepositoryFactory $settingsRepositoryFactory, LocaleCollection $localeCollection ) { $this->formRepository = $formRepository; $this->settingsRepository = $settingsRepositoryFactory->make('give_settings'); $this->onboardingSettingsRepository = $settingsRepositoryFactory->make('give_onboarding'); $this->localeCollection = $localeCollection; } /** * Adds Onboarding Wizard as dashboard page * * Register Onboarding Wizard as an admin page route * * @since 2.8.0 * @since 3.14.0 change capability to manage_give_settings **/ public function add_page() { add_submenu_page('', '', '', 'manage_give_settings', $this->slug); } /** * Conditionally renders Onboarding Wizard * * If the current page query matches the onboarding wizard's slug, method renders the onboarding wizard. * * @since 2.8.0 * @since 3.14.0 add user capability check **/ public function setup_wizard() { if (empty($_GET['page']) || $this->slug !== $_GET['page'] || ! current_user_can('manage_give_settings')) { // WPCS: CSRF ok, input var ok. return; } else { $this->render_page(); } } /** * Renders onboarding wizard markup * * Uses an object buffer to display the onboarding wizard template * * @since 2.8.0 **/ public function render_page() { ob_start(); include_once plugin_dir_path(__FILE__) . 'templates/index.php'; exit; } /** * Enqueues onboarding wizard scripts/styles * * Enqueues scripts/styles necessary for loading the Onboarding Wizard React app, * and localizes some additional data for the app to access. * * @since 2.8.0 **/ public function enqueue_scripts() { global $current_user; if (empty($_GET['page']) || $this->slug !== $_GET['page']) { // WPCS: CSRF ok, input var ok. return; } wp_enqueue_style( 'give-google-font-montserrat', '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', [], null ); wp_enqueue_style('givewp-admin-fonts'); $formID = $this->formRepository->getDefaultFormID(); $formPreviewUrl = home_url('/?givewp-route=donation-form-view&form-id='); $featureGoal = get_post_meta($formID, '_give_goal_option', true); $featureComments = get_post_meta($formID, '_give_donor_comment', true); $featureTerms = get_post_meta($formID, '_give_terms_option', true); $offlineDonations = get_post_meta($formID, '_give_customize_offline_donations', true); $featureAnonymous = get_post_meta($formID, '_give_anonymous_donation', true); $featureCompany = get_post_meta($formID, '_give_company_field', true); $currency = $this->settingsRepository->get('currency') ?: 'USD'; $baseCountry = $this->settingsRepository->get('base_country') ?: 'US'; $baseState = $this->settingsRepository->get('base_state') ?: ''; $data = [ 'apiRoot' => esc_url_raw(rest_url()), 'apiNonce' => wp_create_nonce('wp_rest'), 'setupUrl' => SetupPage::getSetupPageEnabledOrDisabled() === SetupPage::ENABLED ? admin_url('edit.php?post_type=give_forms&page=give-setup') : DonationFormsAdminPage::getUrl(), 'formPreviewUrl' => $formPreviewUrl, 'localeCurrency' => $this->localeCollection->pluck('currency_code'), 'currencies' => FormatList::fromKeyValue(give_get_currencies_list()), 'currencySelected' => $currency, 'countries' => LocationList::getCountries(), 'countrySelected' => $baseCountry, 'states' => LocationList::getStates($baseCountry), 'stateSelected' => $baseState, 'features' => FormatList::fromValueKey( [ 'donation-goal' => ('enabled' === $featureGoal), 'donation-comments' => ('enabled' === $featureComments), 'terms-conditions' => ('enabled' === $featureTerms), 'offline-donations' => ('enabled' === $offlineDonations), 'anonymous-donations' => ('enabled' === $featureAnonymous), 'company-donations' => in_array($featureCompany, ['required', 'optional']), // Note: The company field has two values for enabled, "required" and "optional". ] ), 'causeTypes' => FormatList::fromKeyValue( include GIVE_PLUGIN_DIR . 'src/Onboarding/Config/CauseTypes.php' ), 'adminEmail' => $current_user->user_email, 'adminFirstName' => $current_user->first_name, 'adminLastName' => $current_user->last_name, 'adminUserID' => $current_user->ID, 'websiteUrl' => get_bloginfo('url'), 'websiteName' => get_bloginfo('sitename'), 'addons' => $this->onboardingSettingsRepository->get('addons') ?: [], ]; EnqueueScript::make( 'give-admin-onboarding-wizard-app', 'assets/dist/js/admin-onboarding-wizard.js' )->loadInFooter() ->registerTranslations() ->registerLocalizeData('giveOnboardingWizardData', $data) ->enqueue(); } public function redirect() { // Bail if no activation redirect if (!\Give_Cache::get('_give_activation_redirect', true) || wp_doing_ajax()) { return; } // Delete the redirect transient \Give_Cache::delete(\Give_Cache::get_key('_give_activation_redirect')); // Bail if activating from network, or bulk if (is_network_admin() || isset($_GET['activate-multi'])) { return; } $redirect = add_query_arg('page', 'give-onboarding-wizard', admin_url()); $upgrade = get_option('give_version_upgraded_from'); if (!$upgrade) { // First time install wp_safe_redirect($redirect); exit; } } } register_meta('user', 'marketing_optin', [ 'type' => 'string', 'show_in_rest' => true, 'single' => true, ]);