‪TYPO3CMS  ‪main
QueryParser.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
27 {
31  protected ‪$commandKey = '';
32 
36  protected ‪$tableName = '';
37 
41  public const ‪COMMAND_KEY_INDICATOR = '#';
42 
46  public const ‪COMMAND_SPLIT_INDICATOR = ':';
47 
53  protected function ‪extractKeyFromQuery($query)
54  {
55  [‪$this->commandKey] = explode(':', substr($query, 1));
56  }
57 
64  public function ‪getSearchQueryValue($query)
65  {
66  $this->‪extractKeyFromQuery($query);
67  return str_replace(self::COMMAND_KEY_INDICATOR . $this->commandKey . self::COMMAND_SPLIT_INDICATOR, '', $query);
68  }
69 
76  public function ‪getTableNameFromCommand($query)
77  {
78  ‪$tableName = '';
79  $this->‪extractKeyFromQuery($query);
80  if (array_key_exists($this->commandKey, ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['livesearch'])) {
81  ‪$tableName = ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['livesearch'][‪$this->commandKey];
82  }
83  return ‪$tableName;
84  }
85 
92  public function ‪getId($query)
93  {
94  return (int)str_replace(self::COMMAND_KEY_INDICATOR, '', $query);
95  }
96 
103  public function ‪isValidPageJump($query)
104  {
105  $isValid = false;
106  if (preg_match('~^#(\\d)+$~', $query)) {
107  $isValid = true;
108  }
109  return $isValid;
110  }
111 
118  public function ‪isValidCommand($query)
119  {
120  $isValid = false;
121  if (str_starts_with($query, self::COMMAND_KEY_INDICATOR) && strpos($query, self::COMMAND_SPLIT_INDICATOR) > 1 && $this->‪getTableNameFromCommand($query)) {
122  $isValid = true;
123  }
124  return $isValid;
125  }
126 
133  public function ‪getCommandForTable(‪$tableName)
134  {
135  $commandArray = array_keys(‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['livesearch'], ‪$tableName);
136  return $commandArray[0] ?? '';
137  }
138 
145  public function ‪getCommandForPageJump($query)
146  {
147  if ($this->‪isValidPageJump($query)) {
148  $command = $this->‪getCommandForTable('pages');
149  $id = $this->‪getId($query);
150  $resultQuery = self::COMMAND_KEY_INDICATOR . $command . self::COMMAND_SPLIT_INDICATOR . $id;
151  } else {
152  $resultQuery = false;
153  }
154  return $resultQuery;
155  }
156 }
‪TYPO3\CMS\Backend\Search\LiveSearch\QueryParser\isValidPageJump
‪bool isValidPageJump($query)
Definition: QueryParser.php:101
‪TYPO3\CMS\Backend\Search\LiveSearch\QueryParser
Definition: QueryParser.php:27
‪TYPO3\CMS\Backend\Search\LiveSearch\QueryParser\isValidCommand
‪bool isValidCommand($query)
Definition: QueryParser.php:116
‪TYPO3\CMS\Backend\Search\LiveSearch\QueryParser\COMMAND_KEY_INDICATOR
‪const COMMAND_KEY_INDICATOR
Definition: QueryParser.php:39
‪TYPO3\CMS\Backend\Search\LiveSearch\QueryParser\getId
‪int getId($query)
Definition: QueryParser.php:90
‪TYPO3\CMS\Backend\Search\LiveSearch
Definition: DatabaseRecordProvider.php:18
‪TYPO3\CMS\Backend\Search\LiveSearch\QueryParser\getTableNameFromCommand
‪string getTableNameFromCommand($query)
Definition: QueryParser.php:74
‪TYPO3\CMS\Backend\Search\LiveSearch\QueryParser\COMMAND_SPLIT_INDICATOR
‪const COMMAND_SPLIT_INDICATOR
Definition: QueryParser.php:44
‪TYPO3\CMS\Backend\Search\LiveSearch\QueryParser\extractKeyFromQuery
‪extractKeyFromQuery($query)
Definition: QueryParser.php:51
‪TYPO3\CMS\Backend\Search\LiveSearch\QueryParser\getSearchQueryValue
‪string getSearchQueryValue($query)
Definition: QueryParser.php:62
‪TYPO3\CMS\Backend\Search\LiveSearch\QueryParser\$tableName
‪string $tableName
Definition: QueryParser.php:34
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Backend\Search\LiveSearch\QueryParser\getCommandForPageJump
‪string getCommandForPageJump($query)
Definition: QueryParser.php:143
‪TYPO3\CMS\Backend\Search\LiveSearch\QueryParser\$commandKey
‪string $commandKey
Definition: QueryParser.php:30
‪TYPO3\CMS\Backend\Search\LiveSearch\QueryParser\getCommandForTable
‪string getCommandForTable($tableName)
Definition: QueryParser.php:131