Jump to content

Call to a member function add_file() on a non-object


tomfmason

Recommended Posts

This maybe a rather simple one to fix but I am not seeing were I am going wrong. I am getting the following error [b]Fatal error: Call to a member function add_file() on a non-object in zip.php on line 21[/b]

The zip.php is rather simple. Basicly what it does it goes through a loop and searches the current directory and then adds the sub directorys and all files to a zip file.

Here is the zip.php

[code]
<?php
require('includes/class.php');
clearstatcache();
$zip_dir ="./". $_SERVER['HTTP_HOST'] ."." . date("Ymd") . ".zip";
if (is_dir($zip_dir) == false) {
    mkdir($zip_dir);
}
$folders = array();
$zipfile = new zipFile();
$zipfile -> add_dir($zip_dir);
$path = "./";
if ($dirc = opendir($path)) {
    $d = 0;
    while (($file = readdir($dirc)) !== false) {
        if ($file != '.' && $file != '..') {
            if (is_dir($path . $file)) {
   $d++;
   $folders[$d] = $path . $file;
   $zipfile -> add_dir($zip_dir . "/" . $file);
            }else{
   $zip_file -> add_file($file, $zip_dir);//this is line 21
            }
        }
    }
}
closedir($dir);
function get_sub_folders($folders) {
   $d = count($folders);
   foreach ($folders as $folder) {
      if ($dirc = opendir($folder)) {
          while ($file = readdir($dirc)) {
  $pathto = $folder . "/" . $file;
               if ($file != '.' && $file != '..' && !in_array($folders)) {
      if (is_dir($file) == true) {
         $d++;
         $folders[$d] = $pathto;
         $zipfile -> add_dir($zip_dir . "/" . $pathto);
      }else{
                      $dir = $zipfile
         $zipfile -> add_file($file, $zip_dir . "/" . $pathto);
      }
  $folders = get_sub_folders($folders);
  }
           }
      }
      closedir($folders);
   }
   sort($folders);
   return $folders;
}
$getfolders = get_sub_folders($folders);
$zfile = zfile();
?>
[/code]

Here is the add_file function
[code=php:0]
function add_file($file, $dir) {
    $name = str_replace("\\", "/", $dir);
$unc_len = strlen($file);
$crc = crc32($file);
$zdata = gzcompress($file);
$zdata = substr($zdata, 2, -4);
$c_len = ($zdata);

$fr = "\x50\x4b\x03\x04";
$fr .= "\x14\x00";
$fr .= "\x00\x00";
$fr .= "\x08\x00";
$fr .= "\x00\x00\x00\x00";
$fr .= pack("V", $crc);
$fr .= pack("V", $c_len);
$fr .= pack("V", $unc_len);
$fr .= pack("v", $dir);
$fr .= pack("v", 0);
$fr .= $dir;
$fr .= $zdata;
$fr .= pack("V", $crc);
$fr .= pack("V", $c_len);
$fr .= pack("V", $unc_len);

$this -> datasec[] = $fr;

$new_offset = strlen(implode("", $this->datasec));

$cdrec = "\x50\x4b\x01\x02";
$cdrec .= "\x00\x00";
$cdrec .= "\x14\x00";
$cdrec .= "\x00\x00";
$cdrec .= "\x08\x00";
$cdrec .= "\x00\x00\x00\x00";
$cdrec .= pack("V", $crc);
$cdrec .= pack("V", $c_len);
$cdrec .= pack("V", $unc_len);
$cdrec .= pack("v", strlen($dir));
$cdrec .= pack("v", 0);
$cdrec .= pack("v", 0);
$cdrec .= pack("v", 0);
$cdrec .= pack("v", 0);
$cdrec .= pack("V", 32);
$cdrec .= pack("V", $this-> old_offset);

$this-> old_offset = $new_offset;

$cdrec .= $dir;
$this -> cltr_dir[] = $cdrec;
}
[/code]

Any suggestions as to what I am doing wrong?

Thanks,
Tom
Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.