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')); }
/** * 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; }
/** * 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'); } }