Server IP : 192.158.238.246 / Your IP : 216.73.216.74 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/root/proc/7779/cwd/plugins/give/src/Tracking/TrackingData/ |
Upload File : |
<?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; } }