<?php
/***************************************************************************
- * Copyright (C) 2003-2006 Polytechnique.org *
+ * Copyright (C) 2003-2007 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
$this->register_prefilter('at_to_globals');
$this->register_prefilter('trimwhitespace');
+ $this->register_prefilter('form_force_encodings');
$this->addJsLink('xorg.js');
}
case SIMPLE:
$this->assign('simple', true);
+
case SKINNED:
- $this->register_modifier('escape_html', 'escape_html');
- $this->default_modifiers = Array('@escape_html');
+ $this->register_modifier('escape_html', 'escape_html');
+ $this->default_modifiers = Array('@escape_html');
}
+ $this->register_outputfilter('hide_emails');
+ $this->addJsLink('wiki.js');
+ header("Accept-Charset: iso-8859-15, latin9, us-ascii, ascii");
if (!$globals->debug) {
error_reporting(0);
}
if ($globals->debug & 1) {
- $this->assign('db_trace', XDB::trace_format($this, 'database-debug.tpl'));
+ $this->assign('db_trace', XDB::trace_format($this, 'skin/common.database-debug.tpl'));
}
$this->assign('validate', true);
}
// }}}
+ // {{{ function addCssInline
+
+ function addCssInline($css)
+ {
+ if (!empty($css)) {
+ $this->append('xorg_inline_css', $css);
+ }
+ }
+
+ // }}}
// {{{ function setRssLink
function setRssLink($title, $path)
}
// }}}
+// {{{
+
+function form_force_encodings($source, &$smarty)
+{
+ return preg_replace('/<form[^\w]/',
+ '\0 accept-charset="iso-8859-15 latin9 us-ascii ascii" ',
+ $source);
+}
+
+// }}}
+// {{{ function hide_emails
+
+function _hide_email($source)
+{
+ $source = str_replace("\n", '', $source);
+ return '<script type="text/javascript">//<![CDATA[' . "\n" .
+ 'Nix.decode("' . addslashes(str_rot13($source)) . '");' . "\n" .
+ '//]]></script>';
+}
+
+function hide_emails($source, &$smarty)
+{
+ //prevent email replacement in <script> and <textarea>
+ $tags = array('script', 'textarea', 'select');
+
+ foreach ($tags as $tag) {
+ preg_match_all("!<{$tag}[^>]+>.*?</{$tag}>!is", $source, ${$tag});
+ $source = preg_replace("!<{$tag}[^>]+>.*?</{$tag}>!is", "&&&{$tag}&&&", $source);
+ }
+
+ //catch all emails in <a href="mailto:...">
+ preg_match_all("!<a[^>]+href=[\"'][^\"']*[-a-z0-9_.]+@[-a-z0-9_.]+[^\"']*[\"'][^>]*>.*?</a>!is", $source, $ahref);
+ $source = preg_replace("!<a[^>]+href=[\"'][^\"']*[-a-z0-9_.]+@[-a-z0-9_.]+[^\"']*[\"'][^>]*>.*?</a>!is", '&&&ahref&&&', $source);
+
+ //prevant replacement in tag attributes
+ preg_match_all("!<[^>]+[-a-z0-9_.]+@[-a-z0-9_.]+[^>]+>!is", $source, $misc);
+ $source = preg_replace("!<[^>]+[-a-z0-9_.]+@[-a-z0-9_.]+[^>]+>!is", '&&&misc&&&', $source);
+
+ //catch !
+ $source = preg_replace('!([-a-z0-9_.]+@[-a-z0-9_.]+)!ie', '_hide_email("\1")', $source);
+ $source = preg_replace('!&&&ahref&&&!e', '_hide_email(array_shift($ahref[0]))', $source);
+
+ // restore data
+ $source = preg_replace('!&&&misc&&&!e', 'array_shift($misc[0])', $source);
+ foreach ($tags as $tag) {
+ $source = preg_replace("!&&&{$tag}&&&!e", 'array_shift(${$tag}[0])', $source);
+ }
+
+ return $source;
+}
+
+// }}}
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker:
?>