From: Roland Häder Date: Mon, 15 Aug 2011 11:43:04 +0000 (+0000) Subject: isEmailTaken() now relaxes if e.g. the current user just changed other data X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=148d2eee48a92d11f45a00d0768954d77ed0570a;p=mailer.git isEmailTaken() now relaxes if e.g. the current user just changed other data --- diff --git a/inc/mysql-manager.php b/inc/mysql-manager.php index c2387e336d..a836da97b4 100644 --- a/inc/mysql-manager.php +++ b/inc/mysql-manager.php @@ -660,21 +660,40 @@ function addMaxReceiveList ($mode, $default = '', $return = false) { // Checks wether the given email address is used. function isEmailTaken ($email) { + // Default is no userid + $useridSql = ' IS NOT NULL'; + + // Is a member logged in? + if (isMember()) { + // Get userid + $useridSql = '!= ' . bigintval(getMemberId()); + } // END - if + // Replace dot with {DOT} $email = str_replace('.', '{DOT}', $email); // Query the database - $result = SQL_QUERY_ESC("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `email` LIKE '%%%s%%' LIMIT 1", - array($email), __FUNCTION__, __LINE__); + $result = SQL_QUERY_ESC("SELECT + COUNT(`userid`) AS `cnt` +FROM + `{?_MYSQL_PREFIX?}_user_data` +WHERE + REGEX '%s' `email` AND + `userid` %s +LIMIT 1", + array( + $email, + $useridSql + ), __FUNCTION__, __LINE__); // Is the email there? - $isTaken = (SQL_NUMROWS($result) == 1); + list($count) = SQL_FETCHROW($result); // Free the result SQL_FREERESULT($result); // Return result - return $isTaken; + return ($count == 1); } // Validate the given menu action @@ -897,7 +916,7 @@ function getPaymentPoints ($pid, $lookFor = 'price') { } // Remove a receiver's id from $receivers and add a link for him to confirm -function removeReceiver (&$receivers, $key, $userid, $pool_id, $stats_id = 0, $isBonusMail = false) { +function removeReceiver (&$receivers, $key, $userid, $poolId, $statsId = 0, $isBonusMail = false) { // Default is not removed $ret = 'failed'; @@ -907,7 +926,7 @@ function removeReceiver (&$receivers, $key, $userid, $pool_id, $stats_id = 0, $i unset($receivers[$key]); // Is there already a line for this user available? - if ($stats_id > 0) { + if ($statsId > 0) { // Default is 'normal' mail $type = 'NORMAL'; $rowName = 'stats_id'; @@ -919,20 +938,30 @@ function removeReceiver (&$receivers, $key, $userid, $pool_id, $stats_id = 0, $i } // END - if // Try to look the entry up - $result = SQL_QUERY_ESC("SELECT `id` FROM `{?_MYSQL_PREFIX?}_user_links` WHERE %s='%s' AND `userid`=%s AND link_type='%s' LIMIT 1", - array($rowName, $stats_id, bigintval($userid), $type), __FUNCTION__, __LINE__); + $result = SQL_QUERY_ESC("SELECT `id` FROM `{?_MYSQL_PREFIX?}_user_links` WHERE `%s`=%s AND `userid`=%s AND link_type='%s' LIMIT 1", + array( + $rowName, + bigintval($statsId), + bigintval($userid), + $type + ), __FUNCTION__, __LINE__); // Was it *not* found? if (SQL_HASZERONUMS($result)) { // So we add one! SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_user_links` (`%s`,`userid`,`link_type`) VALUES ('%s','%s','%s')", - array($rowName, $stats_id, bigintval($userid), $type), __FUNCTION__, __LINE__); + array( + $rowName, + bigintval($statsId), + bigintval($userid), + $type + ), __FUNCTION__, __LINE__); // Update 'mails_sent' if sql_patches is updated if (isExtensionInstalledAndNewer('sql_patches', '0.7.4')) { // Update the pool SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_pool` SET `mails_sent`=`mails_sent`+1 WHERE `id`=%s LIMIT 1", - array(bigintval($pool_id)), __FUNCTION__, __LINE__); + array(bigintval($poolId)), __FUNCTION__, __LINE__); } // END - if $ret = 'done'; } else {