<?php
/*
 * tag|wall                                            | PHP Tag Filter|
 * ---------------------------------------------------------------------

   Copyright (C) 2002  Juraj 'HVGE' Durech
   Copyright (C) 2002  www.designia.sk
   
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
   
 * ---------------------------------------------------------------------
 * tag|wall error module
 *
 * description:
 * - this module appending automatic links and colored piece of bad code.
 *
 * - Module using following CSS classes (you must define it in your CSS stylesheet)
 *
 *   .tw-err-int 	- internal error	(in output string)
 *   .tw-err-err 	- standard error
 *   .tw-err-war 	- warning
 *   .tw-err-com 	- comment
 *
 *   .tw-err-int-l 	- internal error	(in error list)
 *   .tw-err-err-l 	- standard error
 *   .tw-err-war-l 	- warning
 *   .tw-err-com-l 	- comment

 */
class LINK_error extends TW_errors
{
	function LINK_error($options = 0)
	{
		$this->TW_errors($options);
	}
	
	function add($errval, $position, $show_code, $param1=null, $param2=null )
	{
		$err_id = "TW_err_".$this->identifier++;
		$this->ErrorArray[$err_id] = array($errval, $param1, $param2, $position, $show_code);
		if($errval & 0xff00) $this->IsError = 1;
		
		// append errors and warnings
		if(($errval & 0x0ff0) && $show_code != null )
			return 	'<a name="'.$err_id.'"><span class="'.$this->get_error_class($errval).'">'.$show_code.'</span></a>';
		
		return null;
	}
	
	// You can call this method from your project and create nice list of errors.
	//
	//   $lang - error string pack
	//   $mask - any combination of following masks:
	// 		0xf000 - internal, 
	// 		0x0f00 - errors, 
	// 		0x00f0 - warnings, 
	// 		0x000f - comments
	//
	function create_list (&$lang, $mask = 0x0ff0)
	{
		$errors = $this->get_by_mask($mask);
		
		$out = "<ul>";
		foreach($errors as $key => $value)
		{
			$errno = $value[TWE_ERRNO];
			$piece = '<span class="'.$this->get_error_class($errno).'">'.$value[TWE_CODE].'</span>';
			$list ='<a href="#'.$key.'">'.$this->get_error_text($key,$lang).$piece.'</a>';
			$out .= '<li class="'.$this->get_error_class($errno).'-l">'.$list.'</li>';
		}		
		return $out."</ul>";
	}
	
	function get_error_class ($error)
	{
		if($error&0xf000) return "tw-err-int";
		if($error&0x0f00) return "tw-err-err";
		if($error&0x00f0) return "tw-err-war";
		return "tw-err-com";
	}
}
?>