Вход Регистрация
Файл: 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(0 => $user->lang['ALL_ENTRIES'], 1 => $user->lang['1_DAY'], 7 => $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'], 0, 50) . '...' : $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'], $start, true),
            
'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(0, 0, 0, (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(0, 0, 0, (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
Реклама