====== IPB 2.1.x, mySQL 5: исправляем проблемы совместимости ======
Исправляем ошибки, допущенные в запросах компанией IPS.
Разработчики не учли некоторые мелочи, из-за которых у многих пользователей возникают различные ошибки при использовании MySQL пятой версии.
Для исправления запросов проделайте следующие изменения в файлах, описанных ниже.
**ips_kernel/class_db_mysql.php**
Найти:
$get = implode( "," , $select_array );
$table = implode( "," , $final_from );
$where = implode( " AND " , $where_array );
$join = implode( "\n" , $joinleft_array );
добавляем ниже
if ( count($final_from) > 1 )
$table = "(".$table.")";
Tеперь редактируем файлы-хранилища запросов IPB.
**sources/sql/mysql_queries.php**
ищем:
function msg_get_cc_users( $a )
{
return "SELECT m.mgroup_others, m.id, m.name, m.members_disable_pm, m.members_display_name, m.msg_total, m.view_pop, m.email_pm, m.language, m.email, me.vdirs, g.g_max_messages, g.g_use_pm FROM ".SQL_PREFIX."members m, ".SQL_PREFIX."groups g
LEFT JOIN ".SQL_PREFIX."member_extra me ON (m.id=me.id)
WHERE LOWER(m.members_display_name) IN (".implode(",",$a['name_array']).")
AND m.mgroup=g.g_id";
}
меняем на:
function msg_get_cc_users( $a )
{
return "SELECT m.mgroup_others, m.id, m.name, m.members_disable_pm, m.members_display_name, m.msg_total, m.view_pop, m.email_pm, m.language, m.email, me.vdirs, g.g_max_messages, g.g_use_pm FROM (".SQL_PREFIX."members m, ".SQL_PREFIX."groups g)
LEFT JOIN ".SQL_PREFIX."member_extra me ON (m.id=me.id)
WHERE LOWER(m.members_display_name) IN (".implode(",",$a['name_array']).")
AND m.mgroup=g.g_id";
}
ищем:
function portal_get_poll_join( $a )
{
return "SELECT t.tid, t.title, t.state, t.last_vote, p.*, v.member_id as member_voted
FROM ".SQL_PREFIX."topics t, ".SQL_PREFIX."polls p
LEFT JOIN ".SQL_PREFIX."voters v ON (v.member_id={$a['mid']} and v.tid=t.tid)
WHERE t.tid={$a['tid']} AND p.tid=t.tid";
}
меняем на:
function portal_get_poll_join( $a )
{
return "SELECT t.tid, t.title, t.state, t.last_vote, p.*, v.member_id as member_voted
FROM (".SQL_PREFIX."topics t, ".SQL_PREFIX."polls p)
LEFT JOIN ".SQL_PREFIX."voters v ON (v.member_id={$a['mid']} and v.tid=t.tid)
WHERE t.tid={$a['tid']} AND p.tid=t.tid";
}
ищем:
function contact_member_report_get_mods( $a )
{
return "SELECT m.id, m.members_display_name as name, m.members_disable_pm, m.email, m.mgroup, moderator.member_id, moderator.group_id
FROM ".SQL_PREFIX."moderators moderator, ".SQL_PREFIX."members m
WHERE moderator.forum_id={$a['fid']}
AND (moderator.member_id=m.id OR moderator.group_id=m.mgroup)";
}
меняем на:
function contact_member_report_get_mods( $a )
{
return "SELECT m.id, m.members_display_name as name, m.members_disable_pm, m.email, m.mgroup, moderator.member_id, moderator.group_id
FROM (".SQL_PREFIX."moderators moderator, ".SQL_PREFIX."members m)
WHERE moderator.forum_id={$a['fid']}
AND (moderator.member_id=m.id OR moderator.group_id=m.mgroup)";
}
ищем:
function contact_member_report_get_cpaccess( $a )
{
return "SELECT m.id, m.members_display_name as name, m.email, m.members_disable_pm FROM ".SQL_PREFIX."members m, ".SQL_PREFIX."groups g WHERE g.g_access_cp=1 AND m.mgroup=g.g_id";
}
меняем на:
function contact_member_report_get_cpaccess( $a )
{
return "SELECT m.id, m.members_display_name as name, m.email, m.members_disable_pm FROM (".SQL_PREFIX."members m, ".SQL_PREFIX."groups g) WHERE g.g_access_cp=1 AND m.mgroup=g.g_id";
}
ищем:
function contact_member_report_get_supmod( $a )
{
return "SELECT m.id, m.members_display_name as name, m.email, m.members_disable_pm FROM ".SQL_PREFIX."members m, ".SQL_PREFIX."groups g WHERE g.g_is_supmod=1 AND m.mgroup=g.g_id";
}
меняем на:
function contact_member_report_get_supmod( $a )
{
return "SELECT m.id, m.members_display_name as name, m.email, m.members_disable_pm FROM (".SQL_PREFIX."members m, ".SQL_PREFIX."groups g) WHERE g.g_is_supmod=1 AND m.mgroup=g.g_id";
}