<?php
/**
 * @file formater_mail.php
 * @brief Page qui reformate un mail pour écrire une réponse au format texte
 *
 * @author hughes monget
 * @see http://monget.com/
 */
define('STR_MAIL',    'mail');
define('STR_ACTION',  'action');
define('STR_QUOTE',   'quote');
define('STR_WRAP',    'wrap');
define('INT_WRAP',    70);
define('STR_CHECKED', ' checked="checked"');
$bool_action = isset($_REQUEST[STR_ACTION]) && isset($_REQUEST[STR_MAIL]);
$bool_quote  = TRUE;
$int_wrap    = INT_WRAP;
$str_mail     = '';
$str_formater = '';
if ($bool_action)
{
    $str_mail = $_REQUEST[STR_MAIL];
    if (get_magic_quotes_gpc())
    {
        $str_mail = stripslashes($str_mail);
    }
    $bool_quote = isset($_REQUEST[STR_QUOTE]);
    if (isset($_REQUEST[STR_WRAP]))
    {
        $int_wrap = intval($_REQUEST[STR_WRAP]);
        if (!($int_wrap > 0))
        {
            $int_wrap = INT_WRAP;
        }
    }
    $str_formater  = $str_mail;
    $str_formater  = strip_tags($str_formater); // On supprime les balises html.
    $str_formater  = str_replace(array("\r\n", "\r"), "\n", $str_formater); // On normalise les sauts de lignes.
    foreach (array('’' => "'", '‘' => '\'', '’' => '\'', 'œ' => 'oe', '…' => '...', '€' => '€') as $str_entite => $str_caractere)
    {
        $str_formater  = str_replace(html_entity_decode($str_entite), $str_caractere, $str_formater);
    }
    $str_formater  = str_replace('’', '\'', $str_formater);
    $str_formater  = preg_replace('/[\t ]+/m', ' ', $str_formater); // On réduit les espaces multiples.
    $str_formater  = wordwrap($str_formater, $int_wrap); // On wrappe.
    $arr_str_ligne = preg_split('/\n/', $str_formater);
    $arr_str_ligne = array_map('trim', $arr_str_ligne);
    $str_formater  = implode("\n", $arr_str_ligne);
    $str_formater  = preg_replace('/\n{3,}/m', "\n\n", $str_formater); // On réduit les sauts de lignes multiples.
    if ($bool_quote)
    {
        $str_formater  = preg_replace('/^.*$/m', '> \\0', $str_formater);
    }
    //$str_mail     = htmlspecialchars($str_mail);
    $str_formater = htmlspecialchars($str_formater, ENT_QUOTES, 'ISO-8859-15');
    foreach (array('&#8217;' => '\'') as $str_entite => $str_caractere)
    {
        $str_formater  = str_replace($str_entite, $str_caractere, $str_formater);
    }
}
$str_quote = '';
if ($bool_quote)
{
    $str_quote = STR_CHECKED;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
        <title>Formater un mail</title>
        <style type="text/css">
        <!--
        body *
        {
            font-family: monospace;
            font-size: 8pt;
        }
        textarea
        {
            height: 200px;
            width: 600px;
        }
        input.submit
        {
            width: 100px;
            display: block;
        }
        input#<?php print STR_WRAP; ?>
        {
            width: 50px;
        }
        -->
        </style>
        <script type="text/javascript">
        <!--;
            function on_load()
            {
                if (document && document.getElementById)
                {
                    var obj_pattern = document.getElementById('<?php print STR_MAIL; ?>');
                    if (obj_pattern && obj_pattern.focus)
                    {
                        obj_pattern.focus();
                    }
                }
            }
        //-->
        </script>
    </head>
    <body onload="on_load();">
        <form method="post">
            <input type="hidden" name="<?php echo STR_ACTION; ?>" value="<?php echo STR_ACTION; ?>" />
            <textarea id="<?php print STR_MAIL; ?>" name="<?php print STR_MAIL; ?>"><?php print $str_mail; ?></textarea>
            <div>
                <label for="<?php print STR_QUOTE; ?>">Quote:</label>
                <input id="<?php print STR_QUOTE; ?>" name="<?php print STR_QUOTE; ?>" type="checkbox" <?php print $str_quote; ?> />
                <label for="<?php print STR_WRAP; ?>">Wrap:</label>
                <input id="<?php print STR_WRAP; ?>" name="<?php print STR_WRAP; ?>" type="text" value="<?php print $int_wrap; ?>" />
            </div>
            <input type="submit" class="submit" value="formater" />
        </form>
<?php
if ($bool_action)
{
    printf('<textarea onclick="this.select();">%s</textarea>', $str_formater);
}
echo '<hr />';
highlight_file(__FILE__);
?>
    </body>
</html>