File Manager

Current Directory: /home/astoriaah/www/administrator/components/com_akeeba/Model
Viewing File: /home/astoriaah/www/administrator/components/com_akeeba/Model/RegExDatabaseFilters.php
<?php /** * @package akeebabackup * @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd * @license GNU General Public License version 3, or later */ namespace Akeeba\Backup\Admin\Model; // Protect from unauthorized access defined('_JEXEC') || die(); use Akeeba\Backup\Admin\Model\Mixin\ExclusionFilter; use Akeeba\Engine\Factory; use FOF40\Model\Model; /** * RegEx Database Filters model * * Handles the exclusion of database tables (whole or just their data) using regular expressions */ class RegExDatabaseFilters extends Model { use ExclusionFilter; /** * Which RegEx filters are handled by this model? * * @var array */ protected $knownRegExFilters = [ 'regextables', 'regextabledata' ]; /** * Returns an array containing a list of regex filters and their respective type for a given root * * @param string $root The database root to list * * @return array Array of definitions */ public function get_regex_filters($root) { // These are the regex filters I know of // Filters already set $set_filters = array(); // Loop all filter types foreach ($this->knownRegExFilters as $filter_name) { // Get this filter type's set filters $filter = Factory::getFilterObject($filter_name); $temp_filters = $filter->getFilters($root); // Merge this filter type's regular expressions to the list if (count($temp_filters)) { foreach ($temp_filters as $new_regex) { $set_filters[] = array( 'type' => $filter_name, 'item' => $new_regex ); } } } return $set_filters; } /** * Delete a regex filter * * @param string $type Filter type * @param string $root The filter's root * @param string $string The filter string to remove * * @return bool True on success */ public function remove($type, $root, $string) { $ret = $this->applyExclusionFilter($type, $root, $string, 'remove'); return $ret['success']; } /** * Creates a new regex filter * * @param string $type Filter type * @param string $root The filter's root * @param string $string The filter string to remove * * @return bool True on success */ public function setFilter($type, $root, $string) { $ret = $this->applyExclusionFilter($type, $root, $string, 'set'); return $ret['success']; } /** * Handles a request coming in through AJAX. Basically, this is a simple proxy to the model methods. * * @return array */ public function doAjax() { $action = $this->getState('action'); $verb = array_key_exists('verb', $action) ? $action['verb'] : null; $ret_array = array(); switch ($verb) { // Produce a list of regex filters case 'list': $ret_array = $this->get_regex_filters($action['root']); break; // Set a filter (used by the editor) case 'set': $ret_array = array('success' => $this->setFilter($action['type'], $action['root'], $action['node'])); break; // Remove a filter (used by the editor) case 'remove': $ret_array = array('success' => $this->remove($action['type'], $action['root'], $action['node'])); break; } return $ret_array; } }