/** * Gets the default payment gateway selected from the Give Settings * * @since 1.0 * @global $give_options Array of all the Give Options * * @param $form_id int ID of the Give Form * * @return string Gateway ID */ function give_get_default_gateway($form_id) { global $give_options; $default = isset($give_options['default_gateway']) && give_is_gateway_active($give_options['default_gateway']) ? $give_options['default_gateway'] : 'paypal'; $form_default = get_post_meta($form_id, '_give_default_gateway', true); //Single Form settings varies compared to the Global default settings if (!empty($form_default) && $form_id !== null && $default !== $form_default && $form_default !== 'global' && give_is_gateway_active($form_default)) { $default = $form_default; } return apply_filters('give_default_gateway', $default); }
/** * Get system info * * @since 1.0 * @access public * @global object $wpdb Used to query the database using the WordPress Database API * @global array $give_options Array of all Give options * @return string $return A string containing the info to output */ function give_tools_sysinfo_get() { global $wpdb, $give_options; if (!class_exists('Browser')) { require_once GIVE_PLUGIN_DIR . 'includes/libraries/browser.php'; } $browser = new Browser(); // Get theme info if (get_bloginfo('version') < '3.4') { $theme_data = get_theme_data(get_stylesheet_directory() . '/style.css'); $theme = $theme_data['Name'] . ' ' . $theme_data['Version']; } else { $theme_data = wp_get_theme(); $theme = $theme_data->Name . ' ' . $theme_data->Version; } // Try to identify the hosting provider $host = give_get_host(); $return = '### Begin System Info ###' . "\n\n"; // Start with the basics... $return .= '-- Site Info' . "\n\n"; $return .= 'Site URL: ' . site_url() . "\n"; $return .= 'Home URL: ' . home_url() . "\n"; $return .= 'Multisite: ' . (is_multisite() ? 'Yes' : 'No') . "\n"; $return = apply_filters('give_sysinfo_after_site_info', $return); // Can we determine the site's host? if ($host) { $return .= "\n" . '-- Hosting Provider' . "\n\n"; $return .= 'Host: ' . $host . "\n"; $return = apply_filters('give_sysinfo_after_host_info', $return); } // The local users' browser information, handled by the Browser class $return .= "\n" . '-- User Browser' . "\n\n"; $return .= $browser; $return = apply_filters('give_sysinfo_after_user_browser', $return); // WordPress configuration $return .= "\n" . '-- WordPress Configuration' . "\n\n"; $return .= 'Version: ' . get_bloginfo('version') . "\n"; $return .= 'Language: ' . (defined('WPLANG') && WPLANG ? WPLANG : 'en_US') . "\n"; $return .= 'Permalink Structure: ' . (get_option('permalink_structure') ? get_option('permalink_structure') : 'Default') . "\n"; $return .= 'Active Theme: ' . $theme . "\n"; $return .= 'Show On Front: ' . get_option('show_on_front') . "\n"; // Only show page specs if frontpage is set to 'page' if (get_option('show_on_front') == 'page') { $front_page_id = get_option('page_on_front'); $blog_page_id = get_option('page_for_posts'); $return .= 'Page On Front: ' . ($front_page_id != 0 ? get_the_title($front_page_id) . ' (#' . $front_page_id . ')' : 'Unset') . "\n"; $return .= 'Page For Posts: ' . ($blog_page_id != 0 ? get_the_title($blog_page_id) . ' (#' . $blog_page_id . ')' : 'Unset') . "\n"; } // Make sure wp_remote_post() is working $request['cmd'] = '_notify-validate'; $params = array('sslverify' => false, 'timeout' => 60, 'user-agent' => 'Give/' . GIVE_VERSION, 'body' => $request); $response = wp_remote_post('https://www.paypal.com/cgi-bin/webscr', $params); if (!is_wp_error($response) && $response['response']['code'] >= 200 && $response['response']['code'] < 300) { $WP_REMOTE_POST = 'wp_remote_post() works'; } else { $WP_REMOTE_POST = 'wp_remote_post() does not work'; } $return .= 'Remote Post: ' . $WP_REMOTE_POST . "\n"; $return .= 'Table Prefix: ' . 'Length: ' . strlen($wpdb->prefix) . ' Status: ' . (strlen($wpdb->prefix) > 16 ? 'ERROR: Too long' : 'Acceptable') . "\n"; $return .= 'Admin AJAX: ' . (give_test_ajax_works() ? 'Accessible' : 'Inaccessible') . "\n"; $return .= 'WP_DEBUG: ' . (defined('WP_DEBUG') ? WP_DEBUG ? 'Enabled' : 'Disabled' : 'Not set') . "\n"; $return .= 'Memory Limit: ' . WP_MEMORY_LIMIT . "\n"; $return .= 'Registered Post Stati: ' . implode(', ', get_post_stati()) . "\n"; $return = apply_filters('give_sysinfo_after_wordpress_config', $return); // GIVE configuration $return .= "\n" . '-- Give Configuration' . "\n\n"; $return .= 'Version: ' . GIVE_VERSION . "\n"; $return .= 'Upgraded From: ' . get_option('give_version_upgraded_from', 'None') . "\n"; $return .= 'Test Mode: ' . (give_is_test_mode() ? "Enabled\n" : "Disabled\n"); $return .= 'Currency Code: ' . give_get_currency() . "\n"; $return .= 'Currency Position: ' . give_get_option('currency_position', 'before') . "\n"; $return .= 'Decimal Separator: ' . give_get_option('decimal_separator', '.') . "\n"; $return .= 'Thousands Separator: ' . give_get_option('thousands_separator', ',') . "\n"; $return = apply_filters('give_sysinfo_after_give_config', $return); // GIVE pages $return .= "\n" . '-- Give Page Configuration' . "\n\n"; $return .= 'Success Page: ' . (!empty($give_options['success_page']) ? get_permalink($give_options['success_page']) . "\n" : "Unset\n"); $return .= 'Failure Page: ' . (!empty($give_options['failure_page']) ? get_permalink($give_options['failure_page']) . "\n" : "Unset\n"); $return .= 'Give Forms Slug: ' . (defined('GIVE_SLUG') ? '/' . GIVE_SLUG . "\n" : "/donations\n"); $return = apply_filters('give_sysinfo_after_give_pages', $return); // GIVE gateways $return .= "\n" . '-- Give Gateway Configuration' . "\n\n"; $active_gateways = give_get_enabled_payment_gateways(); if ($active_gateways) { $default_gateway_is_active = give_is_gateway_active(give_get_default_gateway(null)); if ($default_gateway_is_active) { $default_gateway = give_get_default_gateway(null); $default_gateway = $active_gateways[$default_gateway]['admin_label']; } else { $default_gateway = 'Test Payment'; } $gateways = array(); foreach ($active_gateways as $gateway) { $gateways[] = $gateway['admin_label']; } $return .= 'Enabled Gateways: ' . implode(', ', $gateways) . "\n"; $return .= 'Default Gateway: ' . $default_gateway . "\n"; } else { $return .= 'Enabled Gateways: None' . "\n"; } $return = apply_filters('give_sysinfo_after_give_gateways', $return); // GIVE Templates $dir = get_stylesheet_directory() . '/give_templates/*'; if (is_dir($dir) && count(glob("{$dir}/*")) !== 0) { $return .= "\n" . '-- Give Template Overrides' . "\n\n"; foreach (glob($dir) as $file) { $return .= 'Filename: ' . basename($file) . "\n"; } $return = apply_filters('give_sysinfo_after_give_templates', $return); } // Must-use plugins $muplugins = get_mu_plugins(); if (count($muplugins > 0)) { $return .= "\n" . '-- Must-Use Plugins' . "\n\n"; foreach ($muplugins as $plugin => $plugin_data) { $return .= $plugin_data['Name'] . ': ' . $plugin_data['Version'] . "\n"; } $return = apply_filters('give_sysinfo_after_wordpress_mu_plugins', $return); } // WordPress active plugins $return .= "\n" . '-- WordPress Active Plugins' . "\n\n"; $plugins = get_plugins(); $active_plugins = get_option('active_plugins', array()); foreach ($plugins as $plugin_path => $plugin) { if (!in_array($plugin_path, $active_plugins)) { continue; } $return .= $plugin['Name'] . ': ' . $plugin['Version'] . "\n"; } $return = apply_filters('give_sysinfo_after_wordpress_plugins', $return); // WordPress inactive plugins $return .= "\n" . '-- WordPress Inactive Plugins' . "\n\n"; foreach ($plugins as $plugin_path => $plugin) { if (in_array($plugin_path, $active_plugins)) { continue; } $return .= $plugin['Name'] . ': ' . $plugin['Version'] . "\n"; } $return = apply_filters('give_sysinfo_after_wordpress_plugins_inactive', $return); if (is_multisite()) { // WordPress Multisite active plugins $return .= "\n" . '-- Network Active Plugins' . "\n\n"; $plugins = wp_get_active_network_plugins(); $active_plugins = get_site_option('active_sitewide_plugins', array()); foreach ($plugins as $plugin_path) { $plugin_base = plugin_basename($plugin_path); if (!array_key_exists($plugin_base, $active_plugins)) { continue; } $plugin = get_plugin_data($plugin_path); $return .= $plugin['Name'] . ': ' . $plugin['Version'] . "\n"; } $return = apply_filters('give_sysinfo_after_wordpress_ms_plugins', $return); } // Server configuration (really just versioning) $return .= "\n" . '-- Webserver Configuration' . "\n\n"; $return .= 'PHP Version: ' . PHP_VERSION . "\n"; $return .= 'MySQL Version: ' . $wpdb->db_version() . "\n"; $return .= 'Webserver Info: ' . $_SERVER['SERVER_SOFTWARE'] . "\n"; $return = apply_filters('give_sysinfo_after_webserver_config', $return); // PHP configs... now we're getting to the important stuff $return .= "\n" . '-- PHP Configuration' . "\n\n"; $return .= 'Safe Mode: ' . (ini_get('safe_mode') ? 'Enabled' : 'Disabled' . "\n"); $return .= 'Memory Limit: ' . ini_get('memory_limit') . "\n"; $return .= 'Upload Max Size: ' . ini_get('upload_max_filesize') . "\n"; $return .= 'Post Max Size: ' . ini_get('post_max_size') . "\n"; $return .= 'Upload Max Filesize: ' . ini_get('upload_max_filesize') . "\n"; $return .= 'Time Limit: ' . ini_get('max_execution_time') . "\n"; $return .= 'Max Input Vars: ' . ini_get('max_input_vars') . "\n"; $return .= 'Display Errors: ' . (ini_get('display_errors') ? 'On (' . ini_get('display_errors') . ')' : 'N/A') . "\n"; $return = apply_filters('give_sysinfo_after_php_config', $return); // PHP extensions and such $return .= "\n" . '-- PHP Extensions' . "\n\n"; $return .= 'cURL: ' . (function_exists('curl_init') ? 'Supported' : 'Not Supported') . "\n"; $return .= 'fsockopen: ' . (function_exists('fsockopen') ? 'Supported' : 'Not Supported') . "\n"; $return .= 'SOAP Client: ' . (class_exists('SoapClient') ? 'Installed' : 'Not Installed') . "\n"; $return .= 'Suhosin: ' . (extension_loaded('suhosin') ? 'Installed' : 'Not Installed') . "\n"; $return = apply_filters('give_sysinfo_after_php_ext', $return); // Session stuff $return .= "\n" . '-- Session Configuration' . "\n\n"; $return .= 'Give Use Sessions: ' . (defined('GIVE_USE_PHP_SESSIONS') && GIVE_USE_PHP_SESSIONS ? 'Enforced' : (Give()->session->use_php_sessions() ? 'Enabled' : 'Disabled')) . "\n"; $return .= 'Session: ' . (isset($_SESSION) ? 'Enabled' : 'Disabled') . "\n"; // The rest of this is only relevant is session is enabled if (isset($_SESSION)) { $return .= 'Session Name: ' . esc_html(ini_get('session.name')) . "\n"; $return .= 'Cookie Path: ' . esc_html(ini_get('session.cookie_path')) . "\n"; $return .= 'Save Path: ' . esc_html(ini_get('session.save_path')) . "\n"; $return .= 'Use Cookies: ' . (ini_get('session.use_cookies') ? 'On' : 'Off') . "\n"; $return .= 'Use Only Cookies: ' . (ini_get('session.use_only_cookies') ? 'On' : 'Off') . "\n"; } $return = apply_filters('give_sysinfo_after_session_config', $return); $return .= "\n" . '### End System Info ###'; return $return; }
/** * Purchase Form Validate Gateway * * Validate the gateway and donation amount * * @access private * @since 1.0 * @return string */ function give_purchase_form_validate_gateway() { $form_id = isset($_REQUEST['give-form-id']) ? $_REQUEST['give-form-id'] : 0; $amount = isset($_REQUEST['give-amount']) ? give_sanitize_amount($_REQUEST['give-amount']) : 0; $gateway = give_get_default_gateway($form_id); // Check if a gateway value is present if (!empty($_REQUEST['give-gateway'])) { $gateway = sanitize_text_field($_REQUEST['give-gateway']); //Is amount being donated in LIVE mode 0.00? If so, error: if ($amount == 0 && !give_is_test_mode()) { give_set_error('invalid_donation_amount', esc_html__('Please insert a valid donation amount.', 'give')); } elseif (!give_verify_minimum_price()) { give_set_error('invalid_donation_minimum', sprintf(esc_html__('This form has a minimum donation amount of %s.', 'give'), give_currency_filter(give_format_amount(give_get_form_minimum_price($form_id))))); } elseif ($amount == 0 && give_is_test_mode()) { $gateway = 'manual'; } elseif (!give_is_gateway_active($gateway)) { give_set_error('invalid_gateway', esc_html__('The selected payment gateway is not enabled.', 'give')); } } return $gateway; }
/** * Purchase Form Validate Gateway * * @access private * @since 1.0 * @return string */ function give_purchase_form_validate_gateway() { $gateway = give_get_default_gateway($_REQUEST['give-form-id']); // Check if a gateway value is present if (!empty($_REQUEST['give-gateway'])) { $gateway = sanitize_text_field($_REQUEST['give-gateway']); if ('0.00' == $_REQUEST['give-amount']) { $gateway = 'manual'; } elseif (!give_is_gateway_active($gateway)) { give_set_error('invalid_gateway', __('The selected payment gateway is not enabled', 'give')); } } return $gateway; }
/** * Register gateway settings * * @since 1.0 * @return array */ function give_offline_add_settings($settings) { //Vars $prefix = '_give_'; $is_gateway_active = give_is_gateway_active('offline'); //this gateway isn't active if (!$is_gateway_active) { //return settings and bounce return $settings; } //Fields $check_settings = array(array('name' => __('Customize Offline Donations', 'give'), 'desc' => __('If you would like to customize the donation instructions for this specific forms check this option.', 'give'), 'id' => $prefix . 'customize_offline_donations', 'type' => 'radio_inline', 'default' => 'no', 'options' => array('yes' => __('Yes', 'give'), 'no' => __('No', 'give'))), array('name' => __('Request Billing Information', 'give'), 'desc' => __('This option will enable the billing details section for this form\'s offline donation payment gateway. The fieldset will appear above the offline donation instructions.', 'give'), 'id' => $prefix . 'offline_donation_enable_billing_fields_single', 'row_classes' => 'give-subfield', 'type' => 'checkbox'), array('id' => $prefix . 'offline_checkout_notes', 'name' => __('Offline Donation Instructions', 'give'), 'desc' => __('Enter the instructions you want to display to the donor during the donation process. Most likely this would include important information like mailing address and who to make the check out to.', 'give'), 'default' => give_get_default_offline_donation_content(), 'type' => 'wysiwyg', 'row_classes' => 'give-subfield', 'options' => array('textarea_rows' => 6)), array('id' => $prefix . 'offline_donation_subject', 'name' => __('Offline Donation Email Instructions Subject', 'give'), 'desc' => __('Enter the subject line for the donation receipt email.', 'give'), 'default' => __('{donation} - Offline Donation Instructions', 'give'), 'row_classes' => 'give-subfield', 'type' => 'text'), array('id' => $prefix . 'offline_donation_email', 'name' => __('Offline Donation Email Instructions', 'give'), 'desc' => __('Enter the instructions you want emailed to the donor after they have submitted the donation form. Most likely this would include important information like mailing address and who to make the check out to.', 'give'), 'default' => give_get_default_offline_donation_email_content(), 'type' => 'wysiwyg', 'row_classes' => 'give-subfield', 'options' => array('textarea_rows' => 6))); return array_merge($settings, $check_settings); }
/** * Purchase Form Validate Gateway * * @access private * @since 1.0 * @return string */ function give_purchase_form_validate_gateway() { $gateway = give_get_default_gateway($_REQUEST['give-form-id']); // Check if a gateway value is present if (!empty($_REQUEST['give-gateway'])) { $gateway = sanitize_text_field($_REQUEST['give-gateway']); //Is amount being donated in LIVE mode above 0.00? if ('0.00' == $_REQUEST['give-amount'] && !give_is_test_mode()) { give_set_error('invalid_donation_amount', __('Please insert a valid donation amount.', 'give')); } elseif (!give_verify_minimum_price()) { $minimum = give_currency_filter(give_format_amount(give_get_form_minimum_price($_REQUEST['give-form-id']))); $error_message = __('This form has a minimum donation amount of %s', 'give'); give_set_error('invalid_donation_minimum', sprintf($error_message, $minimum)); } elseif ('0.00' == $_REQUEST['give-amount'] && give_is_test_mode()) { $gateway = 'manual'; } elseif (!give_is_gateway_active($gateway)) { give_set_error('invalid_gateway', __('The selected payment gateway is not enabled', 'give')); } } return $gateway; }
/** * Purchase Form Validate Gateway * * @access private * @since 1.0 * @return string */ function give_purchase_form_validate_gateway() { $gateway = give_get_default_gateway($_REQUEST['give-form-id']); // Check if a gateway value is present if (!empty($_REQUEST['give-gateway'])) { $gateway = sanitize_text_field($_REQUEST['give-gateway']); //Is amount being donated in LIVE mode above 0.00? if ('0.00' == $_REQUEST['give-amount'] && !give_is_test_mode()) { give_set_error('invalid_donation_amount', __('Please insert a valid donation amount.', 'give')); } elseif ('0.00' == $_REQUEST['give-amount'] && give_is_test_mode()) { $gateway = 'manual'; } elseif (!give_is_gateway_active($gateway)) { give_set_error('invalid_gateway', __('The selected payment gateway is not enabled', 'give')); } } return $gateway; }