Advertisement
Guest User

Improve Typo3 Backend Search

a guest
Nov 28th, 2015
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.69 KB | None | 0 0
  1.     /**
  2.      * Improve fe_users search with Fulltext MySQL search to match names in first_name and last_name
  3.      * e.g "jenni mair" will match rows with "jennifer" as first_name and "mair" as last_name
  4.      * @param array $queryParts
  5.      * @param AbstractDatabaseRecordList $parentObject
  6.      * @param string $table
  7.      * @param int $id
  8.      * @param string $addWhere
  9.      * @param string $fieldList
  10.      * @param array $_params
  11.      */
  12.     public function makeQueryArray_post(&$queryParts, $parentObject, $table, $id, $addWhere, $fieldList, $_params)
  13.     {
  14.         if ($table === "fe_users" && !empty($parentObject->searchString)) {
  15.             $searchTokens = String::multiExplode(array(" ", ",", ":", "."), trim($parentObject->searchString));
  16.             if (count($searchTokens) == 2) {
  17.                 /** @var DatabaseConnection $db */
  18.                 $db = $GLOBALS["TYPO3_DB"];
  19.                 $where = trim($queryParts["WHERE"]);
  20.                 //Last character is a closing bracket
  21.                 if (substr($where, -1) === ")") {
  22.                     //Remove last closing bracket so to add another search condition
  23.                     $where = substr($where, 0, -1);
  24.                     //Build Fulltext search
  25.                     $where .= " OR MATCH(first_name,last_name) "
  26.                         . "AGAINST('+" . $db->quoteStr($searchTokens[0], $table)
  27.                         . "* +"
  28.                         . $db->quoteStr($searchTokens[1], $table)
  29.                         . "*' IN BOOLEAN MODE)";
  30.                     //Add removed bracket
  31.                     $where .= ")";
  32.                     $queryParts["WHERE"] = $where;
  33.                 }
  34.             }
  35.         }
  36.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement