<?php 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 { /** * 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 = []; /** * 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); //-------------------------------------------------------------------- // Preload any models, libraries, etc, here. //-------------------------------------------------------------------- // E.g.: // $this->session = \Config\Services::session(); $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'), ]); } }