2020-05-27 18:46:16 +02:00
|
|
|
<?php
|
2020-06-10 15:00:12 +00:00
|
|
|
|
2020-05-27 18:46:16 +02:00
|
|
|
namespace App\Controllers;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Class BaseController
|
|
|
|
*
|
|
|
|
* BaseController provides a convenient place for loading components
|
|
|
|
* and performing functions that are needed by all your controllers.
|
|
|
|
* Extend this class in any new controllers:
|
|
|
|
* class Home extends BaseController
|
|
|
|
*
|
|
|
|
* For security be sure to declare any new methods as protected or private.
|
|
|
|
*
|
|
|
|
* @package CodeIgniter
|
|
|
|
*/
|
|
|
|
|
|
|
|
use CodeIgniter\Controller;
|
|
|
|
|
|
|
|
class BaseController extends Controller
|
|
|
|
{
|
2020-06-10 15:00:12 +00:00
|
|
|
/**
|
|
|
|
* An array of helpers to be loaded automatically upon
|
|
|
|
* class instantiation. These helpers will be available
|
|
|
|
* to all other controllers that extend BaseController.
|
|
|
|
*
|
|
|
|
* @var array
|
|
|
|
*/
|
|
|
|
protected $helpers = [];
|
2020-05-27 18:46:16 +02:00
|
|
|
|
2020-06-10 15:00:12 +00:00
|
|
|
/**
|
|
|
|
* Constructor.
|
|
|
|
*/
|
|
|
|
public function initController(
|
|
|
|
\CodeIgniter\HTTP\RequestInterface $request,
|
|
|
|
\CodeIgniter\HTTP\ResponseInterface $response,
|
|
|
|
\Psr\Log\LoggerInterface $logger
|
|
|
|
) {
|
|
|
|
// Do Not Edit This Line
|
|
|
|
parent::initController($request, $response, $logger);
|
2020-05-27 18:46:16 +02:00
|
|
|
|
2020-06-10 15:00:12 +00:00
|
|
|
//--------------------------------------------------------------------
|
|
|
|
// Preload any models, libraries, etc, here.
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
// E.g.:
|
|
|
|
// $this->session = \Config\Services::session();
|
2020-06-12 20:41:09 +00:00
|
|
|
|
|
|
|
$session = \Config\Services::session();
|
|
|
|
$session->start();
|
|
|
|
|
|
|
|
// Defines country
|
|
|
|
if (!$session->has('country')) {
|
|
|
|
try {
|
|
|
|
$reader = new \GeoIp2\Database\Reader(
|
|
|
|
WRITEPATH . 'uploads/GeoLite2-Country/GeoLite2-Country.mmdb'
|
|
|
|
);
|
|
|
|
$geoip = $reader->country($_SERVER['REMOTE_ADDR']);
|
|
|
|
$session->set('country', $geoip->country->isoCode);
|
|
|
|
} catch (\Exception $e) {
|
|
|
|
$session->set('country', 'N/A');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Defines browser
|
|
|
|
if (!$session->has('browser')) {
|
|
|
|
try {
|
|
|
|
$whichbrowser = new \WhichBrowser\Parser(getallheaders());
|
|
|
|
$session->set('browser', $whichbrowser->browser->name);
|
|
|
|
} catch (\Exception $e) {
|
|
|
|
$session->set('browser', 'Other');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Defines referrer
|
|
|
|
$newreferer = isset($_SERVER['HTTP_REFERER'])
|
|
|
|
? parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST)
|
|
|
|
: '- Direct -';
|
|
|
|
$newreferer =
|
|
|
|
$newreferer == parse_url(current_url(false), PHP_URL_HOST)
|
|
|
|
? '- Direct -'
|
|
|
|
: $newreferer;
|
|
|
|
if (!$session->has('referer') or $newreferer != '- Direct -') {
|
|
|
|
$session->set('referer', $newreferer);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
protected function stats($postcast_id)
|
|
|
|
{
|
|
|
|
$session = \Config\Services::session();
|
|
|
|
$session->start();
|
|
|
|
$db = \Config\Database::connect();
|
|
|
|
$procedureName = $db->prefixTable('analytics_website');
|
|
|
|
$db->query("call $procedureName(?,?,?,?)", [
|
|
|
|
$postcast_id,
|
|
|
|
$session->get('country'),
|
|
|
|
$session->get('browser'),
|
|
|
|
$session->get('referer'),
|
|
|
|
]);
|
2020-06-10 15:00:12 +00:00
|
|
|
}
|
2020-05-27 18:46:16 +02:00
|
|
|
}
|