Вход Регистрация
Файл: includes/prune.php
Строк: 70
<?php
/***************************************************************************
*                                 prune.php
*                            -------------------
 *      Разработка: phpBB Group.
 *      Оптимизация под WAP: Гутник Игорь ( чел ).
 *          2009 год
***************************************************************************/


if ( !defined('IN_PHPBB') )
{
   die(
"Hacking attempt");
}

require(
$phpbb_root_path 'includes/functions_search.'.$phpEx);

function 
prune($forum_id$prune_date$prune_all false)
{
    global 
$db$lang;

    
$sql 'SELECT topic_id FROM ' TOPICS_TABLE '
        WHERE topic_last_post_id = 0'
;
    if ( !(
$result $db->sql_query($sql)) )
    {
        
message_die(GENERAL_ERROR'Could not obtain lists of topics to sync'''__LINE____FILE__$sql);
    }

    while( 
$row $db->sql_fetchrow($result) )
    {
        
sync('topic'$row['topic_id']);
    }

    
$db->sql_freeresult($result);

    
$prune_all = ($prune_all) ? '' 'AND t.topic_vote = 0 AND t.topic_type <> ' POST_ANNOUNCE;

    
$sql "SELECT t.topic_id 
        FROM " 
POSTS_TABLE " p, " TOPICS_TABLE " t
        WHERE t.forum_id = 
$forum_id
            
$prune_all 
            AND p.post_id = t.topic_last_post_id"
;
    if ( 
$prune_date != '' )
    {
        
$sql .= " AND p.post_time < $prune_date";
    }

    if ( !(
$result $db->sql_query($sql)) )
    {
        
message_die(GENERAL_ERROR'Could not obtain lists of topics to prune'''__LINE____FILE__$sql);
    }

    
$sql_topics '';
    while( 
$row $db->sql_fetchrow($result) )
    {
        
$sql_topics .= ( ( $sql_topics != '' ) ? ', ' '' ) . $row['topic_id'];
    }
    
$db->sql_freeresult($result);
        
    if( 
$sql_topics != '' )
    {
        
$sql "SELECT post_id
            FROM " 
POSTS_TABLE 
            WHERE forum_id = 
$forum_id 
                AND topic_id IN (
$sql_topics)";
        if ( !(
$result $db->sql_query($sql)) )
        {
            
message_die(GENERAL_ERROR'Could not obtain list of posts to prune'''__LINE____FILE__$sql);
        }

        
$sql_post '';
        while ( 
$row $db->sql_fetchrow($result) )
        {
            
$sql_post .= ( ( $sql_post != '' ) ? ', ' '' ) . $row['post_id'];
        }
        
$db->sql_freeresult($result);

        if ( 
$sql_post != '' )
        {
            
$sql "DELETE FROM " TOPICS_WATCH_TABLE 
                WHERE topic_id IN (
$sql_topics)";
            if ( !
$db->sql_query($sqlBEGIN_TRANSACTION) )
            {
                
message_die(GENERAL_ERROR'Could not delete watched topics during prune'''__LINE____FILE__$sql);
            }

            
$sql "DELETE FROM " TOPICS_TABLE 
                WHERE topic_id IN (
$sql_topics)";
            if ( !
$db->sql_query($sql) )
            {
                
message_die(GENERAL_ERROR'Could not delete topics during prune'''__LINE____FILE__$sql);
            }

            
$pruned_topics $db->sql_affectedrows();

            
$sql "DELETE FROM " POSTS_TABLE 
                WHERE post_id IN (
$sql_post)";
            if ( !
$db->sql_query($sql) )
            {
                
message_die(GENERAL_ERROR'Could not delete post_text during prune'''__LINE____FILE__$sql);
            }

            
$pruned_posts $db->sql_affectedrows();

            
$sql "DELETE FROM " POSTS_TEXT_TABLE 
                WHERE post_id IN (
$sql_post)";
            if ( !
$db->sql_query($sql) )
            {
                
message_die(GENERAL_ERROR'Could not delete post during prune'''__LINE____FILE__$sql);
            }

            
remove_search_post($sql_post);
                    
prune_attachments($sql_post);

            return array (
'topics' => $pruned_topics'posts' => $pruned_posts);
        }
    }

    return array(
'topics' => 0'posts' => 0);
}

function 
auto_prune($forum_id 0)
{
    global 
$db$lang;

    
$sql "SELECT *
        FROM " 
PRUNE_TABLE "
        WHERE forum_id = 
$forum_id";
    if ( !(
$result $db->sql_query($sql)) )
    {
        
message_die(GENERAL_ERROR'Could not read auto_prune table'''__LINE____FILE__$sql);
    }

    if ( 
$row $db->sql_fetchrow($result) )
    {
        if ( 
$row['prune_freq'] && $row['prune_days'] )
        {
            
$prune_date time() - ( $row['prune_days'] * 86400 );
            
$next_prune time() + ( $row['prune_freq'] * 86400 );

            
prune($forum_id$prune_date);
            
sync('forum'$forum_id);

            
$sql "UPDATE " FORUMS_TABLE 
                SET prune_next = 
$next_prune 
                WHERE forum_id = 
$forum_id";
            if ( !
$db->sql_query($sql) )
            {
                
message_die(GENERAL_ERROR'Could not update forum table'''__LINE____FILE__$sql);
            }
        }
    }

    return;
}

?>
Онлайн: 2
Реклама