Author Topic: Req: More detailed who online list  (Read 72302 times)

0 Members and 1 Guest are viewing this topic.

Offline Stoleti

  • Hero Member
  • *****
  • Posts: 574
    • View Profile
Re: Req: More detailed who online list
« Reply #30 on: January 16, 2006, 07:41:07 PM »
no no just for u take a look, cuz you've made that for a original code, so i've installed mod's before, so i've think better u take a look and see if ill be necessary change something from ur code (before posted)  :mrgreen:

I mean , make a code but already count with modifications (i've made before) :) thats nothing about investigation :) just to take a look :)

Offline TheOracle

  • Hero Member
  • *****
  • Posts: 875
    • View Profile
Re: Req: More detailed who online list
« Reply #31 on: January 17, 2006, 01:57:27 AM »
@Stoleti:

Good news. I have just added the userpic row into the "who's online" template and it looks pretty great actually. You can customize your HTML Table the way you want it from now on (still with the userpic subject). I will post the results sometime tonight. ;)

Offline Stoleti

  • Hero Member
  • *****
  • Posts: 574
    • View Profile
Re: Req: More detailed who online list
« Reply #32 on: January 17, 2006, 02:32:41 AM »
awesome new :)

but i think i've forgot tell you , this can work in a new page ?

make 2 ways to see :

1 ) the default list (in my case country flag + username)
2 ) This one the detailed version of who's online ( i.e : users_online.php) where we make a detailed version of who's online .

and here that you've said about we customize the HTML ill be a very good new :)

Offline TheOracle

  • Hero Member
  • *****
  • Posts: 875
    • View Profile
Re: Req: More detailed who online list
« Reply #33 on: January 17, 2006, 03:32:44 AM »
Quote

this can work in a new page ?


My modifications only applys from the core files as no new files are / will be involved.

Offline Stoleti

  • Hero Member
  • *****
  • Posts: 574
    • View Profile
Re: Req: More detailed who online list
« Reply #34 on: January 17, 2006, 04:20:43 AM »
 :?  because i've who's online work in all pages, in small table (vertical mode)...so thats my ideia of make new file for this, for not affect whole templates style  :roll:

Offline TheOracle

  • Hero Member
  • *****
  • Posts: 875
    • View Profile
Re: Req: More detailed who online list
« Reply #35 on: January 17, 2006, 04:31:11 AM »
For now, since my knowledge is quite limited with paging, I have - at least - presented users from the who's online table the way you wanted (according to your screenshot).

Meaning, no paging is currently involved under the first release since it is the first time I'm trying this kind of feature ...

Is it still alright if no paging is in ? For the moment, I think it would be great to know if, what I already did, does fit your needs first - before jumping into any additional details. ;)

Offline Stoleti

  • Hero Member
  • *****
  • Posts: 574
    • View Profile
Re: Req: More detailed who online list
« Reply #36 on: January 17, 2006, 02:09:51 PM »
yes thats no problem :) the question its another one ... make that work in another file ? example "users_online.php" ??? with paging or without :)

Offline TheOracle

  • Hero Member
  • *****
  • Posts: 875
    • View Profile
Re: Req: More detailed who online list
« Reply #37 on: January 17, 2006, 02:49:57 PM »
Quote

make that work in another file ?


I thought I made myself clear the first time. The first release will be from core files - such as includes/sessions.php file. :?

Then, if everything works great, I will make further codings in a new file so that users won't use paging directly from includes/sessions.php (too dangerous). ;)

Offline TheOracle

  • Hero Member
  • *****
  • Posts: 875
    • View Profile
Re: Req: More detailed who online list
« Reply #38 on: January 17, 2006, 03:00:58 PM »
Now, here's the modifications I did yesterday.

First, make a backup of your includes/sessions.php file, your templates/<your_template>/whos_online.html file and your USERS_TABLE.

// Step 1

In your includes/sessions.php file - based from the original block of 4images,

find :

Quote

if (defined("GET_USER_ONLINE") && ($config['display_whosonline'] == 1 || $user_info['user_level'] == ADMIN)) {
  $time_out = time() - 300;
  $sql = "SELECT s.session_user_id, s.session_lastaction, s.session_ip".get_user_table_field(", u.", "user_id").get_user_table_field(", u.", "user_level").get_user_table_field(", u.", "user_name").get_user_table_field(", u.", "user_invisible")."
     FROM ".SESSIONS_TABLE." s
     LEFT JOIN ".USERS_TABLE." u ON (".get_user_table_field("u.", "user_id")." = s.session_user_id)
     WHERE s.session_lastaction >= $time_out
     ORDER BY ".get_user_table_field("u.", "user_id")." ASC, s.session_ip ASC";
  $result = $site_db->query($sql);
  while ($row = $site_db->fetch_array($result)) {
    if ($row['session_user_id'] != GUEST && (isset($row['user_id']) && $row['user_id'] != GUEST)) {
      if (!isset($prev_user_ids[$row['session_user_id']])) {
        $is_invisible = (isset($row[$user_table_fields['user_invisible']]) && $row[$user_table_fields['user_invisible']] == 1) ? 1 : 0;
        $invisibleuser = ($is_invisible) ? "*" : "";
        $username = (isset($row[$user_table_fields['user_level']]) && $row[$user_table_fields['user_level']] == ADMIN && $config['highlight_admin'] == 1) ? sprintf("<b>%s</b>", $row[$user_table_fields['user_name']]) : $row[$user_table_fields['user_name']];
        if (!$is_invisible || $user_info['user_level'] == ADMIN) {
          $user_online_list .= ($user_online_list != "") ? ", " : "";
          $user_profile_link = (!empty($url_show_profile)) ? preg_replace("/{user_id}/", $row['session_user_id'], $url_show_profile) : ROOT_PATH."member.php?action=showprofile&amp;".URL_USER_ID."=".$row['session_user_id'];
          $user_online_list .= "<a href=\"".$site_sess->url($user_profile_link)."\">".$username."</a>".$invisibleuser;
        }
        (!$is_invisible) ? $num_visible_online++ : $num_invisible_online++;
        $num_registered_online++;
      }
      $prev_user_ids[$row['session_user_id']] = 1;
    }
    else {
      if (!isset($prev_session_ips[$row['session_ip']])) {
        $num_guests_online++;
      }
    }
    $prev_session_ips[$row['session_ip']] = 1;
  }
  $num_total_online = $num_registered_online + $num_guests_online;
  //$num_invisible_online = $num_registered_online - $num_visible_online;

  $site_template->register_vars(array(
    "num_total_online" => $num_total_online,
    "num_invisible_online" => $num_invisible_online,
    "num_registered_online" => $num_registered_online,
    "num_guests_online" => $num_guests_online,
    "user_online_list" => $user_online_list
  ));
  $whos_online = $site_template->parse_template("whos_online");
  $site_template->register_vars("whos_online", $whos_online);
  unset($whos_online);
  unset($prev_user_ids);
  unset($prev_session_ips);
}


replace with :

Code: [Select]

if (defined("GET_USER_ONLINE") && ($config['display_whosonline'] == 1 || $user_info['user_level'] == ADMIN)) {
  $time_out = time() - 300;
  $sql = "SELECT s.session_user_id, s.session_lastaction, s.session_ip".get_user_table_field(", u.", "user_id").get_user_table_field(", u.", "user_level").get_user_table_field(", u.", "user_name").get_user_table_field(", u.", "user_invisible")."
  FROM ".SESSIONS_TABLE." s
  LEFT JOIN ".USERS_TABLE." u ON (".get_user_table_field("u.", "user_id")." = s.session_user_id)
  WHERE s.session_lastaction >= $time_out
  ORDER BY ".get_user_table_field("u.", "user_id")." ASC, s.session_ip ASC";
  $result = $site_db->query($sql);
  while ($row = $site_db->fetch_array($result)) {
  $sql = "SELECT user_country, user_age, user_hobbies, userpic FROM ".USERS_TABLE;
  $additional_results = $site_db->query($sql);
  while ($additional_user_rows = $site_db->fetch_array($additional_results)) {
    if ($row['session_user_id'] != GUEST && (isset($row['user_id']) && $row['user_id'] != GUEST)) {
      if (!isset($prev_user_ids[$row['session_user_id']])) {
        $is_invisible = (isset($row[$user_table_fields['user_invisible']]) && $row[$user_table_fields['user_invisible']] == 1) ? 1 : 0;
        $invisibleuser = ($is_invisible) ? "*" : "";
        $username = (isset($row[$user_table_fields['user_level']]) && $row[$user_table_fields['user_level']] == ADMIN && $config['highlight_admin'] == 1) ? sprintf("<b>%s</b>", $row[$user_table_fields['userpic']]. $row[$user_table_fields['user_name']]) : $row[$user_table_fields['user_name']];
        if (!$is_invisible || $user_info['user_level'] == ADMIN) {
          $user_online_list .= ($user_online_list != "") ? "<br />" : "";
          $user_profile_link = (!empty($url_show_profile)) ? str_replace("{user_id}", $row['session_user_id'], $url_show_profile) : ROOT_PATH."member.php?action=showprofile&amp;".URL_USER_ID."=".$row['session_user_id'];
          $userpic_source = (isset($additional_user_rows['userpic']) && $additional_user_rows['userpic'] && $config['userpic']) ? $additional_user_rows['userpic'] : "";
          $userpic_img = $site_sess->url(ROOT_PATH."data/userpic/".$userpic_source);
          $user_hobbies = (isset($additional_user_rows['user_hobbies']) && $additional_user_rows['user_hobbies']) ? $additional_user_rows['user_hobbies'] : $lang['no_comments'];
          $user_age = (isset($additional_user_rows['user_age']) && $additional_user_rows['user_age']) ? $additional_user_rows['user_age']. REPLACE_EMPTY. $lang['years_old'] : "";
          $user_country = (isset($additional_user_rows['user_country']) && $additional_user_rows['user_country']) ? $additional_user_rows['user_country'] : "";
          $user_gender = (isset($additional_user_rows['user_gender']) && $additional_user_rows['user_gender']) ? $additional_user_rows['user_gender'] : "";
          $user_online_list .= "<a href=\"".$site_sess->url($user_profile_link)."\">".$username."</a>".$invisibleuser;
        }
        (!$is_invisible) ? $num_visible_online++ : $num_invisible_online++;
        $num_registered_online++;
      }
      $prev_user_ids[$row['session_user_id']] = 1;
    }
    else {
      if (!isset($prev_session_ips[$row['session_ip']])) {
        $num_guests_online++;
      }
    }
    }
    $prev_session_ips[$row['session_ip']] = 1;
  }
  $num_total_online = $num_registered_online + $num_guests_online;
  //$num_invisible_online = $num_registered_online - $num_visible_online;

  $site_template->register_vars(array(
    "num_total_online" => $num_total_online,
    "num_invisible_online" => $num_invisible_online,
    "num_registered_online" => $num_registered_online,
    "num_guests_online" => $num_guests_online,
    "userpic_img" => $userpic_img,
    "user_hobbies" => $user_hobbies,
    "user_age" => $user_age,
    "user_country" => $user_country,
    "user_gender" => $user_gender,
    "user_online_list" => $user_online_list,
    "lang_user_online" => str_replace('{num_total_online}', $num_total_online, $lang['user_online']),
    "lang_user_online_detail" => str_replace(array('{num_registered_online}','{num_invisible_online}','{num_guests_online}'), array($num_registered_online,$num_invisible_online,$num_guests_online), $lang['user_online_detail']),
  ));
  $whos_online = $site_template->parse_template("whos_online");
  $site_template->register_vars("whos_online", $whos_online);
  unset($whos_online);
  unset($prev_user_ids);
  unset($prev_session_ips);
}


Now, I don't know for you but these are the fields that I have added :

Quote

user_hobbies
user_age
user_country
user_gender



Meaning, some rows might contain different names as yours. If so, simply change the names from that paragraph in order to match yours. ;)

// Step 2

In your templates/<your_template>/whos_online.html file, you may customize it the way you like it as I use these tags :

Code: [Select]

{if userpic_img}
<img src="{userpic_img}">
{endif userpic_img}

{if user_online_list}
{user_online_list}
{endif user_online_list}

{if user_age}
{user_age}
{endif user_age}

{if user_country}
{user_country}
{endif user_country}

{if user_hobbies}
{user_hobbies}
{endif user_hobbies}

{if user_gender}
{user_gender}
{endif user_gender}


// Step 3

In your lang/english/main.php file,

add above the "?>" tag :

Code: [Select]

$lang['years_old'] = "years old.";


// Step 4

Make sure you have these field names correctly set from your USERS_TABLE and from your includes/db_field_definitions.php file.

Let me know how it goes. ;)

Offline Stoleti

  • Hero Member
  • *****
  • Posts: 574
    • View Profile
Re: Req: More detailed who online list
« Reply #39 on: January 17, 2006, 08:10:09 PM »
ok i ill make a full backup (DB, and another files) before ;) tonight i give u the results  :mrgreen:

Offline TheOracle

  • Hero Member
  • *****
  • Posts: 875
    • View Profile
Re: Req: More detailed who online list
« Reply #40 on: January 17, 2006, 10:34:28 PM »
Update :

I forgot to specify the $lang['years_old'] field (if you don't already have it). I have just updated my post above (Step 3). ;)

Offline Stoleti

  • Hero Member
  • *****
  • Posts: 574
    • View Profile
Re: Req: More detailed who online list
« Reply #41 on: January 17, 2006, 10:35:27 PM »
Parse error: parse error, unexpected $ in /home/blacktra/public_html/includes/sessions.php on line 646

Line 555 - 646

Quote
if (defined("GET_USER_ONLINE") && ($config['display_whosonline'] == 1 || $user_info['user_level'] == ADMIN)) {
  $time_out = time() - 300;
  $sql = "SELECT s.session_user_id, s.session_lastaction, s.session_ip".get_user_table_field(", u.", "user_id").get_user_table_field(", u.", "user_level").get_user_table_field(", u.", "user_name").get_user_table_field(", u.", "user_invisible")."
     FROM ".SESSIONS_TABLE." s
     LEFT JOIN ".USERS_TABLE." u ON (".get_user_table_field("u.", "user_id")." = s.session_user_id)
     WHERE s.session_lastaction >= $time_out
     ORDER BY ".get_user_table_field("u.", "user_id")." ASC, s.session_ip ASC";
  $result = $site_db->query($sql);
  while ($row = $site_db->fetch_array($result)) {
  $sql = "SELECT user_country, user_age, user_hobbies, userpic FROM ".USERS_TABLE;
  $additional_results = $site_db->query($sql);
  while ($additional_user_rows = $site_db->fetch_array($additional_results)) {
    if ($row['session_user_id'] != GUEST && (isset($row['user_id']) && $row['user_id'] != GUEST)) {
      if (!isset($prev_user_ids[$row['session_user_id']])) {
        $is_invisible = (isset($row[$user_table_fields['user_invisible']]) && $row[$user_table_fields['user_invisible']] == 1) ? 1 : 0;
        $invisibleuser = ($is_invisible) ? "*" : "";
        $username = (isset($row[$user_table_fields['user_level']]) && $row[$user_table_fields['user_level']] == ADMIN && $config['highlight_admin'] == 1) ? sprintf("<b>%s</b>", $row[$user_table_fields['userpic']]. $row[$user_table_fields['user_name']]) : $row[$user_table_fields['user_name']];
        if (!$is_invisible || $user_info['user_level'] == ADMIN) {
          $user_online_list .= ($user_online_list != "") ? "<br />" : "";
          $user_profile_link = (!empty($url_show_profile)) ? str_replace("{user_id}", $row['session_user_id'], $url_show_profile) : ROOT_PATH."member.php?action=showprofile&amp;".URL_USER_ID."=".$row['session_user_id'];
          /*
  MOD VISITORS COUNTRY FLAGS
  START INSERT
*/
        $cid = geoip_country_code_by_addr($gi, $row['session_ip']);
        if (empty($cid)) $cid = "lan";
        $countries[$cid] = isset($countries[$cid]) ? $countries[$cid]+1 : 1;
        $username = "<img src=\"".ROOT_PATH."flags/".strtolower($cid).".png"."\" alt=\"".(($cid != "lan") ? $gi->GEOIP_COUNTRY_NAMES[$gi->GEOIP_COUNTRY_CODE_TO_NUMBER[$cid]] : "Unknown or LAN")."\" border=0> ".$username;
/*
  MOD VISITORS COUNTRY FLAGS
  END INSERT
*/  
          $userpic_source = (isset($additional_user_rows['userpic']) && $additional_user_rows['userpic'] && $config['userpic']) ? $additional_user_rows['userpic'] : "";
          $userpic_img = $site_sess->url(ROOT_PATH."data/userpic/".$userpic_source);
          $user_sexuality = (isset($additional_user_rows['user_sexuality']) && $additional_user_rows['user_sexuality']) ? $additional_user_rows['user_sexuality'] : $lang['no_comments'];
          $user_age = (isset($additional_user_rows['user_age']) && $additional_user_rows['user_age']) ? $additional_user_rows['user_age']. REPLACE_EMPTY. $lang['years_old'] : "";
          $user_country = (isset($additional_user_rows['user_country']) && $additional_user_rows['user_country']) ? $additional_user_rows['user_country'] : "";
          $user_gender = (isset($additional_user_rows['user_gender']) && $additional_user_rows['user_gender']) ? $additional_user_rows['user_gender'] : "";
          $user_online_list .= "<a href=\"".$site_sess->url($user_profile_link)."\">".$username."</a>".$invisibleuser;
        }
        (!$is_invisible) ? $num_visible_online++ : $num_invisible_online++;
        $num_registered_online++;
      }
      $prev_user_ids[$row['session_user_id']] = 1;
    }
    else {
      if (!isset($prev_session_ips[$row['session_ip']])) {
        $num_guests_online++;

        /*
  MOD VISITORS COUNTRY FLAGS
  START INSERT
*/
        $cid = geoip_country_code_by_addr($gi, $row['session_ip']);
        if (empty($cid)) $cid = "lan";
        $countries[$cid] = isset($countries[$cid]) ? $countries[$cid]+1 : 1;
        $invitado_online_list  = "<font color=\"#00FFFF\">".$num_guests_online."</font><img src=\"".ROOT_PATH."flags/".strtolower($cid).".png"."\" alt=\"".(($cid != "lan") ? $gi->GEOIP_COUNTRY_NAMES[$gi->GEOIP_COUNTRY_CODE_TO_NUMBER[$cid]] : "Unknown or LAN")."\" border=0> ".$invitado_online_list ;
/*
  MOD VISITORS COUNTRY FLAGS
  END INSERT
*/
if ($num_guests_online > 1){
$invitado_online_list .= " , ";
}
      }
    }
    $prev_session_ips[$row['session_ip']] = 1;
  }
  $num_total_online = $num_registered_online + $num_guests_online;
  //$num_invisible_online = $num_registered_online - $num_visible_online;

  $site_template->register_vars(array(
    "num_total_online" => $num_total_online,
    "num_invisible_online" => $num_invisible_online,
    "num_registered_online" => $num_registered_online,
    "num_guests_online" => $num_guests_online,
    "userpic_img" => $userpic_img,
    "user_sexuality" => $user_sexuality,
    "user_age" => $user_age,
    "user_country" => $user_country,
    "user_gender" => $user_gender,
    "user_online_list" => $user_online_list,
    "lang_user_online" => str_replace('{num_total_online}', $num_total_online, $lang['user_online']),
    "lang_user_online_detail" => str_replace(array('{num_registered_online}','{num_invisible_online}','{num_guests_online}'), array($num_registered_online,$num_invisible_online,$num_guests_online), $lang['user_online_detail']),
  ));
  $whos_online = $site_template->parse_template("whos_online");
  $site_template->register_vars("whos_online", $whos_online);
  unset($whos_online);
  unset($prev_user_ids);
  unset($prev_session_ips);
}
?>

 :?:

Offline TheOracle

  • Hero Member
  • *****
  • Posts: 875
    • View Profile
Re: Req: More detailed who online list
« Reply #42 on: January 17, 2006, 10:39:06 PM »
Obviously, we don't have the same routines since you added a none related MOD with this MOD. The error you're having means there's a missing closed braket (this time probably from the while loop statement - as an end argument).

For your case,

find :

Quote

unset($prev_session_ips);
}


replace with :

Code: [Select]

unset($prev_session_ips);
}
}


This should do the trick.

Offline TheOracle

  • Hero Member
  • *****
  • Posts: 875
    • View Profile
Re: Req: More detailed who online list
« Reply #43 on: January 17, 2006, 10:42:19 PM »
In the mean time, since you're not using the "user_hobbies" row, I'd suggest to remove it from the SQL's SELECT line statement as well (since it would seems you removed it from one of the $additional_user_rows below). ;)

Once removed, you should rather replace it with the user_sexuality name you created as an additional field instead. ;)

Offline Stoleti

  • Hero Member
  • *****
  • Posts: 574
    • View Profile
Re: Req: More detailed who online list
« Reply #44 on: January 17, 2006, 11:24:10 PM »
In the mean time, since you're not using the "user_hobbies" row, I'd suggest to remove it from the SQL's SELECT line statement as well (since it would seems you removed it from one of the $additional_user_rows below). ;)

Once removed, you should rather replace it with the user_sexuality name you created as an additional field instead. ;)

i've just replaced with that, cuz i've that on user_table , and no "hobbies" :)

being on USER_TABLE must work , i think  :?