Location: PHPKode > projects > IceBB > icebb/admin/modules/acc_perms.php
<?php
//******************************************************//
//           /////////                 ////   /////
//              //                    // //  //  //
//             //      /////  ////// ////   ////
//            //      //     ////   //  // //  //
//        /////////  /////  ////// /////  /////
//******************************************************//
// icebb.kenkarpg.info // 1.0 Beta 6
//******************************************************//
// acc permissions admin module
// $Id: acc_perms.php 332 2005-08-03 15:17:53Z mutantmonkey $
//******************************************************//

class acc_perms
{
	function run()
	{
		global $icebb,$config,$db,$std;
		
		$icebb->admin->page_title	= "ACC Permissions";
		
		switch($icebb->input['func'])
		{
			case 'template_import':
				$this->template_import();
				break;
			default:
				$this->home();
				break;
		}

		$icebb->admin->output();
	}
	
	function home()
	{
		global $icebb,$config,$db,$std;
	
		$icebb->admin->html		   .= $icebb->admin_skin->start_form('admin.php',array('act'=>'skintools','func'=>'template_import'));
		
		$icebb->admin_skin->table_titles[]	= array("{none}",'60%');
		$icebb->admin_skin->table_titles[]	= array("{none}",'40%');
		
		$icebb->admin->html		   .= $icebb->admin_skin->start_table("Import from Skin Files");
		$icebb->admin->html		   .= $icebb->admin_skin->table_row("Warning: This will overwrite any changes you have made that have not been cached.",'row2');
	
		$db->query("SELECT * FROM icebb_skins");
		while($s					= $db->fetch_row())
		{
			$skinsets[]				= array($s['skin_id'],$s['skin_name']);
		}
	
		$icebb->admin->html		   .= $icebb->admin_skin->table_row(array("For skin set?",$icebb->admin_skin->form_dropdown('onskin',$skinsets)));
		$icebb->admin->html		   .= $icebb->admin_skin->end_form("Import");
		$icebb->admin->html		   .= $icebb->admin_skin->end_table();
	}
	
	function template_import()
	{
		global $icebb,$config,$db,$std;
	
		$functions					= array();
	
		$dirhandle					= @opendir("skins/{$icebb->input['onskin']}");
		
		while($file					= @readdir($dirhandle))
		{
			$file2					= explode('.',$file);
		
			if($file2[1]			== 'php')
			{
				$content			= @file_get_contents("skins/{$icebb->input['onskin']}/{$file}");
		
				// clean up linebreaks
				$content			= str_replace("\r\n","\n",$content); 
				$content			= str_replace("\r","\n",$content);
				
				// explode
				$contente			= explode("\n",$content);
				
				foreach($contente as $c)
				{
					// check for Javascript
					if(preg_match("`<script`i",$c))
					{
						$in_script	= 1;
					}
					
					// ending?
					if(preg_match("`</script>`i",$c))
					{
						$in_script	= 0;
					}
					
					if($in_script	== 1)
					{
						// we have to clean up the javascript
						$c			= preg_replace("`if\s*\(`si","i[JS]f(",$c);
						$c			= preg_replace( "`else\s*if`si","el[JS]se i[JS]f",$c);
						$c			= preg_replace( "`else`si","el[JS]se",$c);
					}
					else {
						if(preg_match("`function\s*([A-Za-z0-9_]*)\(([A-Za-z0-9_,\$]*)\)`",$c,$match))
						{
							$functions[$file2[0]][$match[1]]= array($match[1],$match[2]);
							$on_function= $match[1];
						}
					}
					
					if(!empty($on_function))
					{
						$functions[$file2[0]][$on_function]['content'].= "{$c}\n";
					}
				}
			}
		}
		
		@closedir($dirhandle);
		
		$db->query("DELETE FROM icebb_skin_templates WHERE template_set='{$icebb->input['onskin']}'");
		
		foreach($functions as $fname => $file)
		{
			foreach($file as $func)
			{
				if(!empty($func[0]))
				{
					if(preg_match("`{(.*)}`si",$func['content'],$cmatch))
					{
						$fcontent[$func[0]]	= $cmatch[1];
						//$fcontent[$func[0]]	= preg_replace('`global \$icebb;`','',$fcontent[$func[0]]);
						//$fcontent[$func[0]]	= preg_replace('`return \$code;`','',$fcontent[$func[0]]);
						//$fcontent[$func[0]]	= str_replace("\$code .= <<<EOF","",$fcontent[$func[0]]);
						//$fcontent[$func[0]]	= preg_replace("`EOF;`","",$fcontent[$func[0]]);

						$cz			= $fcontent[$func[0]];

						// handle ifs() and such
						//$cz			= preg_replace("`if\s*\((.*)\)\n{(.*)}`si","<if=\"\\1\">\\2</if>",$cz);
						//$cz			= preg_replace( "`else\s*if\s*\(.*\)`si","<elseif=\"\\1\">",$cz);
						//$cz			= preg_replace( "`else`si","<else>",$cz);
						
						// convert Javascript back
						$cz			= preg_replace("`i[JS]f\(`si","if(",$cz);
						$cz			= preg_replace( "`el[JS]se i[JS]f`si","else if",$cz);
						$cz			= preg_replace( "`el[JS]se`si","else",$cz);
						
						$fcontent[$func[0]]= $cz;
					}
					
					$db->insert('icebb_skin_templates',array(
						'template_set'			=> $icebb->input['onskin'],
						'template_file'			=> $fname,
						'template_name'			=> $func[0],
						'template_code'			=> addslashes($fcontent[$func[0]]),
					));
				}
			}
		}
	}
}
?>
Return current item: IceBB