Ejemplo n.º 1
0
function admin_get_visitor_log($page = 1)
{
    if (!($db = db::get())) {
        return false;
    }
    if (!is_numeric($page) || $page < 1) {
        $page = 0;
    }
    $offset = calculate_page_offset($page, 10);
    if (!($table_prefix = get_table_prefix())) {
        return false;
    }
    if (!($forum_fid = get_forum_fid())) {
        return false;
    }
    $users_get_recent_array = array();
    $uid = session::get_value('UID');
    $sql = "SELECT SQL_CALC_FOUND_ROWS VISITOR_LOG.UID, USER.LOGON, ";
    $sql .= "USER.NICKNAME, USER_PEER.PEER_NICKNAME, ";
    $sql .= "UNIX_TIMESTAMP(VISITOR_LOG.LAST_LOGON) AS LAST_LOGON, ";
    $sql .= "VISITOR_LOG.IPADDRESS, VISITOR_LOG.REFERER, ";
    $sql .= "SEB.SID, SEB.NAME, SEB.URL FROM VISITOR_LOG VISITOR_LOG ";
    $sql .= "LEFT JOIN USER USER ON (USER.UID = VISITOR_LOG.UID) ";
    $sql .= "LEFT JOIN `{$table_prefix}USER_PEER` USER_PEER ";
    $sql .= "ON (USER_PEER.PEER_UID = USER.UID AND USER_PEER.UID = '{$uid}') ";
    $sql .= "LEFT JOIN SEARCH_ENGINE_BOTS SEB ";
    $sql .= "ON (SEB.SID = VISITOR_LOG.SID) ";
    $sql .= "WHERE VISITOR_LOG.LAST_LOGON IS NOT NULL AND VISITOR_LOG.LAST_LOGON > 0 ";
    $sql .= "AND VISITOR_LOG.FORUM = '{$forum_fid}' ";
    $sql .= "ORDER BY VISITOR_LOG.LAST_LOGON DESC LIMIT {$offset}, 10";
    if (!($result = $db->query($sql))) {
        return false;
    }
    $sql = "SELECT FOUND_ROWS() AS ROW_COUNT";
    if (!($result_count = $db->query($sql))) {
        return false;
    }
    list($users_get_recent_count) = $result_count->fetch_row();
    if ($result->num_rows == 0 && $users_get_recent_count > 0 && $page > 1) {
        return admin_get_visitor_log($page - 1);
    }
    while ($visitor_array = $result->fetch_assoc()) {
        if (isset($visitor_array['LOGON']) && isset($visitor_array['PEER_NICKNAME'])) {
            if (!is_null($visitor_array['PEER_NICKNAME']) && strlen($visitor_array['PEER_NICKNAME']) > 0) {
                $visitor_array['NICKNAME'] = $visitor_array['PEER_NICKNAME'];
            }
        }
        if ($visitor_array['UID'] == 0) {
            $visitor_array['LOGON'] = gettext("Guest");
            $visitor_array['NICKNAME'] = gettext("Guest");
        } else {
            if (!isset($visitor_array['LOGON']) || is_null($visitor_array['LOGON'])) {
                $visitor_array['LOGON'] = gettext("Unknown user");
                $visitor_array['NICKNAME'] = "";
            }
        }
        if (isset($visitor_array['REFERER']) && strlen(trim($visitor_array['REFERER'])) > 0) {
            $forum_uri_preg = preg_quote(html_get_forum_uri(), '/');
            if (preg_match("/^{$forum_uri_preg}/iu", trim($visitor_array['REFERER'])) > 0) {
                $visitor_array['REFERER'] = "";
            }
        } else {
            $visitor_array['REFERER'] = "";
        }
        $users_get_recent_array[] = $visitor_array;
    }
    return array('user_count' => $users_get_recent_count, 'user_array' => $users_get_recent_array);
}
Ejemplo n.º 2
0
function admin_get_visitor_log($page = 1, $group_by = ADMIN_VISITOR_LOG_GROUP_NONE, $sort_by = 'LAST_LOGON', $sort_dir = 'DESC')
{
    if (!($db = db::get())) {
        return false;
    }
    if (!is_numeric($page) || $page < 1) {
        $page = 0;
    }
    if (!($table_prefix = get_table_prefix())) {
        return false;
    }
    if (!($forum_fid = get_forum_fid())) {
        return false;
    }
    if (!isset($_SESSION['UID']) || !is_numeric($_SESSION['UID'])) {
        return false;
    }
    $offset = calculate_page_offset($page, 10);
    $group_by_array = array(ADMIN_VISITOR_LOG_GROUP_NONE => 'VISITOR_LOG.VID', ADMIN_VISITOR_LOG_GROUP_IP => 'VISITOR_LOG.IPADDRESS', ADMIN_VISITOR_LOG_GROUP_REFERER => 'VISITOR_LOG.REFERER', ADMIN_VISITOR_LOG_GROUP_USER_AGENT => 'VISITOR_LOG.USER_AGENT');
    if (!isset($group_by_array[$group_by])) {
        $group_by = ADMIN_LOG_GROUP_NONE;
    }
    switch ($group_by) {
        case ADMIN_VISITOR_LOG_GROUP_IP:
            $sort_by_array = array('LOGON' => 'LOGON_COUNT', 'LAST_LOGON' => 'LOGON_COUNT', 'IPADDRESS' => 'VISITOR_LOG.IPADDRESS', 'REFERER' => 'REFERER_COUNT', 'USER_AGENT' => 'USER_AGENT_COUNT');
            break;
        case ADMIN_VISITOR_LOG_GROUP_REFERER:
            $sort_by_array = array('LOGON' => 'LOGON_COUNT', 'LAST_LOGON' => 'LOGON_COUNT', 'IPADDRESS' => 'IPADDRESS_COUNT', 'REFERER' => 'VISITOR_LOG.REFERER', 'USER_AGENT' => 'USER_AGENT_COUNT');
            break;
        case ADMIN_VISITOR_LOG_GROUP_USER_AGENT:
            $sort_by_array = array('LOGON' => 'LOGON_COUNT', 'LAST_LOGON' => 'LOGON_COUNT', 'IPADDRESS' => 'IPADDRESS_COUNT', 'REFERER' => 'REFERER_COUNT', 'USER_AGENT' => 'VISITOR_LOG.USER_AGENT');
            break;
        default:
            $sort_by_array = array('LOGON' => 'USER.LOGON', 'LAST_LOGON' => 'VISITOR_LOG.LAST_LOGON', 'IPADDRESS' => 'VISITOR_LOG.IPADDRESS', 'REFERER' => 'VISITOR_LOG.REFERER', 'USER_AGENT' => 'VISITOR_LOG.USER_AGENT');
            break;
    }
    $sort_dir_array = array('ASC', 'DESC');
    if (!isset($sort_by_array[$sort_by])) {
        $sort_by = 'LAST_LOGON';
    }
    if (!in_array($sort_dir, $sort_dir_array)) {
        $sort_dir = 'DESC';
    }
    $users_get_recent_array = array();
    $sql = "SELECT SQL_CALC_FOUND_ROWS VISITOR_LOG.UID, USER.LOGON, USER.NICKNAME, ";
    $sql .= "USER_PEER.PEER_NICKNAME, UNIX_TIMESTAMP(MAX(VISITOR_LOG.LAST_LOGON)) AS LAST_LOGON, ";
    $sql .= "VISITOR_LOG.IPADDRESS, VISITOR_LOG.REFERER, VISITOR_LOG.USER_AGENT, ";
    $sql .= "{$group_by_array[$group_by]} AS GROUP_BY, COUNT(*) AS LOGON_COUNT, ";
    $sql .= "COUNT(DISTINCT VISITOR_LOG.IPADDRESS) AS IPADDRESS_COUNT, ";
    $sql .= "COUNT(DISTINCT VISITOR_LOG.REFERER) AS REFERER_COUNT, ";
    $sql .= "COUNT(DISTINCT VISITOR_LOG.USER_AGENT) AS USER_AGENT_COUNT, ";
    $sql .= "SEB.SID, SEB.NAME, SEB.URL FROM VISITOR_LOG VISITOR_LOG ";
    $sql .= "LEFT JOIN USER USER ON (USER.UID = VISITOR_LOG.UID) ";
    $sql .= "LEFT JOIN `{$table_prefix}USER_PEER` USER_PEER ";
    $sql .= "ON (USER_PEER.PEER_UID = USER.UID AND USER_PEER.UID = '{$_SESSION['UID']}') ";
    $sql .= "LEFT JOIN SEARCH_ENGINE_BOTS SEB ON (SEB.SID = VISITOR_LOG.SID) ";
    $sql .= "WHERE VISITOR_LOG.LAST_LOGON IS NOT NULL AND VISITOR_LOG.LAST_LOGON > 0 ";
    $sql .= "AND VISITOR_LOG.FORUM = '{$forum_fid}' GROUP BY GROUP_BY ";
    $sql .= "ORDER BY {$sort_by_array[$sort_by]} {$sort_dir} ";
    $sql .= "LIMIT {$offset}, 10";
    if (!($result = $db->query($sql))) {
        return false;
    }
    $sql = "SELECT FOUND_ROWS() AS ROW_COUNT";
    if (!($result_count = $db->query($sql))) {
        return false;
    }
    list($users_get_recent_count) = $result_count->fetch_row();
    if ($result->num_rows == 0 && $users_get_recent_count > 0 && $page > 1) {
        return admin_get_visitor_log($page - 1, $group_by, $sort_by);
    }
    while (($visitor_array = $result->fetch_assoc()) !== null) {
        if (isset($visitor_array['LOGON']) && isset($visitor_array['PEER_NICKNAME'])) {
            if (!is_null($visitor_array['PEER_NICKNAME']) && strlen($visitor_array['PEER_NICKNAME']) > 0) {
                $visitor_array['NICKNAME'] = $visitor_array['PEER_NICKNAME'];
            }
        }
        if ($visitor_array['UID'] == 0) {
            $visitor_array['LOGON'] = gettext("Guest");
            $visitor_array['NICKNAME'] = gettext("Guest");
        } else {
            if (!isset($visitor_array['LOGON']) || is_null($visitor_array['LOGON'])) {
                $visitor_array['LOGON'] = gettext("Unknown user");
                $visitor_array['NICKNAME'] = "";
            }
        }
        if (!isset($visitor_array['REFERER']) || strlen(trim($visitor_array['REFERER'])) == 0) {
            $visitor_array['REFERER'] = "";
        }
        $users_get_recent_array[] = $visitor_array;
    }
    return array('user_count' => $users_get_recent_count, 'user_array' => $users_get_recent_array);
}
Ejemplo n.º 3
0
        $remove_days = $_POST['remove_days'];
    } else {
        $remove_days = 0;
    }
    if ($valid) {
        if (admin_prune_visitor_log($remove_days)) {
            header_redirect("admin_visitor_log.php?webtag={$webtag}&pruned=true");
            exit;
        } else {
            $error_msg_array[] = gettext("Failed To Prune Visitor Log");
            $valid = false;
        }
    }
}
html_draw_top(sprintf('title=%s', gettext("Admin - Visitor Log")), 'class=window_title');
$admin_visitor_log_array = admin_get_visitor_log($page);
echo "<h1>", gettext("Admin"), "<img src=\"", html_style_image('separator.png'), "\" alt=\"\" border=\"0\" />", gettext("Visitor Log"), "</h1>\n";
if (isset($error_msg_array) && sizeof($error_msg_array) > 0) {
    html_display_error_array($error_msg_array, '86%', 'center');
} else {
    if (isset($_GET['pruned'])) {
        html_display_success_msg(gettext("Successfully Pruned Visitor Log"), '86%', 'center');
    } else {
        if (sizeof($admin_visitor_log_array['user_array']) < 1) {
            html_display_warning_msg(gettext("No Visitors Logged"), '86%', 'center');
        }
    }
}
echo "<br />\n";
echo "<div align=\"center\">\n";
echo "  <table cellpadding=\"0\" cellspacing=\"0\" width=\"86%\">\n";
Ejemplo n.º 4
0
        $remove_days = $_POST['remove_days'];
    } else {
        $remove_days = 0;
    }
    if ($valid) {
        if (admin_prune_visitor_log($remove_days)) {
            header_redirect("admin_visitor_log.php?webtag={$webtag}&group_by={$group_by}&pruned=true");
            exit;
        } else {
            $error_msg_array[] = gettext("Failed To Prune Visitor Log");
            $valid = false;
        }
    }
}
html_draw_top(array('title' => gettext('Admin - Visitor Log'), 'class' => 'window_title', 'main_css' => 'admin.css'));
$admin_visitor_log_array = admin_get_visitor_log($page, $group_by, $sort_by, $sort_dir);
echo "<h1>", gettext("Admin"), html_style_image('separator'), gettext("Visitor Log"), "</h1>\n";
if (isset($error_msg_array) && sizeof($error_msg_array) > 0) {
    html_display_error_array($error_msg_array, '86%', 'center');
} else {
    if (isset($_GET['pruned'])) {
        html_display_success_msg(gettext("Successfully Pruned Visitor Log"), '86%', 'center');
    } else {
        if (sizeof($admin_visitor_log_array['user_array']) < 1) {
            html_display_warning_msg(gettext("No Visitors Logged"), '86%', 'center');
        }
    }
}
echo "<br />\n";
echo "<div align=\"center\">\n";
echo "  <table cellpadding=\"0\" cellspacing=\"0\" width=\"86%\">\n";