News:

So anyway, Vizuina is back online (fură ceva probleme cu PHP 7/5, alea.. și oricum ați uitat)

Main Menu

users online today

Started by tapirul, June 18, 2006, 08:00:08 PM

0 Members and 1 Guest are viewing this topic.

tapirul

imi place mod-ul si nu as vrea sa renunt la el...problema este ca anuleaza dorinta userilor de a posta hidden.
o solutie ar fi sa randomizez (alfabetic maybe) lista userlor "online today", in loc sa apara in ordinea conectarii sa apara in ordine alfabetica
am intrebat si pe forumul  modului, intreb si aici, cum as putea schimba codul sa imi arate alphabetic?
codul in BoardIndexTemplate.php este

// Users online today
echo '
<tr>
<td class="titlebg" colspan="2">', $txt['uot_users_online_today_title'], '</td>
</tr><tr>
<td class="windowbg" width="20" valign="middle" align="center">
<img src="', $settings['images_url'], '/icons/online.gif" alt="', $txt[158], ' ', $txt['uot_users_online_today_title'], '" border="0" />
</td>
<td class="windowbg2" width="100%">';

echo '
<div class="smalltext">';

echo $context['num_users_online_today'], ' ', $context['num_users_online_today'] == 1 ? $txt['uot_user_online_today'] : $txt['uot_users_online_today'];


Thaaaanks
cre'că, nu ştiu...

tapirul

xml-ul modului e asta, ca sa aveti imaginea completa

<?xml version="1.0"?>
<!DOCTYPE modification SYSTEM "http://www.simplemachines.org/xml/modification">
<modification xmlns="http://www.simplemachines.org/xml/modification" xmlns:smf="http://www.simplemachines.org/">
<id>Michael.PedersenAkaCarceri:UsersOnlineTodayMod</id>
<version>1.0</version>
<file name="$sourcedir/BoardIndex.php">
<operation>
<search position="before"><![CDATA[ $context['num_users_online'] = count($context['users_online']) + $context['num_users_hidden'];
]]></search>
<add><![CDATA[
// 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']);]]>
</add>
</operation>
</file>
<file name="$sourcedir/Stats.php">
<operation>
<search position="before"><![CDATA[ $context['online_today'] = (int) $context['online_today'];
]]></search>
<add><![CDATA[
// Total members online today
$frag = explode('-', strftime('%Y-%m-%d', time()));
$midnight = forum_time(false, mktime(0, 0, 0, (int) $frag[1], (int) $frag[2], (int) $frag[0]));
$result = db_query("
SELECT
COUNT(*)
FROM {$db_prefix}members
WHERE lastLogin >= $midnight", __FILE__, __LINE__);
list ($context['total_users_online_today']) = mysql_fetch_row($result);]]>
</add>
</operation>
</file>
<file name="$themedir/BoardIndex.template.php">
<operation>
<search position="before"><![CDATA[ ', $txt['most_online_ever'], ': ', $modSettings['mostOnline'], ' (' , timeformat($modSettings['mostDate']), ')
</span>
</td>
</tr>';
]]></search>
<add><![CDATA[
// Users online today
echo '
<tr>
<td class="titlebg" colspan="2">', $txt['uot_users_online_today_title'], '</td>
</tr><tr>
<td class="windowbg" width="20" valign="middle" align="center">
<img src="', $settings['images_url'], '/icons/online.gif" alt="', $txt[158], ' ', $txt['uot_users_online_today_title'], '" border="0" />
</td>
<td class="windowbg2" width="100%">';

echo '
<div class="smalltext">';

echo $context['num_users_online_today'], ' ', $context['num_users_online_today'] == 1 ? $txt['uot_user_online_today'] : $txt['uot_users_online_today'];

// 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 ':<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>
</td>
</tr>';]]>
</add>
</operation>
</file>
<file name="$themedir/Stats.template.php">
<operation>
<search position="replace"><![CDATA[ <td nowrap="nowrap">', $txt['users_online_today'], ':</td>
<td align="right">', $context['online_today'], '</td>';]]></search>
<add><![CDATA[ <td nowrap="nowrap">', $txt['users_online_today'], ':</td>
<td align="right">', $context['online_today'], '</td>
</tr><tr>
<td nowrap="nowrap">', $txt['uot_total_users_online_today'], ':</td>
<td align="right">', $context['total_users_online_today'], '</td>';]]>
</add>
</operation>
</file>
<file name="$languagedir/Modifications.english.php">
<operation>
<search position="end"></search>
<add><![CDATA[$txt['uot_users_online_today_title']='Users Seen Today';
$txt['uot_user_online_today']='user seen today';
$txt['uot_users_online_today']='users seen today';
$txt['uot_total_users_online_today']='Users Seen Today';
$txt['uot_yesterday']='Yesterday at ';]]>
</add>
</operation>
</file>
<file name="$languagedir/Stats.english.php">
<operation>
<search position="replace"><![CDATA[$txt['users_online_today'] = 'Online Today';
$txt['num_hits'] = 'Total page views';
$txt['average_hits'] = 'Average page views per day';
]]></search>
<add><![CDATA[$txt['users_online_today'] = 'Most Online Today';
$txt['num_hits'] = 'Total page views';
$txt['average_hits'] = 'Average page views per day';]]>
</add>
</operation>
</file>
</modification>
cre'că, nu ştiu...

stefan

în "BoardIndex.php" la:
$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;

şterge "$row['lastLogin'] . " astfel încât să rezulte:
$context['users_online_today'][$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['memberName']] = (empty($row['showOnline']) && allowedTo('moderate_forum')) ? '<i>' . $link . '</i>' : $link;

Dacă vrei ordine alfabetică, înlocuieşte mai jos "krsort" cu "ksort" (apare de 2 ori).
În episodul viitor: cum să nu apară hiddenii.
Copyright (c) 2006 by Ştefan Talpalaru. All rights reserved.
http://stefantalpalaru.wordpress.com/

tapirul

tanks
cre' ca hiddenii e okay as long as we don't know when they're online. De "aparut" apar oricum cand posteaza.
cre'că, nu ştiu...

tapirul

e mai bine acum
se pare totusi ca ksort pune ordine inversa logarii, though (nu alfabetizeaza)..
asa cica si in manual
nu mai bine asta?
cre'că, nu ştiu...

tapirul

..
cica "Be careful when sorting arrays with mixed types values because sort() can produce unpredictable results."
vad ca nu a alfabetizat (dupa username cel putin.. O fi in ordinea ID? - nu, ca io am ID 1 si ma pune al n-lea), da' a randomizat cumva.
oricum, merge mai bine, nu mai ai cum sa stii care e logat acum, dintre hidden.
cre'că, nu ştiu...

tapirul

okay, ksort ii pune oarecum alfabetic....vine asa
     
28 users seen today:
A CERB, Onorabilul si Venerabilul user cunoscut si sub numele de Furnika, INDIANUL, ManuNastai, Ondina, Qvadratus, Vic, ada, adi, adrian, alandala, anisia, clebs, cnicu, dustweaver, homefree, id05, kireaga, laurad, Maiestatea Sa Luci Sandor, mada, mamulos, manolo, originaltup, rocsa, stefan, tapirul, tess


nu pricep totusi de ce furnika, indianul manu, ondina, qv si vic apar dupa imediat acerb...

a, si am sters doua "lastlogin", desi al doilea cre' ca are de-a face cu moderatorii.

   // 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']);
cre'că, nu ştiu...

tapirul

cu "sort" vine asa

     
28 users seen today:
stefan, Ondina, alandala, id05, tapirul, mamulos, adi, manolo, cnicu, rocsa, Maiestatea Sa Luci Sandor, originaltup, clebs, INDIANUL, ManuNastai, A CERB, tess, homefree, dustweaver, Vic, adrian, Onorabilul si Venerabilul user cunoscut si sub numele de Furnika, mada, laurad, anisia, kireaga, ada, Qvadratus


's curios ce sorteaza "sort"...

PS stefan, po' sa le spun la aia pe forumul de suport cum sa faca? Iti dau credit evident.
cre'că, nu ştiu...

stefan

Când vrei să vezi ce face o funcţie în PHP o cauţi pe http://php.net . Aici folosim "ksort" că facem sortarea după keys, nu values. Sortarea este alfabetică (în ASCII majusculele vin înaintea minusculelor) şi se face după membername (de asta apare furnica unde apare). Dacă vrei după displayed name, înlocuieşte "memberName" cu "realName" acolo unde ai marcat tu cu roşu.

Poţi să spui mai departe.
Copyright (c) 2006 by Ştefan Talpalaru. All rights reserved.
http://stefantalpalaru.wordpress.com/

tapirul

pai acolo am cautat, da' n-am stiut exact ce's alea keys si values si alte chestii - n-am priceput jargonul.
Nu stiam treaba cu majusculele in ASCII - acu' makes sense (Furnika, INDIANUL, ManuNastai, Ondina, Qvadratus, Vic, 's toti cu majuscule, deci sortati primii)

O sa te referez.
cre'că, nu ştiu...

tapirul

ati remarcat ca in medie sunt cam 30-33 useri pe zi?
cre'că, nu ştiu...

tapirul

gata, te-am referuit

Autorul zice ca varianta beta takes care of hidden users - nu am incercat-o pen' ca e beta...
cre'că, nu ştiu...

vlad

Da daca unu e hiden si nici nu vrea sa se stie ca ie pe forum, duar ne citeste din umbra, ca in rest cica sanchi ca nu ne mai scrie ca divortzeaza; nu puate, ca il vedem ca afost pe forum si a citit.

Furnika

Azi il vedem si nue. Vlad, ia zi-mi mie ce te racaie?    :em18:

tapirul

selavicomalaghere
poa' sa citeasca forumul nelogat
cre'că, nu ştiu...

INDIANUL

Quoteati remarcat ca in medie sunt cam 30-33 useri pe zi?
am observat si eu. acum sunt 17 dar da-le timp ca se fac ei 30. nu inteleg nici in ruptul capului de ce mai mult de 3/4 din ei intra, citesc si nu posteaza nimic. adica vad useri intrati la citit de care nici nu stiam ca exista pe Vizuina sau au 2-3 posturi, dar intra cu o constanta demna de o cauza mai buna. nu e zi in care sa nu intre, dar in nicio zi nu zic nimic. numarul de posturi totale pe zi la nivelul Vizuinii se invarte undeva la 10-15 maxim. si totusi intra zilnic 30 de oameni ca sa citeasca cu aviditate un numar de 10 posturi. pesemne ca-s valoroase rau daca intra sa le citeasca cand e netul plin de ziare on-line. de asemenea, pesemne ca asteapta informatii de o importanta colosala daca intra zi de zi neabatuti.
ramas bun...

ManuNastai

indianule, poate ca au browser opera si au pagina deschisa cu tapiria de care nu stiu si de fiecare data cand intra pe net se logheaza automat si aici ;P ca doar n'or intra zilnic sa vada cum l-am mai injurat io pa sandru si cum ma Huo-uieste el!
"Dragostea e singura inflamatie care coace in inima si fistulizeaza in alt organ" (Prof. D

lucisandor

Quote from: ManuNastai on June 27, 2006, 05:45:46 PM
ca doar n'or intra zilnic sa vada cum l-am mai injurat io pa sandru si cum ma Huo-uieste el!
intra sa vada cum ma injur cu licuricii, nu cu bacteria

ManuNastai

bei, chill, nu mai fi asa de neftut! zambeste ca ii cald afara!
"Dragostea e singura inflamatie care coace in inima si fistulizeaza in alt organ" (Prof. D

stefan

Vă înşelaţi cu toţii. Intră să citească şi să recitească posturile mele.
Copyright (c) 2006 by Ştefan Talpalaru. All rights reserved.
http://stefantalpalaru.wordpress.com/