10 июл
Автор: MSW
Сайт поддержки: /
Версия DLE: 9.0-9.8 а может и более старые

Фикс изменения пользователем почты в профиле.
При изменении адреса почты пользователем в профиле не происходит автоматического её изменения в таблице подписки и сообщения о событиях на которые подписан пользователь(новые комментарии в новостях) приходят пользователю на старый почтовый адрес.

Для исправления данной проблемы необходимо выполнить следующие действия:
1. Файл: /engine/modules/profile.php
Найти:
        if ( !$send_mail_log AND $email != $row['email']) $mailchange = " email='{$email}',";
else $mailchange = "";

Заменить на:
#****** FIX Subscribe Change EMail *** by MSW ******#
if ( !$send_mail_log AND $email != $row['email']) {
$db->query("UPDATE ".PREFIX."_subscribe SET email='{$email}' WHERE user_id='{$id}'");
$mailchange = " email='{$email}',";
} else $mailchange = "";
#****** FIX Subscribe Change EMail *** by MSW ******#


2. Для исправления уже имеющихся несоответствий создаём в корне сайта файл: fix_mail.php
С содержимым:
<?php
/*
=====================================================
Хак: FIX Subscribe Change EMail
-----------------------------------------------------
Автор: MSW
Сайт: http://0-web.ru/
-----------------------------------------------------
Copyright (c) 2012 MSW
=====================================================
Данный код защищен авторскими правами
=====================================================
Файл: fix_mail.php
=====================================================
*/
@error_reporting ( E_ALL ^ E_WARNING ^ E_NOTICE );
@ini_set ( 'display_errors', true );
@ini_set ( 'html_errors', false );
@ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_NOTICE );
define ( 'DATALIFEENGINE', true );
define ( 'ROOT_DIR', dirname ( __FILE__ ) );
define ( 'ENGINE_DIR', ROOT_DIR . '/engine' );

include ENGINE_DIR . '/data/config.php';
require_once ENGINE_DIR . '/classes/mysql.php';
require_once ENGINE_DIR . '/data/dbconfig.php';
@header("Content-type: text/html; charset=".$config['charset']);

$sql = $db->query("SELECT user_id, email FROM ".USERPREFIX."_users");
while ($row = $db->get_row($sql)) {
$db->query("UPDATE ".PREFIX."_subscribe SET email='{$row['email']}' WHERE user_id='{$row['user_id']}'");
}
echo "Done";
?>


После чего переходим браузером на этот файл по адресу: http://ваш_сайт/fix_mail.php

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.