$g, "; } return substr($res,0, -2); case "from": return formatFrom($_text); case "references": $rsl = ""; $ndx = 1; $text = str_replace("><","> <",$_text); $text = preg_split("/[ \t]/",strtr($text,$banana->spool->ids)); $parents = preg_grep("/^\d+$/",$text); $p = array_pop($parents); $par_ok = Array(); while ($p) { $par_ok[]=$p; $p = $banana->spool->overview[$p]->parent; } foreach (array_reverse($par_ok) as $p) { $rsl .= "spool->group}&id=$p\">$ndx "; $ndx++; } return $rsl; case "x-face": return 'x-face'; default: if (function_exists('hook_formatDisplayHeader')) { return hook_formatDisplayHeader($_header, $_text); } return htmlentities($_text); } } /******************************************************************************** * FORMATTING STUFF */ function formatDate($_text) { return strftime("%A %d %B %Y, %H:%M (fuseau serveur)", strtotime($_text)); } function fancyDate($stamp) { $today = intval(time() / (24*3600)); $dday = intval($stamp / (24*3600)); if ($today == $dday) { $format = "%H:%M"; } elseif ($today == 1 + $dday) { $format = _b_('hier')." %H:%M"; } elseif ($today < 7 + $dday) { $format = '%A %H:%M'; } else { $format = '%a %e %b'; } return strftime($format, $stamp); } function formatFrom($text) { # From: mark@cbosgd.ATT.COM # From: mark@cbosgd.ATT.COM (Mark Horton) # From: Mark Horton $mailto = '".htmlentities($regs[1]."@".$regs[2]).""; } if (preg_match("/^([^ ]+)@([^ ]+) \((.*)\)$/",$text,$regs)) { $result="$mailto{$regs[1]}@{$regs[2]}\">".htmlentities($regs[3]).""; } if (preg_match("/^\"?([^<>\"]+)\"? +<(.+)@(.+)>$/",$text,$regs)) { $result="$mailto{$regs[2]}@{$regs[3]}\">".htmlentities($regs[1]).""; } return preg_replace("/\\\(\(|\))/","\\1",$result); } function displayshortcuts($first = -1) { global $banana, $css; $sname = basename($_SERVER['SCRIPT_NAME']); $res = '
'; if (function_exists('hook_displayshortcuts')) { $res .= hook_displayshortcuts($sname, $first); } else { $res .= '['._b_('Déconnexion').'] '; } switch ($sname) { case 'thread.php' : $res .= '['._b_('Liste des forums').'] '; $res .= "[spool->group}\">"._b_('Nouveau message')."] "; if (sizeof($banana->spool->overview)>$banana->tmax) { for ($ndx=1; $ndx<=sizeof($banana->spool->overview); $ndx += $banana->tmax) { if ($first==$ndx) { $res .= "[$ndx-".min($ndx+$banana->tmax-1,sizeof($banana->spool->overview))."] "; } else { $res .= "[spool->group}&first=" ."$ndx\">$ndx-".min($ndx+$banana->tmax-1,sizeof($banana->spool->overview)) ."] "; } } } break; case 'article.php' : $res .= '['._b_('Liste des forums').'] '; $res .= "[spool->group}\">{$banana->spool->group}] "; $res .= "[spool->group}&id={$banana->post->id}&type=followup\">" ._b_('Répondre')."] "; if ($banana->post->checkcancel()) { $res .= "[spool->group}&id={$banana->post->id}&type=cancel\">" ._b_('Annuler ce message')."] "; } break; case 'post.php' : $res .= '['._b_('Liste des forums').'] '; $res .= "[spool->group}\">{$banana->spool->group}]"; break; } $res .= '
'; return $res; } /******************************************************************************** * FORMATTING STUFF : BODY */ function wrap($text, $_prefix="") { $parts = preg_split("/\n-- ?\n/", $text); if (count($parts) >1) { $sign = "\n-- \n" . array_pop($parts); $text = join("\n-- \n", $parts); } else { $sign = ''; $text = $text; } global $banana; $length = $banana->wrap; $cmd = "echo ".escapeshellarg($text)." | perl -MText::Autoformat -e 'autoformat {left=>1, right=>$length, all=>1 };'"; exec($cmd, $result); return $_prefix.join("\n$_prefix", $result).($_prefix ? '' : $sign); } function formatbody($_text) { $res = "\n\n" . htmlentities(wrap($_text, ""))."\n\n"; $res = preg_replace("/(<|>|")/", " \\1 ", $res); $res = preg_replace('/(["\[])?((https?|ftp|news):\/\/[a-z@0-9.~%$£µ&i#\-+=_\/\?]*)(["\]])?/i', "\\1\\2\\4", $res); $res = preg_replace("/ (<|>|") /", "\\1", $res); $parts = preg_split("/\n-- ?\n/", $res); if (count($parts) > 1) { $sign = "
" . array_pop($parts);
        return join("\n-- \n", $parts).$sign;
    } else {
        return $res;
    }
}

?>