Вход Регистрация
Файл: apwa/includes/acp/acp_thanks_refresh.php
Строк: 165
<?php
/**
*
* @author Sergeiy Varzaev (Палыч)  phpbbguru.net varzaev@mail.ru
* @version $Id: acp_thanks_refresh.php,v 135 2012-10-10 10:02:51 Палыч $
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
    exit;
}
    
/**
* @package acp
*/
class acp_thanks_refresh  
{
    var 
$u_action;

    function 
main($id$mode)
    {
        global 
$db$user$auth$template$cache$config;

        
$this->tpl_name 'acp_thanks_refresh';
        
$this->page_title 'ACP_THANKS_REFRESH';
        
        
$posts_delete_us $all_posts = array();        
        
$end_thanks $del_thanks $all_thanks $all_posts_number $all_users_thanks $all_posts_thanks $end_posts_thanks $end_users_thanks $thanks_update '';
        
$del_uthanks $del_nofirst_thanks $del_selfthanks 0;

    
// check mode

        
$refresh request_var('refresh'false);
        if (!
$refresh)
        {
            
$cache->destroy('_all_posts_thanks');
            
$cache->destroy('_all_users_thanks');
            
$cache->destroy('_all_thanks');
            
$cache->destroy('_all_posts');
            
$cache->destroy('_all_posts_number');        
    
// count all posts, thanks, users
            
$sql 'SELECT DISTINCT post_id
                FROM ' 
THANKS_TABLE;
            
$result $db->sql_query($sql);
            
$all_posts_thanks $db->sql_affectedrows($result);
            
$db->sql_freeresult($result);

            
$sql 'SELECT DISTINCT user_id
                FROM ' 
THANKS_TABLE;
            
$result $db->sql_query($sql);
            
$all_users_thanks $db->sql_affectedrows($result);
            
$db->sql_freeresult($result);

            
$sql 'SELECT COUNT(post_id) as total_match_count
                FROM ' 
THANKS_TABLE;
            
$result $db->sql_query($sql);
            
$all_thanks $db->sql_fetchfield('total_match_count');
            
$db->sql_freeresult($result);

            unset(
$all_posts);    
            
$all_posts = array();    
            
            
$sql 'SELECT t.*
                FROM ' 
THANKS_TABLE .' t
                LEFT JOIN ' 
POSTS_TABLE .' p ON t.post_id = p.post_id
                WHERE p.post_id IS NULL'
;
            
$result $db->sql_query($sql);    
            while (
$row $db->sql_fetchrow($result))
            {
                
$all_posts[] = $row['post_id'];
            }        
            
$db->sql_freeresult($result);
            
$all_posts_number $config['num_posts'];

            
$cache->put('_all_posts_thanks'$all_posts_thanks);
            
$cache->put('_all_users_thanks'$all_users_thanks);
            
$cache->put('_all_thanks'$all_thanks);
            
$cache->put('_all_posts'$all_posts);
            
$cache->put('_all_posts_number'$all_posts_number);
        
            
$template->assign_vars(array(
                
'S_REFRESH'    => false,
                
'L_WARNING' => sprintf($user->lang['WARNING']),
            ));
        }
//update        
        
if ($refresh)
        {
            
// check mode
            
if (confirm_box(true))
            {
                
$all_users_thanks $cache->get('_all_users_thanks');
                
$all_thanks $cache->get('_all_thanks');
                
$all_posts $cache->get('_all_posts');
                
$all_posts_number $cache->get('_all_posts_number');
                
$all_posts_thanks $cache->get('_all_posts_thanks');
                
        
// update delete posts        
                
if(!empty($all_posts))
                {
                    
$sql 'DELETE FROM ' THANKS_TABLE ."
                        WHERE " 
$db->sql_in_set('post_id'$all_postsfalse);
                    
$result $db->sql_query($sql);
                    
$del_thanks $db->sql_affectedrows($result);            
                    
$db->sql_freeresult($result);
                }
                    
$end_thanks $all_thanks $del_thanks;
        
// update delete users
                
$sql 'SELECT t.post_id
                    FROM ' 
THANKS_TABLE ' t 
                    LEFT JOIN ' 
POSTS_TABLE ' p ON (t.post_id = p.post_id)
                    WHERE p.poster_id = '
ANONYMOUS;
                
$result $db->sql_query($sql);
        
                while (
$row $db->sql_fetchrow($result))
                {
                    
$posts_delete_us[] = $row['post_id'];
                }    
                
$db->sql_freeresult($result);        

                if(!empty(
$posts_delete_us))
                {
                    
$del_uthanks count($posts_delete_us);
                    
$sql 'DELETE FROM ' THANKS_TABLE ."
                        WHERE " 
$db->sql_in_set('post_id'$posts_delete_us);
                    
$result $db->sql_query($sql);    
                    
$db->sql_freeresult($result);            
                }
        
//update move posts /topics /forums and change posters
                
$sql 'SELECT p.post_id
                    FROM ' 
POSTS_TABLE ' p 
                    LEFT JOIN ' 
THANKS_TABLE ' t ON (p.post_id = t.post_id)
                    WHERE p.topic_id <> t.topic_id OR p.forum_id <> t.forum_id OR p.poster_id <> t.poster_id'
;
                
$result $db->sql_query($sql);    
                
$thanks_update 0;
                if (
$result)
                {
                    while (
$row $db->sql_fetchrow($result))
                    {
                        
$sql 'SELECT forum_id, topic_id, poster_id, post_id
                            FROM ' 
POSTS_TABLE '
                            WHERE post_id = '
.$row ['post_id'];
                        
$results $db->sql_query($sql);
                        
$rows $db->sql_fetchrow($results);

                        
$sql_ary = array(
                            
'post_id'    => $rows['post_id'],
                            
'forum_id'    => $rows['forum_id'],
                            
'topic_id'    => $rows['topic_id'],
                            
'poster_id'    => $rows['poster_id'],
                        );
                        
                        
$sql 'UPDATE ' THANKS_TABLE '
                            SET ' 
$db->sql_build_array('UPDATE'$sql_ary) .'
                            WHERE post_id = '
$sql_ary['post_id'];
                        
$db->sql_query($sql);
                        
$thanks_update++;
                    }    
                }    
                
$db->sql_freeresult($result);    

                
$end_thanks $end_thanks $del_uthanks;
                
$del_thanks $del_thanks $del_uthanks;
        
// delete thanks only first post
                
if (isset($config['thanks_only_first_post']) ? $config['thanks_only_first_post'] : false)
                {
                    
$sql 'SELECT topic_first_post_id 
                        FROM ' 
TOPICS_TABLE;
                    
$result $db->sql_query($sql);    
                    while (
$row $db->sql_fetchrow($result))
                    {
                        
$all_first_posts[] = $row['topic_first_post_id'];
                    }        
                    
$db->sql_freeresult($result);            
                    
                    if(!empty(
$all_first_posts))
                    {
                        
$sql 'DELETE FROM ' THANKS_TABLE ."
                            WHERE " 
$db->sql_in_set('post_id'$all_first_postsTRUE);
                        
$result $db->sql_query($sql);
                        
$del_nofirst_thanks $db->sql_affectedrows($result);            
                        
$db->sql_freeresult($result);
                        
$end_thanks $end_thanks $del_nofirst_thanks;
                        
$del_thanks $del_thanks $del_nofirst_thanks;
                    }            
                }        
        
// delete thanks global announce
                
if (isset($config['thanks_global_post']) ? !$config['thanks_global_post'] : false)
                {
                    
$sql 'SELECT topic_id 
                        FROM ' 
TOPICS_TABLE .'
                        WHERE topic_type = '
POST_GLOBAL;
                    
$result $db->sql_query($sql);    
                    while (
$row $db->sql_fetchrow($result))
                    {
                        
$all_global_posts[] = $row['topic_id'];
                    }        
                    
$db->sql_freeresult($result);            
                    
                    if(!empty(
$all_global_posts))
                    {
                        
$sql 'DELETE FROM ' THANKS_TABLE ."
                            WHERE " 
$db->sql_in_set('topic_id'$all_global_postsfalse);
                        
$result $db->sql_query($sql);
                        
$del_global_thanks $db->sql_affectedrows($result);            
                        
$db->sql_freeresult($result);
                        
$end_thanks $end_thanks $del_global_thanks;
                        
$del_thanks $del_thanks $del_global_thanks;
                    }            
                }
        
// delete selfthanks
                
$sql 'DELETE FROM ' THANKS_TABLE .'
                    WHERE poster_id = user_id'
;
                
$result $db->sql_query($sql);    
                
$del_selfthanks $db->sql_affectedrows($result);
                
$db->sql_freeresult($result);            
                
$del_thanks $del_thanks $del_selfthanks;
                
$end_thanks $end_thanks $del_selfthanks;
                        
                
$sql 'SELECT DISTINCT post_id
                    FROM ' 
THANKS_TABLE;
                
$result $db->sql_query($sql);
                
$end_posts_thanks $db->sql_affectedrows($result);
                
$db->sql_freeresult($result);
                
                
$sql 'SELECT DISTINCT user_id
                    FROM ' 
THANKS_TABLE;
                
$result $db->sql_query($sql);
                
$end_users_thanks $db->sql_affectedrows($result);
                
$db->sql_freeresult($result);
                
                
$template->assign_vars(array(
                    
'S_REFRESH'    => true,
                ));        
            }
            else
            {
                
$s_hidden_fields build_hidden_fields(array(
                    
'refresh'        => true,
                    )
                );
                
//display mode
                
confirm_box(false'REFRESH_THANKS'$s_hidden_fields);
                
trigger_error($user->lang['TRUNCATE_NO_THANKS'] . adm_back_link($this->u_action));
            }
        }
        
$template->assign_vars(array(
            
'POSTS'            => $all_posts_number,
    
            
'POSTSTHANKS'    => $all_posts_thanks,
            
'USERSTHANKS'    => $all_users_thanks,
            
'ALLTHANKS'        => $all_thanks,
            
            
'DELTHANKS'        => $del_thanks,
            
'UPDATETHANKS'    => $thanks_update,
            
            
'POSTSEND'        => $end_posts_thanks,
            
'USERSEND'        => $end_users_thanks,
            
'THANKSEND'        => $end_thanks,
        ));
    }
}
?>
Онлайн: 1
Реклама