Esempio n. 1
0
 public function test_upgrade_completion()
 {
     $current_upgrades = give_get_completed_upgrades();
     // Since we mark previous upgrades as complete upon install
     $this->assertTrue(!empty($current_upgrades));
     $this->assertInternalType('array', $current_upgrades);
     $this->assertTrue(give_set_upgrade_complete('test-upgrade-action'));
     $this->assertTrue(give_has_upgrade_completed('test-upgrade-action'));
     $this->assertFalse(give_has_upgrade_completed('test-upgrade-action-false'));
 }
Esempio n. 2
0
/**
 * Install
 *
 * Runs on plugin install by setting up the post types, custom taxonomies, flushing rewrite rules to initiate the new 'donations' slug and also creates the plugin and populates the settings fields for those plugin pages. After successful install, the user is redirected to the Give Welcome screen.
 *
 * @since 1.0
 * @global $wpdb
 * @global $wp_version
 * @return void
 */
function give_install()
{
    global $give_options;
    // Setup the Give Custom Post Types
    give_setup_post_types();
    // Clear the permalinks
    flush_rewrite_rules(false);
    // Add Upgraded From Option
    $current_version = get_option('give_version');
    if ($current_version) {
        update_option('give_version_upgraded_from', $current_version);
    }
    // Setup some default options
    $options = array();
    // Checks if the Success Page option exists AND that the page exists
    if (!get_post(give_get_option('success_page'))) {
        // Purchase Confirmation (Success) Page
        $success = wp_insert_post(array('post_title' => __('Donation Confirmation', 'give'), 'post_content' => __('Thank you for your donation! [give_receipt]', 'give'), 'post_status' => 'publish', 'post_author' => 1, 'post_type' => 'page', 'comment_status' => 'closed'));
        // Store our page IDs
        $options['success_page'] = $success;
    }
    // Checks if the Failure Page option exists AND that the page exists
    if (!get_post(give_get_option('failure_page'))) {
        // Failed Purchase Page
        $failed = wp_insert_post(array('post_title' => __('Transaction Failed', 'give'), 'post_content' => __('Your transaction failed, please try again or contact site support.', 'give'), 'post_status' => 'publish', 'post_author' => 1, 'post_type' => 'page', 'comment_status' => 'closed'));
        $options['failure_page'] = $failed;
    }
    // Checks if the History Page option exists AND that the page exists
    if (!get_post(give_get_option('history_page'))) {
        // Purchase History (History) Page
        $history = wp_insert_post(array('post_title' => __('Donation History', 'give'), 'post_content' => '[donation_history]', 'post_status' => 'publish', 'post_author' => 1, 'post_type' => 'page', 'comment_status' => 'closed'));
        $options['history_page'] = $history;
    }
    //Fresh Install? Setup Test Mode, Base Country (US), Test Gateway, Currency
    if (empty($current_version)) {
        $options['base_country'] = 'US';
        $options['test_mode'] = 1;
        $options['currency'] = 'USD';
        $options['session_lifetime'] = '604800';
        $options['gateways']['manual'] = 1;
        $options['default_gateway'] = 'manual';
        //default is manual
        //Offline Gateway Setup
        $options['gateways']['offline'] = 1;
        $options['global_offline_donation_content'] = give_get_default_offline_donation_content();
        //Emails
        $options['donation_notification'] = give_get_default_donation_notification_email();
    }
    // Populate some default values
    update_option('give_settings', array_merge($give_options, $options));
    update_option('give_version', GIVE_VERSION);
    //Update Version Number
    if ($current_version) {
        update_option('give_version_upgraded_from', $current_version);
    }
    // Create Give roles
    $roles = new Give_Roles();
    $roles->add_roles();
    $roles->add_caps();
    $api = new Give_API();
    update_option('give_default_api_version', 'v' . $api->get_version());
    // Create the customers database
    @Give()->customers->create_table();
    // Check for PHP Session support, and enable if available
    Give()->session->use_php_sessions();
    // Add a temporary option to note that Give pages have been created
    set_transient('_give_installed', $options, 30);
    // Bail if activating from network, or bulk
    if (is_network_admin() || isset($_GET['activate-multi'])) {
        return;
    }
    if (!$current_version) {
        require_once GIVE_PLUGIN_DIR . 'includes/admin/upgrades/upgrade-functions.php';
        // When new upgrade routines are added, mark them as complete on fresh install
        $upgrade_routines = array('upgrade_give_payment_customer_id', 'upgrade_give_offline_status');
        foreach ($upgrade_routines as $upgrade) {
            give_set_upgrade_complete($upgrade);
        }
    }
    // Add the transient to redirect
    set_transient('_give_activation_redirect', true, 30);
}
/**
 * Upgrades the Offline Status
 *
 * @description: Reverses the issue where offline donation transactions in "pending" status where inappropriately marked as abandoned
 *
 * @since      1.3.4
 *
 */
function give_v134_upgrade_give_offline_status()
{
    global $wpdb;
    if (!current_user_can('manage_give_settings')) {
        wp_die(__('You do not have permission to do Give upgrades', 'give'), __('Error', 'give'), array('response' => 403));
    }
    ignore_user_abort(true);
    if (!give_is_func_disabled('set_time_limit') && !ini_get('safe_mode')) {
        @set_time_limit(0);
    }
    // Get abandoned offline payments
    $select = "SELECT ID FROM {$wpdb->posts} p ";
    $join = "LEFT JOIN {$wpdb->postmeta} m ON p.ID = m.post_id ";
    $where = "WHERE p.post_type = 'give_payment' ";
    $where .= "AND ( p.post_status = 'abandoned' )";
    $where .= "AND ( m.meta_key = '_give_payment_gateway' AND m.meta_value = 'offline' )";
    $sql = $select . $join . $where;
    $found_payments = $wpdb->get_col($sql);
    foreach ($found_payments as $payment) {
        //Only change ones marked abandoned since our release last week
        //because the admin may have marked some abandoned themselves
        $modified_time = get_post_modified_time('U', false, $payment);
        //1450124863 =  12/10/2015 20:42:25
        if ($modified_time >= 1450124863) {
            give_update_payment_status($payment, 'pending');
        }
    }
    update_option('give_version', preg_replace('/[^0-9.].*/', '', GIVE_VERSION));
    give_set_upgrade_complete('upgrade_give_offline_status');
    delete_option('give_doing_upgrade');
    wp_redirect(admin_url());
    exit;
}
Esempio n. 4
0
/**
 * Cleanup User Roles
 *
 * This upgrade routine removes unused roles and roles with typos
 *
 * @since      1.5.2
 */
function give_v152_cleanup_users()
{
    $give_version = get_option('give_version');
    if (!$give_version) {
        // 1.0 is the first version to use this option so we must add it
        $give_version = '1.0';
    }
    $give_version = preg_replace('/[^0-9.].*/', '', $give_version);
    //v1.5.2 Upgrades
    if (version_compare($give_version, '1.5.2', '<') || !give_has_upgrade_completed('upgrade_give_user_caps_cleanup')) {
        //Delete all caps with "ss"
        //Also delete all unused "campaign" roles
        $delete_caps = array('delete_give_formss', 'delete_others_give_formss', 'delete_private_give_formss', 'delete_published_give_formss', 'read_private_forms', 'edit_give_formss', 'edit_others_give_formss', 'edit_private_give_formss', 'edit_published_give_formss', 'publish_give_formss', 'read_private_give_formss', 'assign_give_campaigns_terms', 'delete_give_campaigns', 'delete_give_campaigns_terms', 'delete_give_campaignss', 'delete_others_give_campaignss', 'delete_private_give_campaignss', 'delete_published_give_campaignss', 'edit_give_campaigns', 'edit_give_campaigns_terms', 'edit_give_campaignss', 'edit_others_give_campaignss', 'edit_private_give_campaignss', 'edit_published_give_campaignss', 'manage_give_campaigns_terms', 'publish_give_campaignss', 'read_give_campaigns', 'read_private_give_campaignss', 'view_give_campaigns_stats', 'delete_give_paymentss', 'delete_others_give_paymentss', 'delete_private_give_paymentss', 'delete_published_give_paymentss', 'edit_give_paymentss', 'edit_others_give_paymentss', 'edit_private_give_paymentss', 'edit_published_give_paymentss', 'publish_give_paymentss', 'read_private_give_paymentss');
        global $wp_roles;
        foreach ($delete_caps as $cap) {
            foreach (array_keys($wp_roles->roles) as $role) {
                $wp_roles->remove_cap($role, $cap);
            }
        }
        // Create Give plugin roles
        $roles = new Give_Roles();
        $roles->add_roles();
        $roles->add_caps();
        //The Update Ran
        update_option('give_version', preg_replace('/[^0-9.].*/', '', GIVE_VERSION));
        give_set_upgrade_complete('upgrade_give_user_caps_cleanup');
        delete_option('give_doing_upgrade');
    }
}