<?php echo _title;?> www.prochazka.zde.cz
www.ccsinfo.com/CEH
Server si právě čte 6 lidí, dnes je středa, 17. Duben 2024   
Kategorie: Programy, PHP, RS SunLight

HCM modul Download OBJEKT - verze 3.0.1.

icons pic Modul pro RS (redakční systém) SunLight CMS 7.5.x. na počítání staženích souborů.

HCM modulu Download ve verzi 3.0.1. Nová verze je doplněna o dva řádky. Řádek 50 zabezpečuje, že se po každém stažení aktualizuje v databázi velikost souboru. Dále na řádku 62 je mazání neaktuálních záznamů v databázi. Pokud se stane, že soubor z webu odstraníte, tak v databázi nadále zůstane informace o bývalém souboru. Vše ostatní je jako u předchozí verze. Nebudu zde popisovat použiti HCM modulu, jeho instalaci a podobně. Nedoporučuji v adresáři na webu kde jsou umístěné soubory na stáhnutí vytvářet další adresáře a tak rozdělovat jednotlivé soubory do skupin. Tento skript Download verze 3.0.1. nemá žádný problém. Ale skript který dělá výpis všech stažitelných souboru, si už neporadí s takovýmto uspořádání.

Stáhnout HCM modul: download_object301.php.

HCM kód download modulu 3.0.1.:

PHP code
<?php
// Autor www.prochazka.zde.cz
// verze souboru  v3.0.1.    -objekt
// dne 31.12.2012 - vytvoreni modulu
// dne 25.2.2013 - verze 3.0.0 - predelani na objekt
// dne 26.3.2013 - verze 3.0.1. - opraven skript, aktualizace velikosti souboru a mazani neaktualnich zaznamu.

if(!defined('_core')) exit;
function _HCM_hacesoft_download($SPatchFile='', $SshowFile=''){
     $download = new HCM_download($SPatchFile,$SshowFile, _indexroot."web/download");
     $download->DataBind();
     $sBuffer = $download->GetUrl();
     return $sBuffer;}

class HCM_download {
    Private $nazev_tabulky="";
    Private $sNazevSouboru;
    Private $sFullPatchFile;  
    private $first = 0;
    public $SPatchFile="";
    public $SshowFile="";
    public $sAdrScript;
    public $UrlParameterName="download";  
    public $cesta_k_souborum;
    public $sNameTable ="download";
    public $cat_title_seo="list";
    public $title="";  
   
    public function __construct($SPatchFile="",$SshowFile="",$cesta_k_souborum=""){
        $this->SPatchFile = $SPatchFile;
        $this->SshowFile = $SshowFile;
        $this->sAdrScript = $this->GetAdrScript();
        $this->cesta_k_souborum = $cesta_k_souborum;
        if (isset($GLOBALS['query']['cat_title_seo'])){$this->cat_title_seo = $GLOBALS['query']['cat_title_seo'];}
        $this->title = $GLOBALS['query']['title'];
        $this->nazev_tabulky = _mysql_prefix."-".$this->sNameTable."-hac";}
   
    public function GetUrl (){
        if (!isset($_GET[$this->UrlParameterName])){
             return "<a href='".$this->sAdrScript.'&'.$this->UrlParameterName.'='.$this->SPatchFile."' >".$this->SshowFile."</a>";}}
             
    public function DataBind (){
        if (isset($_GET[$this->UrlParameterName])){
            $this->sNazevSouboru = $_GET[$this->UrlParameterName];
            $this->sFullPatchFile = $this->cesta_k_souborum."/".$this->sNazevSouboru;
            unset ($_GET[$this->UrlParameterName]);
            if (file_exists($this->sFullPatchFile)){
                $sDatumNew = date ("j.n.Y H:i:s");    
                $query = DB::query_row('SELECT * FROM `'.$this->nazev_tabulky.'` WHERE `soubor`="'.$this->sNazevSouboru.'"');
                $sSize = $this->nFormatFileSize(FileSize($this->sFullPatchFile));    
                if (is_bool($query) === false){
                        $pocet_stazeni =  $query['stazeni'] + 1;
                        $query = DB::query('UPDATE `'.$this->nazev_tabulky.'` SET `stazeni` ="'.$pocet_stazeni.'",
                        `velikost` ="'
.$sSize.'",`naposledy_stazen` ="'.$sDatumNew.'" WHERE `soubor` ="'.$this->sNazevSouboru.'"');}
                else{ //Soubor existuje ale doposud neni veden v databazi, tak ho do databaze zapisem
                   $sDatumfile = date ("j.n.Y H:i:s", filemtime($this->sFullPatchFile));        
                   $query = DB::query("INSERT INTO `".$this->nazev_tabulky."` (soubor,rubrika,velikost,datum,verze,popis,stazeni,naposledy_stazen,hodnoceni,pocet_hodnotitelu)
                   VALUES ('$this->sNazevSouboru', '$this->cat_title_seo', '$sSize', '$sDatumfile', '', '$this->title', 1, '$sDatumNew','0','0')"
);    
                }
                $sBuffer= substr ($this->sFullPatchFile,-4);//(délka není zadána, pozice prvního znaku je záporná, proto se počítá od konce)
                if ($sBuffer != ".php"){header("location: $this->sFullPatchFile");} //Posly soubor -posly jakykoliv jen ne s priponou php, ochrana aby utocnik si neposlal nejaky script
            }else{$query = DB::query('DELETE FROM `'.$this->nazev_tabulky.'`  WHERE `soubor` ="'.$this->sNazevSouboru.'"');}//soubor uz neexistuje, smazat v databazi zaznam
        }}
    private function nFormatFileSize($a){
    $unim = array("B", "KB", "MB", "GB", "TB", "PB");$c = 0;
    while ($a >= 1024){$c++;$a = $a / 1024;}
    return number_format($a,($c ? 2 : 0), ",", ".")." ".$unim[$c];}
   
    private function GetAdrScript(){
        $hrefprefix = $_SERVER['SCRIPT_NAME'];
        $this->first=1;
        foreach ( $_GET as $key=>$value){
          if ($key == $this->UrlParameterName)
            continue;
            if ($this->first){
             $hrefprefix .= "?".$key."=".$value;
             $this->first = 0;}
            else
             $hrefprefix .= "&".$key."=".$value;}
    return $hrefprefix;}}
?>

print Formát pro tisk

Komentáře rss

Přidat komentář >

Nebyly přidány žádné komentáře.

Všechny informace jsou zahrnuty pod GPL licenci, pokud není explicitně uveden jiný typ licence.
Používání těchto stránek ke komerčním účelům lze jen se souhlasem autora.
Všechna práva vyhrazena (c) 1997 - 2024 hacesoft.
Jste návštevník číslo: 370670
Celkem zobrazeno stránek: 12325257
Přihlásit do administrace