diff --git a/libraries/classes/Controllers/Database/EventsController.php b/libraries/classes/Controllers/Database/EventsController.php index ccf45dfb6b..e7749567f9 100644 --- a/libraries/classes/Controllers/Database/EventsController.php +++ b/libraries/classes/Controllers/Database/EventsController.php @@ -76,7 +76,9 @@ final class EventsController extends AbstractController 'items' => $items, 'select_all_arrow_src' => $PMA_Theme->getImgPath() . 'arrow_' . $text_dir . '.png', 'has_privilege' => Util::currentUserHasPrivilege('EVENT', $db), - 'toggle_button' => $this->events->getFooterToggleButton(), + 'scheduler_state' => $this->events->getEventSchedulerStatus(), + 'text_dir' => $text_dir, + 'theme_image_path' => $PMA_Theme->getImgPath(), 'is_ajax' => $this->response->isAjax() && empty($_REQUEST['ajax_page_request']), ]); } diff --git a/libraries/classes/Database/Events.php b/libraries/classes/Database/Events.php index 761cc47490..fb780bc879 100644 --- a/libraries/classes/Database/Events.php +++ b/libraries/classes/Database/Events.php @@ -9,7 +9,6 @@ use PhpMyAdmin\Html\Generator; use PhpMyAdmin\Message; use PhpMyAdmin\Response; use PhpMyAdmin\Template; -use PhpMyAdmin\Url; use PhpMyAdmin\Util; use function count; use function explode; @@ -467,49 +466,15 @@ class Events return $query; } - private function getEventSchedulerStatus(): bool + public function getEventSchedulerStatus(): bool { $state = $this->dbi->fetchValue( 'SHOW GLOBAL VARIABLES LIKE \'event_scheduler\'', 0, 1 ); - $state = strtoupper($state); - return $state === 'ON' || $state === '1'; - } - - public function getFooterToggleButton(): string - { - global $db, $table; - - $state = $this->getEventSchedulerStatus(); - $options = [ - 0 => [ - 'label' => __('OFF'), - 'value' => 'SET GLOBAL event_scheduler="OFF"', - 'selected' => ! $state, - ], - 1 => [ - 'label' => __('ON'), - 'value' => 'SET GLOBAL event_scheduler="ON"', - 'selected' => $state, - ], - ]; - - return Generator::toggleButton( - Url::getFromRoute( - '/sql', - [ - 'db' => $db, - 'table' => $table, - 'goto' => Url::getFromRoute('/database/events', ['db' => $db]), - ] - ), - 'sql_query', - $options, - 'Functions.slidingMessage(data.sql_query);' - ); + return strtoupper($state) === 'ON' || $state === '1'; } /** diff --git a/libraries/classes/Html/Generator.php b/libraries/classes/Html/Generator.php index 30c0369bc2..3bbeec49bb 100644 --- a/libraries/classes/Html/Generator.php +++ b/libraries/classes/Html/Generator.php @@ -186,56 +186,6 @@ class Generator return $ext_but_html; } - /** - * Creates an AJAX sliding toggle button - * (or and equivalent form when AJAX is disabled) - * - * @param string $action The URL for the request to be executed - * @param string $select_name The name for the dropdown box - * @param array $options An array of options - * @param string $callback A JS snippet to execute when the request is - * successfully processed - * - * @return string HTML code for the toggle button - * - * @throws Throwable - * @throws LoaderError - * @throws RuntimeError - * @throws SyntaxError - */ - public static function toggleButton($action, $select_name, array $options, $callback): string - { - global $PMA_Theme; - - $template = new Template(); - // Do the logic first - $link = $action . '&' . urlencode($select_name) . '='; - $link_on = $link . urlencode($options[1]['value']); - $link_off = $link . urlencode($options[0]['value']); - - if ($options[1]['selected'] == true) { - $state = 'on'; - } elseif ($options[0]['selected'] == true) { - $state = 'off'; - } else { - $state = 'on'; - } - - return $template->render( - 'toggle_button', - [ - 'theme_image_path' => $PMA_Theme->getImgPath(), - 'text_dir' => $GLOBALS['text_dir'], - 'link_on' => $link_on, - 'link_off' => $link_off, - 'toggle_on' => $options[1]['label'], - 'toggle_off' => $options[0]['label'], - 'callback' => $callback, - 'state' => $state, - ] - ); - } - /** * Returns an HTML IMG tag for a particular icon from a theme, * which may be an actual file or an icon from a sprite. diff --git a/libraries/classes/Tracking.php b/libraries/classes/Tracking.php index 2ba38c0ec7..97b69ca6c3 100644 --- a/libraries/classes/Tracking.php +++ b/libraries/classes/Tracking.php @@ -1118,22 +1118,6 @@ class Tracking return $entries; } - /** - * Function to get version status - * - * @param array $version version info - * - * @return string The status message - */ - public function getVersionStatus(array $version) - { - if ($version['tracking_active'] == 1) { - return __('active'); - } - - return __('not active'); - } - /** * Get HTML for tracked and untracked tables * @@ -1184,12 +1168,7 @@ class Tracking . '\' AND `version` = \'' . $versionNumber . '\''; $tableResult = $relation->queryAsControlUser($tableQuery); - $versionData = $dbi->fetchArray($tableResult); - $versionData['status_button'] = $this->getStatusButton( - $versionData, - $urlParams - ); - $versions[] = $versionData; + $versions[] = $dbi->fetchArray($tableResult); } } @@ -1249,41 +1228,4 @@ class Tracking //Use helper function to get table list recursively. return $this->extractTableNames($table_list, $db); } - - /** - * Get tracking status button - * - * @param array $versionData data about tracking versions - * @param array $params url parameters - * - * @return string HTML - */ - private function getStatusButton(array $versionData, array $params): string - { - $state = $this->getVersionStatus($versionData); - $options = [ - 0 => [ - 'label' => __('not active'), - 'value' => 'deactivate_now', - 'selected' => $state !== 'active', - ], - 1 => [ - 'label' => __('active'), - 'value' => 'activate_now', - 'selected' => $state === 'active', - ], - ]; - $link = Url::getFromRoute('/table/tracking', array_merge([ - 'db' => $versionData['db_name'], - 'table' => $versionData['table_name'], - 'version' => $versionData['version'], - ], $params)); - - return Generator::toggleButton( - $link, - 'toggle_activation', - $options, - null - ); - } } diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 0acee635e2..585f7d6d97 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -2150,11 +2150,6 @@ parameters: count: 2 path: libraries/classes/Tracking.php - - - message: "#^Parameter \\#4 \\$callback of static method PhpMyAdmin\\\\Html\\\\Generator\\:\\:toggleButton\\(\\) expects string, null given\\.$#" - count: 1 - path: libraries/classes/Tracking.php - - message: "#^Parameter \\#1 \\$classname of function class_exists expects string, PhpMyAdmin\\\\Plugins\\\\TransformationsInterface given\\.$#" count: 2 diff --git a/templates/database/events/index.twig b/templates/database/events/index.twig index 5520ab3c77..7eaf79a843 100644 --- a/templates/database/events/index.twig +++ b/templates/database/events/index.twig @@ -115,7 +115,42 @@
{% trans 'Event scheduler status' %}
- {{ toggle_button|raw }} +
+
+
+ + + + + + + + + +
+ + {{- url('/sql', { + 'db': db, + 'goto': url('/database/events', {'db': db}), + 'sql_query': 'SET GLOBAL event_scheduler="ON"', + }) -}} + +
{% trans 'ON' %}
+
 
+ + {{- url('/sql', { + 'db': db, + 'goto': url('/database/events', {'db': db}), + 'sql_query': 'SET GLOBAL event_scheduler="OFF"', + }) -}} + +
{% trans 'OFF' %}
+
+ Functions.slidingMessage(data.sql_query); + {{ text_dir }} +
+
+
diff --git a/templates/database/tracking/tables.twig b/templates/database/tracking/tables.twig index 943ae7a1f7..bbb1d0660c 100644 --- a/templates/database/tracking/tables.twig +++ b/templates/database/tracking/tables.twig @@ -42,7 +42,44 @@ {{ version.date_updated }} - {{ version.status_button|raw }} +
+
+
+ + + + + + + + + +
+ + {{- url('/table/tracking', { + 'db': version.db_name, + 'table': version.table_name, + 'version': version.version, + 'toggle_activation': 'activate_now', + }) -}} + +
{% trans 'active' %}
+
 
+ + {{- url('/table/tracking', { + 'db': version.db_name, + 'table': version.table_name, + 'version': version.version, + 'toggle_activation': 'deactivate_now', + }) -}} + +
{% trans 'not active' %}
+
+ + {{ text_dir }} +
+
+
- - - - - - - - - -
- {{ link_on|raw }} -
{{ toggle_on }}
-
 
- {{ link_off|raw }} -
{{ toggle_off }}
-
- {{ callback }} - {{ text_dir }} - - -