_enabledlist = CONFIG_DIR . 'plugins.conf.php';
			parent::__construct();
		}
		
		function _checkFile($directory, $file) {
			$f = "$directory/$file";
			if (is_dir($f) && file_exists("$f/plugin.$file.php")) {
				array_push($this->_list, $file);
			}
			return 0;
		}
		
		/*
		 *
		 * @param $checkonly bool 	if false will load all the plugins, 
		 *				if true will check if the plugin exist 
		 */
		
		function getEnableds($checkonly) {
		
			$lang =& $GLOBALS['lang'];
			$errors = array();
		
			if (!file_exists($this->_enabledlist))
				return false;
			include($this->_enabledlist);
			$var = $this->_varname;
			
			$this->enabledlist = $$var;
			
			foreach ($$var as $plugin) {
				
				$e = plugin_load($plugin, $checkonly);
				if ($e)
					$errors[] = $e;
				
			}
			
			return $errors;
			
		}
		
	}
	
	function plugin_loadall($check=false){
		
		// this is done during init process
		// all the plugin are loaded
		
		$pluginlister = new plugin_indexer;
		$enab = $pluginlister->getEnableds($check);
		
		include_once (INCLUDES_DIR . 'core.wp-pluggable-funcs.php');
		
		return $enab;
		
	}
	function plugin_get($id=null){
	
		$pluginlister = new plugin_indexer;
		return $pluginlister->getList();
		
	}
	
	function plugin_loaded($id) {
		
		if (file_exists(PLUGINS_DIR . $id. '/plugin.'. $id.".php")) {
			return true;
		} 
		
		return false;
	}
	
	function plugin_load($plugin, $checkonly=true, $langload=true) {
	
				global $lang;
	
				$errno = 0;
				$errors = false;
				
				if (file_exists($f = PLUGINS_DIR . "$plugin/plugin.$plugin.php")){
					$errno = 1; // 1 means exists
				}elseif (file_exists($f = PLUGINS_DIR . "$plugin/$plugin.php")){
					$errno = 2; // 2 means exists but filename is oldstyle
				} 
				
				
				if ($errno > 0){
					ob_start();
					include_once($f);
					ob_end_clean();
				}
				
				if ($langload)
					@lang_load("plugin:{$plugin}");
				
				if ($checkonly) {
					$func = "plugin_{$plugin}_setup";
	
					if (is_callable($func)){
						$errno = $func();
					}
				
					if ($errno<=0) {
						
						if (isset($lang['plugin'][$plugin]['errors'][$errno])) {
							$errors = "[{$plugin}] {$lang['plugin'][$plugin]['errors'][$errno]}";
						} elseif($errno<0) {
							$errors = "[$plugin] " . 
							sprintf($lang['admin']['plugin']['errors']['generic'], $errno);
						} else {
							$errors = "[$plugin] " . 
								$lang['admin']['plugin']['errors']['notfound'];
						}
						
					}
				}
				
				return $errors;
				
	}
	function plugin_exists($id) {
		return file_exists($f = PLUGINS_DIR . $id . '/plugin.'. $id.".php");
	}
	function plugin_do($id, $type=null){
		$entry = null;
		if (file_exists($f = PLUGINS_DIR . 'plugin.'. $id.".php")) {
			include_once($f);
		} else return false;
	}
	
	function plugin_require($id) {
	
		return !plugin_loaded($id);
			/*
			global $_FP_SMARTY;
			$_FP_SMARTY->trigger_error("A plugin required $id to be loaded to work properly, but $id ".
			"does not appear to be loaded. Maybe the plugins have been loaded in the wrong sequence. ".
			"Check your plugin config in the control panel");
			*/
			
	}
	
	function plugin_getdir($id) {
		return PLUGINS_DIR . $id . '/';
	}
	
	function plugin_geturl($id) {
		return BLOG_BASEURL . PLUGINS_DIR . $id . '/';
	}
	
	/*
	 *
	 *	plugin options system might 
	 *	change
	 *
	 */
	
	function plugin_getoptions($plugin, $key=null) {
		global $fp_config;
		
		if ($key && isset($fp_config['plugins'][ $plugin ][ $key ]))
			return $fp_config['plugins'][ $plugin ][ $key ];
		
		return isset($fp_config['plugins'][ $plugin ])?
			$fp_config['plugins'][ $plugin ]
			: null;
	}
	
	function plugin_addoption($plugin, $key, $val) {
		global $fp_config;
		if (!isset($fp_config['plugins']))
			$fp_config['plugins'] = array();
		if (!isset($fp_config['plugins'][$plugin]))
			$fp_config['plugins'][$plugin] = array();
		
		return $fp_config['plugins'][ $plugin ][ $key ] = $val ;
	}
	
	function plugin_saveoptions($null=null) {
		return config_save();
	}
	
	
	
	function smarty_function_plugin_getdir($params, &$smarty) {
		if (!isset($params['plugin'])) //todo complete here
			$smarty->trigger_error('You must set plugin= parameter to a valid id!'); 
		return plugin_getdir($id);
	}
	
	function plugin_getinfo($plugin) {
	    $plugin_data = io_load_file(plugin_getdir($plugin) . "plugin.$plugin.php");
        preg_match("|Plugin Name:(.*)|i", $plugin_data, $plugin_name);
        preg_match("|Plugin URI:(.*)|i", $plugin_data, $plugin_uri);
        preg_match("|Description:(.*)|i", $plugin_data, $description);
        preg_match("|Author:(.*)|i", $plugin_data, $author_name);
        preg_match("|Author URI:(.*)|i", $plugin_data, $author_uri);
        if (preg_match("|Version:(.*)|i", $plugin_data, $version))
                $version = trim($version[1]);
        else
                $version = '';
        $description = wptexturize(trim($description[1]));
        $name = $plugin_name[1];
        $name = trim($name);
        $plugin = $name;
        
       
        if ('' != $plugin_uri[1] && '' != $name) {
        		// '" title="'.__('Visit plugin homepage').'">'.
                $plugin = '' . trim($author_name[1]) . '';
        }
		
        global $smarty;
        $smarty->assign(
        	array (
        			  'name' => $name, 
        			  'title' => $plugin, 
        			  'description' => $description, 
        			  'author' => $author, 
        			  'version' => $version, 
        			  'template' => $template[1]
        			  )
        	);
	}
	
	$_FP_SMARTY->register_function('plugin_getdir','smarty_function_plugin_getdir');
?>