@@ -15,7 +15,7 @@ discard block |
||
| 15 | 15 | * @package SPIP\Core\Surligne |
| 16 | 16 | **/ |
| 17 | 17 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 18 | - return; |
|
| 18 | + return; |
|
| 19 | 19 | } |
| 20 | 20 | |
| 21 | 21 | /** |
@@ -34,43 +34,43 @@ discard block |
||
| 34 | 34 | * Page HTML |
| 35 | 35 | **/ |
| 36 | 36 | function surligner_mots($page, $surcharge_surligne = '') { |
| 37 | - $surlignejs_engines = [ |
|
| 38 | - [ |
|
| 39 | - ',' . str_replace(['/', '.'], ['\/', '\.'], $GLOBALS['meta']['adresse_site']) . ',i', |
|
| 40 | - ',recherche=([^&]+),i' |
|
| 41 | - ], //SPIP |
|
| 42 | - [',^http://(www\.)?google\.,i', ',q=([^&]+),i'], // Google |
|
| 43 | - [',^http://(www\.)?search\.yahoo\.,i', ',p=([^&]+),i'], // Yahoo |
|
| 44 | - [',^http://(www\.)?search\.msn\.,i', ',q=([^&]+),i'], // MSN |
|
| 45 | - [',^http://(www\.)?search\.live\.,i', ',query=([^&]+),i'], // MSN Live |
|
| 46 | - [',^http://(www\.)?search\.aol\.,i', ',userQuery=([^&]+),i'], // AOL |
|
| 47 | - [',^http://(www\.)?ask\.com,i', ',q=([^&]+),i'], // Ask.com |
|
| 48 | - [',^http://(www\.)?altavista\.,i', ',q=([^&]+),i'], // AltaVista |
|
| 49 | - [',^http://(www\.)?feedster\.,i', ',q=([^&]+),i'], // Feedster |
|
| 50 | - [',^http://(www\.)?search\.lycos\.,i', ',q=([^&]+),i'], // Lycos |
|
| 51 | - [',^http://(www\.)?alltheweb\.,i', ',q=([^&]+),i'], // AllTheWeb |
|
| 52 | - [',^http://(www\.)?technorati\.com,i', ',([^\?\/]+)(?:\?.*)$,i'], // Technorati |
|
| 53 | - ]; |
|
| 37 | + $surlignejs_engines = [ |
|
| 38 | + [ |
|
| 39 | + ',' . str_replace(['/', '.'], ['\/', '\.'], $GLOBALS['meta']['adresse_site']) . ',i', |
|
| 40 | + ',recherche=([^&]+),i' |
|
| 41 | + ], //SPIP |
|
| 42 | + [',^http://(www\.)?google\.,i', ',q=([^&]+),i'], // Google |
|
| 43 | + [',^http://(www\.)?search\.yahoo\.,i', ',p=([^&]+),i'], // Yahoo |
|
| 44 | + [',^http://(www\.)?search\.msn\.,i', ',q=([^&]+),i'], // MSN |
|
| 45 | + [',^http://(www\.)?search\.live\.,i', ',query=([^&]+),i'], // MSN Live |
|
| 46 | + [',^http://(www\.)?search\.aol\.,i', ',userQuery=([^&]+),i'], // AOL |
|
| 47 | + [',^http://(www\.)?ask\.com,i', ',q=([^&]+),i'], // Ask.com |
|
| 48 | + [',^http://(www\.)?altavista\.,i', ',q=([^&]+),i'], // AltaVista |
|
| 49 | + [',^http://(www\.)?feedster\.,i', ',q=([^&]+),i'], // Feedster |
|
| 50 | + [',^http://(www\.)?search\.lycos\.,i', ',q=([^&]+),i'], // Lycos |
|
| 51 | + [',^http://(www\.)?alltheweb\.,i', ',q=([^&]+),i'], // AllTheWeb |
|
| 52 | + [',^http://(www\.)?technorati\.com,i', ',([^\?\/]+)(?:\?.*)$,i'], // Technorati |
|
| 53 | + ]; |
|
| 54 | 54 | |
| 55 | 55 | |
| 56 | - $ref = $_SERVER['HTTP_REFERER'] ?? null; |
|
| 57 | - //avoid a js injection |
|
| 58 | - if ($surcharge_surligne) { |
|
| 59 | - $surcharge_surligne = preg_replace(",(?<!\\\\)((?:(?>\\\\){2})*)('),", '$1\\\$2', $surcharge_surligne); |
|
| 60 | - $surcharge_surligne = str_replace('\\', '\\\\', $surcharge_surligne); |
|
| 61 | - if ($GLOBALS['meta']['charset'] == 'utf-8') { |
|
| 62 | - include_spip('inc/charsets'); |
|
| 63 | - if (!is_utf8($surcharge_surligne)) { |
|
| 64 | - $surcharge_surligne = mb_convert_encoding($surcharge_surligne, 'UTF-8', 'ISO-8859-1'); |
|
| 65 | - } |
|
| 66 | - } |
|
| 67 | - $surcharge_surligne = preg_replace(',\*$,', '', trim($surcharge_surligne)); # supprimer un * final |
|
| 68 | - } |
|
| 69 | - foreach ($surlignejs_engines as $engine) { |
|
| 70 | - if ($surcharge_surligne || (preg_match($engine[0], $ref) && preg_match($engine[1], $ref))) { |
|
| 71 | - //good referrer found or var_recherche is not null |
|
| 72 | - include_spip('inc/filtres'); |
|
| 73 | - $script = " |
|
| 56 | + $ref = $_SERVER['HTTP_REFERER'] ?? null; |
|
| 57 | + //avoid a js injection |
|
| 58 | + if ($surcharge_surligne) { |
|
| 59 | + $surcharge_surligne = preg_replace(",(?<!\\\\)((?:(?>\\\\){2})*)('),", '$1\\\$2', $surcharge_surligne); |
|
| 60 | + $surcharge_surligne = str_replace('\\', '\\\\', $surcharge_surligne); |
|
| 61 | + if ($GLOBALS['meta']['charset'] == 'utf-8') { |
|
| 62 | + include_spip('inc/charsets'); |
|
| 63 | + if (!is_utf8($surcharge_surligne)) { |
|
| 64 | + $surcharge_surligne = mb_convert_encoding($surcharge_surligne, 'UTF-8', 'ISO-8859-1'); |
|
| 65 | + } |
|
| 66 | + } |
|
| 67 | + $surcharge_surligne = preg_replace(',\*$,', '', trim($surcharge_surligne)); # supprimer un * final |
|
| 68 | + } |
|
| 69 | + foreach ($surlignejs_engines as $engine) { |
|
| 70 | + if ($surcharge_surligne || (preg_match($engine[0], $ref) && preg_match($engine[1], $ref))) { |
|
| 71 | + //good referrer found or var_recherche is not null |
|
| 72 | + include_spip('inc/filtres'); |
|
| 73 | + $script = " |
|
| 74 | 74 | <script type='text/javascript' src='" . url_absolue(find_in_path('javascript/SearchHighlight.js')) . "'></script> |
| 75 | 75 | <script type='text/javascript'> |
| 76 | 76 | var highlighter = function() { |
@@ -82,7 +82,7 @@ discard block |
||
| 82 | 82 | engines:[/^" . str_replace(['/', '.'], ['\/', '\.'], $GLOBALS['meta']['adresse_site']) . "/i,/recherche=([^&]+)/i], |
| 83 | 83 | highlight:'.surlignable', |
| 84 | 84 | nohighlight:'.pas_surlignable'" . |
| 85 | - ($surcharge_surligne ? ", |
|
| 85 | + ($surcharge_surligne ? ", |
|
| 86 | 86 | keys:'$surcharge_surligne'" : '') . ', |
| 87 | 87 | min_length: 3 |
| 88 | 88 | }); |
@@ -93,14 +93,14 @@ discard block |
||
| 93 | 93 | }; |
| 94 | 94 | </script> |
| 95 | 95 | '; |
| 96 | - // on l'insere juste avant </head>, sinon tout en bas |
|
| 97 | - if (is_null($l = strpos($page, '</head>'))) { |
|
| 98 | - $l = strlen($page); |
|
| 99 | - } |
|
| 100 | - $page = substr_replace($page, $script, $l, 0); |
|
| 101 | - break; |
|
| 102 | - } |
|
| 103 | - } |
|
| 96 | + // on l'insere juste avant </head>, sinon tout en bas |
|
| 97 | + if (is_null($l = strpos($page, '</head>'))) { |
|
| 98 | + $l = strlen($page); |
|
| 99 | + } |
|
| 100 | + $page = substr_replace($page, $script, $l, 0); |
|
| 101 | + break; |
|
| 102 | + } |
|
| 103 | + } |
|
| 104 | 104 | |
| 105 | - return $page; |
|
| 105 | + return $page; |
|
| 106 | 106 | } |