function trimwhitespace($source, &$smarty)
{
$tags = '(script|pre|textarea)';
- preg_match_all("!<$tags.*?>.*?</$tags>!is", $source, $tagsmatches);
- $source = preg_replace("!<$tags.*?>.*?</$tags>!is", "&&&tags&&&", $source);
+ preg_match_all("!<$tags.*?>.*?</$tags>!ius", $source, $tagsmatches);
+ $source = preg_replace("!<$tags.*?>.*?</$tags>!ius", "&&&tags&&&", $source);
// remove all leading spaces, tabs and carriage returns NOT
// preceeded by a php close tag.
{
//prevent email replacement in <script> and <textarea>
$tags = '(script|textarea|select)';
- preg_match_all("!<$tags.*?>.*?</$tags>!is", $source, $tagsmatches);
- $source = preg_replace("!<$tags.*?>.*?</$tags>!is", "&&&tags&&&", $source);
+ preg_match_all("!<$tags.*?>.*?</$tags>!ius", $source, $tagsmatches);
+ $source = preg_replace("!<$tags.*?>.*?</$tags>!ius", "&&&tags&&&", $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);
+ preg_match_all("!<a[^>]+href=[\"'][^\"']*[-a-z0-9+_.]+@[-a-z0-9_.]+[^\"']*[\"'].*?>.*?</a>!ius", $source, $ahref);
+ $source = preg_replace("!<a[^>]+href=[\"'][^\"']*[-a-z0-9+_.]+@[-a-z0-9_.]+[^\"']*[\"'].*?>.*?</a>!ius", '&&&ahref&&&', $source);
//prevant replacement in tag attributes
preg_match_all("!<[^>]+[-a-z0-9_+.]+@[-a-z0-9_.]+.+?>!is", $source, $misc);
{
$this->charset = $charset;
$this->Mail_Mime("\n");
- $this->mail = @Mail::factory('sendmail', Array('sendmail_args' => '-oi'));
+ $this->mail = Mail::factory('sendmail', Array('sendmail_args' => '-oi'));
if (!is_null($tpl)) {
$this->page =& PlMail::get($this, $tpl);
}
*/
private function correct_emails($email)
{
- return preg_replace('!(^|, *)([^<"]+?) *(<[^>]*>)!', '\1"\2" \3', $email);
+ return preg_replace('!(^|, *)([^<"]+?) *(<[^>]*>)!u', '\1"\2" \3', $email);
}
public function addTo($email)
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
***************************************************************************/
-global $lc_accent, $lc_plain, $uc_accent, $uc_plain;
-require_once 'diogenes/diogenes.misc.inc.php';
-
class Session
{
public static function init()
@session_start();
if (empty($_SESSION['challenge'])) {
$_SESSION['challenge'] = sha1(uniqid(rand(), true));
- }
+ }
}
public static function destroy()
class XDB
{
+ public static $connec = null;
var $_trace_data = array();
public static function _prepare($args)
$length = 0;
foreach ($query as $key=>$line) {
$local = -2;
- if (preg_match('/^([A-Z]+(?:\s+(?:JOIN|BY|FROM|INTO))?)\s+(.*)/', $line, $matches)
+ if (preg_match('/^([A-Z]+(?:\s+(?:JOIN|BY|FROM|INTO))?)\s+(.*)/u', $line, $matches)
&& $matches[1] != 'AND' && $matches[1] != 'OR')
{
$local = strlen($matches[1]);
{
global $globals;
- if ($globals->debug & 1) {
- $_res = mysql_query("EXPLAIN $query");
+ if ($globals->debug & 1 && strpos($query, 'FOUND_ROWS()') === false) {
+ $_res = mysqli_query(XDB::$connec, "EXPLAIN $query");
$explain = array();
- while ($row = @mysql_fetch_assoc($_res)) {
+ while ($row = mysqli_fetch_assoc($_res)) {
$explain[] = $row;
}
$trace_data = array('query' => XDB::_reformatQuery($query), 'explain' => $explain);
- @mysql_free_result($_res);
+ @mysqli_free_result($_res);
+ $time_start = microtime();
+ } elseif ($globals->debug & 1) {
+ $trace_data = array('query' => XDB::_reformatQuery($query), 'explain' => array());
$time_start = microtime();
}
- $res = mysql_query($query);
-
+ $res = mysqli_query(XDB::$connec, $query);
+
if ($globals->debug & 1) {
list($ue, $se) = explode(" ", microtime());
list($us, $ss) = explode(" ", $time_start);
$time = intval((($ue - $us) + ($se - $ss)) * 1000);
- $trace_data['error'] = mysql_error();
+ $trace_data['error'] = mysqli_error(XDB::$connec);
$trace_data['exectime'] = $time;
- $trace_data['rows'] = @mysql_num_rows() ? mysql_num_rows() : mysql_affected_rows();
+ $trace_data['rows'] = @mysqli_num_rows($res) ? mysqli_num_rows($res) : mysqli_affected_rows(XDB::$connec);
$GLOBALS['XDB::trace_data'][] = $trace_data;
- if (mysql_errno()) {
+ if (mysqli_errno(XDB::$connec)) {
$GLOBALS['XDB::error'] = true;
}
}
public static function insertId()
{
- return mysql_insert_id();
+ return mysqli_insert_id(XDB::$connec);
}
public static function _db_escape($var)
function free()
{
- mysql_free_result($this->_res);
+ mysqli_free_result($this->_res);
unset($this);
}
function _fetchRow()
{
- return mysql_fetch_row($this->_res);
+ return mysqli_fetch_row($this->_res);
}
function _fetchAssoc()
{
- return mysql_fetch_assoc($this->_res);
+ return mysqli_fetch_assoc($this->_res);
}
function fetchAllRow()
{
$result = Array();
- while ($result[] = mysql_fetch_row($this->_res)) { }
+ while ($result[] = mysqli_fetch_row($this->_res)) { }
array_pop($result);
$this->free();
return $result;
function fetchAllAssoc()
{
$result = Array();
- while ($result[] = mysql_fetch_assoc($this->_res)) { }
+ while ($result[] = mysqli_fetch_assoc($this->_res)) { }
array_pop($result);
$this->free();
return $result;
function numRows()
{
- return mysql_num_rows($this->_res);
+ return mysqli_num_rows($this->_res);
}
}
-Options +FollowSymLinks
RewriteEngine on
RewriteBase @REWRITE_BASE@
}
}
if (Ajax.xml_client == null) {
- alert("Ton client ne supporte pas Ajax, nécessaire pour certaines fonctionalités de cette page");
+ alert("Ton client ne supporte pas Ajax, nécessaire pour certaines fonctionalités de cette page");
}
}
Ajax.init = true;
}
}
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
attachEvent(window, 'keydown', closePopup);
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
// jean paul dupont -> jean-paul.dupont
if (mots.length == 3 && mots[0].toUpperCase() == 'JEAN') { u.value = mots[0]+"-"+mots[1]+"."+mots[2]; return true; }
- alert('Ton email ne doit pas contenir de blanc.\nLe format standard est\n\nprenom.nom.promotion\n\nSi ton nom ou ton prenom est composé,\nsépare les mots par des -');
+ alert('Ton email ne doit pas contenir de blanc.\nLe format standard est\n\nprenom.nom.promotion\n\nSi ton nom ou ton prenom est composé,\nsépare les mots par des -');
return false;
}
document.forms.loginsub.submit();
}
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
document.forms.login.password.value = "";
document.forms.loginsub.submit();
}
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
s=hexa(kd)+hexa(kc)+hexa(kb)+hexa(ka);
return s;
}
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
exit;
}
if (pw1.length < 6) {
- alert ("\nErreur : le nouveau mot de passe doit faire au moins 6 caractères !")
+ alert ("\nErreur : le nouveau mot de passe doit faire au moins 6 caractères !")
return false;
exit;
}
str = hash_encrypt(document.forms.changepass.nouveau.value);
document.forms.changepass2.response2.value = str;
- alert ("Le mot de passe que tu as rentré va être chiffré avant de nous parvenir par Internet ! Ainsi il ne circulera pas en clair.");
+ alert ("Le mot de passe que tu as rentré va être chiffré avant de nous parvenir par Internet ! Ainsi il ne circulera pas en clair.");
document.forms.changepass2.submit();
return true;
}
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
registerHook("verticalPlacement", verticalPlacement, FCHAIN);\r
if (olNs4||(olIe5&&isMac)||olKq) olLoaded=1;\r
registerNoParameterCommands('sticky,autostatus,autostatuscap,fullhtml,hauto,vauto,closeclick,wrap,followmouse,mouseoff,compatmode');\r
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
c += a.charAt(k);\r
return c;\r
}\r
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
}\r
return str;\r
}\r
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
}
}
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
time = (mi < 10) ? hr +':0'+mi : hr+':'+mi;
days = ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'];
- months = ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet',
- 'août', 'septembre', 'octobre', 'novembre', 'décembre']
+ months = ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet',
+ 'août', 'septembre', 'octobre', 'novembre', 'décembre']
return days[dy]+' '+wd+' '+months[mh]+' '+yr+'<br />'+time;
}
// }}}
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
function dbconnect()
{
- @mysql_connect($this->dbhost, $this->dbuser, $this->dbpwd);
- @mysql_select_db($this->dbdb);
- @mysql_query("SET NAMES 'utf8'");
+ XDB::$connec = @mysqli_connect($this->dbhost, $this->dbuser, $this->dbpwd);
+ @mysqli_select_db(XDB::$connec, $this->dbdb);
+ mysqli_set_charset(XDB::$connec, 'utf8');
}
function setlocale()
return true;
} else {
$css = file_get_contents(dirname(__FILE__) . '/../htdocs/css/' . $this->_css);
- return preg_replace('@/\*.*?\*/@s', '', $css);
+ return preg_replace('@/\*.*?\*/@us', '', $css);
}
}
$replacement = array();
// url commencant par http, https ou ftp
- $patterns[] = '/((?:https?|ftp):\/\/(?:\.*,*[\w@~%$£µ&i#\-+=_\/\?;])*)/i';
+ $patterns[] = '/((?:https?|ftp):\/\/(?:\.*,*[\w@~%$£µ&i#\-+=_\/\?;])*)/ui';
$replacement[] = '<a href="\\0">\\0</a>';
// url commencant par www.
- $patterns[] = '/(\s|^)www\.((?:\.*,*[\w@~%$£µ&i#\-+=_\/\?;])*)/i';
+ $patterns[] = '/(\s|^)www\.((?:\.*,*[\w@~%$£µ&i#\-+=_\/\?;])*)/iu';
$replacement[] = '\\1<a href="http://www.\\2">www.\\2</a>';
if ($mails) {
return $get_forlife ? $res->fetchOneCell() : $mbox;
}
- if (preg_match('/^(.*)\.([0-9]{4})$/', $mbox, $matches)) {
+ if (preg_match('/^(.*)\.([0-9]{4})$/u', $mbox, $matches)) {
$res = XDB::query("SELECT a.alias
FROM aliases AS a
INNER JOIN aliases AS b ON (a.id = b.id AND b.type IN ('alias', 'a_vie') AND b.alias={?})
if (isset($details['gpxs']) && is_array($details['gpxs'])) {
XDB::execute("DELETE FROM groupesx_ins WHERE user_id = {?}", $uid);
foreach ($details['gpxs'] as $groupex) {
- if (preg_match('/<a href="[^"]*">([^<]+)</a>/', $groupex, $a)) $groupex = $a[1];
+ if (preg_match('/<a href="[^"]*">([^<]+)</a>/u', $groupex, $a)) $groupex = $a[1];
XDB::execute(
"INSERT INTO groupesx_ins (`user_id`, `binet_id`)
SELECT {?}, id FROM groupesx_def WHERE text = {?} LIMIT 1",
$res = XDB::query("SELECT perms
FROM groupex.membres
WHERE uid={?} AND asso_id={?}",
- S::v('uid'), $globals->asso('id'));
+ S::v('uid'), $asso_id);
$may_update[$asso_id] = ($res->fetchOneCell() == 'admin');
}
return $may_update[$asso_id];
return trim($output);
}
+/** vérifie si une adresse email est bien formatée
+ * ATTENTION, cette fonction ne doit pas être appelée sur une chaîne ayant subit un addslashes (car elle accepte le "'" qui rait alors un "\'"
+ * @param $email l'adresse email a verifier
+ * @return BOOL
+ */
+function isvalid_email($email) {
+ // la rfc2822 authorise les caractères "a-z", "0-9", "!", "#", "$", "%", "&", "'", "*", "+", "-", "/", "=", "?", "^", "_", `", "{", "|", "}", "~" aussi bien dans la partie locale que dans le domaine.
+ // Pour la partie locale, on réduit cet ensemble car il n'est pas utilisé.
+ // Pour le domaine, le système DNS limite à [a-z0-9.-], on y ajoute le "_" car il est parfois utilisé.
+ return preg_match("/^[a-z0-9_.'+-]+@[a-z0-9._-]+\.[a-z]{2,4}$/i", $email);
+}
+
/** vérifie si une adresse email convient comme adresse de redirection
* @param $email l'adresse email a verifier
* @return BOOL
!preg_match("/@(polytechnique\.(org|edu)|melix\.(org|net)|m4x\.org)$/", $email);
}
+/** Remove accent from a string and replace them by the nearest letter
+ */
+global $lc_convert, $uc_convert;
+$lc_convert = array('é' => 'e', 'è' => 'e', 'ë' => 'e', 'ê' => 'e',
+ 'á' => 'a', 'à' => 'a', 'ä' => 'a', 'â' => 'a', 'å' => 'a', 'ã' => 'a',
+ 'ï' => 'i', 'î' => 'i', 'ì' => 'i', 'í' => 'i',
+ 'ô' => 'o', 'ö' => 'o', 'ò' => 'o', 'ó' => 'o', 'õ' => 'o', 'ø' => 'o',
+ 'ú' => 'u', 'ù' => 'u', 'û' => 'u', 'ü' => 'u',
+ 'ç' => 'c', 'ñ' => 'n');
+$uc_convert = array('É' => 'E', 'È' => 'E', 'Ë' => 'E', 'Ê' => 'E',
+ 'Á' => 'A', 'À' => 'A', 'Ä' => 'A', 'Â' => 'A', 'Å' => 'A', 'Ã' => 'A',
+ 'Ï' => 'I', 'Î' => 'I', 'Ì' => 'I', 'Í' => 'I',
+ 'Ô' => 'O', 'Ö' => 'O', 'Ò' => 'O', 'Ó' => 'O', 'Õ' => 'O', 'Ø' => 'O',
+ 'Ú' => 'U', 'Ù' => 'U', 'Û' => 'U', 'Ü' => 'U',
+ 'Ç' => 'C', 'Ñ' => 'N');
+
+function replace_accent($string)
+{
+ global $lc_convert, $uc_convert;
+ $string = strtr($string, $lc_convert);
+ return strtr($string, $uc_convert);
+}
+
/* Un soundex en français posté par Frédéric Bouchery
Voici une adaptation en PHP de la fonction soundex2 francisée de Frédéric BROUARD (http://sqlpro.developpez.com/Soundex/).
C'est une bonne démonstration de la force des expressions régulières compatible Perl.
// On met tout en minuscule
$sIn = strtoupper( $sIn );
// On supprime les accents
- $sIn = strtr( $sIn, 'ÂÄÀÇÈÉÊËŒÎÏÔÖÙÛÜ', 'AAASEEEEEIIOOUUU' );
+ global $uc_convert;
+ $accents = $uc_convert;
+ $accents['Ç'] = 'S';
+ $accents['¿'] = 'E';
+ $sIn = strtr( $sIn, $accents);
// On supprime tout ce qui n'est pas une lettre
$sIn = preg_replace( '`[^A-Z]`', '', $sIn );
// Si la chaîne ne fait qu'un seul caractère, on sort avec.
// suppression de tous les A sauf en tête
$sIn = preg_replace( '`(?!^)A`', '', $sIn );
// on supprime les lettres répétitives
- $sIn = preg_replace( '`(.)\1`', '$1', $sIn );
+ $sIn = preg_replace( '`(.)\1`u', '$1', $sIn );
// on ne retient que 4 caractères ou on complète avec des blancs
return substr( $sIn . ' ', 0, 4);
}
{
$this->fieldFormName = $_fieldFormName;
$this->get_request();
- if (preg_match(":[\]\[{}~/§_`|%$^=+]|\*\*:", $this->value)) {
+ if (preg_match(":[\]\[{}~/§_`|%$^=+]|\*\*:u", $this->value)) {
new ThrowError('Un champ contient un caractère interdit rendant la recherche impossible.');
}
}
function get_request()
{
parent::get_request();
- if (preg_match(":[\]\[<>{}~/§_`|%$^=+]|\*\*:", $this->value)) {
+ if (preg_match(":[\]\[<>{}~/§_`|%$^=+]|\*\*:u", $this->value)) {
new ThrowError('Un champ contient un caractère interdit rendant la recherche impossible.');
}
}
* imposées par l'utilisateur) */
function length()
{
- global $lc_accent,$uc_accent;
- return strlen($this->value) - strlen(ereg_replace('[a-z'.$lc_accent.$uc_accent.']', '', strtolower($this->value)));
+ $cleaned = replace_accent(strtolower($this->value));
+ $length = strlen(ereg_replace('[a-z0-9]', '', $cleaned));
+ return strlen($this->value) - $length;
}
// }}}
{
$cher = isset($user['sexe']) ? ($user['sexe'] ? 'Chère' : 'Cher') : 'Cher(e)';
$nom = isset($user['nom']) ? $user['nom'] : "";
- $pnom = isset($user['prenom']) ? $user['prenom'] : preg_replace('!@.*!', '', $user['email']);
+ $pnom = isset($user['prenom']) ? $user['prenom'] : preg_replace('!@.*!u', '', $user['email']);
$to = isset($user['prenom']) ? "\"{$user['prenom']} {$user['nom']}\" <{$user['email']}>" : $user['email'];
$text = $body;
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
***************************************************************************/
-$tidy_on = Array(
- 'drop-empty-paras',
- 'drop-font-tags',
- 'drop-proprietary-attributes',
- 'hide-comments',
- 'logical-emphasis',
- 'output-xhtml',
- 'replace-color',
- 'show-body-only'
-);
-$tidy_off = Array(
- 'clean',
- 'join-styles',
- 'join-classes'
-);
-
-foreach($tidy_on as $opt) { tidy_setopt($opt, true); }
-foreach($tidy_off as $opt) { tidy_setopt($opt, false); }
-tidy_setopt('alt-text', '[ inserted by TIDY ]');
-tidy_setopt('wrap', '120');
-tidy_set_encoding('utf8');
-unset($tidy_o, $tydy_off);
+global $tidy_config;
+$tidy_config = array(
+ 'drop-empty-paras' => true,
+ 'drop-font-tags' => true,
+ 'drop-proprietary-attributes' => true,
+ 'hide-comments' => true,
+ 'logical-emphasis' => true,
+ 'output-xhtml' => true,
+ 'replace-color' => true,
+ 'show-body-only' => true,
+ 'clean' => false,
+ 'join-styles' => false,
+ 'join-classes' => false,
+ 'alt-text' => '[ inserted by TIDY ]',
+ 'wrap' => '120');
/*
* Smarty plugin
*/
function smarty_block_tidy($params, $content, &$smarty)
{
- return tidy_repair_string($content);
+ global $tidy_config;
+ return tidy_repair_string($content, $tidy_config, 'utf8');
}
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: