Online user

V tejto téme sa nachádzajú snippety (rozšírenia) pre Etomite.

Moderátor: Moderators

Užívateľov profilový obrázok
Marek Adamec
Medium Star
Medium Star
Príspevky: 246
Dátum registrácie: Pi Dec 28, 2007 7:58 pm
Bydlisko: Dubnica nad Váhom
Kontaktovať užívateľa:

Online user

Príspevok od užívateľa Marek Adamec » Ne Dec 11, 2011 7:14 pm

toto je kod na zobrazovanie poctu online uzivatelov na webe:

mysql

Kód: Vybrať všetko

CREATE TABLE `user_online` (
`session` char(100) NOT NULL default '',
`time` int(11) NOT NULL default '0'
) TYPE=MyISAM;
php

Kód: Vybrať všetko

############### Code

<?
session_start();
$session=session_id();
$time=time();
$time_check=$time-600; //SET TIME 10 Minute

$host="localhost"; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name="test"; // Database name
$tbl_name="user_online"; // Table name

// Connect to server and select databse
mysql_connect("$host", "$username", "$password")or die("cannot connect to server");
mysql_select_db("$db_name")or die("cannot select DB");

$sql="SELECT * FROM $tbl_name WHERE session='$session'";
$result=mysql_query($sql);

$count=mysql_num_rows($result);

if($count=="0"){
$sql1="INSERT INTO $tbl_name(session, time)VALUES('$session', '$time')";
$result1=mysql_query($sql1);
}
else {
"$sql2=UPDATE $tbl_name SET time='$time' WHERE session = '$session'";
$result2=mysql_query($sql2);
}

$sql3="SELECT * FROM $tbl_name";
$result3=mysql_query($sql3);

$count_user_online=mysql_num_rows($result3);

echo "User online : $count_user_online ";

// if over 10 minute, delete session 
$sql4="DELETE FROM $tbl_name WHERE time<$time_check";
$result4=mysql_query($sql4);

mysql_close();

// Open multiple browser page for result
?>
Potreboval by som PHP previest do snipetu... :D

Užívateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať užívateľa:

Re: Online user

Príspevok od užívateľa _rasel^ » So Dec 17, 2011 11:16 am

Ahoj, vyskúšaj snippet usersOnline - využíva priamo štatistiky Etomite (v administrácií musia byť potom zapnuté), čiže nie je potrebné vytvárať ďalšie SQL tabuľky. Napíš, či to vyhovuje. Defaultne je nastavený tak, že zobrazuje aktivitu používateľov behom 15 min. a zobrazuje nie len aktivitu online používateľov, ale aj používateľov prihlásených cez administrátorské rozhranie.

Kód: Vybrať všetko

/*usersOnline V1.0
Snippet: usersOnline
Author: Cris D.
Date: 2008-11-24
Etomite: V1.0, 1.1
Use: Displays all back-end users, front-end user and site visitors activity
for a duration that you set.

Example: 
21 users active in the past 15 minutes.
18 visitors, 3 members
Admin, Billy, Steven

Note: this only shows users logged into the back 
and and hittting the front-end.  
Due to the limitations of standard etomite tables,
it does not show users logged into the front end as members, 
they count as visitors.
*/
/*********  Configure snippet settings  ****************/
$track_time = isset($track_time) ? $track_time:900;//seconds to return results for (900=15 mins).

$adminStyle="style='color:red;'";
$visitorStyle="style='color:blue;'";


/*********  Process time variables  ********************/
$time_past=round($track_time/60);//time in minutes

//get server offset time
$server_offset_time=$etomite->config['server_offset_time'];
if(!$server_offset_time) $server_offset_time = 0;
$now=(time()+$server_offset_time);
$track_period= $now - $track_time;

/*********  Get Site Stats    **************************/
$where="lasthit > {$track_period}";
//Get all back-end user activity
$tempBackend=$etomite->getIntTableRows('*', 'active_users',$where);

//Get all front-end unique visitors
$where="timestamp > {$track_period}";

$sql="SELECT DISTINCT(visitor) as visitor FROM ".$etomite->db."log_access WHERE {$where} ";
$rs= $etomite->dbQuery($sql);
$tempFrontend= $etomite->recordCount($rs);

//process back-end users
$limit = count($tempBackend);
$members='';
for($i=0; $i<$limit; $i++) {
    $user = $tempBackend[$i]['username'];
    $intKey = $tempBackend[$i]['internalKey'];
    $temp=$etomite->getIntTableRows('internalKey,role','user_attributes', 'internalKey = '.$intKey);
//allocate the selected styles according to user role
    $class='';
    if($temp[0]['role']==1){
    $style = $adminStyle;
    }else{
    $style = $visitorStyle;
    }
    $members .='<font '.$style.'> '.$user. '</font>,';
    }

/*********  Markup and display  ******************/
$chunk=
<<<END
<div id="userOnline">
  <div id="userHeader">
    <p><strong>{users}</strong> user(s) in the last <strong>{time}</strong> minutes.</p>
    <p>{membersCount} member(s) and {visitors} visitor(s).</p>
  </div>
  <div id="userBody">
  {members}
  </div>
</div>
END;

/*********  Process user Stats  ******************/

//Get some totals
$users= ($limit+$tempFrontend);

//Collect the data to parse
$data=array('users'=>$users,
            'time'=>$time_past,
            'membersCount'=>$limit,
            'members'=>$members,
            'visitors'=>$tempFrontend);
            
$out=$etomite->mergeCodeVariables(
                $chunk, $data, 
                $prefix="{",$suffix="}", 
                $oddStyle="", $evenStyle="", $tag="");

return $out;
..:: Etomite CMS → Rulezzz !.!.!. ::..

Užívateľov profilový obrázok
Marek Adamec
Medium Star
Medium Star
Príspevky: 246
Dátum registrácie: Pi Dec 28, 2007 7:58 pm
Bydlisko: Dubnica nad Váhom
Kontaktovať užívateľa:

Re: Online user

Príspevok od užívateľa Marek Adamec » Po Dec 19, 2011 1:57 pm

jasne moze to byt len si to trochu upravim. Aby to vyzeralo takto:

Práve nás číta xxx ľudí

Toto je kod po mojej uprave, ale mam taky problem ze neviem kde mam co prepisat aby mi to nedavalo zarovnanie na stred... vid naspodu na mojom webe http://www.navrchol.sk chcel som aby to bolo hned za ikonkou facebooku. Skusal som odstranit <div id="userOnline"> ale potom to cele spadlo... A co viem tak ho ani v CSS nepouzivam...

Kód: Vybrať všetko

/*********  Markup and display  ******************/
$chunk=
<<<END
<div id="userOnline">
  <div id="userHeader">
    <p>Práve nás &#269;íta {users} &#318;udí.</p>
     </div>
  <div id="userBody">
  {members}
  </div>
</div>
END;

Užívateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať užívateľa:

Re: Online user

Príspevok od užívateľa _rasel^ » Po Dec 19, 2011 10:33 pm

Ahoj, bude stačiť, ak to upravíš takto:

Kód: Vybrať všetko

/*********  Markup and display  ******************/
$chunk= "Práve nás &#269;íta {users} &#318;udí. {members}";
..:: Etomite CMS → Rulezzz !.!.!. ::..

Užívateľov profilový obrázok
Marek Adamec
Medium Star
Medium Star
Príspevky: 246
Dátum registrácie: Pi Dec 28, 2007 7:58 pm
Bydlisko: Dubnica nad Váhom
Kontaktovať užívateľa:

Re: Online user

Príspevok od užívateľa Marek Adamec » Ut Dec 20, 2011 11:08 am

Kurna ja som ale vul, skusal som to takto ale zabudol som to ukoncit ";" $chunk= <p>Práve nás &#269;íta {users} &#318;udí.</p> Dakujem.

Napísať odpoveď