📄 ad_stylesets.php
字号:
<?php
class ad_settings
{
var $base_url;
function ad_settings( )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
global $ADMIN;
global $std;
global $MEMBER;
global $GROUP;
$tmp_in = array_merge( $_GET, $_POST, $_COOKIE );
foreach ( $tmp_in as $k => $v )
{
}
switch ( $IN['code'] )
{
case "wrapper" :
$this->list_wrappers( );
break;
case "add" :
$this->do_form( "add" );
break;
case "edit" :
$this->do_form( "edit" );
break;
case "doadd" :
$this->save_skin( "add" );
break;
case "doedit" :
$this->save_skin( "edit" );
break;
case "remove" :
$this->remove( );
break;
case "memskins" :
$this->mem_skins( );
break;
case "export" :
$this->export( );
break;
default :
$this->list_sets( );
break;
}
}
function export( )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
global $ADMIN;
global $std;
global $MEMBER;
global $GROUP;
if ( $IN['id'] == "" )
{
$ADMIN->error( "你必须指定一个存在的主题界面文件ID,请返回后重试!" );
}
$DB->query( "SELECT * from ibf_skins WHERE uid='".$IN['id']."'" );
if ( !( $row = $DB->fetch_row( ) ) )
{
$ADMIN->error( "无法在数据库中找到相关数据" );
}
$DB->query( "SELECT * from ibf_macro_name WHERE set_id='".$row['macro_id']."'" );
if ( !( $macro_name = $DB->fetch_row( ) ) )
{
$ADMIN->error( "无法在数据库中找到相关数据" );
}
$DB->query( "SELECT * from ibf_css WHERE cssid='".$row['css_id']."'" );
if ( !( $css = $DB->fetch_row( ) ) )
{
$ADMIN->error( "无法在数据库中找到相关数据" );
}
$DB->query( "SELECT * from ibf_tmpl_names WHERE skid='".$row['set_id']."'" );
if ( !( $tmpl = $DB->fetch_row( ) ) )
{
$ADMIN->error( "无法在数据库中找到相关数据" );
}
$DB->query( "SELECT * from ibf_templates WHERE tmid='".$row['tmpl_id']."'" );
if ( !( $wrap = $DB->fetch_row( ) ) )
{
$ADMIN->error( "无法在数据库中找到相关数据" );
}
if ( $INFO['base_dir'] == "./" )
{
$INFO['base_dir'] = str_replace( "\\", "/", getcwd( ) )."/";
}
$archive_dir = $INFO['base_dir']."archive_out";
$images_dir = $INFO['base_dir']."style_images/".$row['img_dir'];
require( ROOT_PATH."sources/lib/tar.php" );
if ( !is_dir( $archive_dir ) )
{
$ADMIN->error( "无法找到目录 {$archive_dir}, 请检查目录是否存在?" );
}
if ( !is_writeable( $archive_dir ) )
{
$ADMIN->error( "无法写入 {$archive_dir}, 请检查目录属性(CHMOD 777)。" );
}
if ( !is_dir( $images_dir ) )
{
$ADMIN->error( "无法找到目录 {$images_dir}, 请检查目录是否存在?" );
}
$css_name = "stylesheet.css";
$wrap_name = "wrapper.html";
$macro_name = "macro.txt";
$template_name = "templates.html";
$img_dir = "images";
$pack_name = preg_replace( "/\\s{1,}/", "_", $row['sname'] );
$new_dir = "set-".$pack_name;
if ( !mkdir( $archive_dir."/".$new_dir, 511 ) )
{
$ADMIN->error( "目录建立失败,无法导出主题界面文件,请检查文件目录属性 'archive_out'" );
}
if ( !mkdir( $archive_dir."/".$new_dir."/".$img_dir, 511 ) )
{
$ADMIN->error( "目录建立失败,无法导出主题界面文件,请检查文件目录属性 'archive_out'" );
}
$wrap['template'] = preg_replace( "/\r/", "\n", $wrap['template'] );
$FH = fopen( $archive_dir."/".$new_dir."/".$wrap_name, "w" );
fwrite( $FH, $wrap['template'], strlen( $wrap['template'] ) );
fclose( $FH );
@chmod( $archive_dir."/".$new_dir."/".$wrap_name, 511 );
$FH = fopen( $archive_dir."/".$new_dir."/".$css_name, "w" );
fwrite( $FH, $css['css_text'], strlen( $css['css_text'] ) );
fclose( $FH );
@chmod( $archive_dir."/".$new_dir."/".$css_name, 511 );
if ( !$ADMIN->copy_dir( $images_dir, $archive_dir."/".$new_dir."/".$img_dir ) )
{
$ADMIN->error( $ADMIN->errors );
}
$file_content = "";
$DB->query( "SELECT macro_replace, macro_value FROM ibf_macro WHERE macro_set='".$row['macro_id']."'" );
while ( $mrow = $DB->fetch_row( ) )
{
if ( $mrow['macro_replace'] == "" )
{
$mrow['macro_replace'] = "*UNASSIGNED*";
}
$file_content .= $mrow['macro_value']."~=~".$mrow['macro_replace']."\n";
}
$FH = fopen( $archive_dir."/".$new_dir."/".$macro_name, "w" );
fwrite( $FH, $file_content, strlen( $file_content ) );
fclose( $FH );
@chmod( $archive_dir."/".$new_dir."/".$macro_name, 511 );
$output = "";
$groups = $DB->query( "SELECT DISTINCT(group_name) FROM ibf_skin_templates WHERE set_id='".$row['set_id']."'" );
if ( !$DB->get_num_rows( $groups ) )
{
$ADMIN->rm_dir( $archive_dir );
$ADMIN->error( "导出失败:无法在数据库中找到相关数据。" );
}
$output .= "<!--TEMPLATE_SET|internal,internal,internal,internal-->\n\n";
while ( $trow = $DB->fetch_row( $groups ) )
{
$aq = $DB->query( "SELECT * FROM ibf_skin_templates WHERE set_id='".$row['set_id']."' AND group_name='".$trow['group_name']."'" );
if ( !$DB->get_num_rows( $aq ) )
{
$ADMIN->rm_dir( $archive_dir );
$ADMIN->error( "无法在数据库中找到相关数据。" );
}
$output .= "<!-- PLEASE LEAVE ALL 'IBF' COMMENTS IN PLACE, DO NOT REMOVE THEM! -->\n<!--IBF_GROUP_START:{$trow['group_name']}-->\n\n";
while ( $next_row = $DB->fetch_row( $aq ) )
{
$text = $this->convert_tags( $next_row['section_content'] );
$text = str_replace( "\r\n", "\n", $text );
$text = str_replace( "\n\n", "\n", $text );
$output .= "<!--IBF_START_FUNC|{$next_row['func_name']}|{$next_row['func_data']}-->\n\n";
$output .= $text."\n";
$output .= "<!--IBF_END_FUNC|{$next_row['func_name']}-->\n\n";
}
$output .= "\n<!--IBF_GROUP_END:{$trow['group_name']}-->\n";
}
$FH = fopen( $archive_dir."/".$new_dir."/".$template_name, "w" );
fwrite( $FH, $output, strlen( $output ) );
fclose( $FH );
@chmod( $archive_dir."/".$new_dir."/".$template_name, 511 );
$file_content = "<?php\n\n\$config=array('author' => \"".addslashes( $tmpl['author'] )."\", "."'email'=>\"".addslashes( $tmpl['email'] )."\", "."'url'=>\"".addslashes( $tmpl['url'] )."\")\n\n?".">";
$FH = fopen( $archive_dir."/".$new_dir."/"."templates_conf.inc", "w" );
fwrite( $FH, $file_content, strlen( $file_content ) );
fclose( $FH );
@chmod( $archive_dir."/".$new_dir."/"."templates_conf.inc", 511 );
$tar = new tar( );
$tar->new_tar( $archive_dir, $new_dir.".tar" );
$tar->add_directory( $archive_dir."/".$new_dir );
$tar->write_tar( );
if ( $tar->error != "" )
{
$ADMIN->rm_dir( $archive_dir );
$ADMIN->error( $tar->error );
}
$ADMIN->rm_dir( $archive_dir."/".$new_dir );
$ADMIN->done_screen( "主题界面已经导出<br><br>你现在可以[<a href='archive_out/{$new_dir}.tar' target='_blank'>按此下载</a>] tar 文件。", "主题界面管理", "act=sets" );
}
function convert_tags( $t = "" )
{
if ( $t == "" )
{
return "";
}
$t = preg_replace( "/{?\\\$ibforums->base_url}?/", "{ibf.script_url}", $t );
$t = preg_replace( "/{?\\\$ibforums->session_id}?/", "{ibf.session_id}", $t );
$t = preg_replace( "/{?\\\$ibforums->skin\\['?(\\w+)'?\\]}?/", "{ibf.skin.\\1}", $t );
$t = preg_replace( "/{?\\\$ibforums->lang\\['?(\\w+)'?\\]}?/", "{ibf.lang.\\1}", $t );
$t = preg_replace( "/{?\\\$ibforums->vars\\['?(\\w+)'?\\]}?/", "{ibf.vars.\\1}", $t );
$t = preg_replace( "/{?\\\$ibforums->member\\['?(\\w+)'?\\]}?/", "{ibf.member.\\1}", $t );
return $t;
}
function mem_skins( )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
global $ADMIN;
global $std;
global $MEMBER;
global $GROUP;
global $HTTP_POST_VARS;
$DB->query( "SELECT sid FROM ibf_skins WHERE uid='".$IN['oid']."'" );
$old = $DB->fetch_row( );
if ( $IN['nid'] == "n" )
{
$DB->query( "UPDATE ibf_members SET skin=NULL WHERE skin='".$old['sid']."'" );
}
else
{
$DB->query( "SELECT sid FROM ibf_skins WHERE uid='".$IN['nid']."'" );
$new = $DB->fetch_row( );
$DB->query( "UPDATE ibf_members SET skin='".$new['sid']."' WHERE skin='".$old['sid']."'" );
}
$ADMIN->done_screen( "用户主题界面已经更新", "主题界面管理", "act=sets" );
}
function remove( )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
global $ADMIN;
global $std;
global $MEMBER;
global $GROUP;
global $HTTP_POST_VARS;
if ( $IN['id'] == "" )
{
$ADMIN->error( "你必须指定一个存在的主题界面文件ID,请返回后重试!" );
}
$DB->query( "SELECT * FROM ibf_skins WHERE uid='".$IN['id']."'" );
if ( !( $skin = $DB->fetch_row( ) ) )
{
$ADMIN->error( "无法在数据库中找到相关主题界面信息" );
}
if ( $skin['default_set'] == 1 )
{
$ADMIN->error( "你可以删除这个默认的主题界面文件,并且设置其它的主题界面文件为默认主题界面。" );
}
$DB->query( "UPDATE ibf_members SET skin='' WHERE skin='".$skin['sid']."'" );
$DB->query( "SELECT id FROM ibf_forums WHERE skin_id='".$skin['sid']."'" );
if ( $DB->get_num_rows( ) )
{
$arr = array( );
while ( $i = $DB->fetch_row( ) )
{
$arr["forum_skin_".$i['id']] = "";
}
$DB->query( "UPDATE ibf_forums SET skin_id='' WHERE skin_id='".$skin['sid']."'" );
$ADMIN->rebuild_config( $arr );
}
$DB->query( "DELETE FROM ibf_skins WHERE uid='".$IN['id']."'" );
$std->boink_it( $SKIN->base_url."&act=sets" );
exit( );
}
function save_skin( $type = "add" )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
global $ADMIN;
global $std;
global $MEMBER;
global $GROUP;
global $HTTP_POST_VARS;
if ( $type == "edit" && $IN['id'] == "" )
{
$ADMIN->error( "你必须指定一个存在的主题界面文件ID,请返回后重试!" );
}
if ( $IN['sname'] == "" )
{
$ADMIN->error( "你必须为这个主题界面ID指定名称" );
}
$barney = array(
"sname" => stripslashes( $HTTP_POST_VARS['sname'] ),
"set_id" => $IN['template'],
"tmpl_id" => $IN['wrapper'],
"img_dir" => $IN['img_dir'],
"css_id" => $IN['css'],
"hidden" => $IN['hidden'],
"default_set" => $IN['default_set'],
"macro_id" => $IN['macro_id']
);
if ( $type == "add" )
{
$DB->query( "SELECT MAX(sid) as new_id FROM ibf_skins" );
$row = $DB->fetch_row( );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -