projects
/
platal.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Typos
[platal.git]
/
include
/
emails.inc.php
diff --git
a/include/emails.inc.php
b/include/emails.inc.php
index
d6e885f
..
4fdbacf
100644
(file)
--- a/
include/emails.inc.php
+++ b/
include/emails.inc.php
@@
-1,6
+1,6
@@
<?php
/***************************************************************************
<?php
/***************************************************************************
- * Copyright (C) 2003-20
09
Polytechnique.org *
+ * Copyright (C) 2003-20
10
Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
@@
-31,7
+31,7
@@
function fix_bestalias(User &$user)
{
$res = XDB::query("SELECT COUNT(*)
FROM aliases
{
$res = XDB::query("SELECT COUNT(*)
FROM aliases
- WHERE id = {?} AND FIND_IN_SET('bestalias', flags) AND type != 'homonyme'",
+ WHERE
u
id = {?} AND FIND_IN_SET('bestalias', flags) AND type != 'homonyme'",
$user->id());
if ($res->fetchOneCell()) {
return;
$user->id());
if ($res->fetchOneCell()) {
return;
@@
-39,7
+39,7
@@
function fix_bestalias(User &$user)
XDB::execute("UPDATE aliases
SET flags=CONCAT(flags,',','bestalias')
XDB::execute("UPDATE aliases
SET flags=CONCAT(flags,',','bestalias')
- WHERE id={?} AND type!='homonyme'
+ WHERE
u
id={?} AND type!='homonyme'
ORDER BY !FIND_IN_SET('usage',flags),alias LIKE '%.%', LENGTH(alias)
LIMIT 1", $user->id());
}
ORDER BY !FIND_IN_SET('usage',flags),alias LIKE '%.%', LENGTH(alias)
LIMIT 1", $user->id());
}
@@
-55,8
+55,11
@@
function valide_email($str)
$em = trim(rtrim($str));
$em = str_replace('<', '', $em);
$em = str_replace('>', '', $em);
$em = trim(rtrim($str));
$em = str_replace('<', '', $em);
$em = str_replace('>', '', $em);
+ if (strpos($em, '@') === false) {
+ return;
+ }
list($ident, $dom) = explode('@', $em);
list($ident, $dom) = explode('@', $em);
- if ($dom == $globals->mail->domain
or
$dom == $globals->mail->domain2) {
+ if ($dom == $globals->mail->domain
||
$dom == $globals->mail->domain2) {
list($ident1) = explode('_', $ident);
list($ident) = explode('+', $ident1);
}
list($ident1) = explode('_', $ident);
list($ident) = explode('+', $ident1);
}
@@
-96,11
+99,11
@@
function ids_from_mails(array $emails)
if ($domain == $globals->mail->alias_dom || $domain == $globals->mail->alias_dom2) {
list($user) = explode('+', $user);
list($user) = explode('_', $user);
if ($domain == $globals->mail->alias_dom || $domain == $globals->mail->alias_dom2) {
list($user) = explode('+', $user);
list($user) = explode('_', $user);
- $alias_mails[$
user] = $email
;
+ $alias_mails[$
email] = $user . "@" . $globals->mail->alias_dom
;
} elseif ($domain == $globals->mail->domain || $domain == $globals->mail->domain2) {
list($user) = explode('+', $user);
list($user) = explode('_', $user);
} elseif ($domain == $globals->mail->domain || $domain == $globals->mail->domain2) {
list($user) = explode('+', $user);
list($user) = explode('_', $user);
- $domain_mails[$
user] = $email
;
+ $domain_mails[$
email] = $user
;
} else {
$other_mails[] = $email;
}
} else {
$other_mails[] = $email;
}
@@
-108,47
+111,52
@@
function ids_from_mails(array $emails)
$uids = array();
// Look up user ids for addresses in domain
$uids = array();
// Look up user ids for addresses in domain
+ $alias_uids = array();
if (count($domain_mails)) {
if (count($domain_mails)) {
- $domain_users = array_map(array('XDB', 'escape'), array_keys($domain_mails));
- $list = implode(',', $domain_users);
- $res = XDB::query("SELECT alias, id
+ $res = XDB::query("SELECT alias, uid
FROM aliases
FROM aliases
- WHERE alias IN
($list)"
);
+ WHERE alias IN
{?}", array_unique($domain_mails)
);
foreach ($res->fetchAllRow() as $row) {
list ($alias, $id) = $row;
foreach ($res->fetchAllRow() as $row) {
list ($alias, $id) = $row;
- $
uids[$domain_mails[$alias]
] = $id;
+ $
domain_uids[$alias
] = $id;
}
}
}
}
+ // Connect emails with uids
+ foreach ($domain_mails as $email => $user) {
+ $uids[$email] = $domain_uids[$user];
+ }
// Look up user ids for addresses in our alias domain
// Look up user ids for addresses in our alias domain
+ $alias_uids = array();
if (count($alias_mails)) {
if (count($alias_mails)) {
- $alias_users = array();
- foreach (array_keys($alias_mails) as $user) {
- $alias_users[] = XDB::escape($user."@".$globals->mail->alias_dom);
- }
- $list = implode(',', $alias_users);
- $res = XDB::query("SELECT v.alias, a.id
+ $res = XDB::query("SELECT v.alias, a.uid
FROM virtual AS v
INNER JOIN virtual_redirect AS r USING(vid)
INNER JOIN aliases AS a ON (a.type = 'a_vie'
AND r.redirect = CONCAT(a.alias, '@{$globals->mail->domain2}'))
FROM virtual AS v
INNER JOIN virtual_redirect AS r USING(vid)
INNER JOIN aliases AS a ON (a.type = 'a_vie'
AND r.redirect = CONCAT(a.alias, '@{$globals->mail->domain2}'))
- WHERE v.alias IN
($list)"
);
+ WHERE v.alias IN
{?}", array_unique($alias_mails)
);
foreach ($res->fetchAllRow() as $row) {
list ($alias, $id) = $row;
foreach ($res->fetchAllRow() as $row) {
list ($alias, $id) = $row;
- $
uids[$alias_mails[$alias]
] = $id;
+ $
alias_uids[$alias
] = $id;
}
}
}
}
+ // Connect emails with uids
+ foreach ($alias_mails as $email => $user) {
+ $uids[$email] = $alias_uids[$user];
+ }
// Look up user ids for other addresses in the email redirection list
if (count($other_mails)) {
// Look up user ids for other addresses in the email redirection list
if (count($other_mails)) {
- $other_users = array_map(array('XDB', 'escape'), $other_mails);
- $list = implode(',', $other_users);
+ $lowerupper = array();
+ foreach ($other_mails as $mail) {
+ $lowerupper[strtolower($mail)] = $mail;
+ }
$res = XDB::query("SELECT email, uid
FROM emails
$res = XDB::query("SELECT email, uid
FROM emails
- WHERE email IN
($list)"
);
+ WHERE email IN
{?}", $other_mails
);
foreach ($res->fetchAllRow() as $row) {
list ($email, $uid) = $row;
foreach ($res->fetchAllRow() as $row) {
list ($email, $uid) = $row;
- $uids[$
other_mails[$email
]] = $uid;
+ $uids[$
lowerupper[strtolower($email)
]] = $uid;
}
}
}
}
@@
-380,18
+388,18
@@
class EmailStorage extends Email
// Retrieves the current list of actives storages.
private function get_storages()
{
// Retrieves the current list of actives storages.
private function get_storages()
{
-
$res = XDB::query("SELECT mail_
storage
- FROM auth_user_md5
- WHERE user_id = {?}", $this->user->id());
-
return new PlFlagSet($res->fetchOneCell(
));
+
return new PlFlagSet(XDB::fetchOneCell('SELECT
storage
+ FROM email_options
+ WHERE uid = {?}',
+
$this->user->id()
));
}
// Updates the list of active storages.
private function set_storages($storages)
{
}
// Updates the list of active storages.
private function set_storages($storages)
{
- XDB::execute("UPDATE
auth_user_md5
- SET
mail_
storage = {?}
- WHERE u
ser_
id = {?}", $storages, $this->user->id());
+ XDB::execute("UPDATE
email_options
+ SET storage = {?}
+ WHERE uid = {?}", $storages, $this->user->id());
}
// Returns the list of allowed storages for the @p user.
}
// Returns the list of allowed storages for the @p user.