shell bypass 403
<?php
/**
* @package admintools
* @copyright Copyright (c)2010-2024 Nicholas K. Dionysopoulos / Akeeba Ltd
* @license GNU General Public License version 3, or later
*/
namespace Akeeba\Component\AdminTools\Administrator\Table;
defined('_JEXEC') or die;
use Akeeba\Component\AdminTools\Administrator\Mixin\GetPropertiesAwareTrait;
use Akeeba\Component\AdminTools\Administrator\Mixin\TriggerEventTrait;
use Joomla\CMS\Table\Table;
use Joomla\Database\DatabaseDriver;
use Joomla\Event\DispatcherInterface;
#[\AllowDynamicProperties]
abstract class AbstractTable extends Table
{
use TriggerEventTrait;
use GetPropertiesAwareTrait;
public function __construct($table, $key, DatabaseDriver $db, DispatcherInterface $dispatcher = null)
{
parent::__construct($table, $key, $db, $dispatcher);
$this->triggerEvent('onAfterInitialise');
}
public function reset()
{
$this->triggerEvent('onBeforeReset');
parent::reset();
$this->triggerEvent('onAfterReset');
}
public function bind($src, $ignore = [])
{
$this->triggerEvent('onBeforeBind', [&$src, &$ignore]);
$result = parent::bind($src, $ignore);
$this->triggerEvent('onAfterBind', [&$result, $src, $ignore]);
return $result;
}
public function load($keys = null, $reset = true)
{
$this->triggerEvent('onBeforeLoad', [&$keys, &$reset]);
$result = parent::load($keys, $reset);
$this->triggerEvent('onAfterLoad', [&$result, $keys, $reset]);
return $result;
}
public function check()
{
$this->triggerEvent('onBeforeCheck');
$result = parent::check();
$this->triggerEvent('onAfterCheck', [&$result]);
return $result;
}
public function store($updateNulls = false)
{
$this->triggerEvent('onBeforeStore', [&$updateNulls]);
$result = parent::store($updateNulls);
$this->triggerEvent('onAfterStore', [&$result, $updateNulls]);
return $result;
}
public function save($src, $orderingFilter = '', $ignore = '')
{
$this->triggerEvent('onBeforeSave', [&$src, &$orderingFilter, &$ignore]);
$result = parent::save($src, $orderingFilter, $ignore);
$this->triggerEvent('onAfterSave', [&$result, $src, $orderingFilter, $ignore]);
return $result;
}
public function delete($pk = null)
{
$this->triggerEvent('onBeforeDelete', [&$pk]);
$result = parent::delete($pk);
$this->triggerEvent('onAfterDelete', [&$result, $pk]);
return $result;
}
public function checkOut($userId, $pk = null)
{
$this->triggerEvent('onBeforeCheckout', [&$userId, &$pk]);
$result = parent::checkOut($userId, $pk);
$this->triggerEvent('onAfterCheckout', [&$result, $userId, $pk]);
return $result;
}
public function checkIn($pk = null)
{
$this->triggerEvent('onBeforeCheckIn', [&$pk]);
$result = parent::checkIn($pk);
$this->triggerEvent('onAfterCheckIn', [&$result, $pk]);
return $result;
}
public function hit($pk = null)
{
$this->triggerEvent('onBeforeHit', [&$pk]);
$result = parent::hit($pk);
$this->triggerEvent('onAfterHit', [&$result, $pk]);
return $result;
}
public function reorder($where = '')
{
$this->triggerEvent('onBeforeReorder', [&$where]);
$result = parent::reorder($where);
$this->triggerEvent('onAfterReorder', [&$result, $where]);
return $result;
}
public function move($delta, $where = '')
{
$this->triggerEvent('onBeforeMove', [&$delta, &$where]);
$result = parent::move($delta, $where);
$this->triggerEvent('onAfterMove', [&$result, $delta, $where]);
return $result;
}
public function publish($pks = null, $state = 1, $userId = 0)
{
$this->triggerEvent('onBeforePublish', [&$pks, &$state, &$userId]);
$result = parent::publish($pks, $state, $userId);
$this->triggerEvent('onAfterPublish', [&$result, $pks, $state, $userId]);
return $result;
}
public function getAssetName()
{
return $this->_getAssetName();
}
}