Newer
Older

Yassine Doghri
committed
/**
* Class AnalyticsWebsiteByRefererModel
* Model for analytics_website_by_referer table in database
* @copyright 2020 Podlibre
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/

Yassine Doghri
committed
namespace App\Models;
use CodeIgniter\Model;
class AnalyticsWebsiteByRefererModel extends Model
{
protected $table = 'analytics_website_by_referer';
protected $allowedFields = [];

Yassine Doghri
committed
protected $returnType = \App\Entities\AnalyticsWebsiteByReferer::class;
protected $useSoftDeletes = false;
protected $useTimestamps = false;
/**
* Gets referer data for a podcast
*
* @param int $podcastId
*
* @return array
*/
public function getData(int $podcastId): array
{
if (!($found = cache("{$podcastId}_analytics_website_by_referer"))) {
$found = $this->select('`referer` as `labels`')
->selectSum('`hits`', '`values`')
->where([
'`podcast_id`' => $podcastId,
'`date` >' => date('Y-m-d', strtotime('-1 week')),
])
cache()->save(
"{$podcastId}_analytics_website_by_referer",
$found,
600
);
}
return $found;
}
/**
* Gets domain data for a podcast
*
* @param int $podcastId
*
* @return array
*/

Benjamin Bellamy
committed
public function getDataByDomainWeekly(int $podcastId): array

Benjamin Bellamy
committed
if (
!($found = cache("{$podcastId}_analytics_website_by_domain_weekly"))
) {
$found = $this->select('`domain` as `labels`')
->selectSum('`hits`', '`values`')
->where([
'`podcast_id`' => $podcastId,
'`date` >' => date('Y-m-d', strtotime('-1 week')),
])

Benjamin Bellamy
committed
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
"{$podcastId}_analytics_website_by_domain_weekly",
$found,
600
);
}
return $found;
}
/**
* Gets domain data for a podcast
*
* @param int $podcastId
*
* @return array
*/
public function getDataByDomainYearly(int $podcastId): array
{
if (
!($found = cache("{$podcastId}_analytics_website_by_domain_yearly"))
) {
$found = $this->select('`domain` as `labels`')
->selectSum('`hits`', '`values`')
->where([
'`podcast_id`' => $podcastId,
'`date` >' => date('Y-m-d', strtotime('-1 year')),
])
->groupBy('`labels`')
->orderBy('`values`', 'DESC')
->findAll(10);
cache()->save(
"{$podcastId}_analytics_website_by_domain_yearly",
$found,
600
);
}
return $found;
}