122 lines
2.9 KiB
PHP
122 lines
2.9 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @package Advanced Custom Fields
|
|
* @version 2.8.8 Pro
|
|
*
|
|
* @author Tassos Marinos <info@tassos.gr>
|
|
* @link http://www.tassos.gr
|
|
* @copyright Copyright © 2024 Tassos Marinos All Rights Reserved
|
|
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
|
|
*/
|
|
|
|
defined( '_JEXEC' ) or die( 'Restricted access' );
|
|
|
|
use Joomla\CMS\Plugin\CMSPlugin;
|
|
use Joomla\CMS\Session\Session;
|
|
use Joomla\CMS\Language\Text;
|
|
|
|
class plgSystemTGeoIP extends CMSPlugin
|
|
{
|
|
/**
|
|
* Joomla Application Object
|
|
*
|
|
* @var object
|
|
*/
|
|
protected $app;
|
|
|
|
/**
|
|
* Auto load plugin language
|
|
*
|
|
* @var boolean
|
|
*/
|
|
protected $autoloadLanguage = true;
|
|
|
|
/**
|
|
* GeoIP Class
|
|
*
|
|
* @var object
|
|
*/
|
|
private $geoIP;
|
|
|
|
/**
|
|
* Load GeoIP Classes
|
|
*
|
|
* @return void
|
|
*/
|
|
private function loadGeoIP()
|
|
{
|
|
$path = JPATH_PLUGINS . '/system/tgeoip';
|
|
|
|
if (!class_exists('TGeoIP'))
|
|
{
|
|
if (@file_exists($path . '/helper/tgeoip.php'))
|
|
{
|
|
if (@include_once($path . '/vendor/autoload.php'))
|
|
{
|
|
@include_once $path . '/helper/tgeoip.php';
|
|
}
|
|
}
|
|
}
|
|
|
|
$this->geoIP = new TGeoIP();
|
|
}
|
|
|
|
/**
|
|
* Listens to AJAX requests on ?option=com_ajax&format=raw&plugin=tgeoip
|
|
*
|
|
* @return void
|
|
*/
|
|
public function onAjaxTgeoip()
|
|
{
|
|
Session::checkToken('request') or die('Invalid Token');
|
|
|
|
// Only in admin
|
|
if (!$this->app->isClient('administrator'))
|
|
{
|
|
return;
|
|
}
|
|
|
|
$this->loadGeoIP();
|
|
|
|
$task = $this->app->input->get('task', 'update');
|
|
|
|
$this->geoIP->setKey($this->app->input->get('license_key', ''));
|
|
|
|
switch ($task)
|
|
{
|
|
// Update database and redirect
|
|
case 'update-red':
|
|
|
|
$result = $this->geoIP->updateDatabase();
|
|
|
|
if ($result === true)
|
|
{
|
|
$msg = Text::_('PLG_SYSTEM_TGEOIP_DATABASE_UPDATED');
|
|
$msgType = 'message';
|
|
} else
|
|
{
|
|
$msgType = 'error';
|
|
$msg = $result;
|
|
}
|
|
|
|
$return = base64_decode($this->app->input->get->getBase64('return', null));
|
|
|
|
$this->app->enqueueMessage($msg, $msgType);
|
|
$this->app->redirect($return);
|
|
break;
|
|
|
|
// Update database
|
|
case 'update':
|
|
echo $this->geoIP->updateDatabase();
|
|
break;
|
|
|
|
// IP Lookup
|
|
case 'get':
|
|
$ip = $this->app->input->get('ip');
|
|
echo json_encode($this->geoIP->setIP($ip)->getRecord());
|
|
break;
|
|
}
|
|
}
|
|
}
|