Вход Регистрация
Файл: apwa/includes/acp/acp_referrers.php
Строк: 176
<?php
//
//    file: includes/acp/acp_referrers.php
//    author: abdev
//    begin: 11/14/2010
//    version: 0.0.6 - 07/16/2013
//    licence: http://opensource.org/licenses/gpl-license.php GNU Public License
//

// ignore
if ( !defined('IN_PHPBB') )
{
    exit;
}

class 
acp_referrers
{
    var 
$u_action;

    function 
main($id$mode)
    {
        global 
$user$phpEx$phpbb_admin_path$phpbb_root_path;

        switch ( 
$mode )
        {
            case 
'manage':
                
$this->tpl_name 'acp_referrers';
                
$this->page_title 'ACP_REF_MANAGE';
                
$this->ref_manage($id$mode);
            break;

            case 
'prune':
                
$this->tpl_name 'acp_prune_referrers';
                
$this->page_title 'ACP_REF_PRUNE';
                
$this->ref_prune($id$mode);
            break;
        }
    }

    function 
ref_manage($id$mode)
    {
        global 
$db$user$auth$template$cache;
        global 
$config$phpbb_root_path$phpbb_admin_path$phpEx;

        
// define vars here
        
$action request_var('action''');
        
$ref_id request_var('id'0);
        
$start request_var('start'0);
        
$deletemark = !empty($_POST['delmarked']) ? true false;
        
$deleteall = !empty($_POST['delall']) ? true false;
        
$mark request_var('mark', array(0));

        
// sort keys
        
$sort_days request_var('st'0);
        
$sort_key request_var('sk''l');
        
$sort_dir request_var('sd''d');

        
// form name
        
$form_name 'acp_referrers';
        
add_form_key($form_name);

        
// whois (special case)
        
if ( $action == 'whois' )
        {
            include 
$phpbb_root_path 'includes/functions_user.' $phpEx;

            
$this->page_title 'WHOIS';
            
$user->add_lang('acp/users');
            
$this->tpl_name 'simple_body';

            
$ref_ip request_var('ref_ip''');
            
$domain gethostbyaddr($ref_ip);
            
$ipwhois user_ipwhois($ref_ip);

            
$template->assign_vars(array(
                
'MESSAGE_TITLE' => $user->lang('IP_WHOIS_FOR'$domain),
                
'MESSAGE_TEXT' => nl2br($ipwhois),
            ));

            return;
        }

        if ( 
$deletemark || $deleteall )
        {
            if ( 
confirm_box(true) )
            {
                
$sql_where '';

                if ( 
$deletemark && sizeof($mark) )
                {
                    
$sql_in = array();
                    foreach ( 
$mark as $marked )
                    {
                        
$sql_in[] = $marked;
                    }
                    
$sql_where ' WHERE ' $db->sql_in_set('ref_id'$sql_in);
                    unset(
$sql_in$marked);

                    
// get hosts for logs
                    
$sql 'SELECT ref_host FROM ' REFERRERS_TABLE $sql_where;
                    
$result $db->sql_query($sql);

                    
$host_list '';
                    while ( 
$row $db->sql_fetchrow($result) )
                    {
                        
$host_list .= empty($host_list) ? $row['ref_host'] : ', ' $row['ref_host'];
                    }
                    
$db->sql_freeresult($result);
                }

                if ( 
$sql_where )
                {
                    
$sql 'DELETE FROM ' REFERRERS_TABLE $sql_where;
                    
$db->sql_query($sql);

                    
add_log('admin''LOG_REFERRER_REMOVED'$host_list);
                }
                else if ( 
$deleteall )
                {
                    
// clear table
                    
switch ( $db->sql_layer )
                    {
                        case 
'sqlite':
                        case 
'firebird':
                            
$db->sql_query('DELETE FROM ' REFERRERS_TABLE);
                        break;

                        default:
                            
$db->sql_query('TRUNCATE TABLE ' REFERRERS_TABLE);
                        break;
                    }

                    
add_log('admin''LOG_REFERRER_REMOVED_ALL');
                }
            }
            else
            {
                
confirm_box(false$user->lang['CONFIRM_OPERATION'], build_hidden_fields(array(
                    
'i' => $id,
                    
'start' => $start,
                    
'delmarked' => $deletemark,
                    
'delall' => $deleteall,
                    
'mark' => $mark,
                    
'st' => $sort_days,
                    
'sk' => $sort_key,
                    
'sd' => $sort_dir,
                    
'mode' => $mode,
                    
'id' => $ref_id,
                    
'action' => $action,
                )));
            }
        }

        
// sorting
        
$limit_days = array(=> $user->lang['ALL_ENTRIES'], => $user->lang['1_DAY'], => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']);
        
$sort_by_text = array('h' => $user->lang['SORT_HOST'], 'v' => $user->lang['SORT_VISITS'], 'f' => $user->lang['SORT_FIRST'], 'l' => $user->lang['SORT_LAST']);
        
$sort_by_sql = array('h' => 'ref_host''v' => 'ref_hits''f' => 'ref_first''l' => 'ref_last');

        
$s_limit_days $s_sort_key $s_sort_dir $u_sort_param '';
        
gen_sort_selects($limit_days$sort_by_text$sort_days$sort_key$sort_dir$s_limit_days$s_sort_key$s_sort_dir$u_sort_param);

        
// define sort sql for use in displaying referrers
        
$sql_where $sort_days ? (time() - ($sort_days 86400)) : 0;
        
$sql_sort $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'DESC' 'ASC');

        
$sql 'SELECT * FROM ' REFERRERS_TABLE '
            ' 
. ($sort_days ' WHERE ' . ($sort_key == 'f' 'ref_first' 'ref_last') . ' >= ' $sql_where '') . '
            ORDER BY ' 
$sql_sort;
        
$result $db->sql_query_limit($sql$config['topics_per_page'], $start);

        while ( 
$row $db->sql_fetchrow($result) )
        {
            
$template->assign_block_vars('row', array(
                
'REF_ID' => (int) $row['ref_id'],
                
'REF_HOST' => $row['ref_host'],
                
'REF_URL_SHORT' => isset($row['ref_url'][50]) ? substr($row['ref_url'], 050) . '...' $row['ref_url'],
                
'REF_URL_FULL' => $row['ref_url'],
                
'REF_IP' => $row['ref_ip'],
                
'REF_HITS' => (int) $row['ref_hits'],
                
'REF_FIRST' => $user->format_date($row['ref_first']),
                
'REF_LAST' => $user->format_date($row['ref_last']),

                
'U_WHOIS' => $this->u_action '&amp;action=whois&amp;ref_ip=' $row['ref_ip'],
                
'U_DELETE' => $this->u_action '&amp;action=delete&amp;id=' $row['ref_id'],
            ));    
        }
        
$db->sql_freeresult($result);

        
// used for pagination
        
$sql 'SELECT COUNT(ref_id) AS total_entries
            FROM ' 
REFERRERS_TABLE 
            (
$sort_days ' WHERE ' . ($sort_key == 'f' 'ref_first' 'ref_last') . ' >= ' $sql_where '') . '
            ORDER BY ' 
$sql_sort;
        
$result $db->sql_query($sql);
        
$count = (int) $db->sql_fetchfield('total_entries');
        
$db->sql_freeresult($result);

        
// send to template
        
$template->assign_vars(array(
            
'U_ACTION' => $this->u_action,

            
'PAGINATION' => generate_pagination($this->u_action '&amp;' $u_sort_param$count$config['topics_per_page'], $starttrue),
            
'S_ON_PAGE' => on_page($count$config['topics_per_page'], $start),

            
'S_LIMIT_DAYS' => $s_limit_days,
            
'S_SORT_KEY' => $s_sort_key,
            
'S_SORT_DIR' => $s_sort_dir,

            
'S_REFDEL' => $auth->acl_get('a_refdel'),
        ));
    }

    function 
ref_prune($id$mode)
    {
        global 
$db$user$auth$template$cache;
        global 
$config$phpbb_root_path$phpbb_admin_path$phpEx;

        
// load language
        
$user->add_lang('memberlist');

        
$submit = isset($_POST['submit']) ? true false;

        if ( 
$submit )
        {
            if ( 
confirm_box(true) )
            {
                
$ref_host request_var('ref_host'''true);

                
$ref_hits_select request_var('ref_hits_select''eq');
                
$ref_first_select request_var('ref_first_select''lt');
                
$ref_last_select request_var('ref_last_select''lt');

                
$ref_hits request_var('ref_hits''');
                
$ref_first request_var('ref_first''');
                
$ref_last request_var('ref_last''');

                
$ref_first $ref_first explode('-'$ref_first) : array();
                
$ref_last $ref_last explode('-'$ref_last) : array();

                if ( (
sizeof($ref_first) && sizeof($ref_first) != 3) || (sizeof($ref_last) && sizeof($ref_last) != 3) )
                {
                    
trigger_error($user->lang['REF_WRONG_DATE'] . adm_back_link($this->u_action), E_USER_WARNING);
                }

                
$key_match = array('lt' => '<''gt' => '>''eq' => '=');

                
// define conditions here
                
$sql_where '';
                
$sql_where .= $ref_host ? ($sql_where ' AND' ' WHERE') . ' ref_host ' $db->sql_like_expression(str_replace('*'$db->any_char$ref_host)) : '';
                
$sql_where .= !empty($ref_hits) ? ($sql_where ' AND' ' WHERE') . ' ref_hits ' $key_match[$ref_hits_select] . ' ' . (int) $ref_hits '';
                
$sql_where .= sizeof($ref_first) ? ($sql_where ' AND' ' WHERE') . ' ref_first ' $key_match[$ref_first_select] . ' ' gmmktime(000, (int) $ref_first[1], (int) $ref_first[2], (int) $ref_first[0]) : '';
                
$sql_where .= sizeof($ref_last) ? ($sql_where ' AND' ' WHERE') . ' ref_last ' $key_match[$ref_last_select] . ' ' gmmktime(000, (int) $ref_last[1], (int) $ref_last[2], (int) $ref_last[0]) : '';

                if ( 
$sql_where )
                {
                    
$sql 'SELECT COUNT(ref_id) AS total_entries FROM ' REFERRERS_TABLE "$sql_where";
                    
$result $db->sql_query($sql);
                    
$count = (int) $db->sql_fetchfield('total_entries');
                    
$db->sql_freeresult($result);

                    if ( !
$count )
                    {
                        
trigger_error($user->lang['REF_PRUNE_FAILURE'] . adm_back_link($this->u_action), E_USER_WARNING);
                    }
                }

                
$sql 'DELETE FROM ' REFERRERS_TABLE "$sql_where";
                
$db->sql_query($sql);

                
add_log('admin''LOG_REFERRER_PRUNE');

                
trigger_error($user->lang['REF_PRUNE_SUCCESS'] . adm_back_link($this->u_action));

                return;
            }
            else
            {
                
confirm_box(false$user->lang['ACP_REF_PRUNE_CONFIRM'], build_hidden_fields(array(
                    
'i' => $id,
                    
'mode' => $mode,
                    
'submit' => 1,

                    
'ref_hits_select' => request_var('ref_hits_select'''),
                    
'ref_hits' => request_var('ref_hits'''),
                    
'ref_host' => request_var('ref_host'''true),
                    
'ref_first_select' => request_var('ref_first_select'''),
                    
'ref_first' => request_var('ref_first'''),
                    
'ref_last_select' => request_var('ref_last_select'''),
                    
'ref_last' => request_var('ref_last'''),
                )));
            }
        }

        
$find_count = array('lt' => $user->lang['LESS_THAN'], 'eq' => $user->lang['EQUAL_TO'], 'gt' => $user->lang['MORE_THAN']);
        
$s_hits_count '';
        foreach ( 
$find_count as $key => $value )
        {
            
$selected = ($key == 'eq') ? ' selected="selected"' '';
            
$s_hits_count .= '<option value="' $key '"' $selected '>' $value '</option>';
        }
        unset(
$key);

        
$find_time = array('lt' => $user->lang['BEFORE'], 'gt' => $user->lang['AFTER']);
        
$s_find_first_time '';
        foreach ( 
$find_time as $key => $value )
        {
            
$s_find_first_time .= '<option value="' $key '">' $value '</option>';
        }
        unset(
$key);

        
$s_find_last_time '';
        foreach ( 
$find_time as $key => $value )
        {
            
$s_find_last_time .= '<option value="' $key '">' $value '</option>';
        }
        unset(
$key);

        
$template->assign_vars(array(
            
'U_ACTION' => $this->u_action,
            
'U_BACK' => $this->u_action,

            
'S_HITS_OPTIONS' => $s_hits_count,
            
'S_FIRST_OPTIONS' => $s_find_first_time,
            
'S_LAST_OPTIONS' => $s_find_last_time,
        ));
    }
}
Онлайн: 1
Реклама