Page 1 of 1

Need help with my php dir class!!!

Posted: Thu Nov 13, 2003 8:41 am
by Merlin3D

Code: Select all

<?php

class dir_class
{

	var $dir_name;
	var $dirs = array();
	var $files = array();
	var $idx = NULL;
	var $sortlists;

	function open($dirname, $sortlists = false)
	{

		if(($dirname != "") || (is_dir($dirname) == true))
		{

			$this->dir_name = $dirname;

		}

		if($dh = opendir($this->dir_name))
		{

			$this->idx = $dh;

			while(($file = readdir($this->idx)) !== false)
			{

				if($file != '..' || $file != '.')
					continue;
				if(is_dir($file))
					$this->dirs[] = $file;
				else
					$this->files[] = $file;

			}

			@closedir($this->idx);

			if($sortlists == true)
			{

				sort($this->dirs);
				sort($this->files);

			}

		}

	}

	function file_types()
	{

		foreach($this->files as $filenum => $filename)
		{

			$file_types[$filenum] = filetype($this->dir_name.'/'.$file[$filenum]);

		}

		return $file_types;

	}

	function file_sizes()
	{

		foreach($this->files as $filenum)
		{

			$file_sizes[$filenum] = filesize($this->dir_name.'/'.$file[$filenum]) / 1024;

		}

		return $file_sizes;

	}

	function get_dirs()
	{

		return $this->dirs;

	}

	function get_files()
	{

		return $this->files;

	}

}

?>
Example :

Code: Select all

<?

include("includes/dir_class.inc.php");

$gallery = new dir_class;

$gallery->open("/home/gallery" , true);
$types = $gallery->file_types();
$sizes = $gallery->file_sizes();
$dirs = $gallery->get_dirs();
$files = $gallery->get_files();
print_r($types);
print_r($sizes);
print_r($dirs);
print_r($files);

?>
can anyone tell me if you see any errors?

Posted: Thu Nov 13, 2003 8:51 am
by twigletmac
Do you get any errors when you run the code, what does/doesn't happen that you don't/do expect?

Mac

Posted: Thu Nov 13, 2003 8:53 am
by Merlin3D
Well it just echos blank array's it doesnt show the files in that dir. So i dont know whats wrong

Posted: Thu Nov 13, 2003 9:04 am
by Merlin3D
well heres what shows up on my screen.

Array() Array()

Posted: Thu Nov 13, 2003 9:33 am
by Merlin3D
anyone

Posted: Thu Nov 13, 2003 10:06 am
by twigletmac
Have you tried putting some debugging echo()'s into the class so that you can see what's going on in there?

E.g:

Code: Select all

function open($dirname, $sortlists = false)
{
	echo '<p>$dirname = '.$dirname.'</p>';
	if (($dirname != "") || (is_dir($dirname) == true)) {
		$this->dir_name = $dirname;
	} else {
		echo '<p>'.$dirname.' is either empty or not a directory.</p>';
	}

	if ($dh = opendir($this->dir_name)) {
		$this->idx = $dh;
		
		while (($file = readdir($this->idx)) !== false) {
			echo 'Current File is: '.$file;
			if ($file != '..' && $file != '.') {
				if (is_dir($file)) {
					echo ' and is a directory <br />';
					$this->dirs[] = $file;
				} else {
					echo ' and is a file <br />';
					$this->files[] = $file;
				}
			}
		}

		@closedir($this->idx);

		if ($sortlists == true) {
			sort($this->dirs);
			sort($this->files);
		}
	} else {
		echo '<p>The directory could not be opened</p>';
	}

	echo '<pre>Directories - ';
	print_r($this->dirs);
	echo '</pre>';
	echo '<pre>Files - ';
	print_r($this->files);
	echo '</pre>';

}
Mac

Posted: Thu Nov 13, 2003 10:14 am
by Merlin3D
I dont understand

Parse error: parse error in /home/includes/dir_class.inc.php on line 42

Fatal error: Cannot instantiate non-existent class: dir_class in /home/gallery.php on line 5

Posted: Thu Nov 13, 2003 10:26 am
by twigletmac
There was a missing brace in the code I posted (it was just an example after all) but I've edited the code now and added it in.

Mac

Posted: Thu Nov 13, 2003 10:34 am
by Merlin3D
YOU ARE GOD!!! Thanks sooooooooooo much!!!