* @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Banners\Administrator\Model; use Joomla\CMS\Factory; use Joomla\CMS\MVC\Model\AdminModel; use Joomla\CMS\Table\Table; use Joomla\CMS\Versioning\VersionableModelTrait; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Client model. * * @since 1.6 */ class ClientModel extends AdminModel { use VersionableModelTrait; /** * The type alias for this content type. * * @var string * @since 3.2 */ public $typeAlias = 'com_banners.client'; /** * Method to test whether a record can be deleted. * * @param object $record A record object. * * @return boolean True if allowed to delete the record. Defaults to the permission set in the component. * * @since 1.6 */ protected function canDelete($record) { if (empty($record->id) || $record->state != -2) { return false; } if (!empty($record->catid)) { return Factory::getUser()->authorise('core.delete', 'com_banners.category.' . (int) $record->catid); } return parent::canDelete($record); } /** * Method to test whether a record can have its state changed. * * @param object $record A record object. * * @return boolean True if allowed to change the state of the record. * Defaults to the permission set in the component. * * @since 1.6 */ protected function canEditState($record) { $user = Factory::getUser(); if (!empty($record->catid)) { return $user->authorise('core.edit.state', 'com_banners.category.' . (int) $record->catid); } return $user->authorise('core.edit.state', 'com_banners'); } /** * Method to get the record form. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return \Joomla\CMS\Form\Form|boolean A Form object on success, false on failure * * @since 1.6 */ public function getForm($data = array(), $loadData = true) { // Get the form. $form = $this->loadForm('com_banners.client', 'client', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } return $form; } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 1.6 */ protected function loadFormData() { // Check the session for previously entered form data. $data = Factory::getApplication()->getUserState('com_banners.edit.client.data', array()); if (empty($data)) { $data = $this->getItem(); } $this->preprocessData('com_banners.client', $data); return $data; } /** * Prepare and sanitise the table prior to saving. * * @param Table $table A Table object. * * @return void * * @since 1.6 */ protected function prepareTable($table) { $table->name = htmlspecialchars_decode($table->name, ENT_QUOTES); } }