| Current Path : /var/www/html/administrator/components/com_jdonation/model/ |
| Current File : /var/www/html/administrator/components/com_jdonation/model/donors.php |
<?php
use Joomla\CMS\Factory;
/**
* @version 4.3
* @package Joomla
* @subpackage Joom Donation
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2009 - 2023 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die();
class DonationModelDonors extends OSFModelList
{
/**
* Constructor
*
* @since 3.6
*/
function __construct($config = array())
{
$config['search_fields'] = array('tbl.first_name', 'tbl.last_name', 'tbl.email', 'tbl.transaction_id');
parent::__construct($config);
$this->state->insert('filter_campaign_id', 'int', 0)
->insert('filter_own_campaign','int',0)
->insert('filter_receive_user_id', 'int', 0)
->insert('filter_user_id', 'int', 0)
->insert('filter_campaign_ids', 'string', '')
->insert('filter_amount','int',0)
->insert('filter_year','int',0)
->insert('filter_paid_status', 'int', 0)
->insert('filter_min_amount', 'float', 0)
->insert('filter_max_amount', 'float', 0)
->insert('filter_currency','string','')
->insert('filter_exclude_campaign_ids','string','')
->insert('filter_payment','string','')
->insert('start_date','string','')
->insert('end_date','string','')
->insert('filter_search','string','')
->insert('filter_hide','int',0);
$this->state->setDefault('filter_order', 'tbl.created_date')->setDefault('filter_order_Dir', 'DESC');
}
protected function buildQueryColumns($query)
{
$query->select('tbl.*, cp.title, b.username');
return $this;
}
protected function buildQueryJoins($query)
{
$query->leftJoin('#__jd_campaigns AS cp ON tbl.campaign_id = cp.id')
->leftJoin('#__users AS b ON tbl.user_id = b.id');
return $this;
}
protected function buildQueryGroup($query)
{
$query->group('tbl.id');
return $this;
}
protected function buildQueryWhere($query)
{
parent::buildQueryWhere($query);
$config = DonationHelper::getConfig();
if (!@$config->show_pending_records)
{
$query->where('(tbl.published=1 OR tbl.payment_method = "os_offline")');
}
if ($this->state->filter_campaign_id)
{
$query->where('tbl.campaign_id=' . $this->state->filter_campaign_id);
}
if ($this->state->filter_own_campaign == 1) {
$user = Factory::getUser();
$query->where('tbl.campaign_id in (Select id from #__jd_campaigns where user_id = '.$user->id.')');
}
if ($this->state->filter_user_id)
{
$query->where(' tbl.user_id = ' . $this->state->filter_user_id);
}
if ($this->state->filter_campaign_ids)
{
$query->where('tbl.campaign_id IN (' . $this->state->filter_campaign_ids . ')');
}
if($this->state->filter_amount == 1){
$query->where('tbl.amount > 0');
}
if($this->state->filter_min_amount > 0)
{
$query->where('tbl.amount >= '. $this->state->filter_min_amount);
}
if($this->state->filter_max_amount > 0)
{
$query->where('tbl.amount <= '. $this->state->filter_max_amount);
}
if($this->state->filter_year > 0){
$query->where('tbl.created_date like "'.$this->state->filter_year.'%"');
}
if($this->state->filter_paid_status > 0)
{
if($this->state->filter_paid_status == 1)
{
$query->where('tbl.published = "0"');
}
elseif($this->state->filter_paid_status == 2)
{
$query->where('tbl.published = "1"');
}
}
if($this->state->filter_hide > 0)
{
//$query->where('tbl.hide_me = "'.$this->state->filter_hide.'"');
if($this->state->filter_hide == 1)
{
$query->where('tbl.hide_me = "0"');
}
elseif($this->state->filter_hide == 2)
{
$query->where('tbl.hide_me = "1"');
}
}
if($this->state->filter_search != "")
{
$query->where('(tbl.first_name like "%'.$this->state->filter_search.'%" or tbl.last_name like "%'.$this->state->filter_search.'%" or tbl.email like "%'.$this->state->filter_search.'%" or tbl.phone like "%'.$this->state->filter_search.'%" or tbl.address like "%'.$this->state->filter_search.'%" or tbl.city like "%'.$this->state->filter_search.'%" or tbl.country like "%'.$this->state->filter_search.'%" or tbl.state like "%'.$this->state->filter_search.'%" or tbl.transaction_id like "%'.$this->state->filter_search.'%")');
}
if($this->state->filter_payment != ""){
$query->where('tbl.payment_method = "'.$this->state->filter_payment.'"');
}
if($this->state->start_date != ""){
$query->where('tbl.created_date >= "'.$this->state->start_date.'"');
}
if($this->state->end_date != ""){
$query->where('tbl.created_date <= "'.$this->state->end_date.'"');
}
if($this->state->filter_currency != ''){
if($this->state->filter_currency == $config->currency){
$query->where(' (tbl.currency_code = "" or tbl.currency_code = "'.$this->state->filter_currency.'")');
}else{
$query->where('tbl.currency_code = "'.$this->state->filter_currency.'"');
}
}
if(trim($this->state->filter_exclude_campaign_ids) != ''){
$filter_exclude_campaign_ids = trim($this->state->filter_exclude_campaign_ids);
$query->where('tbl.campaign_id not in ('.$filter_exclude_campaign_ids.')');
}
return $this;
}
public static function getMonthlyReport($time_period = 'current_month', $campaign_id = 0, $payment_method = '')
{
$config = Factory::getConfig();
$db = Factory::getDbo();
$query = $db->getQuery(true);
$donationConfig = DonationHelper::getConfig();
$query->select('*')
->from('#__jd_donors');
switch ($time_period)
{
case 'this_week':
$date = Factory::getDate('now', $config->get('offset'));
$monday = clone $date->modify( 'Monday this week');
$monday->setTime(0, 0, 0);
$monday->setTimezone(new DateTimeZone('UCT'));
$fromDate = $monday->toSql(true);
$sunday = clone $date->modify('Sunday this week');
$sunday->setTime(23, 59, 59);
$sunday->setTimezone(new DateTimeZone('UCT'));
$toDate = $sunday->toSql(true);
break;
case 'current_month':
$date = Factory::getDate('now', $config->get('offset'));
$date->setDate($date->year, $date->month, 1);
$date->setTime(0, 0, 0);
$date->setTimezone(new DateTimeZone('UCT'));
$fromDate = $date->toSql(true);
$date = Factory::getDate('now', $config->get('offset'));
$date->setDate($date->year, $date->month, $date->daysinmonth);
$date->setTime(23, 59, 59);
$date->setTimezone(new DateTimeZone('UCT'));
$toDate = $date->toSql(true);
break;
case 'last_month':
$date = Factory::getDate('first day of last month', $config->get('offset'));
$date->setTime(0, 0, 0);
$date->setTimezone(new DateTimeZone('UCT'));
$fromDate = $date->toSql(true);
$date = Factory::getDate('last day of last month', $config->get('offset'));
$date->setTime(23, 59, 59);
$date->setTimezone(new DateTimeZone('UCT'));
$toDate = $date->toSql(true);
break;
case 'this_year':
$date = Factory::getDate('now', $config->get('offset'));
$date->setDate($date->year, 1, 1);
$date->setTime(0, 0, 0);
$date->setTimezone(new DateTimeZone('UCT'));
$fromDate = $date->toSql(true);
$date = Factory::getDate('now', $config->get('offset'));
$date->setDate($date->year, 12, 31);
$date->setTime(23, 59, 59);
$date->setTimezone(new DateTimeZone('UCT'));
$toDate = $date->toSql(true);
break;
case 'last_year':
$date = Factory::getDate('now', $config->get('offset'));
$date->setDate($date->year - 1, 1, 1);
$date->setTime(0, 0, 0);
$date->setTimezone(new DateTimeZone('UCT'));
$fromDate = $date->toSql(true);
$date = Factory::getDate('now', $config->get('offset'));
$date->setDate($date->year - 1, 12, 31);
$date->setTime(23, 59, 59);
$date->setTimezone(new DateTimeZone('UCT'));
$toDate = $date->toSql(true);
break;
}
$query->clear('where');
if($payment_method == "")
{
$query->where('(published = 1 OR (payment_method LIKE "os_offline%" AND published = 0))');
}
else
{
$query->where('published = 1 and payment_method like "'.$payment_method.'"');
}
$query->where('created_date >= ' . $db->quote($fromDate))
->where('created_date <=' . $db->quote($toDate));
if($campaign_id > 0)
{
$query->where('campaign_id = '.$campaign_id);
}
$query->order('created_date');
$db->setQuery($query);
$rows = $db->loadObjectList();
return $rows;
}
/**
* Get statistic data
*
* @return array
*/
public static function getStatisticsData()
{
$data = array();
$config = Factory::getConfig();
$db = Factory::getDbo();
$query = $db->getQuery(true);
$donationConfig = DonationHelper::getConfig();
$query->select('COUNT(id) AS total_donations, SUM(amount) AS total_amount')
->from('#__jd_donors');
if(DonationHelper::isMultipleCurrencies())
{
$active_currencies = $donationConfig->active_currencies;
$active_currencies_array = explode(",",$active_currencies);
if((!in_array($donationConfig->currency,$active_currencies_array)) && ($donationConfig->currency != ""))
{
$active_currencies_array[count($active_currencies_array)] = $donationConfig->currency;
}
}
// Today
if(DonationHelper::isMultipleCurrencies())
{
$date = Factory::getDate('now', $config->get('offset'));
$date->setTime(0, 0, 0);
$date->setTimezone(new DateTimeZone('UCT'));
$fromDate = $date->toSql(true);
$date = Factory::getDate('now', $config->get('offset'));
$date->setTime(23, 59, 59);
$date->setTimezone(new DateTimeZone('UCT'));
$toDate = $date->toSql(true);
foreach ($active_currencies_array as $currency)
{
$query->clear('where');
$query->where('(published = 1 OR (payment_method LIKE "os_offline%" AND published = 0))')
->where('created_date >= ' . $db->quote($fromDate))
->where('created_date <=' . $db->quote($toDate));
if($currency == $donationConfig->currency)
{
$query->where('(currency_code = "'.$currency.'" or currency_code = "")');
}
else
{
$query->where('currency_code = "'.$currency.'"');
}
$db->setQuery($query);
$row = $db->loadObject();
$data['today'][$currency] = array(
'total_donations' => (int) $row->total_donations,
'total_amount' => floatval($row->total_amount)
);
}
}
else
{
$date = Factory::getDate('now', $config->get('offset'));
$date->setTime(0, 0, 0);
$date->setTimezone(new DateTimeZone('UCT'));
$fromDate = $date->toSql(true);
$date = Factory::getDate('now', $config->get('offset'));
$date->setTime(23, 59, 59);
$date->setTimezone(new DateTimeZone('UCT'));
$toDate = $date->toSql(true);
$query->where('(published = 1 OR (payment_method LIKE "os_offline%" AND published = 0))')
->where('created_date >= ' . $db->quote($fromDate))
->where('created_date <=' . $db->quote($toDate));
$db->setQuery($query);
$row = $db->loadObject();
$data['today'] = array(
'total_donations' => (int) $row->total_donations,
'total_amount' => floatval($row->total_amount)
);
}
// Yesterday
if(DonationHelper::isMultipleCurrencies())
{
$date = Factory::getDate('now', $config->get('offset'));
$date->modify('-1 day');
$date->setTime(0, 0, 0);
$date->setTimezone(new DateTimeZone('UCT'));
$fromDate = $date->toSql(true);
$date = Factory::getDate('now', $config->get('offset'));
$date->modify('-1 day');
$date->setTime(23, 59, 59);
$date->setTimezone(new DateTimeZone('UCT'));
$toDate = $date->toSql(true);
foreach ($active_currencies_array as $currency)
{
$query->clear('where');
$query->where('(published = 1 OR (payment_method LIKE "os_offline%" AND published = 0))')
->where('created_date >= ' . $db->quote($fromDate))
->where('created_date <=' . $db->quote($toDate));
if($currency == $donationConfig->currency)
{
$query->where('(currency_code = "'.$currency.'" or currency_code = "")');
}
else
{
$query->where('currency_code = "'.$currency.'"');
}
$db->setQuery($query);
$row = $db->loadObject();
$data['yesterday'][$currency] = array(
'total_donations' => (int) $row->total_donations,
'total_amount' => floatval($row->total_amount)
);
}
}
else
{
$date = Factory::getDate('now', $config->get('offset'));
$date->modify('-1 day');
$date->setTime(0, 0, 0);
$date->setTimezone(new DateTimeZone('UCT'));
$fromDate = $date->toSql(true);
$date = Factory::getDate('now', $config->get('offset'));
$date->modify('-1 day');
$date->setTime(23, 59, 59);
$date->setTimezone(new DateTimeZone('UCT'));
$toDate = $date->toSql(true);
$query->clear('where');
$query->where('(published = 1 OR (payment_method LIKE "os_offline%" AND published = 0))')
->where('created_date >= ' . $db->quote($fromDate))
->where('created_date <=' . $db->quote($toDate));
$db->setQuery($query);
$row = $db->loadObject();
$data['yesterday'] = array(
'total_donations' => (int) $row->total_donations,
'total_amount' => floatval($row->total_amount)
);
}
// This week
if(DonationHelper::isMultipleCurrencies())
{
$date = Factory::getDate('now', $config->get('offset'));
$monday = clone $date->modify(('Sunday' == $date->format('l')) ? 'Monday last week' : 'Monday this week');
$monday->setTime(0, 0, 0);
$monday->setTimezone(new DateTimeZone('UCT'));
$fromDate = $monday->toSql(true);
$sunday = clone $date->modify('Sunday this week');
$sunday->setTime(23, 59, 59);
$sunday->setTimezone(new DateTimeZone('UCT'));
$toDate = $sunday->toSql(true);
foreach ($active_currencies_array as $currency)
{
$query->clear('where');
$query->where('(published = 1 OR (payment_method LIKE "os_offline%" AND published = 0))')
->where('created_date >= ' . $db->quote($fromDate))
->where('created_date <=' . $db->quote($toDate));
if($currency == $donationConfig->currency)
{
$query->where('(currency_code = "'.$currency.'" or currency_code = "")');
}
else
{
$query->where('currency_code = "'.$currency.'"');
}
$db->setQuery($query);
$row = $db->loadObject();
$data['this_week'][$currency] = array(
'total_donations' => (int) $row->total_donations,
'total_amount' => floatval($row->total_amount)
);
}
}
else
{
$date = Factory::getDate('now', $config->get('offset'));
$monday = clone $date->modify(('Sunday' == $date->format('l')) ? 'Monday last week' : 'Monday this week');
$monday->setTime(0, 0, 0);
$monday->setTimezone(new DateTimeZone('UCT'));
$fromDate = $monday->toSql(true);
$sunday = clone $date->modify('Sunday this week');
$sunday->setTime(23, 59, 59);
$sunday->setTimezone(new DateTimeZone('UCT'));
$toDate = $sunday->toSql(true);
$query->clear('where');
$query->where('(published = 1 OR (payment_method LIKE "os_offline%" AND published = 0))')
->where('created_date >= ' . $db->quote($fromDate))
->where('created_date <=' . $db->quote($toDate));
$db->setQuery($query);
$row = $db->loadObject();
$data['this_week'] = array(
'total_donations' => (int) $row->total_donations,
'total_amount' => floatval($row->total_amount)
);
}
// Last week, re-use data from this week
if(DonationHelper::isMultipleCurrencies())
{
$monday->modify('-7 day');
$sunday->modify('-7 day');
$fromDate = $monday->toSql(true);
$toDate = $sunday->toSql(true);
foreach ($active_currencies_array as $currency)
{
$query->clear('where');
$query->where('(published = 1 OR (payment_method LIKE "os_offline%" AND published = 0))')
->where('created_date >= ' . $db->quote($fromDate))
->where('created_date <=' . $db->quote($toDate));
if($currency == $donationConfig->currency)
{
$query->where('(currency_code = "'.$currency.'" or currency_code = "")');
}
else
{
$query->where('currency_code = "'.$currency.'"');
}
$db->setQuery($query);
$row = $db->loadObject();
$data['last_week'][$currency] = array(
'total_donations' => (int) $row->total_donations,
'total_amount' => floatval($row->total_amount)
);
}
}
else
{
$monday->modify('-7 day');
$sunday->modify('-7 day');
$fromDate = $monday->toSql(true);
$toDate = $sunday->toSql(true);
$query->clear('where');
$query->where('(published = 1 OR (payment_method LIKE "os_offline%" AND published = 0))')
->where('created_date >= ' . $db->quote($fromDate))
->where('created_date <=' . $db->quote($toDate));
$db->setQuery($query);
$row = $db->loadObject();
$data['last_week'] = array(
'total_donations' => (int) $row->total_donations,
'total_amount' => floatval($row->total_amount)
);
}
// This month
if(DonationHelper::isMultipleCurrencies())
{
$date = Factory::getDate('now', $config->get('offset'));
$date->setDate($date->year, $date->month, 1);
$date->setTime(0, 0, 0);
$date->setTimezone(new DateTimeZone('UCT'));
$fromDate = $date->toSql(true);
$date = Factory::getDate('now', $config->get('offset'));
$date->setDate($date->year, $date->month, $date->daysinmonth);
$date->setTime(23, 59, 59);
$date->setTimezone(new DateTimeZone('UCT'));
$toDate = $date->toSql(true);
foreach ($active_currencies_array as $currency)
{
$query->clear('where');
$query->where('(published = 1 OR (payment_method LIKE "os_offline%" AND published = 0))')
->where('created_date >= ' . $db->quote($fromDate))
->where('created_date <=' . $db->quote($toDate));
if($currency == $donationConfig->currency)
{
$query->where('(currency_code = "'.$currency.'" or currency_code = "")');
}
else
{
$query->where('currency_code = "'.$currency.'"');
}
$db->setQuery($query);
$row = $db->loadObject();
$data['this_month'][$currency] = array(
'total_donations' => (int) $row->total_donations,
'total_amount' => floatval($row->total_amount)
);
}
}
else
{
$date = Factory::getDate('now', $config->get('offset'));
$date->setDate($date->year, $date->month, 1);
$date->setTime(0, 0, 0);
$date->setTimezone(new DateTimeZone('UCT'));
$fromDate = $date->toSql(true);
$date = Factory::getDate('now', $config->get('offset'));
$date->setDate($date->year, $date->month, $date->daysinmonth);
$date->setTime(23, 59, 59);
$date->setTimezone(new DateTimeZone('UCT'));
$toDate = $date->toSql(true);
$query->clear('where');
$query->where('(published = 1 OR (payment_method LIKE "os_offline%" AND published = 0))')
->where('created_date >= ' . $db->quote($fromDate))
->where('created_date <=' . $db->quote($toDate));
$db->setQuery($query);
$row = $db->loadObject();
$data['this_month'] = array(
'total_donations' => (int) $row->total_donations,
'total_amount' => floatval($row->total_amount)
);
}
// Last month
if(DonationHelper::isMultipleCurrencies())
{
$date = Factory::getDate('first day of last month', $config->get('offset'));
$date->setTime(0, 0, 0);
$date->setTimezone(new DateTimeZone('UCT'));
$fromDate = $date->toSql(true);
$date = Factory::getDate('last day of last month', $config->get('offset'));
$date->setTime(23, 59, 59);
$date->setTimezone(new DateTimeZone('UCT'));
$toDate = $date->toSql(true);
foreach ($active_currencies_array as $currency)
{
$query->clear('where');
$query->where('(published = 1 OR (payment_method LIKE "os_offline%" AND published = 0))')
->where('created_date >= ' . $db->quote($fromDate))
->where('created_date <=' . $db->quote($toDate));
if($currency == $donationConfig->currency)
{
$query->where('(currency_code = "'.$currency.'" or currency_code = "")');
}
else
{
$query->where('currency_code = "'.$currency.'"');
}
$db->setQuery($query);
$row = $db->loadObject();
$data['last_month'][$currency] = array(
'total_donations' => (int) $row->total_donations,
'total_amount' => floatval($row->total_amount)
);
}
}
else
{
$date = Factory::getDate('first day of last month', $config->get('offset'));
$date->setTime(0, 0, 0);
$date->setTimezone(new DateTimeZone('UCT'));
$fromDate = $date->toSql(true);
$date = Factory::getDate('last day of last month', $config->get('offset'));
$date->setTime(23, 59, 59);
$date->setTimezone(new DateTimeZone('UCT'));
$toDate = $date->toSql(true);
$query->clear('where');
$query->where('(published = 1 OR (payment_method LIKE "os_offline%" AND published = 0))')
->where('created_date >= ' . $db->quote($fromDate))
->where('created_date <=' . $db->quote($toDate));
$db->setQuery($query);
$row = $db->loadObject();
$data['last_month'] = array(
'total_donations' => (int) $row->total_donations,
'total_amount' => floatval($row->total_amount)
);
}
// This year
if(DonationHelper::isMultipleCurrencies())
{
$date = Factory::getDate('now', $config->get('offset'));
$date->setDate($date->year, 1, 1);
$date->setTime(0, 0, 0);
$date->setTimezone(new DateTimeZone('UCT'));
$fromDate = $date->toSql(true);
$date = Factory::getDate('now', $config->get('offset'));
$date->setDate($date->year, 12, 31);
$date->setTime(23, 59, 59);
$date->setTimezone(new DateTimeZone('UCT'));
$toDate = $date->toSql(true);
foreach ($active_currencies_array as $currency)
{
$query->clear('where');
$query->where('(published = 1 OR (payment_method LIKE "os_offline%" AND published = 0))')
->where('created_date >= ' . $db->quote($fromDate))
->where('created_date <=' . $db->quote($toDate));
if($currency == $donationConfig->currency)
{
$query->where('(currency_code = "'.$currency.'" or currency_code = "")');
}
else
{
$query->where('currency_code = "'.$currency.'"');
}
$db->setQuery($query);
$row = $db->loadObject();
$data['this_year'][$currency] = array(
'total_donations' => (int) $row->total_donations,
'total_amount' => floatval($row->total_amount)
);
}
}
else
{
$date = Factory::getDate('now', $config->get('offset'));
$date->setDate($date->year, 1, 1);
$date->setTime(0, 0, 0);
$date->setTimezone(new DateTimeZone('UCT'));
$fromDate = $date->toSql(true);
$date = Factory::getDate('now', $config->get('offset'));
$date->setDate($date->year, 12, 31);
$date->setTime(23, 59, 59);
$date->setTimezone(new DateTimeZone('UCT'));
$toDate = $date->toSql(true);
$query->clear('where');
$query->where('(published = 1 OR (payment_method LIKE "os_offline%" AND published = 0))')
->where('created_date >= ' . $db->quote($fromDate))
->where('created_date <=' . $db->quote($toDate));
$db->setQuery($query);
$row = $db->loadObject();
$data['this_year'] = array(
'total_donations' => (int) $row->total_donations,
'total_amount' => floatval($row->total_amount)
);
}
// Last year
if(DonationHelper::isMultipleCurrencies())
{
$date = Factory::getDate('now', $config->get('offset'));
$date->setDate($date->year - 1, 1, 1);
$date->setTime(0, 0, 0);
$date->setTimezone(new DateTimeZone('UCT'));
$fromDate = $date->toSql(true);
$date = Factory::getDate('now', $config->get('offset'));
$date->setDate($date->year - 1, 12, 31);
$date->setTime(23, 59, 59);
$date->setTimezone(new DateTimeZone('UCT'));
$toDate = $date->toSql(true);
foreach ($active_currencies_array as $currency)
{
$query->clear('where');
$query->where('(published = 1 OR (payment_method LIKE "os_offline%" AND published = 0))')
->where('created_date >= ' . $db->quote($fromDate))
->where('created_date <=' . $db->quote($toDate));
if($currency == $donationConfig->currency)
{
$query->where('(currency_code = "'.$currency.'" or currency_code = "")');
}
else
{
$query->where('currency_code = "'.$currency.'"');
}
$db->setQuery($query);
$row = $db->loadObject();
$data['last_year'][$currency] = array(
'total_donations' => (int) $row->total_donations,
'total_amount' => floatval($row->total_amount)
);
}
}
else
{
$date = Factory::getDate('now', $config->get('offset'));
$date->setDate($date->year - 1, 1, 1);
$date->setTime(0, 0, 0);
$date->setTimezone(new DateTimeZone('UCT'));
$fromDate = $date->toSql(true);
$date = Factory::getDate('now', $config->get('offset'));
$date->setDate($date->year - 1, 12, 31);
$date->setTime(23, 59, 59);
$date->setTimezone(new DateTimeZone('UCT'));
$toDate = $date->toSql(true);
$query->clear('where');
$query->where('(published = 1 OR (payment_method LIKE "os_offline%" AND published = 0))')
->where('created_date >= ' . $db->quote($fromDate))
->where('created_date <=' . $db->quote($toDate));
$db->setQuery($query);
$row = $db->loadObject();
$data['last_year'] = array(
'total_donations' => (int) $row->total_donations,
'total_amount' => floatval($row->total_amount)
);
}
// Total registration
if(DonationHelper::isMultipleCurrencies())
{
$query->clear();
$query->select('COUNT(id) AS total_donations, SUM(amount) AS total_amount')
->from('#__jd_donors')
->where('(published = 1 OR (payment_method LIKE "os_offline%" AND published = 0))');
if($currency == $donationConfig->currency)
{
$query->where('(currency_code = "'.$currency.'" or currency_code = "")');
}
else
{
$query->where('currency_code = "'.$currency.'"');
}
$db->setQuery($query);
$row = $db->loadObject();
$data['total_donations'][$currency] = array(
'total_donations' => (int) $row->total_donations,
'total_amount' => floatval($row->total_amount)
);
}
else
{
$query->clear();
$query->select('COUNT(id) AS total_donations, SUM(amount) AS total_amount')
->from('#__jd_donors')
->where('(published = 1 OR (payment_method LIKE "os_offline%" AND published = 0))');
$db->setQuery($query);
$row = $db->loadObject();
$data['total_donations'] = array(
'total_donations' => (int) $row->total_donations,
'total_amount' => floatval($row->total_amount)
);
}
return $data;
}
static function returnDonorsBasedOnCountry()
{
$db = Factory::getDbo();
$db->setQuery("SELECT SUM(amount) as donated_amount, count(id) as number_donated, country FROM `#__jd_donors` WHERe published = '1' group by country order by donated_amount desc");
$rows = $db->loadObjectList();
return $rows;
}
}