Online Üyeleri ve Bugün Online Üyeleri Başka Sayfa'da Gösterme

Started by Evo™, April 24, 2008, 06:06:23 AM

Previous topic - Next topic

Evo™

Arkadaşlar başka bir sitede birisi istemiş bende birşeyler yaptım ve sizlerlede paylaşmak istedim. Yardımlarım çok oldu ama ilk defa burada birşey paylaşıyorum. Eksikler olabilir.  :D
Öncelikle Custom Action Modunu kurmanız gerek.
Mod adresi burasıdır. http://custom.simplemachines.org/mods/index.php?mod=331
Ardından.
SSI.php'yi açıyoruz.
Bulup
// Shows a list of online users:  YY Guests, ZZ Users and then a list... 
Buraya kadar seçiyoruz.
// Just like whosOnline except it also logs the online presence.
Seçili bölümü verdiğim kod ile değiştiriyoruz.
// Shows a list of online users:  YY Guests, ZZ Users and then a list...
function ssi_whosOnline($output_method = 'echo')
{
    global $txt, $scripturl, $db_prefix, $ID_MEMBER, $user_info, $sourcedir;
    global $modSettings, $context, $settings;
    // Load the users online right now.
    $result = db_query("
        SELECT
            lo.ID_MEMBER, lo.logTime, mem.realName, mem.memberName, mem.showOnline,
            mg.onlineColor, mg.ID_GROUP
        FROM {$db_prefix}log_online AS lo
            LEFT JOIN {$db_prefix}members AS mem ON (mem.ID_MEMBER = lo.ID_MEMBER)
            LEFT JOIN {$db_prefix}membergroups AS mg ON (mg.ID_GROUP = IF(mem.ID_GROUP = 0, mem.ID_POST_GROUP, mem.ID_GROUP))", __FILE__, __LINE__);
    $return['users'] = array();
    $return['guests'] = 0;
    $return['hidden'] = 0;
    $return['buddies'] = 0;
    $show_buddies = !empty($user_info['buddies']);
    while ($row = mysql_fetch_assoc($result))
    {
        if (!isset($row['realName']))
            $return['guests']++;
        elseif (!empty($row['showOnline']) || allowedTo('moderate_forum'))
        {
            // Some basic color coding...
            if (!empty($row['onlineColor']))
                $link = '<a href="' . $scripturl . '?action=profile;u=' . $row['ID_MEMBER'] . '" style="color: ' . $row['onlineColor'] . ';">' . $row['realName'] . '</a>';
            else
                $link = '<a href="' . $scripturl . '?action=profile;u=' . $row['ID_MEMBER'] . '">' . $row['realName'] . '</a>';
            // Bold any buddies.
            if ($show_buddies && in_array($row['ID_MEMBER'], $user_info['buddies']))
            {
                $return['buddies']++;
                $link = '<b>' . $link . '</b>';
            }
            $return['users'][$row['logTime'] . $row['memberName']] = array(
                'id' => $row['ID_MEMBER'],
                'username' => $row['memberName'],
                'name' => $row['realName'],
                'group' => $row['ID_GROUP'],
                'href' => $scripturl . '?action=profile;u=' . $row['ID_MEMBER'],
                'link' => $link,
                'hidden' => empty($row['showOnline']),
                'is_last' => false,
            );
        }
        else
            $return['hidden']++;
    }
    mysql_free_result($result);
    if (!empty($return['users']))
    {
        krsort($return['users']);
        $userlist = array_keys($return['users']);
        $return['users'][$userlist[count($userlist) - 1]]['is_last'] = true;
    }
    $return['num_users'] = count($return['users']) + $return['hidden'];
    $return['total_users'] = $return['num_users'] + $return['guests'];
    if ($output_method != 'echo')
        return $return;
        echo '
            <div class="smalltext">';
    echo '
        ', $return['guests'], ' ', $return['guests'] == 1 ? $txt['guest'] : $txt['guests'], ', ', $return['num_users'], ' ', $return['num_users'] == 1 ? $txt['user'] : $txt['users'];
    // Hidden users, or buddies?
    if ($return['hidden'] > 0 || $show_buddies)
        echo '
            (' . ($show_buddies ? ($return['buddies'] . ' ' . ($return['buddies'] == 1 ? $txt['buddy'] : $txt['buddies'])) : '') . ($show_buddies && $return['hidden'] ? ', ' : '') . (!$return['hidden'] ? '' : $return['hidden'] . ' ' . $txt['hidden']) . ')';
    echo '<br />';
    foreach ($return['users'] as $user)
        echo $user['hidden'] ? '<i>' . $user['link'] . '</i>' : $user['link'], $user['is_last'] ? '' : ', ';
        echo'</div><br /><hr>';
            // Load the users online today.
    $nowdate = @getdate(forum_time(false));
    $midnight = mktime(0, 0, 0, $nowdate['mon'], $nowdate['mday'], $nowdate['year']) - ($modSettings['time_offset'] * 3600);
    $s = strpos($user_info['time_format'], '%S') === false ? '' : ':%S';
    if (strpos($user_info['time_format'], '%H') === false && strpos($user_info['time_format'], '%T') === false)
        $time_fmt = '%I:%M' . $s . ' %p';
    else
        $time_fmt = '%H:%M' . $s;
    $result = db_query("
        SELECT
            mem.ID_MEMBER, mem.lastLogin, mem.realName, mem.memberName, mem.showOnline,
            mg.onlineColor, mg.ID_GROUP, mg.groupName
        FROM {$db_prefix}members AS mem
            LEFT JOIN {$db_prefix}membergroups AS mg ON (mg.ID_GROUP = IF(mem.ID_GROUP = 0, mem.ID_POST_GROUP, mem.ID_GROUP)) WHERE mem.lastLogin >= $midnight", __FILE__, __LINE__);
    $context['users_online_today'] = array();
    $context['list_users_online_today'] = array();
    while ($row = mysql_fetch_assoc($result))
    {
        $userday = strftime('%d', forum_time(true));
        $loginday = strftime('%d', forum_time(true, $row['lastLogin']));
        $yesterday = $userday == $loginday ? '' : $txt['uot_yesterday'];
        $lastLogin = $yesterday . strftime($time_fmt, forum_time(true, $row['lastLogin']));
        $title = (allowedTo('moderate_forum') || !empty($row['showOnline'])) ? ' title="' . $lastLogin . '"' : '';
        // Some basic color coding...
        if (!empty($row['onlineColor']))
            $link = '<a href="' . $scripturl . '?action=profile;u=' . $row['ID_MEMBER'] . '"' . $title . ' style="color: ' . $row['onlineColor'] . ';">' . $row['realName'] . '</a>';
        else
            $link = '<a href="' . $scripturl . '?action=profile;u=' . $row['ID_MEMBER'] . '"' . $title . '>' . $row['realName'] . '</a>';
        $is_buddy = in_array($row['ID_MEMBER'], $user_info['buddies']);
        if ($is_buddy)
        {
            $link = '<b>' . $link . '</b>';
        }
        $context['users_online_today'][$row['lastLogin'] . $row['memberName']] = array(
            'id' => $row['ID_MEMBER'],
            'username' => $row['memberName'],
            'name' => $row['realName'],
            'group' => $row['ID_GROUP'],
            'href' => $scripturl . '?action=profile;u=' . $row['ID_MEMBER'],
            'link' => $link,
            'is_buddy' => $is_buddy,
            'hidden' => empty($row['showOnline']),
        );
        $context['list_users_online_today'][$row['lastLogin'] . $row['memberName']] = (empty($row['showOnline']) && allowedTo('moderate_forum')) ? '<i>' . $link . '</i>' : $link;
    }
    mysql_free_result($result);
    krsort($context['users_online_today']);
    krsort($context['list_users_online_today']);
    $context['num_users_online_today'] = count($context['users_online_today']);
    $context['show_stats']=0;
    echo '
            <div class="smalltext">';
    echo $context['num_users_online_today'], ' ', $context['num_users_online_today'] == 1 ? strtolower($txt['user']) : strtolower($txt['users']);
    // Assuming there ARE users online... each user in users_online has an id, username, name, group, href, and link.
    if (!empty($context['users_online_today']))
        echo '
                ', 'bugün buradaydý', ':<br />', implode(', ', $context['list_users_online_today']);
    echo '
                <br />', $context['show_stats'] && !$settings['show_sp1_info'] ? '
                <a href="' . $scripturl . '?action=stats">' . $txt['smf223'] . '</a>' : '', '
            </div>';
}
// Just like whosOnline except it also logs the online presence. 

Daha sonra ise admin paneline giriyorsunuz ve forum seçenekleri Custom Actions tıklıyoruz ve Add an action diyerek yeni sayfa ekliyoruz. name yerine sayfa ismini yazıyoruz Type yazan bölüm php olacak code yazan bölüme ise aşağıda verdiğim kodu ekliyoruz.

global $boarddir;
require($boarddir . "/SSI.php");
echo '
                        <table cellspacing="0" cellpadding="2" border="0" width="100%" align="center">
                            <tr><td class="catbg">Online Üyeler</td></tr>
                            <tr><td>';   
                                ssi_whosOnline();
                            echo '
                            </td></tr>
                        </table>
                        '; 


Kaydet diyoruz ve yeni sayfamız oluşmuş oldu artık. Artık sayfamıza ulaşarak online üyeleri ve bugün online üyeleri başka bir sayfa'da görebiliriz. Aynı şekilde yapmış olduğunuz portal'da da gösterebilirsiniz. Büyük siteler için yararlı olabilecek birşey. Umarım birilerinin işine yarar.
Demo Adresi.

denizgezgin

Daha sonra ise admin paneline giriyorsunuz ve forum seçenekleri Custom Actions tıklıyoruz ve Add an action diyerek yeni sayfa ekliyoruz. name yerine sayfa ismini yazıyoruz Type yazan bölüm php olacak code yazan bölüme ise aşağıda verdiğim kodu ekliyoruz.


bu kısmı anlamadım

forum seneçeklerinde öyle bir şey yok turkçesi ne aça ba bunun belki ondan bulamışımdır

Evo™

Quote from: denizgezgin on April 24, 2008, 06:13:34 AM
Daha sonra ise admin paneline giriyorsunuz ve forum seçenekleri Custom Actions tıklıyoruz ve Add an action diyerek yeni sayfa ekliyoruz. name yerine sayfa ismini yazıyoruz Type yazan bölüm php olacak code yazan bölüme ise aşağıda verdiğim kodu ekliyoruz.


bu kısmı anlamadım

forum seneçeklerinde öyle bir şey yok turkçesi ne aça ba bunun belki ondan bulamışımdır
Custom Action Modunu kurmanız gerekiyor kurmadan o bölüm gözükmez mod adresini konuda vermiştim.


Advertisement: