$91 GRAYBYTE WORDPRESS FILE MANAGER $99

SERVER : premium201.web-hosting.com #1 SMP Wed Mar 26 12:08:09 UTC 2025
SERVER IP : 104.21.43.35 | ADMIN IP 216.73.216.157
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/home/bravrvjk/itiministry.org/wp-content/plugins/give/src/DonorDashboards/

HOME
Current File : /home/bravrvjk/itiministry.org/wp-content/plugins/give/src/DonorDashboards//Profile.php
<?php

namespace Give\DonorDashboards;

use Exception;
use Give\DonorDashboards\Factories\DonorFactory;
use Give\DonorDashboards\Helpers as DonorDashboardHelpers;
use Give\DonorDashboards\Pipeline\DonorProfilePipeline;
use Give\DonorDashboards\Pipeline\Stages\UpdateDonorAddresses;
use Give\DonorDashboards\Pipeline\Stages\UpdateDonorAnonymousGiving;
use Give\DonorDashboards\Pipeline\Stages\UpdateDonorAvatar;
use Give\DonorDashboards\Pipeline\Stages\UpdateDonorCompany;
use Give\Donors\Models\Donor;
use Give\Framework\Support\Facades\DateTime\Temporal;

/**
 * @since 2.10.0
 */
class Profile
{

    protected $donor;
    protected $id;

    public function __construct()
    {
        $donorId = DonorDashboardHelpers::getCurrentDonorId();
        if ($donorId) {
            $donorFactory = new DonorFactory;
            $this->donor = $donorFactory->make($donorId);
        }
    }

    /**
     * Handles updating relevant profile fields in donor database and meta database
     *
     * @since 2.27.3 Use Donor model to update data used by webhooks addon to prevent multiple events creation
     * @since      2.10.0
     *
     * @param object $data Object representing profile data to update
     *
     * @return array
     *
     * @throws Exception
     */
    public function update($data)
    {
        $donor = Donor::find($this->donor->id);

        $donor->email = $data['primaryEmail'];
        $donor->additionalEmails = $data['additionalEmails'] ?: [];

        if ( ! empty($data['firstName']) && ! empty($data['lastName'])) {
            $firstName = $data['firstName'];
            $lastName = $data['lastName'];
            $donor->name = "{$firstName} {$lastName}";
            $donor->firstName = $firstName;
            $donor->lastName = $lastName;
        }

        $donor->save();

        $pipeline = (new DonorProfilePipeline)
            ->pipe(new UpdateDonorCompany)
            ->pipe(new UpdateDonorAvatar)
            ->pipe(new UpdateDonorAddresses)
            ->pipe(new UpdateDonorAnonymousGiving);

        $pipeline->process(
            [
                'data' => $data,
                'donor' => $this->donor,
            ]
        );

        // Return updated donor profile data
        return $this->getProfileData();
    }

    /**
     * Return array of donor profile data
     *
     * @since 3.20.0 Replace strtotime() with Temporal::getDateTimestamp() to prevent the use of dates with wrong timezones
     * @since 2.10.0
     *
     * @return array
     */
    public function getProfileData()
    {
        if ( ! $this->donor) {
            return null;
        }

        $titlePrefix = Give()->donor_meta->get_meta($this->donor->id, '_give_donor_title_prefix', true);

        return [
            'name' => give_get_donor_name_with_title_prefixes($titlePrefix, $this->donor->name),
            'firstName' => $this->donor->get_first_name(),
            'lastName' => $this->donor->get_last_name(),
            'emails' => $this->donor->emails,
            'sinceLastDonation' => ! empty($this->donor->get_last_donation_date()) ? human_time_diff(
                Temporal::getDateTimestamp($this->donor->get_last_donation_date())
            ) : '',
            'avatarUrl' => $this->getAvatarUrl(),
            'avatarId' => $this->getAvatarId(),
            'sinceCreated' => human_time_diff(Temporal::getDateTimestamp($this->donor->date_created)),
            'company' => $this->donor->get_company_name(),
            'initials' => $this->donor->get_donor_initals(),
            'titlePrefix' => $this->getTitlePrefix(),
            'addresses' => $this->donor->address,
            'isAnonymous' => $this->donor->get_meta('_give_anonymous_donor', true) !== '0' ? '1' : '0',
        ];
    }

    /**
     * Returns profile model's donor id
     *
     * @since 2.10.0
     * @return int
     *
     */
    public function getId()
    {
        if ( ! $this->donor) {
            return null;
        }

        return $this->donor->id;
    }

    /**
     * Returns donor's title prefix
     *   *
     * @since 2.10.0
     * @return string
     *
     */
    public function getTitlePrefix()
    {
        return Give()->donor_meta->get_meta($this->donor->id, '_give_donor_title_prefix', true);
    }

    /**
     * Returns profile's avatar URL
     *   *
     * @since 2.10.0
     * @return string
     *
     */
    public function getAvatarUrl()
    {
        $avatarId = $this->getAvatarId();
        if ($avatarId) {
            return wp_get_attachment_url($avatarId);
        } else {
            return give_validate_gravatar($this->donor->email) ? get_avatar_url($this->donor->email, ['size' => 140]
            ) : null;
        }
    }

    /**
     * Returns profile's avatar media ID
     *   *
     * @since 2.10.0
     * @return int
     *
     */
    public function getAvatarId()
    {
        return $this->donor->get_meta('_give_donor_avatar_id');
    }

    /**
     * Returns profile's stored country, or global default if none is set
     *   *
     * @since 2.10.0
     * @return string
     *
     */
    public function getCountry()
    {
        if ( ! $this->donor) {
            return give_get_country();
        }

        $address = $this->donor->get_donor_address();
        if ($address) {
            return $address['country'];
        } else {
            return give_get_country();
        }
    }

    /**
     * @since 3.14.2
     */
    public function avatarBelongsToCurrentUser(?int $avatarId = null): bool
    {
        return (int)get_post_field("post_author", $avatarId ?? $this->getAvatarId()) === get_current_user_id();
    }
}


Current_dir [ WRITEABLE ] Document_root [ NOT WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
4 Apr 2026 1.57 AM
bravrvjk / bravrvjk
0755
Admin
--
4 Apr 2026 1.57 AM
bravrvjk / bravrvjk
0755
Exceptions
--
4 Apr 2026 1.57 AM
bravrvjk / bravrvjk
0755
Factories
--
4 Apr 2026 1.57 AM
bravrvjk / bravrvjk
0755
Helpers
--
4 Apr 2026 1.57 AM
bravrvjk / bravrvjk
0755
Pipeline
--
4 Apr 2026 1.57 AM
bravrvjk / bravrvjk
0755
Repositories
--
4 Apr 2026 1.57 AM
bravrvjk / bravrvjk
0755
Routes
--
4 Apr 2026 1.57 AM
bravrvjk / bravrvjk
0755
Tabs
--
4 Apr 2026 1.57 AM
bravrvjk / bravrvjk
0755
resources
--
4 Apr 2026 1.57 AM
bravrvjk / bravrvjk
0755
App.php
5.841 KB
31 Mar 2025 11.17 PM
bravrvjk / bravrvjk
0644
Block.php
2.375 KB
31 Mar 2025 11.17 PM
bravrvjk / bravrvjk
0644
Helpers.php
1.763 KB
11 Jun 2025 10.57 PM
bravrvjk / bravrvjk
0644
Profile.php
5.513 KB
3 Feb 2025 8.13 PM
bravrvjk / bravrvjk
0644
RequestHandler.php
3.747 KB
28 Jan 2026 8.00 PM
bravrvjk / bravrvjk
0644
ServiceProvider.php
2.931 KB
11 Jan 2024 12.22 AM
bravrvjk / bravrvjk
0644
Shortcode.php
1.228 KB
14 Mar 2024 1.54 AM
bravrvjk / bravrvjk
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025 CONTACT ME
Static GIF