⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad_skin_import.php

📁 泛微协同办公系统标准版E-office V5.5的源代码内含泛微办公系统V5.5自动注册文件。
💻 PHP
📖 第 1 页 / 共 2 页
字号:
		$raw = preg_replace( "/^.*?(<!--IBF_START_FUNC)/s", "\\1", trim( $raw ) );
		$raw = str_replace( "\r\n", "\n", $raw );
		$raw = $this->unconvert_tags( $raw );
		$master = array( );
		$flag = 0;
		$eachline = explode( "\n", $raw );
		foreach ( $eachline as $line )
		{
			if ( $flag == 0 && preg_match( "/\\s*<!--IBF_START_FUNC\\|(\\S+?)\\|(.*?)-->\\s*/", $line, $matches ) )
			{
				$func = trim( $matches[1] );
				$data = trim( $matches[2] );
				if ( $func != "" )
				{
					$flag = $func;
					$master[$func] = array(
						"func_name" => $func,
						"func_data" => $data,
						"content" => ""
					);
					continue;
				}
			}
			if ( preg_match( "/\\s*?<!--IBF_END_FUNC\\|{$flag}-->\\s*?/", $line ) )
			{
				$flag = 0;
			}
			else if ( isset( $master[$flag]['content'] ) )
			{
				$master[$flag]['content'] .= $line."\n";
			}
		}
		if ( $INFO['safe_mode_skins'] != 1 )
		{
			if ( SAFE_MODE_ON == 1 )
			{
				$ADMIN->error( "侦测到论坛安全模式功能,你需要修改启用论坛设置[安全模式主题],你可以在[论坛变量设置]里进行设置。" );
			}
			$final = "<?php\n\n"."class {$group} {\n\n";
			foreach ( $master as $func_name => $data )
			{
				$final .= "\n\nfunction ".trim( $data['func_name'] )."(".trim( $data['func_data'] ).") {\n"."global \$ibforums;\n"."return <<<EOF\n";
				$final .= trim( $data['content'] );
				$final .= "\nEOF;\n}\n";
			}
			$final .= "\n\n}\n?>";
			if ( $fh = fopen( $skin_dir."/".$group.".php", "w" ) )
			{
				fwrite( $fh, $final, strlen( $final ) );
				fclose( $fh );
				@chmod( $skin_dir."/".$group.".php", 511 );
			}
			else
			{
				if ( $isnew == 1 )
				{
					$DB->query( "DELETE FROM ibf_tmpl_names WHERE skid='{$setid}'" );
				}
				$errors[] = "无法写入目录 '{$phpskin}',请检查目录属性(CHMOD 777)。";
			}
		}
		foreach ( $master as $func_name => $data )
		{
			if ( $isnew == 0 )
			{
				$str = $DB->compile_db_update_string( array(
					"section_content" => stripslashes( trim( $data['content'] ) ),
					"func_data" => stripslashes( trim( $data['func_data'] ) )
				) );
				$DB->query( "UPDATE ibf_skin_templates SET {$str} WHERE set_id='{$setid}' AND group_name='{$group}' AND func_name='".trim( $data['func_name'] )."'" );
			}
			else
			{
				$str = $DB->compile_db_insert_string( array(
					"section_content" => stripslashes( trim( $data['content'] ) ),
					"func_data" => stripslashes( trim( $data['func_data'] ) ),
					"set_id" => $setid,
					"group_name" => $group,
					"func_name" => trim( $data['func_name'] ),
					"can_remove" => 0
				) );
				$DB->query( "INSERT INTO ibf_skin_templates ({$str['FIELD_NAMES']}) VALUES({$str['FIELD_VALUES']})" );
			}
		}
		return TRUE;
	}

	function template_import( )
	{
	}

	function image_import( )
	{
	}

	function wrap_import( )
	{
		global $IN;
		global $INFO;
		global $DB;
		global $SKIN;
		global $ADMIN;
		global $std;
		global $MEMBER;
		global $GROUP;
	}

	function css_import( )
	{
	}

	function check_archive( $files )
	{
		if ( 0 < count( $files ) )
		{
			foreach ( $files as $giles )
			{
				if ( !preg_match( "/^(?:[\\(\\)\\:\\;\\~\\.\\w\\d\\+\\-\\_\\/]+)\$/", $giles ) )
				{
					return FALSE;
				}
			}
		}
		else
		{
			return FALSE;
		}
		return TRUE;
	}

	function list_current( )
	{
		global $IN;
		global $INFO;
		global $DB;
		global $SKIN;
		global $ADMIN;
		global $std;
		global $MEMBER;
		global $GROUP;
		$form_array = array( );
		$ADMIN->page_detail = "你可以选择需要导入的文件,所有文件必须先上传到 'archive_in' 目录下";
		$ADMIN->page_title = "主题界面导入";
		$files = array( );
		$dir = $INFO['base_dir']."/archive_in";
		if ( is_dir( $dir ) )
		{
			$handle = opendir( $dir );
			while ( ( $filename = readdir( $handle ) ) !== false )
			{
				if ( !( $filename != "." && $filename != ".." ) && !preg_match( "/^(css|image|set|wrap|tmpl).+?\\.(tar|html|css)\$/", $filename ) )
				{
					$files[] = $filename;
				}
			}
			closedir( $handle );
		}
		$SKIN->td_header[] = array( "主题界面名称", "30%" );
		$SKIN->td_header[] = array( "文件类型", "20%" );
		$SKIN->td_header[] = array( "文件名称", "30%" );
		$SKIN->td_header[] = array( "导入", "10%" );
		$SKIN->td_header[] = array( "删除", "10%" );
		$ADMIN->html .= $SKIN->start_table( "当前已经上传的文件" );
		if ( 0 < count( $files ) )
		{
			foreach ( $files as $file )
			{
				$type = array( "css" => "CSS文件管理", "image" => "模板变量管理", "set" => "主题界面管理", "wrap" => "论坛首页模板", "tmpl" => "论坛模板管理" );
				$rtype = preg_replace( "/^(css|image|set|wrap|tmpl).+?\\.(\\S+)\$/", "\\1", $file );
				$rname = preg_replace( "/^(css|image|set|wrap|tmpl)-(.+?)\\.(\\S+)\$/", "\\2", $file );
				$rname = preg_replace( "/_/", " ", $rname );
				$ADMIN->html .= $SKIN->add_td_row( array(
					"<b>{$rname}</b>",
					"<center>{$type[$rtype]}</center>",
					"<center>{$file}</center>",
					"<center><a href='".$SKIN->base_url."&act=import&code=import&type={$rtype}&id={$file}'>导入</a></center>",
					"<center><a href='".$SKIN->base_url."&act=import&code=remove&id={$file}'>删除</a></center>"
				) );
			}
		}
		$ADMIN->html .= $SKIN->end_table( );
		$ADMIN->output( );
	}

	function unconvert_tags( $t = "" )
	{
		if ( $t == "" )
		{
			return "";
		}
		$t = preg_replace( "/\\{ibf\\.vars\\.(sql_driver|sql_host|sql_database|sql_pass|sql_user|sql_port|sql_tbl_prefix|smtp_host|smtp_port|smtp_user|smtp_pass|html_dir|base_dir|upload_dir)\\}/", "", $t );
		$t = preg_replace( "/{ibf\\.script_url}/i", "{\$ibforums->base_url}", $t );
		$t = preg_replace( "/{ibf\\.session_id}/i", "{\$ibforums->session_id}", $t );
		$t = preg_replace( "/{ibf\\.skin\\.(\\w+)}/", "{\$ibforums->skin['\\1']}", $t );
		$t = preg_replace( "/{ibf\\.lang\\.(\\w+)}/", "{\$ibforums->lang['\\1']}", $t );
		$t = preg_replace( "/{ibf\\.vars\\.(\\w+)}/", "{\$ibforums->vars['\\1']}", $t );
		$t = preg_replace( "/{ibf\\.member\\.(\\w+)}/", "{\$ibforums->member['\\1']}", $t );
		return $t;
	}

	function rebuild_phpskin( $templates_dir, $skins_dir )
	{
		global $IN;
		global $INFO;
		global $DB;
		global $SKIN;
		global $ADMIN;
		global $std;
		global $MEMBER;
		global $GROUP;
		$errors = array( );
		require( $templates_dir."/config.php" );
		if ( $handle = opendir( $templates_dir ) )
		{
			while ( ( $filename = readdir( $handle ) ) !== false )
			{
				if ( $filename != "." && $filename != ".." )
				{
					if ( preg_match( "/^index\\./", $filename ) )
					{
					}
					else if ( preg_match( "/\\.html\$/", $filename ) )
					{
						$name = preg_replace( "/\\.html\$/", "", $filename );
						if ( $FHD = fopen( $templates_dir."/".$filename, "r" ) )
						{
							$text = fread( $FHD, filesize( $templates_dir."/".$filename ) );
							fclose( $FHD );
						}
						else
						{
							$errors[] = "无法打开 {$filename}, 忽略文件 ...";
							continue;
						}
						$need = count( $skin[$name] );
						$start = 0;
						$end = 0;
						if ( $need < 1 )
						{
							$errors[] = "读取数据是出现错误 {$filename}, 忽略文件 ...";
						}
						else
						{
							foreach ( $skin[$name] as $func_name => $data )
							{
								if ( preg_match( "/<!--\\|IBF\\|{$func_name}\\|START\\|-->/", $text ) )
								{
									++$start;
								}
								if ( preg_match( "/<!--\\|IBF\\|{$func_name}\\|END\\|-->/", $text ) )
								{
									++$end;
								}
							}
							if ( $start != $end )
							{
								$errors[] = "某些模板文件开始和结束标签可能丢失了 {$filename}, 忽略文件 ...";
							}
							else if ( $start != $need )
							{
								$errors[] = "某些模板文件内容可能丢失了 {$filename}, 忽略文件 ...";
							}
							else
							{
								$text = $this->unconvert_tags( $text );
								$final = "<?php\n\n"."class {$name} {\n\n";
								foreach ( $skin[$name] as $func_name => $data )
								{
									$top = "\n\nfunction {$func_name}({$data}) {\n"."global \$ibforums;\n"."return <<<EOF\n";
									$bum = "\nEOF;\n}\n";
									$text = preg_replace( "/\\s*<!--\\|IBF\\|{$func_name}\\|START\\|-->\\s*\n/", "{$top}", $text );
									$text = preg_replace( "/\\s*<!--\\|IBF\\|{$func_name}\\|END\\|-->\\s*\n/", "{$bum}", $text );
								}
								$end = "\n\n}\n?>";
								$final .= $text.$end;
								if ( $fh = fopen( $skins_dir."/".$name.".php", "w" ) )
								{
									fwrite( $fh, $final, strlen( $final ) );
									fclose( $fh );
									@chmod( $skins_dir."/".$name.".php", 511 );
								}
								else
								{
									$errors[] = "无法写入目录 '{$phpskin}',请检查目录属性(CHMOD 777)。";
								}
								$end = "";
								$final = "";
								$top = "";
							}
						}
					}
				}
			}
			closedir( $handle );
		}
		else
		{
			$errors[] = "无法打开论坛模板文件目录!";
		}
		return $errors;
	}

	function import_error( $error, $next_id )
	{
		global $IN;
		global $INFO;
		global $DB;
		global $SKIN;
		global $ADMIN;
		global $std;
		global $MEMBER;
		global $GROUP;
		$DB->query( "DELETE FROM ibf_macro_name WHERE set_id='{$next_id['macro']}'" );
		$DB->query( "DELETE FROM ibf_macro WHERE macro_id='{$next_id['macro']}'" );
		$DB->query( "DELETE FROM ibf_tmpl_names WHERE skid='{$next_id['templates']}'" );
		$DB->query( "DELETE FROM ibf_css WHERE cssid='{$next_id['css']}'" );
		$DB->query( "DELETE FROM ibf_templates WHERE tmid='{$next_id['wrap']}'" );
		$DB->query( "DELETE FROM ibf_skin_templates WHERE set_id='{$next_id['templates']}'" );
		@rmdir( $INFO['base_dir']."/style_images/".$next_id['images'] );
		@rmdir( $INFO['base_dir']."/Skin/s".$next_id['templates'] );
		$ADMIN->rm_dir( $this->work_path."/".$this->new_dir );
		$ADMIN->error( $error );
	}

}

ad_langs( );
$idx = new ad_langs( );
?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -