[SPIP] +2.1.12
[velocampus/web/www.git] / www / ecrire / inc / surligne.php
diff --git a/www/ecrire/inc/surligne.php b/www/ecrire/inc/surligne.php
new file mode 100644 (file)
index 0000000..2a38981
--- /dev/null
@@ -0,0 +1,85 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2011                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+
+//
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+// Ces commentaires vont etre substitue's en mode recherche
+// voir les champs SURLIGNE dans inc-index-squel
+
+define('MARQUEUR_SURLIGNE',  'debut_surligneconditionnel');
+define('MARQUEUR_FSURLIGNE', 'finde_surligneconditionnel');
+
+
+// http://doc.spip.org/@surligner_mots
+function surligner_mots($page) {
+  $surlignejs_engines = array(
+      array(",".str_replace(array("/","."),array("\/","\."),$GLOBALS['meta']['adresse_site']).",i", ",recherche=([^&]+),i"), //SPIP
+      array(",^http://(www\.)?google\.,i", ",q=([^&]+),i"),                            // Google
+      array(",^http://(www\.)?search\.yahoo\.,i", ",p=([^&]+),i"),                     // Yahoo
+      array(",^http://(www\.)?search\.msn\.,i", ",q=([^&]+),i"),                       // MSN
+      array(",^http://(www\.)?search\.live\.,i", ",query=([^&]+),i"),                  // MSN Live
+      array(",^http://(www\.)?search\.aol\.,i", ",userQuery=([^&]+),i"),               // AOL
+      array(",^http://(www\.)?ask\.com,i", ",q=([^&]+),i"),                            // Ask.com
+      array(",^http://(www\.)?altavista\.,i", ",q=([^&]+),i"),                         // AltaVista
+      array(",^http://(www\.)?feedster\.,i", ",q=([^&]+),i"),                          // Feedster
+      array(",^http://(www\.)?search\.lycos\.,i", ",q=([^&]+),i"),                     // Lycos
+      array(",^http://(www\.)?alltheweb\.,i", ",q=([^&]+),i"),                         // AllTheWeb
+      array(",^http://(www\.)?technorati\.com,i", ",([^\?\/]+)(?:\?.*)$,i"),           // Technorati  
+  );
+
+    
+  $ref = $_SERVER['HTTP_REFERER'];
+  //avoid a js injection
+  if($surcharge_surligne=_request("var_recherche")) {
+    $surcharge_surligne = preg_replace(",(?<!\\\\)((?:(?>\\\\){2})*)('),","$1\\\\$2",$surcharge_surligne);
+    $surcharge_surligne = str_replace("\\","\\\\",$surcharge_surligne);
+    if($GLOBALS['meta']['charset']=='utf-8') {
+      include_spip('inc/charsets');
+      if(!is_utf8($surcharge_surligne)) $surcharge_surligne = utf8_encode($surcharge_surligne);
+    }  
+  }
+  foreach($surlignejs_engines as $engine) 
+    if($surcharge_surligne || (preg_match($engine[0],$ref) && preg_match($engine[1],$ref))) { 
+      
+      //good referrer found or var_recherche is not null
+      include_spip('inc/filtres');
+      $script = "
+      <script type='text/javascript' src='".url_absolue(find_in_path('javascript/SearchHighlight.js'))."'></script>
+      <script type='text/javascript'>/*<![CDATA[*/
+      if (window.jQuery)
+        (function(\$){\$(function(){
+          \$(document).SearchHighlight({
+            style_name:'spip_surligne',
+            exact:'whole',
+            style_name_suffix:false,
+            engines:[/^".str_replace(array("/","."),array("\/","\."),$GLOBALS['meta']['adresse_site'])."/i,/recherche=([^&]+)/i],
+            highlight:'.surlignable',
+            nohighlight:'.pas_surlignable'".
+            ($surcharge_surligne?",
+            keys:'$surcharge_surligne'":"").",
+            min_length: 3
+          })
+        });
+      })(jQuery);
+      /*]]>*/</script>
+      ";
+      // on l'insere juste avant </head>, sinon tout en bas
+       if (is_null($l = strpos($page,'</head>')))
+               $l = strlen($page);
+       $page = substr_replace($page, $script, $l,0);
+      break;
+    }
+  return $page;
+}
+?>