/**
  * Return the donors to display in the widget.
  *
  * @param   mixed[] $instance
  * @return  array
  * @access  protected
  * @since   1.0.0
  */
 protected function get_widget_donors($instance)
 {
     $query_args = array('number' => $instance['number'], 'output' => 'donors');
     if ('amount' == $instance['order']) {
         $query_args['orderby'] = 'amount';
     }
     if ('current' == $instance['campaign_id']) {
         $query_args['campaign'] = charitable_get_current_campaign_id();
     } elseif ('all' != $instance['campaign_id']) {
         $query_args['campaign'] = intval($instance['campaign_id']);
     }
     $query_args['distinct_donors'] = $instance['show_distinct'];
     $query_args = apply_filters('charitable_donors_widget_donor_query_args', $query_args, $instance);
     return new Charitable_Donor_Query($query_args);
 }
 /**
  * Save the submitted donation.
  *
  * @return  int|false   If successful, this returns the donation ID. If unsuccessful, returns false.
  * @access  public
  * @since   1.0.0
  */
 public function save_donation()
 {
     $campaign_id = charitable_get_current_campaign_id();
     if (!$campaign_id) {
         return 0;
     }
     if (!$this->validate_nonce()) {
         return 0;
     }
     /* Set the donation amount */
     $campaign_id = $this->get_campaign()->ID;
     $amount = parent::get_donation_amount();
     if (0 == $amount && !apply_filters('charitable_permit_empty_donations', false)) {
         charitable_get_notices()->add_error(__('No donation amount was set.', 'charitable'));
         return false;
     }
     /* Create or update the donation object in the session, with the current campaign ID. */
     charitable_get_session()->add_donation($campaign_id, $amount);
     do_action('charitable_donation_amount_form_submit', $campaign_id, $amount);
     return true;
 }
/**
 * Returns whether the current user is the creator of the given campaign.
 *
 * @param   int     $campaign_id
 * @return  boolean
 * @since   1.0.0
 */
function charitable_is_current_campaign_creator($campaign_id = null)
{
    if (is_null($campaign_id)) {
        $campaign_id = charitable_get_current_campaign_id();
    }
    return get_post_field('post_author', $campaign_id) == get_current_user_id();
}