403Webshell
Server IP : 192.158.238.246  /  Your IP : 18.119.136.32
Web Server : LiteSpeed
System : Linux uniform.iwebfusion.net 4.18.0-553.27.1.lve.1.el8.x86_64 #1 SMP Wed Nov 20 15:58:00 UTC 2024 x86_64
User : jenniferflocom ( 1321)
PHP Version : 8.1.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /proc/7779/task/7779/cwd/plugins/give/src/Tracking/TrackingData/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /proc/7779/task/7779/cwd/plugins/give/src/Tracking/TrackingData/DonationMetricsData.php
<?php

namespace Give\Tracking\TrackingData;

use Give\Framework\Database\DB;
use Give\Tracking\Contracts\TrackData;
use Give\Tracking\Helpers\DonationStatuses;

/**
 * Class DonationMetricsData
 * @package Give\Tracking\TrackingData
 *
 * @since 2.10.2
 */
class DonationMetricsData implements TrackData
{
    /**
     * @var array
     */
    private $donationData = [];

    /**
     * @var int
     */
    private $donorCount = 0;

    /**
     * @var int
     */
    private $formCount = 0;

    /**
     * @inheritdoc
     * @return array|void
     */
    public function get()
    {
        $this->donorCount = $this->getDonorCount();
        $this->formCount = $this->getDonationFormCount();
        $this->donationData = (new DonationData())->get();

        $data = [
            'form_count' => $this->formCount,
            'donor_count' => $this->donorCount,
            'avg_donation_amount_by_donor' => $this->getAvgDonationAmountByDonor(),
        ];

        return array_merge($data, $this->donationData);
    }

    /**
     * Returns donor count which donated greater then zero
     *
     * @since 2.10.0
     * @return int
     */
    private function getDonorCount()
    {
        global $wpdb;

        $statues = DonationStatuses::getCompletedDonationsStatues(true);

        $donorCount = DB::get_var(
            "
			SELECT COUNT(DISTINCT dm.meta_value)
			FROM {$wpdb->donationmeta} as dm
				INNER JOIN {$wpdb->posts} as p ON dm.donation_id = p.ID
				INNER JOIN {$wpdb->donationmeta} as dm2 ON dm.donation_id = dm2.donation_id
				INNER JOIN {$wpdb->donors} as donor ON dm.meta_value = donor.id
			WHERE p.post_status IN ({$statues})
				AND p.post_type='give_payment'
				AND dm2.meta_key='_give_payment_mode'
				AND dm2.meta_value='live'
				AND dm.meta_key='_give_payment_donor_id'
				AND donor.purchase_value > 0
			"
        );

        return (int)$donorCount;
    }

    /**
     * Get average donation by donor.
     *
     * @since 2.10.0
     * @return int
     */
    private function getAvgDonationAmountByDonor()
    {
        $amount = 0;

        if ($this->donationData['revenue']) {
            $amount = (int)($this->donationData['revenue'] / $this->donorCount);
        }

        return $amount;
    }

    /**
     * Returns donation form count
     *
     * @since 2.10.0
     * @return int
     */
    private function getDonationFormCount()
    {
        global $wpdb;

        $statues = DonationStatuses::getCompletedDonationsStatues(true);

        $formCount = DB::get_var(
            "
			SELECT COUNT(DISTINCT dm.meta_value)
			FROM {$wpdb->donationmeta} as dm
				INNER JOIN {$wpdb->posts} as p ON dm.donation_id = p.ID
				INNER JOIN {$wpdb->donationmeta} as dm2 ON dm.donation_id = dm2.donation_id
			WHERE p.post_status IN ({$statues})
			  	AND p.post_type='give_payment'
				AND dm2.meta_key='_give_payment_mode'
				AND dm2.meta_value='live'
				AND dm.meta_key='_give_payment_form_id'
			"
        );

        return (int)$formCount;
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit