Zdroj: http://prochazka.clanweb.eu/index.php?a=php/pocitadlo_online_v101  •  Vydáno: 12.5.2013 14:04  •  Autor: hacesoft

Počitadlo online v1.0.1.

icons pic Modul pro RS (redakční systém) SunLight CMS 7.5.x. na zobrazení online uživatelů.

Tento skript není žádný HCM modul. Je to rozšíření template souboru o počitadla denního a celkového počtu přístupu návštěvníku a počtu navštívených stránek.

Primárně je tento objekt určen pro umístění do aktuálního template souboru \plugins\templates\*****\hacesoft_module\scripty, kde hvězdičky nahradíte názvem template souboru.

Stáhnout pocitadlo_online modul: pocitadlo_online verze 1.0.1.

Instalace: na server nahrajte adresař install_pocitahlo. Do prohlížeče zadejte adresu umístění\install_pocitadlo\index.php. Postupujte podle instrukcí průvodce. Tento skript nastaví potřebné údaje v databázi. Po úspěšné instalaci, odstraňte adresář install_pocitadlo.

Do template souboru vložte následující kód, pro inicializaci objektu:

PHP code
define("default_path","./plugins/templates/"._template);
define("default_path_module", default_path."/hacesoft_module");

require(default_path_module."/scripty/pocitadlo_objekt.php");
$pocitadlo = new counter_ha(getenv('REMOTE_ADDR')); //inicializace pocitadla
 

Pro zobrazení výsledku použijte následující kód:

PHP code
echo $pocitadlo->sFullTextPocitadlo;

Když prostudujete objekt, zjistíte, že obsahuje tabulky se jmény týdne a měsíce. Je to dáno tím, že ne každý web je korektně nastaven a změny nelze lehce provést. A pak máte výsledek třeba v angličtině. Místo složitého testování, je jednodušší vytvořit převodní tabulky přímo v kódu. Příkaz echo $pocitadlo->sFullTextPocitadlo zobrazí podobný výsledek jako: Server si právě čte 25 lidí, dnes je neděle, 12. Květen 2013

Pro zobrazení počtu návštěvníků a zobrazených stránek použijte následující fragment kódu:

PHP code
$sBuffer ="<br /> Jste návštevník číslo: ";
$sBuffer .= $pocitadlo->visits["count_all"];
$sBuffer .="<br /> Celkem zobrazeno stránek: ";
$sBuffer .= $pocitadlo->visits["count_page"];
echo $sBuffer;

Poznámka k aktualizaci počitadel: u všech počitadel kromě zobrazení stránek je nastaven timeout na 24 hodin.

Kód pocitadlo_objekt.php:

PHP code
<?php
// Autor www.prochazka.zde.cz
// verze souboru  v1.0.1.
// dne 13.04.2013 - vytvoreni modulu

class counter_ha {
    Private $nazev_tabulky_counts="";
    Private $nazev_tabulky_items="";
    Private $day_today;
    Private $row;
    Private $day_x="";
    Private $sDen="xx";
    Private $sMesic="xx";
    Private $mess1='čte';
    Private $mess2='lidí';
    public $sNameTable_counts ="counts";
    public $sNameTable_items ="items";
    public $ip_now="";
    public $day_now;
    public $visits = array();
    public $cele_datum="";
    public $sFullTextPocitadlo;
   
    public function __construct($ip_now=""){
    if(!defined('_core')) exit;
    $this->ip_now = $ip_now;
    $this->day_now = date("d" ,time());  
    $this->nazev_tabulky_counts = _mysql_prefix."-pocitadlo-".$this->sNameTable_counts;
    $this->nazev_tabulky_items = _mysql_prefix."-pocitadlo-".$this->sNameTable_items;
    $this->DataBind();
    $this->online();}
         
    private function DataBind (){
        $this->day_today = DB::query_row("SELECT `day_today` FROM `$this->nazev_tabulky_counts` WHERE `id` = '0' LIMIT 1");
        if($this->day_today['day_today'] <> $this->day_now){ //novy den
            DB::query("UPDATE `$this->nazev_tabulky_counts` SET `count_today` = '0', `day_today` = '$this->day_now' WHERE `id` = '0'");
            DB::query("DELETE FROM `$this->nazev_tabulky_items` WHERE `day` <> '$this->day_now';");}
               
        $this->row = DB::query_row("SELECT * FROM `$this->nazev_tabulky_items` WHERE `ip` = '$this->ip_now' ;");
        if ($this->row == 0){ //novy ucastnik
            DB::query("INSERT IGNORE INTO `$this->nazev_tabulky_items` VALUES ('$this->ip_now', '$this->day_now') ;");
            DB::query("UPDATE `$this->nazev_tabulky_counts` SET `count_all` = `count_all` + '1', `count_today` = `count_today` + '1', `count_page` = `count_page` + '1' WHERE `id` = '0' ;");}
        else{   //stary ucastnik
                DB::query("UPDATE `$this->nazev_tabulky_counts` SET `count_page` = `count_page` + '1' WHERE `id` = '0' ;");
            }
        $this->visits = DB::query_row("SELECT `count_all`,`count_today`,`count_page` FROM `$this->nazev_tabulky_counts` WHERE `id` = '0' ;");}
       
   private function online(){
        switch (strftime("%w")) {
            case 1: $this->sDen ="pondělí"; break;
            case 2: $this->sDen ="úterý"; break;
            case 3: $this->sDen ="středa"; break;
            case 4: $this->sDen ="čtvrtek"; break;
            case 5: $this->sDen ="pátek"; break;
            case 6: $this->sDen ="sobota"; break;
            case 0: $this->sDen ="neděle"; break;}

        switch (strftime("%m")) {
            case 1: $this->sMesic ="Leden"; break;
            case 2: $this->sMesic ="Únor"; break;
            case 3: $this->sMesic ="Březen"; break;
            case 4: $this->sMesic ="Duben"; break;
            case 5: $this->sMesic ="Květen"; break;
            case 6: $this->sMesic ="Červen"; break;
            case 7: $this->sMesic ="Červenec"; break;
            case 8: $this->sMesic ="Srpen"; break;
            case 9: $this->sMesic ="Září"; break;
            case 10: $this->sMesic ="Říjen"; break;
            case 11: $this->sMesic ="Listopad"; break;
            case 12: $this->sMesic ="Prosinec"; break;}    
        $this->cele_datum = '<span class="online_text">&nbsp;dnes&nbsp;je&nbsp;'."$this->sDen, ".date("j.").strftime("&nbsp;$this->sMesic&nbsp;%Y");  

        if ($this->visits["count_today"]<5)
          if ($this->visits["count_today"]>1){$this->mess1='čtou'; $this->mess2='lidí';}

          else{
            $this->mess2='ty'; // vyskloňovat podle počtu uživatelů
            $this->mess1='čteš'; $this->visits["count_today"] = 'jen';}
           $this->sFullTextPocitadlo ='<a title="Autor scriptu OnLine Uzivatelu je Pavel Procházka. Kontakt: www.prochazka.zde.cz" href="http://prochazka.zde.cz">Server&nbsp;si&nbsp;právě&nbsp;'.$this->mess1."&nbsp;". $this->visits["count_today"]."&nbsp;". $this->mess2.'</a>,'. $this->cele_datum .'&nbsp;&nbsp;&nbsp;</span>';}                
}
?>