post_type ) { $this->campaign = new Charitable_Campaign( $post ); } else { unset( $this->campaign, $this->campaign_id ); } } /** * Returns the current campaign. If there is no current campaign, return false. * * @since 1.0.0 * * @return Charitable_Campaign|false Campaign object if we're viewing a campaign within a loop. False otherwise. */ public function get_current_campaign() { if ( ! isset( $this->campaign ) ) { if ( $this->get_current_campaign_id() > 0 ) { $this->campaign = new Charitable_Campaign( $this->get_current_campaign_id() ); } else { $this->campaign = false; } } return $this->campaign; } /** * Returns the current campaign ID. If there is no current campaign, return 0. * * @since 1.0.0 * * @return int */ public function get_current_campaign_id() { if ( isset( $this->campaign ) && $this->campaign ) { $this->campaign_id = $this->campaign->ID; } else { $this->campaign_id = 0; if ( get_post_type() == Charitable::CAMPAIGN_POST_TYPE ) { $this->campaign_id = get_the_ID(); } elseif ( get_query_var( 'donate', false ) ) { $session_donation = charitable_get_session()->get( 'donation' ); if ( false !== $session_donation ) { $this->campaign_id = $session_donation->get( 'campaign_id' ); } } }//end if if ( ! $this->campaign_id ) { $this->campaign_id = $this->get_campaign_id_from_submission(); } return $this->campaign_id; } /** * Returns the campaign ID from a form submission. * * @since 1.0.0 * * @return int */ public function get_campaign_id_from_submission() { if ( ! isset( $_POST['campaign_id'] ) ) { return 0; } $campaign_id = absint( $_POST['campaign_id'] ); if ( Charitable::CAMPAIGN_POST_TYPE !== get_post_type( $campaign_id ) ) { return 0; } return $campaign_id; } /** * Returns the current donation object. If there is no current donation, return false. * * @since 1.0.0 * * @return Charitable_Donation|false */ public function get_current_donation() { if ( ! isset( $this->donation ) ) { $donation_id = $this->get_current_donation_id(); $this->donation = $donation_id ? charitable_get_donation( $donation_id ) : false; } return $this->donation; } /** * Returns the current donation ID. If there is no current donation, return 0. * * @since 1.0.0 * * @return int */ public function get_current_donation_id() { $donation_id = get_query_var( 'donation_id', 0 ); if ( ! $donation_id && isset( $_GET['donation_id'] ) ) { $donation_id = $_GET['donation_id']; } return $donation_id; } /** * If set, add supported donation parameters to the session. * * @since 1.6.25 * * @param int $campaign_id The campaign receiving the donation. * @return void */ public function add_donation_params_to_session( $campaign_id ) { if ( array_key_exists( 'amount', $_REQUEST ) ) { $period = array_key_exists( 'period', $_REQUEST ) ? $_REQUEST['period'] : 'once'; charitable_get_session()->add_donation( $campaign_id, $_REQUEST['amount'], $period ); } } } endif;