/** Save donation data metabox */ public function save_donation_data($donation_id) { // Maybe donation is inserted trough API: if (empty($_POST['post_type']) || $_POST['post_type'] != Leyka_Donation_Management::$post_type) { return false; } if (empty($_POST['_donation_edit_nonce']) || !wp_verify_nonce($_POST['_donation_edit_nonce'], 'donation_status_metabox')) { return $donation_id; } if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return $donation_id; } if (!current_user_can('edit_donation', $donation_id)) { return $donation_id; } remove_action('save_post', array($this, 'save_donation_data')); $donation = new Leyka_Donation($donation_id); if ($donation->status != $_POST['donation_status']) { $donation->status = $_POST['donation_status']; } if (isset($_POST['campaign-id']) && $donation->campaign_id != (int) $_POST['campaign-id']) { $old_campaign = new Leyka_Campaign($donation->campaign_id); $new_campaign = new Leyka_Campaign((int) $_POST['campaign-id']); $donation->campaign_id = (int) $_POST['campaign-id']; $old_campaign->update_total_funded_amount($donation)->refresh_target_state(); $new_campaign->update_total_funded_amount($donation)->refresh_target_state(); } // It's a new correction donation, set a title from it's campaign: $campaign = new Leyka_Campaign($donation->campaign_id); $donation_title = $campaign->payment_title ? $campaign->payment_title : ($campaign->title ? $campaign->title : sprintf(__('Donation #%s', 'leyka'), $donation_id)); if ($donation->title != $donation_title) { $donation->title = $donation_title; } if (isset($_POST['donor-name']) && $donation->donor_name != $_POST['donor-name']) { $donation->donor_name = $_POST['donor-name']; } if (isset($_POST['donor-email']) && $donation->donor_email != $_POST['donor-email']) { $donation->donor_email = $_POST['donor-email']; } if (isset($_POST['donation-amount']) && (double) $donation->amount != (double) $_POST['donation-amount']) { $donation->amount = (double) $_POST['donation-amount']; } if (!$donation->currency) { $donation->currency = 'rur'; } if (isset($_POST['donation-pm']) && ($donation->pm != $_POST['donation-pm'] || $_POST['donation-pm'] == 'custom')) { if ($_POST['donation-pm'] == 'custom') { $donation->gateway_id = ''; if ($donation->pm_id != $_POST['custom-payment-info']) { $donation->pm_id = $_POST['custom-payment-info']; } } else { $parts = explode('-', $_POST['donation-pm']); $donation->gateway_id = $parts[0]; $donation->pm = $parts[1]; } } if (isset($_POST['donation_date']) && $donation->date_timestamp != strtotime($_POST['donation_date'])) { $donation->date = $_POST['donation_date']; } if (isset($_POST['payment-type']) && $donation->payment_type != $_POST['payment-type']) { $donation->payment_type = $_POST['payment-type']; } do_action("leyka_{$donation->gateway_id}_save_donation_data", $donation); add_action('save_post', array($this, 'save_donation_data')); return true; }
function leyka_recalculate_total_funded_action() { if (!wp_verify_nonce($_GET['nonce'], 'leyka_recalculate_total_funded_amount')) { wp_die(__('Error: incorrect request parameters', 'leyka')); } if (empty($_GET['campaign_id'])) { wp_die(__('Error: campaign ID is missing', 'leyka')); } $campaign = new Leyka_Campaign((int) $_GET['campaign_id']); $campaign->update_total_funded_amount(); wp_die($campaign->total_funded); }
function leyka_update_campaigns_total_funded() { set_time_limit(3600); wp_suspend_cache_addition(true); $campaigns = get_posts(array('post_type' => Leyka_Campaign_Management::$post_type, 'nopaging' => true, 'post_status' => 'any')); foreach ($campaigns as $campaign) { $campaign = new Leyka_Campaign($campaign); $campaign->update_total_funded_amount(); } wp_suspend_cache_addition(false); }