All pastes #238895 Raw Edit

Stuff

public php v1 · immutable
·published 2006-11-05 04:04 UTC
rendered paste body
<?phpclass folder{	function folder($id, $db)	{	//	var_dump($id);		$this->id = $id;		$this->db = $db;	}	function exists()	{		$result = critical_query("SELECT COUNT(*) FROM tinycore_folders WHERE id = $this->id", $this->db);		$arr = mysql_fetch_assoc($result);		return $arr['COUNT(*)'] ? true : false;	}	function get_id()	{		return $this->id;	}	function get_db()	{		return $this->db;	}	function get_name()	{		$result = critical_query("SELECT name FROM tinycore_folders WHERE id = $this->id", $this->db);		$arr = mysql_fetch_assoc($result);		return $arr['name'];	}	function get_parent()	{		if(!$this->id)			return false;		$result = critical_query("SELECT parent_id FROM tinycore_folders WHERE id = $this->id", $this->db);		$arr = mysql_fetch_assoc($result);		return new folder($arr['parent_id'], $this->db);	}	function get_offset($offset)	{		if($arr = $this->enum_children($offset, 1, false))			return $arr[0];		return false;	}	function enum_children($start=0, $limit=-1, $descending=false)	{		$start = prep_input($start);		$limit = prep_input($limit);		$ret = array();		$sql = "SELECT id FROM tinycore_folders WHERE parent_id = $this->id";		if($descending)			$sql .= " ORDER BY id DESC";		$sql .= " LIMIT $start, $limit";		//if($only) $sql .= " AND name = " . prep_input($only);		$result = critical_query($sql, $this->db);		while($fid = mysql_fetch_assoc($result))		{			$ret[] = new folder((int)$fid['id'], $this->db);		} 		return $ret;	}	function find_folder($like)	{		$kids = $this->enum_children();		foreach($kids as $i)		{			$found = false;			foreach($like as $key=>$val)			{				if($i->get_element($key) == $val)					$found = true;				else					break;			}			if($found)				return $i;		}	}/*	$array	function find_children($attrs)	{		$result = critical_query("SELECT id FROM tinycore_folders WHERE parent_id = $this->id", $this->db);		$arr = mysql_fetch_assoc($result);		foreach()		{					}	}		function find_child($attrs)	{		$arr = $this->find_children($attrs);		if(!$arr)			return false;		return $arr[0];	}*/	function size()	{		$result = critical_query("SELECT COUNT(*) FROM tinycore_folders WHERE parent_id = $this->id", $this->db);		$arr = mysql_fetch_assoc($result);		return $arr['COUNT(*)'];	}	function clear()	{		$kids = $this->enum_children();		foreach($kids as $i)		{			$i->delete();		}	}	function delete()	{		critical_query("DELETE FROM tinycore_text WHERE folder_id = $this->id", $this->db);		critical_query("DELETE FROM tinycore_numbers WHERE folder_id = $this->id", $this->db);		critical_query("DELETE FROM tinycore_folders WHERE id = $this->id", $this->db);	}	function delete_element($name)	{		$name = prep_input($name);		critical_query("DELETE FROM tinycore_text WHERE folder_id = $this->id AND name = $name", $this->db);		critical_query("DELETE FROM tinycore_numbers WHERE folder_id = $this->id AND name = $name", $this->db);	}	function get_element($name)	{		$arr = $this->get_contents($name);		if(empty($arr[$name]))			return false;		return $arr[$name];	}	function get_contents(/* arg list */)	{		$ret = array();		$sql = "SELECT name, contents FROM %s WHERE folder_id = $this->id";		if(func_num_args())		{			$sql .= " AND (";			for($i=0;;)			{				$arg = func_get_arg($i);				$sql .= 'name = ' . prep_input($arg);				if(++$i >= func_num_args())					break;				$sql .= ' OR ';			}			$sql .= ")";		}		// Text		$result = critical_query(sprintf($sql, 'tinycore_text'), $this->db);		while($arr = mysql_fetch_assoc($result))		{			$ret[ $arr['name'] ] = (string)$arr['contents'];		}		// Numbers		$result = critical_query(sprintf($sql, 'tinycore_numbers'), $this->db);		while($arr = mysql_fetch_assoc($result))		{			$ret[ $arr['name'] ] = (int)$arr['contents'];		}		// Sub-folders		$kids = $this->enum_children();		foreach($kids as $i)		{			$ret[ $i->get_name() ] = $i->get_contents();		}		return $ret;	}	function set_element($name, $value='')	{		if(is_array($value))		{			$this->create_child($name, $value);		}		else		{			$preped_name = prep_input($name);			$preped_cont = prep_input($value);			$table = is_integer($value) ? 'tinycore_numbers' : 'tinycore_text';			critical_query(			"INSERT INTO $table(folder_id, name, contents) VALUES($this->id, $preped_name, $preped_cont)",			$this->db);		}	}	function set_contents($cont)	{		foreach($cont as $key=>$val)		{			$this->set_element($key, $val);		}	}	function replace_contents($cont)	{		$this->clear();		$this->set_contents($cont);	}	function walk_path($path, $create, $uri)	{	//echo $path;	//exit();		$path = path_to_array($path);		if(empty($path))			return $this;		$fname = array_shift($path);		if($uri)			$fname = urldecode($fname);		if(!($f = $this->get_child($fname)))		{			if($create === true)				$f = $this->create_child($fname);			else				return false;		}		return $f->walk_path($path, $create, $uri);	}	function get_folder($path)	{		return $this->walk_path($path, false, false);	}	function get_folder_uri($path)	{		return $this->walk_path($path, false, true);	}	function create_folder($path)	{		return $this->walk_path($path, true, false);	}		function create_folder_uri($path)	{		return $this->walk_path($path, true, true);	}	function get_child($name)	{		$preped_name = prep_input($name);		$result = critical_query("SELECT id FROM tinycore_folders WHERE parent_id = $this->id AND name = $preped_name LIMIT 1", $this->db);		if($arr = mysql_fetch_assoc($result)) // If folder exists		{			$id = (int)$arr['id'];			return new folder($id, $this->db);		}		return false;	}	function create_child($name, $cont=array())	{		$preped_name = prep_input($name);		critical_query("INSERT INTO tinycore_folders(parent_id, name) VALUES($this->id, $preped_name)", $this->db);		$id = mysql_insert_id($this->db);		$f = new folder($id, $this->db);		$f->set_contents($cont);		return $f;	}};?>