[ Index ]
 

Code source de XOOPS 2.0.17.1

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/htdocs/class/ -> tardownloader.php (source)

   1  <?php
   2  // $Id: tardownloader.php 2 2005-11-02 18:23:29Z skalpa $

   3  //  ------------------------------------------------------------------------ //

   4  //                XOOPS - PHP Content Management System                      //

   5  //                    Copyright (c) 2000 XOOPS.org                           //

   6  //                       <http://www.xoops.org/>                             //

   7  //  ------------------------------------------------------------------------ //

   8  //  This program is free software; you can redistribute it and/or modify     //

   9  //  it under the terms of the GNU General Public License as published by     //

  10  //  the Free Software Foundation; either version 2 of the License, or        //

  11  //  (at your option) any later version.                                      //

  12  //                                                                           //

  13  //  You may not change or alter any portion of this comment or credits       //

  14  //  of supporting developers from this source code or any supporting         //

  15  //  source code which is considered copyrighted (c) material of the          //

  16  //  original comment or credit authors.                                      //

  17  //                                                                           //

  18  //  This program is distributed in the hope that it will be useful,          //

  19  //  but WITHOUT ANY WARRANTY; without even the implied warranty of           //

  20  //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            //

  21  //  GNU General Public License for more details.                             //

  22  //                                                                           //

  23  //  You should have received a copy of the GNU General Public License        //

  24  //  along with this program; if not, write to the Free Software              //

  25  //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA //

  26  //  ------------------------------------------------------------------------ //

  27  // Author: Kazumi Ono (AKA onokazu)                                          //

  28  // URL: http://www.myweb.ne.jp/, http://www.xoops.org/, http://jp.xoops.org/ //

  29  // Project: The XOOPS Project                                                //

  30  // ------------------------------------------------------------------------- //

  31  if (!defined('XOOPS_ROOT_PATH')) {
  32      exit();
  33  }
  34  
  35  /**

  36   * base class

  37   */
  38  include_once XOOPS_ROOT_PATH.'/class/downloader.php';
  39  /**

  40   * Class to handle tar files

  41   */
  42  include_once XOOPS_ROOT_PATH.'/class/class.tar.php';
  43  
  44  /**

  45   * Send tar files through a http socket

  46   *

  47   * @package        kernel

  48   * @subpackage    core

  49   *

  50   * @author        Kazumi Ono     <onokazu@xoops.org>

  51   * @copyright    (c) 2000-2003 The Xoops Project - www.xoops.org

  52   */
  53  class XoopsTarDownloader extends XoopsDownloader
  54  {
  55  
  56      /**

  57       * Constructor

  58       * 

  59       * @param string $ext       file extension

  60       * @param string $mimyType  Mimetype

  61       **/
  62  	function XoopsTarDownloader($ext = '.tar.gz', $mimyType = 'application/x-gzip')
  63      {
  64          $this->archiver = new tar();
  65          $this->ext = trim($ext);
  66          $this->mimeType = trim($mimyType);
  67      }
  68  
  69      /**

  70       * Add a file to the archive

  71       * 

  72       * @param   string  $filepath       Full path to the file

  73       * @param   string  $newfilename    Filename (if you don't want to use the original)

  74       **/
  75  	function addFile($filepath, $newfilename=null)
  76      {
  77          $this->archiver->addFile($filepath);
  78          if (isset($newfilename)) {
  79              // dirty, but no other way

  80              for ($i = 0; $i < $this->archiver->numFiles; $i++) {
  81                  if ($this->archiver->files[$i]['name'] == $filepath) {
  82                      $this->archiver->files[$i]['name'] = trim($newfilename);
  83                      break;
  84                  }
  85              }
  86          }
  87      }
  88  
  89      /**

  90       * Add a binary file to the archive

  91       * 

  92       * @param   string  $filepath       Full path to the file

  93       * @param   string  $newfilename    Filename (if you don't want to use the original)

  94       **/
  95  	function addBinaryFile($filepath, $newfilename=null)
  96      {
  97          $this->archiver->addFile($filepath, true);
  98          if (isset($newfilename)) {
  99              // dirty, but no other way

 100              for ($i = 0; $i < $this->archiver->numFiles; $i++) {
 101                  if ($this->archiver->files[$i]['name'] == $filepath) {
 102                      $this->archiver->files[$i]['name'] = trim($newfilename);
 103                      break;
 104                  }
 105              }
 106          }
 107      }
 108  
 109      /**

 110       * Add a dummy file to the archive

 111       * 

 112       * @param   string  $data       Data to write

 113       * @param   string  $filename   Name for the file in the archive

 114       * @param   integer $time

 115       **/
 116  	function addFileData(&$data, $filename, $time=0)
 117      {
 118          $dummyfile = XOOPS_CACHE_PATH.'/dummy_'.time().'.html';
 119          $fp = fopen($dummyfile, 'w');
 120          fwrite($fp, $data);
 121          fclose($fp);
 122          $this->archiver->addFile($dummyfile);
 123          unlink($dummyfile);
 124  
 125          // dirty, but no other way

 126          for ($i = 0; $i < $this->archiver->numFiles; $i++) {
 127              if ($this->archiver->files[$i]['name'] == $dummyfile) {
 128                  $this->archiver->files[$i]['name'] = $filename;
 129                  if ($time != 0) {
 130                      $this->archiver->files[$i]['time'] = $time;
 131                  }
 132                  break;
 133              }
 134          }
 135      }
 136  
 137      /**

 138       * Add a binary dummy file to the archive

 139       * 

 140       * @param   string  $data   Data to write

 141       * @param   string  $filename   Name for the file in the archive

 142       * @param   integer $time

 143       **/
 144  	function addBinaryFileData(&$data, $filename, $time=0)
 145      {
 146          $dummyfile = XOOPS_CACHE_PATH.'/dummy_'.time().'.html';
 147          $fp = fopen($dummyfile, 'wb');
 148          fwrite($fp, $data);
 149          fclose($fp);
 150          $this->archiver->addFile($dummyfile, true);
 151          unlink($dummyfile);
 152  
 153          // dirty, but no other way

 154          for ($i = 0; $i < $this->archiver->numFiles; $i++) {
 155              if ($this->archiver->files[$i]['name'] == $dummyfile) {
 156                  $this->archiver->files[$i]['name'] = $filename;
 157                  if ($time != 0) {
 158                      $this->archiver->files[$i]['time'] = $time;
 159                  }
 160                  break;
 161              }
 162          }
 163      }
 164  
 165      /**

 166       * Send the file to the client

 167       * 

 168       * @param   string  $name   Filename

 169       * @param   boolean $gzip   Use GZ compression

 170       **/
 171  	function download($name, $gzip = true)
 172      {
 173          $this->_header($name.$this->ext);
 174          echo $this->archiver->toTarOutput($name.$this->ext, $gzip);
 175      }
 176  }
 177  ?>


Généré le : Sun Nov 25 11:44:32 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics