Author Topic: [MOD] - Image users sessions  (Read 17766 times)

0 Members and 1 Guest are viewing this topic.

Offline thunderstrike

  • 4images Guru
  • *******
  • Posts: 2.327
    • View Profile
[MOD] - Image users sessions
« on: August 31, 2007, 02:54:39 AM »
Hi, I create MOD for image users sessions. Each user visit image can see for session in detail foreach image ID (live). 8)

If image active - show.
If image no active - no show.
If user invisible - show * (same includes/sessions.php file). No show for user (is admin).
No HTML in PHP - all HTML template.

Test: Mr_LovaLove

// Step 1

In details.php file,

find:

Code: [Select]
// Update Hits
if ($user_info['user_level'] != ADMIN) {
  $sql = "UPDATE ".IMAGES_TABLE."
          SET image_hits = image_hits + 1
          WHERE image_id = $image_id";
  $site_db->query($sql);
}

add after:

Code: [Select]
// MOD: Image users sessions.
$image_time_out = time() - 300;
$image_guest_level_sessions_counter = 0;

$additional_sql = "";
$additional_sql_array = array();
if (isset($additional_user_fields) && is_array($additional_user_fields) && !empty($additional_user_fields)) {
    foreach ($additional_user_fields as $key => $val) {
        $additional_sql .= ", u." . $key;
        $additional_sql_array[] = $key;
    }
}

if (function_exists('get_image_sessions_info') && $user_info['user_level'] == GUEST) {
    get_image_sessions_info($site_sess->session_id, 'check_sessions_table');
}

if (function_exists('get_image_sessions_info') && $user_info['user_level'] >= USER) {
    get_image_sessions_info($user_info['user_id'], 'check_sessions_table');
}

$sql1 = "

SELECT ist.image_id, s.session_user_id" . get_user_table_field(", u.", "user_name") . get_user_table_field(", u.", "user_level") . get_user_table_field(", u.", "user_invisible") . $additional_sql . "
FROM (" . SESSIONS_TABLE . " s, " . IMAGES_SESSIONS_TABLE . " ist)
LEFT JOIN " . USERS_TABLE . " u ON (" . get_user_table_field("u.", "user_id") . " = s.session_user_id)
WHERE ist.user_id = s.session_user_id AND ist.image_id = " . $image_id . " AND ist.image_sessions_microtime >= " . $image_time_out . " AND s.session_user_id > '" . GUEST . "'
GROUP BY s.session_user_id
ORDER BY " . get_user_table_field("u.", "user_id") . " ASC, s.session_ip ASC";

$sessions_image_result = $site_db->query($sql1);
$image_num_rows = $site_db->get_numrows($sessions_image_result);

if (isset($image_num_rows) && $image_num_rows > 0) {

$image_sessions_template = "";

$image_invisible_sessions_counter = 0;
$image_registered_users_sessions_counter = 0;
$session_image_id = 0;
while ($sessions_image_row = $site_db->fetch_array($sessions_image_result)) {
    if ($sessions_image_row[$user_table_fields['user_invisible']] == 1) {
        $image_invisible_sessions_counter++;
    }
    if ($sessions_image_row[$user_table_fields['user_level']] >= USER) {
        $image_registered_users_sessions_counter++;
    }    
    $session_image_user_id = $sessions_image_row['session_user_id'];
    $session_image_id .= $sessions_image_row['image_id'];
    $session_image_name = $sessions_image_row[$user_table_fields['user_name']];
    $session_image_invisible = $sessions_image_row[$user_table_fields['user_invisible']];        
    
    $site_template->register_vars(array(
    "session_image_user_url" => $site_sess->url(ROOT_PATH . "member.php?action=showprofile&" . URL_USER_ID . "=" . $session_image_user_id),
    "session_image_user_id" => (int)$session_image_user_id,    
    "session_image_name" => format_text(stripslashes($session_image_name), 2),
    "session_image_invisible" => ($session_image_invisible == 1) ? 1 : 0,
    "invisible_image_chars" => $lang['images_notify_invisible_chars'],
    "need_separator" => (isset($image_num_rows) && $image_num_rows > 1) ? true : false
    ));
    
    if (isset($additional_sql_array) && is_array($additional_sql_array) && !empty($additional_sql_array)) {
        foreach ($additional_sql_array as $key => $val) {
            if ($val == $sessions_image_row[$val]) {                
                $site_template->register_vars($val, $sessions_image_row[$val]);                                
            }
        }
    }
    $image_sessions_template .= $site_template->parse_template("details_sessions_content");
    
    }
    }

$sql2 = "

SELECT s.session_user_id" . $additional_sql . "
FROM (" . SESSIONS_TABLE . " s, " . IMAGES_SESSIONS_TABLE . " ist)
LEFT JOIN " . USERS_TABLE . " u ON (" . get_user_table_field("u.", "user_id") . " = s.session_user_id)
WHERE ist.image_id = " . $image_id . " AND ist.image_sessions_microtime >= " . $image_time_out . " AND s.session_user_id = '" . GUEST . "'
GROUP BY s.session_ip";

$sessions_guest_image_result = $site_db->query($sql2);
$sessions_guest_num_rows = $site_db->get_numrows($sessions_guest_image_result);

if (isset($sessions_guest_num_rows) && $sessions_guest_num_rows > 0) {
    while ($sessions_image_guest_row = $site_db->fetch_array($sessions_guest_image_result)) {
        $image_guest_level_sessions_counter++;
    }    
}
$total_image_sessions = $image_registered_users_sessions_counter + $image_guest_level_sessions_counter;

// End of MOD: Image users sessions.

Find:

Code: [Select]
"lang_file_size" => $lang['file_size'],  

add after:

Code: [Select]
// MOD: Image users sessions.  
  "lang_image_notify_sessions_title" => $lang['images_notify_sessions_title'],
  "lang_image_notify_current_sessions_title" => $lang['images_notify_current_sessions_title'],
  "image_sessions_template" => (isset($image_sessions_template)) ? trim($image_sessions_template) : "",
  "total_invisible_image_sessions" => (isset($image_invisible_sessions_counter)) ? preg_replace("/" . $site_template->start . "invisible_count" . $site_template->end . "/siU", (int)$image_invisible_sessions_counter, $lang['images_notify_invisible_count']) : preg_replace("/" . $site_template->start . "invisible_count" . $site_template->end . "/siU", 0, $lang['images_notify_invisible_count']),
  "total_registered_users_image_sessions" => (isset($image_registered_users_sessions_counter)) ? preg_replace("/" . $site_template->start . "registered_users_count" . $site_template->end . "/siU", (int)$image_registered_users_sessions_counter, $lang['images_notify_registered_users_count']) : preg_replace("/" . $site_template->start . "registered_users_count" . $site_template->end . "/siU", 0, $lang['images_notify_registered_users_count']),
  "total_guest_level_image_sessions" => (isset($image_guest_level_sessions_counter)) ? preg_replace("/" . $site_template->start . "guest_level_count" . $site_template->end . "/siU", (int)$image_guest_level_sessions_counter, $lang['images_notify_guest_level_count']) : preg_replace("/" . $site_template->start . "guest_level_count" . $site_template->end . "/siU", 0, $lang['images_notify_guest_level_count']),
  "total_image_sessions" => (isset($total_image_sessions)) ? (int)$total_image_sessions : false,
  // End of MOD: Image users sessions.

// Step 2

In lang/english/main.php file,

add top ?>:

Code: [Select]
// MOD: Images sessions.
//-----------------------------------------------------
//--- Images sessions -------------------------------
//-----------------------------------------------------
$lang['images_notify_count'] = "Total: {count}";
$lang['images_notify_sessions_title'] = "Currently active image users: ";
$lang['images_notify_invisible_chars'] = "*";
$lang['images_notify_current_sessions_title'] = "There are currently ";
$lang['images_notify_registered_users_count'] = "<b>{registered_users_count}</b> registered user(s) ";
$lang['images_notify_invisible_count'] = "({invisible_count} among them invisible) ";
$lang['images_notify_guest_level_count'] = "and <b>{guest_level_count}</b> guest(s) online.";

// Step 3

In templates/your_template/details.html file,

find:

Code: [Select]
{if allow_comments}
<a name="comments"></a>
<br />

add after:

Code: [Select]
{if is_admin}<! -- Image users sessions -- >{endif is_admin}
 {if image_allow_read}  
<table width="100%" border="0" cellpadding="0" cellspacing="0">
                          <tr>
                            <td valign="top" class="head1">&nbsp;{lang_image_notify_sessions_title} {total_image_sessions}</td>
 </tr>
   </table>
 <table width="100%" border="0" cellpadding="0" cellspacing="0">
 <tr>  
   <td class="row1">&nbsp;{lang_image_notify_current_sessions_title} {total_registered_users_image_sessions} {total_invisible_image_sessions} {total_guest_level_image_sessions}</td>
 </tr>
    </table>
 <table width="100%" border="0" cellpadding="0" cellspacing="0">
 <tr>
  {if image_sessions_template}<td width="100%" class="row1" />&nbsp;{image_sessions_template}</td>{endif image_sessions_template}
  {if sessions_image_no_content_msg}{if allow_image_read}<td width="100%" class="row1" align="center" /><b>{sessions_image_no_content_msg}</b></td>{endif allow_image_read}{endif sessions_image_no_content_msg}
 </tr>  
                        </table>  
         {endif image_allow_read}
 <br />
 {if is_admin}<! -- End of image users sessions -- >{endif is_admin}

// Step 4

In templates/your_template folder, create: details_sessions_content.html.

Add:

Code: [Select]
{if is_admin}{if session_image_invisible}<a href="{session_image_user_url}"><b>{session_image_name}</b></a>{invisible_image_chars}{if need_separator}, {endif need_separator}&nbsp;{endif session_image_invisible}{endif is_admin}
{if user_loggedin}{ifnot session_image_invisible}<a href="{session_image_user_url}"><b>{session_image_name}</b></a>{if need_separator}, {endif need_separator}&nbsp;{endifnot session_image_invisible}{endif user_loggedin}

// Step 5

In includes/functions.php file,

add top ?>:

Code: [Select]
// MOD: Image sessions user.
function get_image_sessions_info($user_id = -1, $status = "") {
    global $site_db, $session_info, $image_id, $user_table_fields, $table_prefix;

    if (!isset($user_id) || $user_id == -1) {
        return;
    }    

    if (!isset($status) || $status == "") {
        return;
    }    

    if (isset($user_id) && $user_id > 0) {
        $user_id = preg_replace("/[^0-9]+/i", "", $user_id);

        if ($user_row = get_user_info($user_id)) {
            if ($user_id != $user_row[$user_table_fields['user_id']]) {
                return;
            }
            unset ($user_row);
        }
        $status = preg_replace("/[^A-Za-z0-9\_]+/i", "", $status);

        

        $date = date('Y-m-d');
        $time = date('H:i:s');
        $microtime = time();        

        switch($status) {            

            case 'check_sessions_table' :            

            if (!defined('IMAGES_SESSIONS_TABLE')) {                
                define('IMAGES_SESSIONS_TABLE', $table_prefix . "images_sessions");
            }              

                $sql = "              

                CREATE TABLE IF NOT EXISTS " . IMAGES_SESSIONS_TABLE . " (
                field_id INT(11) NOT NULL AUTO_INCREMENT,
                user_id VARCHAR(32) NOT NULL DEFAULT '0',
                image_id INT(11) NOT NULL DEFAULT '0',
                image_sessions_date VARCHAR(48) NOT NULL DEFAULT '0000-00-00',
                image_sessions_time VARCHAR(48) NOT NULL DEFAULT '00:00:00',
                image_sessions_microtime VARCHAR(255) NOT NULL DEFAULT '0',
                image_sessions_ip VARCHAR(48) NOT NULL DEFAULT '0.0.0.0',
                PRIMARY KEY (field_id)
                ) TYPE=MyISAM;              

                ";              

                $result = $site_db->query($sql);

                $sql = "SELECT user_id, image_id FROM " . IMAGES_SESSIONS_TABLE . " WHERE user_id = " . $user_id . " AND image_id = " . $image_id;
                $result = $site_db->query($sql);
                $num_rows = $site_db->get_numrows($result);
                
                if (isset($num_rows) && $num_rows <= 0) {
                    
                    $image_sessions_ip = $session_info['session_ip'];

                    $sql1 = "                  

                    INSERT INTO " . IMAGES_SESSIONS_TABLE . "
                    (field_id, user_id, image_id, image_sessions_date, image_sessions_time, image_sessions_microtime, image_sessions_ip)
                    VALUES (NULL, '" . $user_id . "', '" . $image_id . "', '" . $date . "', '" . $time . "', '" . $microtime . "', '" . $image_sessions_ip . "')

                    ";                  

                    $result = $site_db->query($sql1);                    
                }
                
                $get_sessions_microtime = $microtime - 300;
                
                if (isset($num_rows) && $num_rows > 0) {                    
                        $site_db->query("DELETE FROM " . IMAGES_SESSIONS_TABLE . " WHERE image_sessions_microtime < " . $get_sessions_microtime);
                        //$site_db->query("UPDATE " . IMAGES_SESSIONS_TABLE . " SET image_sessions_microtime = '" . $microtime . "', image_id = '" . $image_id . "' WHERE user_id = '" . $user_id . "'");
                }
                
                return $user_id;
                break;        
        }
    }
}
// End of MOD: Image sessions user.

// Step 6

In includes/constants.php file,

find:

Code: [Select]
define('IMAGES_TABLE', $table_prefix.'images');

add after:

Code: [Select]
define('IMAGES_SESSIONS_TABLE', $table_prefix.'images_sessions');

// Step 7 (09/09/2007)

In includes/sessions.php file,

find:

Quote
$this->current_time = time();

add before:

Code: [Select]
$this->current_date = date('Y-m-d');
$this->current_clocktime = date('H:i:s');

Find:

Quote
function logout($user_id) {
    global $site_db;
    $sql = "DELETE FROM ".SESSIONS_TABLE."
            WHERE session_id = '".addslashes($this->session_id)."' OR session_user_id = " . $user_id;
    $site_db->query($sql);  
    
    $this->set_cookie_data("userpass", "", 0);
    $this->set_cookie_data("userid", GUEST);

    $this->session_info = array();

    return true;
  }

replace:

Code: [Select]
function logout($user_id) {
    global $site_db;
    $sql = "DELETE FROM ".SESSIONS_TABLE."
            WHERE session_id = '".addslashes($this->session_id)."' OR session_user_id = " . $user_id;
    $site_db->query($sql);    
    $sql = "DELETE FROM " . IMAGES_SESSIONS_TABLE . "
            WHERE user_id = '" . addslashes($this->session_id) ."' OR user_id = " . $user_id;
    $site_db->query($sql);    
    
    $this->set_cookie_data("userpass", "", 0);
    $this->set_cookie_data("userid", GUEST);

    $this->session_info = array();

    return true;
  }

Find:

Quote
function update_session() {
    global $site_db;

replace:

Code: [Select]
function update_session() {
    global $site_db, $image_id, $url;

Find:

Quote
$this->session_info['session_lastaction'] = $this->current_time;
$this->session_info['session_location'] = $this->user_location;
$this->session_info['session_ip'] = $this->user_ip;

add after:

Code: [Select]
if (preg_match("/details.php/", $url)) {
    
    $sql = "REPLACE INTO " . IMAGES_SESSIONS_TABLE . "
            (field_id, user_id, image_id, image_sessions_date, image_sessions_time, image_sessions_microtime)
            VALUES (NULL, '" . addslashes($this->session_id) . "', '" . $image_id . "', '" . $this->current_date . "', '" . $this->current_clocktime . "', $this->current_time)                  
            
           ";          
    $site_db->query($sql);
    
}

Find:

Quote
if ($this->user_info['user_id'] != GUEST) {
      $sql = "UPDATE ".USERS_TABLE."
              SET ".get_user_table_field("", "user_lastaction")." = $this->current_time, ".get_user_table_field("", "user_location")." = '$this->user_location'
              WHERE ".get_user_table_field("", "user_id")." = ".$this->user_info['user_id'];
      $site_db->query($sql);            
}

replace:

Code: [Select]
if ($this->user_info['user_id'] != GUEST) {
      $sql = "UPDATE ".USERS_TABLE."
              SET ".get_user_table_field("", "user_lastaction")." = $this->current_time, ".get_user_table_field("", "user_location")." = '$this->user_location'
              WHERE ".get_user_table_field("", "user_id")." = ".$this->user_info['user_id'];
      $site_db->query($sql);      
      $sql1 = "DELETE FROM " . IMAGES_SESSIONS_TABLE . " WHERE user_id = '" . GUEST . "' AND image_sessions_ip = '" . $this->user_ip . "'";
      $site_db->query($sql1);    
}

Go details (is active for image) and see. ;)

(For fix - reset table).
« Last Edit: February 18, 2011, 02:17:11 PM by thunderstrike »
8 steps need when ask question -

- PHP version (ACP - > phpinfo())
- mySQL version (ACP - > phpinfo())
- 4images version
- Post screenshot / URL
- Post code in BB Code (no need full file for code) or post attach file
- It doesn't work. What is say - what is do for no work
- Install MOD ? If so - please say (troubleshooting)
- Read FAQ ? Install Bug fixes ?

Offline thunderstrike

  • 4images Guru
  • *******
  • Posts: 2.327
    • View Profile
Re: [MOD] - Image users sessions
« Reply #1 on: August 31, 2007, 03:49:02 PM »
/* Fix */

- Step 1 (09/09/2007 (REV 5))
- Step 2
- Step 3
- Step 4 (09/08/2007)
- Step 5 (09/09/2007 (REV 1))

/* New step */

- Step 7 (09/09/2007 (REV 3))
« Last Edit: September 09, 2007, 05:25:40 PM by thunderstrike »
8 steps need when ask question -

- PHP version (ACP - > phpinfo())
- mySQL version (ACP - > phpinfo())
- 4images version
- Post screenshot / URL
- Post code in BB Code (no need full file for code) or post attach file
- It doesn't work. What is say - what is do for no work
- Install MOD ? If so - please say (troubleshooting)
- Read FAQ ? Install Bug fixes ?

Offline Mr_LovaLove

  • Full Member
  • ***
  • Posts: 233
  • Unkown
    • View Profile
Re: [MOD] - Image users sessions
« Reply #2 on: August 31, 2007, 04:59:45 PM »
Awsome :)

it works with me 100%

and works in test server 100%
works on my site 100% :)

thanks for this mod

Comment: as thunder says

this mod will show the USERS who are visiting ( viewing ) the image

it gives the number of users and the name of users

at this moment only for users ! the update will be for (users + guest )

this mod totally for thunder
plz do not ask me coz im not the creator i only provide the test server for him ( only ) :)
English Please :@

Offline thunderstrike

  • 4images Guru
  • *******
  • Posts: 2.327
    • View Profile
Re: [MOD] - Image users sessions
« Reply #3 on: August 31, 2007, 06:54:32 PM »
/* Important */

More fix - perm topic for news for this MOD: http://www.4homepages.de/forum/index.php?topic=18572.msg99763#msg99763
8 steps need when ask question -

- PHP version (ACP - > phpinfo())
- mySQL version (ACP - > phpinfo())
- 4images version
- Post screenshot / URL
- Post code in BB Code (no need full file for code) or post attach file
- It doesn't work. What is say - what is do for no work
- Install MOD ? If so - please say (troubleshooting)
- Read FAQ ? Install Bug fixes ?

Offline Mr_LovaLove

  • Full Member
  • ***
  • Posts: 233
  • Unkown
    • View Profile
Re: [MOD] - Image users sessions
« Reply #4 on: August 31, 2007, 07:43:14 PM »
well, thunder upgrade the MOD

if you installed this MOD plz re-do these steps:

1-
2-
3-
5-

if not just install it fully ;)

What is the upgrade ?

the upgrade was on the viewer section
so now if Guest , Invisible Users or Users view the image , they will be included in the counter

so its like that :

Currently active image users: 5
 There are currently 3 registered user(s) (1 among them invisible) and 2 guest(s) online.
 thunder* Mr_lovalove Loda


is just exampe !

u can change Currently active image users: 5
to

Currently Visitors: 5 ( if u like ) 
« Last Edit: August 31, 2007, 09:20:10 PM by Mr_LovaLove »
English Please :@

Offline thunderstrike

  • 4images Guru
  • *******
  • Posts: 2.327
    • View Profile
Re: [MOD] - Image users sessions
« Reply #5 on: August 31, 2007, 07:51:03 PM »
All text in lang - no PHP need for edit HTML template. ;)
8 steps need when ask question -

- PHP version (ACP - > phpinfo())
- mySQL version (ACP - > phpinfo())
- 4images version
- Post screenshot / URL
- Post code in BB Code (no need full file for code) or post attach file
- It doesn't work. What is say - what is do for no work
- Install MOD ? If so - please say (troubleshooting)
- Read FAQ ? Install Bug fixes ?

Offline thunderstrike

  • 4images Guru
  • *******
  • Posts: 2.327
    • View Profile
Re: [MOD] - Image users sessions
« Reply #6 on: September 08, 2007, 10:09:17 PM »
Image sessions work for all 3 (+ guest) now. All finish. 8)
8 steps need when ask question -

- PHP version (ACP - > phpinfo())
- mySQL version (ACP - > phpinfo())
- 4images version
- Post screenshot / URL
- Post code in BB Code (no need full file for code) or post attach file
- It doesn't work. What is say - what is do for no work
- Install MOD ? If so - please say (troubleshooting)
- Read FAQ ? Install Bug fixes ?

Offline Mr_LovaLove

  • Full Member
  • ***
  • Posts: 233
  • Unkown
    • View Profile
Re: [MOD] - Image users sessions
« Reply #7 on: September 09, 2007, 12:00:18 AM »
thanks again :o)

Awsome

for me is working 100% i have test it on my server works fine
English Please :@

Offline thunderstrike

  • 4images Guru
  • *******
  • Posts: 2.327
    • View Profile
Re: [MOD] - Image users sessions
« Reply #8 on: September 09, 2007, 03:08:33 AM »
Hard night but all fix.
8 steps need when ask question -

- PHP version (ACP - > phpinfo())
- mySQL version (ACP - > phpinfo())
- 4images version
- Post screenshot / URL
- Post code in BB Code (no need full file for code) or post attach file
- It doesn't work. What is say - what is do for no work
- Install MOD ? If so - please say (troubleshooting)
- Read FAQ ? Install Bug fixes ?

Offline gustav

  • Jr. Member
  • **
  • Posts: 73
    • View Profile
Re: [MOD] - Image users sessions
« Reply #9 on: September 09, 2007, 12:46:14 PM »
can you do the same with categories? So that it shows how many people are in the current category right now?

Offline thunderstrike

  • 4images Guru
  • *******
  • Posts: 2.327
    • View Profile
Re: [MOD] - Image users sessions
« Reply #10 on: September 09, 2007, 12:47:04 PM »
Yes, is possible. ;)
8 steps need when ask question -

- PHP version (ACP - > phpinfo())
- mySQL version (ACP - > phpinfo())
- 4images version
- Post screenshot / URL
- Post code in BB Code (no need full file for code) or post attach file
- It doesn't work. What is say - what is do for no work
- Install MOD ? If so - please say (troubleshooting)
- Read FAQ ? Install Bug fixes ?

Offline thunderstrike

  • 4images Guru
  • *******
  • Posts: 2.327
    • View Profile
Re: [MOD] - Image users sessions
« Reply #11 on: September 09, 2007, 02:12:28 PM »
Categories users sessions (fast with cat cache too):

http://www.4homepages.de/forum/index.php?topic=18677
8 steps need when ask question -

- PHP version (ACP - > phpinfo())
- mySQL version (ACP - > phpinfo())
- 4images version
- Post screenshot / URL
- Post code in BB Code (no need full file for code) or post attach file
- It doesn't work. What is say - what is do for no work
- Install MOD ? If so - please say (troubleshooting)
- Read FAQ ? Install Bug fixes ?

Offline gustav

  • Jr. Member
  • **
  • Posts: 73
    • View Profile
Re: [MOD] - Image users sessions
« Reply #12 on: September 09, 2007, 11:36:03 PM »
ah, yeah... lol, sorry, I should have read a bit better...  :oops:

Offline thunderstrike

  • 4images Guru
  • *******
  • Posts: 2.327
    • View Profile
Re: [MOD] - Image users sessions
« Reply #13 on: September 09, 2007, 11:49:50 PM »
Is ok. I create today. ;)
8 steps need when ask question -

- PHP version (ACP - > phpinfo())
- mySQL version (ACP - > phpinfo())
- 4images version
- Post screenshot / URL
- Post code in BB Code (no need full file for code) or post attach file
- It doesn't work. What is say - what is do for no work
- Install MOD ? If so - please say (troubleshooting)
- Read FAQ ? Install Bug fixes ?