Jump to content

class problams simple problam


redarrow

Recommended Posts

This is a simple class to zip files  i wrote but were have i gon wrong cheers.

 

 

the error is

Fatal error: Class zip_file: Cannot inherit from undefined class archive in C:\Program Files\Apache Group\Apache2\htdocs\freelancers\archive.php on line 3

 

 

<?php

class zip_file extends archive
{
function zip_file($name)
{
	$this->archive($name);
	$this->options['type'] = "zip";
}

function create_zip()
{
	$files = 0;
	$offset = 0;
	$central = "";

	if (!empty ($this->options['sfx']))
		if ($fp = @fopen($this->options['sfx'], "rb"))
		{
			$temp = fread($fp, filesize($this->options['sfx']));
			fclose($fp);
			$this->add_data($temp);
			$offset += strlen($temp);
			unset ($temp);
		}
		else
			$this->error[] = "Could not open sfx module from {$this->options['sfx']}.";

	$pwd = getcwd();
	chdir($this->options['basedir']);

	foreach ($this->files as $current)
	{
		if ($current['name'] == $this->options['name'])
			continue;

		$timedate = explode(" ", date("Y n j G i s", $current['stat'][9]));
		$timedate = ($timedate[0] - 1980 << 25) | ($timedate[1] << 21) | ($timedate[2] << 16) |
			($timedate[3] << 11) | ($timedate[4] << 5) | ($timedate[5]);

		$block = pack("VvvvV", 0x04034b50, 0x000A, 0x0000, (isset($current['method']) || $this->options['method'] == 0) ? 0x0000 : 0x0008, $timedate);

		if ($current['stat'][7] == 0 && $current['type'] == 5)
		{
			$block .= pack("VVVvv", 0x00000000, 0x00000000, 0x00000000, strlen($current['name2']) + 1, 0x0000);
			$block .= $current['name2'] . "/";
			$this->add_data($block);
			$central .= pack("VvvvvVVVVvvvvvVV", 0x02014b50, 0x0014, $this->options['method'] == 0 ? 0x0000 : 0x000A, 0x0000,
				(isset($current['method']) || $this->options['method'] == 0) ? 0x0000 : 0x0008, $timedate,
				0x00000000, 0x00000000, 0x00000000, strlen($current['name2']) + 1, 0x0000, 0x0000, 0x0000, 0x0000, $current['type'] == 5 ? 0x00000010 : 0x00000000, $offset);
			$central .= $current['name2'] . "/";
			$files++;
			$offset += (31 + strlen($current['name2']));
		}
		else if ($current['stat'][7] == 0)
		{
			$block .= pack("VVVvv", 0x00000000, 0x00000000, 0x00000000, strlen($current['name2']), 0x0000);
			$block .= $current['name2'];
			$this->add_data($block);
			$central .= pack("VvvvvVVVVvvvvvVV", 0x02014b50, 0x0014, $this->options['method'] == 0 ? 0x0000 : 0x000A, 0x0000,
				(isset($current['method']) || $this->options['method'] == 0) ? 0x0000 : 0x0008, $timedate,
				0x00000000, 0x00000000, 0x00000000, strlen($current['name2']), 0x0000, 0x0000, 0x0000, 0x0000, $current['type'] == 5 ? 0x00000010 : 0x00000000, $offset);
			$central .= $current['name2'];
			$files++;
			$offset += (30 + strlen($current['name2']));
		}
		else if ($fp = @fopen($current['name'], "rb"))
		{
			$temp = fread($fp, $current['stat'][7]);
			fclose($fp);
			$crc32 = crc32($temp);
			if (!isset($current['method']) && $this->options['method'] == 1)
			{
				$temp = gzcompress($temp, $this->options['level']);
				$size = strlen($temp) - 6;
				$temp = substr($temp, 2, $size);
			}
			else
				$size = strlen($temp);
			$block .= pack("VVVvv", $crc32, $size, $current['stat'][7], strlen($current['name2']), 0x0000);
			$block .= $current['name2'];
			$this->add_data($block);
			$this->add_data($temp);
			unset ($temp);
			$central .= pack("VvvvvVVVVvvvvvVV", 0x02014b50, 0x0014, $this->options['method'] == 0 ? 0x0000 : 0x000A, 0x0000,
				(isset($current['method']) || $this->options['method'] == 0) ? 0x0000 : 0x0008, $timedate,
				$crc32, $size, $current['stat'][7], strlen($current['name2']), 0x0000, 0x0000, 0x0000, 0x0000, 0x00000000, $offset);
			$central .= $current['name2'];
			$files++;
			$offset += (30 + strlen($current['name2']) + $size);
		}
		else
			$this->error[] = "Could not open file {$current['name']} for reading. It was not added.";
	}

	$this->add_data($central);

	$this->add_data(pack("VvvvvVVv", 0x06054b50, 0x0000, 0x0000, $files, $files, strlen($central), $offset,
		!empty ($this->options['comment']) ? strlen($this->options['comment']) : 0x0000));

	if (!empty ($this->options['comment']))
		$this->add_data($this->options['comment']);

	chdir($pwd);

	return 1;
}
} ?>

Link to comment
https://forums.phpfreaks.com/topic/38392-class-problams-simple-problam/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • 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.