primo commit
This commit is contained in:
1252
libraries/fof40/Controller/Controller.php
Normal file
1252
libraries/fof40/Controller/Controller.php
Normal file
File diff suppressed because it is too large
Load Diff
1695
libraries/fof40/Controller/DataController.php
Normal file
1695
libraries/fof40/Controller/DataController.php
Normal file
File diff suppressed because it is too large
Load Diff
19
libraries/fof40/Controller/Exception/CannotGetName.php
Normal file
19
libraries/fof40/Controller/Exception/CannotGetName.php
Normal file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
/**
|
||||
* @package FOF
|
||||
* @copyright Copyright (c)2010-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
namespace FOF40\Controller\Exception;
|
||||
|
||||
defined('_JEXEC') || die;
|
||||
|
||||
use RuntimeException;
|
||||
|
||||
/**
|
||||
* Exception thrown when we can't get a Controller's name
|
||||
*/
|
||||
class CannotGetName extends RuntimeException
|
||||
{
|
||||
}
|
||||
20
libraries/fof40/Controller/Exception/ItemNotFound.php
Normal file
20
libraries/fof40/Controller/Exception/ItemNotFound.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
/**
|
||||
* @package FOF
|
||||
* @copyright Copyright (c)2010-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
namespace FOF40\Controller\Exception;
|
||||
|
||||
defined('_JEXEC') || die;
|
||||
|
||||
use RuntimeException;
|
||||
|
||||
/**
|
||||
* Exception thrown when we can't find the requested item in a read task
|
||||
*/
|
||||
class ItemNotFound extends RuntimeException
|
||||
{
|
||||
|
||||
}
|
||||
30
libraries/fof40/Controller/Exception/LockedRecord.php
Normal file
30
libraries/fof40/Controller/Exception/LockedRecord.php
Normal file
@ -0,0 +1,30 @@
|
||||
<?php
|
||||
/**
|
||||
* @package FOF
|
||||
* @copyright Copyright (c)2010-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
namespace FOF40\Controller\Exception;
|
||||
|
||||
defined('_JEXEC') || die;
|
||||
|
||||
use Exception;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use RuntimeException;
|
||||
|
||||
/**
|
||||
* Exception thrown when the provided Model is locked for writing by another user
|
||||
*/
|
||||
class LockedRecord extends RuntimeException
|
||||
{
|
||||
public function __construct(string $message = "", int $code = 403, Exception $previous = null)
|
||||
{
|
||||
if (empty($message))
|
||||
{
|
||||
$message = Text::_('LIB_FOF40_CONTROLLER_ERR_LOCKED');
|
||||
}
|
||||
|
||||
parent::__construct($message, $code, $previous);
|
||||
}
|
||||
}
|
||||
19
libraries/fof40/Controller/Exception/NotADataModel.php
Normal file
19
libraries/fof40/Controller/Exception/NotADataModel.php
Normal file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
/**
|
||||
* @package FOF
|
||||
* @copyright Copyright (c)2010-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
namespace FOF40\Controller\Exception;
|
||||
|
||||
defined('_JEXEC') || die;
|
||||
|
||||
use InvalidArgumentException;
|
||||
|
||||
/**
|
||||
* Exception thrown when the provided Model is not a DataModel
|
||||
*/
|
||||
class NotADataModel extends InvalidArgumentException
|
||||
{
|
||||
}
|
||||
19
libraries/fof40/Controller/Exception/NotADataView.php
Normal file
19
libraries/fof40/Controller/Exception/NotADataView.php
Normal file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
/**
|
||||
* @package FOF
|
||||
* @copyright Copyright (c)2010-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
namespace FOF40\Controller\Exception;
|
||||
|
||||
defined('_JEXEC') || die;
|
||||
|
||||
use InvalidArgumentException;
|
||||
|
||||
/**
|
||||
* Exception thrown when the provided View does not implement DataViewInterface
|
||||
*/
|
||||
class NotADataView extends InvalidArgumentException
|
||||
{
|
||||
}
|
||||
19
libraries/fof40/Controller/Exception/TaskNotFound.php
Normal file
19
libraries/fof40/Controller/Exception/TaskNotFound.php
Normal file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
/**
|
||||
* @package FOF
|
||||
* @copyright Copyright (c)2010-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
namespace FOF40\Controller\Exception;
|
||||
|
||||
defined('_JEXEC') || die;
|
||||
|
||||
use InvalidArgumentException;
|
||||
|
||||
/**
|
||||
* Exception thrown when we can't find a suitable method to handle the requested task
|
||||
*/
|
||||
class TaskNotFound extends InvalidArgumentException
|
||||
{
|
||||
}
|
||||
82
libraries/fof40/Controller/Mixin/PredefinedTaskList.php
Normal file
82
libraries/fof40/Controller/Mixin/PredefinedTaskList.php
Normal file
@ -0,0 +1,82 @@
|
||||
<?php
|
||||
/**
|
||||
* @package FOF
|
||||
* @copyright Copyright (c)2010-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
namespace FOF40\Controller\Mixin;
|
||||
|
||||
defined('_JEXEC') || die;
|
||||
|
||||
use FOF40\Controller\Controller;
|
||||
|
||||
/**
|
||||
* Force a Controller to allow access to specific tasks only, no matter which tasks are already defined in this
|
||||
* Controller.
|
||||
*
|
||||
* Include this Trait and then in your constructor do this:
|
||||
* $this->setPredefinedTaskList(['atask', 'anothertask', 'something']);
|
||||
*
|
||||
* WARNING: If you override execute() you will need to copy the logic from this trait's execute() method.
|
||||
*/
|
||||
trait PredefinedTaskList
|
||||
{
|
||||
|
||||
/**
|
||||
* A list of predefined tasks. Trying to access any other task will result in the first task of this list being
|
||||
* executed instead.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $predefinedTaskList = [];
|
||||
|
||||
/**
|
||||
* Overrides the execute method to implement the predefined task list feature
|
||||
*
|
||||
* @param string $task The task to execute
|
||||
*
|
||||
* @return mixed The controller task result
|
||||
*/
|
||||
public function execute(string $task)
|
||||
{
|
||||
if (!in_array($task, $this->predefinedTaskList))
|
||||
{
|
||||
$task = reset($this->predefinedTaskList);
|
||||
}
|
||||
|
||||
return parent::execute($task);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the predefined task list and registers the first task in the list as the Controller's default task
|
||||
*
|
||||
* @param array $taskList The task list to register
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setPredefinedTaskList(array $taskList): void
|
||||
{
|
||||
/** @var Controller $this */
|
||||
|
||||
// First, unregister all known tasks which are not in the taskList
|
||||
$allTasks = $this->getTasks();
|
||||
|
||||
foreach ($allTasks as $task)
|
||||
{
|
||||
if (in_array($task, $taskList))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$this->unregisterTask($task);
|
||||
}
|
||||
|
||||
// Set the predefined task list
|
||||
$this->predefinedTaskList = $taskList;
|
||||
|
||||
// Set the default task
|
||||
$this->registerDefaultTask(reset($this->predefinedTaskList));
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user