1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- <?php
- /***************************************************************************\
- * SPIP, Systeme de publication pour l'internet *
- * *
- * Copyright (c) 2001-2014 *
- * 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;
- include_spip('inc/diff');
- /**
- * Afficher le diff d'un champ texte generique
- * @param string $champ
- * @param string $old
- * @param string $new
- * @param string $format
- * apercu, diff ou complet
- * @return string
- */
- function afficher_diff_champ_dist($champ,$old,$new,$format='diff'){
- // ne pas se compliquer la vie !
- if ($old==$new)
- $out = ($format!='complet'?'':$new);
- else {
- if($f = charger_fonction($champ,'afficher_diff', true)){
- return $f($champ, $old, $new, $format);
- }
-
- $diff = new Diff(new DiffTexte);
- $n = preparer_diff($new);
- $o = preparer_diff($old);
- $out = afficher_diff($diff->comparer($n,$o));
- if ($format == 'diff' OR $format == 'apercu')
- $out = afficher_para_modifies($out, ($format == 'apercu'));
- }
- return $out;
- }
- /**
- * http://code.spip.net/@afficher_para_modifies
- *
- * @param string $texte
- * @param bool $court
- * @return string
- */
- function afficher_para_modifies ($texte, $court = false) {
- // Limiter la taille de l'affichage
- if ($court) $max = 200;
- else $max = 2000;
- $texte_ret = "";
- $paras = explode ("\n",$texte);
- for ($i = 0; $i < count($paras) AND strlen($texte_ret) < $max; $i++) {
- if (strpos($paras[$i], '"diff-')) $texte_ret .= $paras[$i]."\n\n";
- # if (strlen($texte_ret) > $max) $texte_ret .= '(...)';
- }
- $texte = $texte_ret;
- return $texte;
- }
|