View file adm_panel/forum_sinc.php

File size: 2.18Kb
<?php
require( '../sys/inc/core.php' );

user_access( 'adm_forum_sinc', null, 'index.php?' . SID );

$set[ 'title' ] = 'Синхронизация таблиц форума';
get_header_admin(); 
if ( isset( $_GET[ 'ok' ] ) && isset( $_POST[ 'accept' ] ) ) {
    $d_r = 0;
    $d_t = 0;
    $d_p = 0;
    $q   = db::query("SELECT `id`,`id_forum` FROM `forum_r`");
    while ( $razd =  $q->fetch_assoc() ) {
        if ( db::count("SELECT COUNT(*) FROM `forum_f` WHERE `id` = '$razd[id_forum]'") == 0 ) {
            db::query("DELETE FROM `forum_r` WHERE `id` = '$razd[id]' LIMIT 1");
            $d_r++;
        }
    }
    $q = db::query("SELECT `id`, `id_razdel`, `id_user` FROM `forum_t`");
    while ( $them =  $q->fetch_assoc() ) {
        if ( db::count("SELECT COUNT(*) FROM `forum_r` WHERE `id` = '$them[id_razdel]'") == 0 || db::count("SELECT COUNT(*) FROM `user` WHERE `id` = '$them[id_user]'") == 0 ) {
            db::query("DELETE FROM `forum_t` WHERE `id` = '$them[id]' LIMIT 1");
            $d_t++;
        }
    }
    $q = db::query("SELECT `id`, `id_them`, `id_user` FROM `forum_p`");
    while ( $post =  $q->fetch_assoc() ) {
        if ( db::count("SELECT COUNT(*) FROM `forum_t` WHERE `id` = '$post[id_them]'") == 0 || db::count("SELECT COUNT(*) FROM `user` WHERE `id` = '$post[id_user]'") == 0 ) {
            db::query("DELETE FROM `forum_p` WHERE `id` = '$post[id]' LIMIT 1");
            $d_p++;
        }
    }
    msg( "Удалено разделов: $d_r, тем: $d_t, постов: $d_p" );
}
echo "<form method=\"post\" action=\"?ok\">\n";
echo "<input value=\"Начать\" name='accept' type=\"submit\" />\n";
echo "</form>\n";
echo "* В зависимости от количества сообщений и тем, данное действие может занять длительное время.<br />\n";
echo "** Рекомендуется использовать только в случах расхождений счетчиков форума с реальными данными<br />\n";
if ( user_access( 'adm_panel_show' ) ) {
    echo "<div class='foot'>\n";
    echo "&laquo;<a href='/adm_panel/'>В админку</a><br />\n";
    echo "</div>\n";
}
get_footer_admin();