$90 GRAYBYTE WORDPRESS FILE MANAGER $77

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 : mail

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

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

namespace Give\Donors;

use Give\Donations\ValueObjects\DonationMetaKeys;
use Give\Donors\Models\Donor;
use Give\Framework\Models\ModelQueryBuilder;
use Give\Framework\QueryBuilder\JoinQueryBuilder;
use Give\Framework\QueryBuilder\QueryBuilder;

/**
 * @since 4.4.0
 */
class DonorsQuery
{
    /**
     * @var ModelQueryBuilder<Donor>
     */
    protected $query;

    /**
     * @since 4.4.0
     */
    public function __construct()
    {
        $this->query = Donor::query();
    }

    /**
     * Delegates methods not defined locally to the underlying query.
     *
     * @since 4.4.0
     *
     * @return mixed
     */
    public function __call(string $method, array $args)
    {
        if (method_exists($this, $method)) {
            return $this->$method(...$args);
        }

        return $this->query->$method(...$args);
    }

    /**
     * @since 4.8.0 Fix subqueries to not return duplicate donors
     * @since 4.4.0
     */
    public function whereDonorsHaveDonations(
        string $mode = '',
        int $campaignId = 0,
        bool $excludeAnonymousDonors = true
    ): self {
        if (empty($mode)) {
            $mode = give_is_test_mode() ? 'test' : 'live';
        }

        $this->query->whereExists(function (QueryBuilder $builder) use ($mode, $campaignId, $excludeAnonymousDonors) {
            $builder
                ->select('1')
                ->from('give_donationmeta', 'dm1')
                ->join(function (JoinQueryBuilder $joinBuilder) use ($mode) {
                    $joinBuilder
                        ->innerJoin('give_donationmeta', 'dm2')
                        ->on('dm2.donation_id', 'dm1.donation_id')
                        ->andOn('dm2.meta_key', DonationMetaKeys::MODE, true)
                        ->andOn('dm2.meta_value', $mode, true);
                })
                ->join(function (JoinQueryBuilder $joinBuilder) {
                    $joinBuilder
                        ->innerJoin('posts', 'p')
                        ->on('p.ID', 'dm1.donation_id')
                        ->andOn('p.post_type', 'give_payment', true);
                })
                ->whereIn('p.post_status', ['publish', 'give_subscription'])
                ->where('dm1.meta_key', DonationMetaKeys::DONOR_ID)
                ->whereRaw(sprintf('AND dm1.meta_value = %s', $this->query->prefixTable('give_donors.id')));

            if ($campaignId) {
                $builder->join(function (JoinQueryBuilder $joinBuilder) use ($campaignId) {
                    $joinBuilder
                        ->innerJoin('give_donationmeta', 'dm3')
                        ->on('dm3.donation_id', 'dm1.donation_id')
                        ->andOn('dm3.meta_key', DonationMetaKeys::CAMPAIGN_ID, true)
                        ->andOn('dm3.meta_value', $campaignId, true);
                });
            }

            if ($excludeAnonymousDonors) {
                $builder->join(function (JoinQueryBuilder $joinBuilder) {
                    $joinBuilder
                        ->innerJoin('give_donationmeta', 'dm4')
                        ->on('dm4.donation_id', 'dm1.donation_id')
                        ->andOn('dm4.meta_key', DonationMetaKeys::ANONYMOUS, true)
                        ->andOn('dm4.meta_value', '0', true);
                });
            }
        });

        return $this;
    }

    /**
     * @since 4.4.0
     */
    public function limit(int $limit): self
    {
        $this->query->limit($limit);

        return $this;
    }

    /**
     * @since 4.4.0
     */
    public function offset(int $offset): self
    {
        $this->query->offset($offset);

        return $this;
    }

    /**
     * @since 4.4.0
     */
    public function orderBy(string $column, string $direction = 'ASC'): self
    {
        $this->query->orderBy($column, $direction);

        return $this;
    }

    /**
     * @since 4.4.0
     */
    public function getAll(): array
    {
        return $this->query->getAll() ?? [];
    }

    /**
     * Clone the query builder.
     *
     * @since 4.14.0
     *
     * @return self
     */
    public function clone(): self
    {
        $cloned = new self();
        $cloned->query = clone $this->query;

        return $cloned;
    }
}


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
Actions
--
4 Apr 2026 1.57 AM
bravrvjk / bravrvjk
0755
CustomFields
--
4 Apr 2026 1.57 AM
bravrvjk / bravrvjk
0755
DataTransferObjects
--
4 Apr 2026 1.57 AM
bravrvjk / bravrvjk
0755
Endpoints
--
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
ListTable
--
4 Apr 2026 1.57 AM
bravrvjk / bravrvjk
0755
Migrations
--
4 Apr 2026 1.57 AM
bravrvjk / bravrvjk
0755
Models
--
4 Apr 2026 1.57 AM
bravrvjk / bravrvjk
0755
Repositories
--
4 Apr 2026 1.57 AM
bravrvjk / bravrvjk
0755
ValueObjects
--
4 Apr 2026 1.57 AM
bravrvjk / bravrvjk
0755
resources
--
4 Apr 2026 1.57 AM
bravrvjk / bravrvjk
0755
DonorStatisticsQuery.php
5.989 KB
1 Oct 2025 3.37 PM
bravrvjk / bravrvjk
0644
DonorsAdminPage.php
3.225 KB
28 Jan 2026 8.00 PM
bravrvjk / bravrvjk
0644
DonorsQuery.php
4.158 KB
28 Jan 2026 8.00 PM
bravrvjk / bravrvjk
0644
ServiceProvider.php
4.755 KB
28 Jan 2026 8.00 PM
bravrvjk / bravrvjk
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025 CONTACT ME
Static GIF