[plugin] kzDownload

2»

Réponses

  • Pour la feuille de style, c'est un bug PluXml à corriger:
    http://forum.pluxml.org/viewtopic.php?pid=57269#p57269
  • bazooka07bazooka07 Membre
    juin 2018 modifié
    Version 0.8.5 :

    Petite mise à jour pour la bibliothèque svgraph.php
    Si on utilise inkscape pour transformer un fichier SVG en pdf, on obtient quasiment une page blanche.
    Le souci vient que Inkscape ne reconnait pas les variables CSS et ne gère une feuille de style CSS externe dans un fichier SVG
    Pour tester voir le fichier test.php dans le plugin

    La biliothèque svgraph.php permet de créer des graphiques en svg directement sur le serveur plutôt qu'avec une bibliothèque javascript chargée dans le navigateur.

    Correction sur une expression régulière pour reconnaitre le lien à crypter dans le cas d'un fichier seul.
  • SudwebdesignSudwebdesign Membre
    26 sept. modifié
    S@lut, Cpalo m'a fait un petit retour.
    j'ai un peu modifié le script car je l'utilise de façon un peu triviale (les dossiers sont hors de data/media) et affichait une erreur 404 (doc introuvable) dù au test de la fonction plxMotorSendDownload() interne a PluXml.

    Dans le fichier kzDownload.php
    [== PHP ==]
    	public function plxMotorSendDownload() {
    		$code = <<< 'CODE'
    <?php
    $this->plxPlugins->aPlugins['##CLASS##']->stats(
    	substr(
    		$file,
    		strlen(PLX_ROOT.$this->aConf['medias'])
    	)
    );
    ?>
    CODE;
    
    Est devenue
    [== PHP ==]
    	public function plxMotorSendDownload() {
    		$code = <<< 'CODE'
    <?php
    $this->plxPlugins->aPlugins['##CLASS##']->stats(
    	substr(
    		$file,
    		strlen(PLX_ROOT.$this->aConf['medias'])
    	)
    );
    //Fix if not in media folder ::: AND preg_match('#^'.str_replace('\\', '/', realpath(PLX_ROOT.$this->aConf['medias']).'#'), str_replace('\\', '/', realpath($file)))
    if(file_exists($file) ) {
    	header('Content-Description: File Transfer');
    	header('Content-Type: application/download');
    	header('Content-Disposition: attachment; filename='.basename($file));
    	header('Content-Transfer-Encoding: binary');
    	header('Expires: 0');
    	header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    	header('Pragma: no-cache');
    	header('Content-Length: '.filesize($file));
    	readfile($file);
    	exit;
    }
    ?>
    CODE;
    

    Si cela peu aidé quelqu'un :)

    [edit] Merci Bazooka pour ce magnifique outil.

    Notre temps est la seule monnaie vraie ;)

    Site, Dépôt, framagit, MyShop, Factux

  • SudwebdesignSudwebdesign Membre
    26 sept. modifié

    S@lut, Cpalo m'a fait un retour.

    Du fait des restrictions des pages perso de free.fr qui limite le "readfile".

    Cela donne une erreur avec des fichier supérieur à 1 Mo.

    C:\Users\Pa*****ce\AppData\Local\Temp\9JKo921m.zip.part ne pourra être enregistré car le fichier source ne peut être lu.

    Réessayez plus tard ou contactez l’administrateur.

    Ayant déjà eu ce souci avec le dépôt, voici la partie du code utilisé maintenant sur les pages goodies.

    j'ai solutionné ainsi :

    Dans le fichier kzDownload.php

       public function plxMotorSendDownload() {
          $code = <<< 'CODE'
    plxPlugins->aPlugins['##CLASS##']->stats(
       substr(
          $file,
          strlen(PLX_ROOT.$this->aConf['medias'])
       )
    );
    //Fix if not in media folder ::: AND preg_match('#^'.str_replace('\\', '/', realpath(PLX_ROOT.$this->aConf['medias']).'#'), str_replace('\\', '/', realpath($file)))
    if(file_exists($file) ) {
       header('Content-Description: File Transfer');
       header('Content-Type: application/download');
       header('Content-Disposition: attachment; filename='.basename($file));
       header('Content-Transfer-Encoding: binary');
       header('Expires: 0');
       header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
       header('Pragma: no-cache');
       header('Content-Length: '.filesize($file));
       readfile($file);
       exit;
    }
    ?>
    CODE;
    

    Est devenue

       public function plxMotorSendDownload() {
          $code = <<< 'CODE'
    <?php
    $this->plxPlugins->aPlugins['##CLASS##']->stats(
       substr(
          $file,
          strlen(PLX_ROOT.$this->aConf['medias'])
       )
    );
    //Fix if not in media folder ::: AND preg_match('#^'.str_replace('\\', '/', realpath(PLX_ROOT.$this->aConf['medias']).'#'), str_replace('\\', '/', realpath($file)))
       if(file_exists($file)) {
          $testfopen = @fopen($file);
          if($testfopen){
             header('Content-Description: File Transfer');
             header('Content-Type: application/download');
             header('Content-Disposition: attachment; filename='.basename($file));
             header('Content-Transfer-Encoding: binary');
             header('Expires: 0');
             header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
             header('Pragma: no-cache');
             header('Content-Length: '.filesize($file));
             readfile($file);
          } else {//Fix free.fr readfile limited to 1M
             header_remove();
             header('Location: '.$file);
          }
          exit;
       }
    ?>
    CODE;
    

    #AMHA il est possible que la fonction plxMotor->sendDownload() interne a PluXml en soit aussi victime, et que bazooka07 préférerai utiliser un système basé sur le HOST qui économiserai le serveur, mais là ça semble bien rouler et faire le taf ;)

    Et encore Merci @Bazooka07 pour ce bon greffon.

    Notre temps est la seule monnaie vraie ;)

    Site, Dépôt, framagit, MyShop, Factux

Connectez-vous ou Inscrivez-vous pour répondre.