1924 lines
64 KiB
PHP
1924 lines
64 KiB
PHP
<?php
|
|
|
|
/*
|
|
+--------------------------------------------------------------------------
|
|
| Invision Power Board
|
|
| =============================================
|
|
| by Matthew Mecham
|
|
| (c) 2001 - 2006 Invision Power Services, Inc.
|
|
| http://www.invisionpower.com
|
|
| =============================================
|
|
| Web: http://www.invisionboard.com
|
|
| Licence Info: http://www.invisionboard.com/?license
|
|
+---------------------------------------------------------------------------
|
|
| > $Date: 2008-03-28 18:08:02 -0400 (Fri, 28 Mar 2008) $
|
|
| > $Revision: 1232 $
|
|
| > $Author: bfarber $
|
|
+---------------------------------------------------------------------------
|
|
|
|
|
| > Help Control functions
|
|
| > Module written by Matt Mecham
|
|
| > Date started: 2nd April 2002
|
|
|
|
|
| > Module Version Number: 1.0.0
|
|
| > DBA Checked: Tue 25th May 2004
|
|
+--------------------------------------------------------------------------
|
|
*/
|
|
|
|
if ( ! defined( 'IN_ACP' ) )
|
|
{
|
|
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'.";
|
|
exit();
|
|
}
|
|
|
|
|
|
class ad_skin_sets
|
|
{
|
|
var $ipsclass;
|
|
var $html;
|
|
var $master_set = 1;
|
|
|
|
/**
|
|
* Section title name
|
|
*
|
|
* @var string
|
|
*/
|
|
var $perm_main = "lookandfeel";
|
|
|
|
/**
|
|
* Section title name
|
|
*
|
|
* @var string
|
|
*/
|
|
var $perm_child = "sets";
|
|
|
|
function auto_run()
|
|
{
|
|
$this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Skin Manager Home' );
|
|
|
|
//-----------------------------------------
|
|
// LOAD HTML
|
|
//-----------------------------------------
|
|
|
|
$this->html = $this->ipsclass->acp_load_template('cp_skin_lookandfeel');
|
|
|
|
//-----------------------------------------
|
|
// What to do?
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->input['code'] = isset($this->ipsclass->input['code']) ? $this->ipsclass->input['code'] : NULL;
|
|
|
|
switch($this->ipsclass->input['code'])
|
|
{
|
|
case 'addset':
|
|
$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':add' );
|
|
$this->add_set();
|
|
break;
|
|
|
|
case 'edit':
|
|
$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':edit' );
|
|
$this->do_form('edit');
|
|
break;
|
|
|
|
case 'doedit':
|
|
$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':edit' );
|
|
$this->save_skin('edit');
|
|
break;
|
|
|
|
case 'remove':
|
|
$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':remove' );
|
|
$this->remove_splash();
|
|
break;
|
|
|
|
case 'doremove':
|
|
$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':remove' );
|
|
$this->do_remove();
|
|
break;
|
|
|
|
//-----------------------------------------
|
|
|
|
case 'revertallform':
|
|
$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':edit' );
|
|
$this->revert_all_form();
|
|
break;
|
|
|
|
case 'dorevert':
|
|
$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':edit' );
|
|
$this->do_revert_all();
|
|
break;
|
|
|
|
case 'toggledefault':
|
|
$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':edit' );
|
|
$this->set_toggle_default();
|
|
break;
|
|
|
|
case 'togglevisible':
|
|
$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':edit' );
|
|
$this->set_toggle_visible();
|
|
break;
|
|
|
|
//-----------------------------------------
|
|
// Export master
|
|
//-----------------------------------------
|
|
|
|
case 'exportmaster':
|
|
$this->export_master();
|
|
break;
|
|
|
|
case 'exportmacro':
|
|
$this->export_macro();
|
|
break;
|
|
|
|
//-----------------------------------------
|
|
// Rebuild all
|
|
//-----------------------------------------
|
|
|
|
case 'rebuildalltemplates':
|
|
$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':rebuild' );
|
|
$this->rebuild_all_templates();
|
|
break;
|
|
|
|
//-----------------------------------------
|
|
// Export bits
|
|
//-----------------------------------------
|
|
|
|
case 'exportbitschoose':
|
|
$this->export_bits_choose();
|
|
break;
|
|
|
|
case 'exportbitscomplete':
|
|
$this->export_bits_complete();
|
|
break;
|
|
|
|
case 'master_xml_export':
|
|
$this->master_xml_export();
|
|
break;
|
|
|
|
case 'MOD_mod_xml':
|
|
$this->generate_mod_xml();
|
|
break;
|
|
|
|
default:
|
|
$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':' );
|
|
$this->list_sets();
|
|
break;
|
|
}
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// Export Master XML
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function master_xml_export()
|
|
{
|
|
//-----------------------------------------
|
|
// INIT
|
|
//-----------------------------------------
|
|
|
|
$entry = array();
|
|
|
|
//-----------------------------------------
|
|
// Get XML class
|
|
//-----------------------------------------
|
|
|
|
require_once( KERNEL_PATH.'class_xml.php' );
|
|
|
|
$xml = new class_xml();
|
|
|
|
$xml->doc_type = $this->ipsclass->vars['gb_char_set'];
|
|
|
|
$xml->xml_set_root( 'export', array( 'exported' => time() ) );
|
|
|
|
//-----------------------------------------
|
|
// Set group
|
|
//-----------------------------------------
|
|
|
|
$xml->xml_add_group( 'group' );
|
|
|
|
//-----------------------------------------
|
|
// Get templates...
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->DB->simple_construct( array( 'select' => '*',
|
|
'from' => 'skin_sets',
|
|
'where' => "set_skin_set_id IN (1,2)" ) );
|
|
|
|
$this->ipsclass->DB->simple_exec();
|
|
|
|
while ( $r = $this->ipsclass->DB->fetch_row() )
|
|
{
|
|
//-----------------------------------------
|
|
// Set up
|
|
//-----------------------------------------
|
|
|
|
if ( $r['set_skin_set_id'] == 2 )
|
|
{
|
|
$r['set_css'] = '';
|
|
$r['set_cache_macro'] = '';
|
|
$r['set_wrapper'] = '';
|
|
$r['set_css_updated'] = 0;
|
|
$r['set_cache_css'] = '';
|
|
$r['set_cache_wrapper'] = '';
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Fix up CSS
|
|
//-----------------------------------------
|
|
|
|
if ( $r['set_css'] )
|
|
{
|
|
$r['set_css'] = preg_replace( "#url\((style_images/)?\d+?/#i", "url(style_images/<#IMG_DIR#>/", $r['set_css'] );
|
|
}
|
|
|
|
$content = array();
|
|
|
|
//-----------------------------------------
|
|
// Sort the fields...
|
|
//-----------------------------------------
|
|
|
|
foreach( $r as $k => $v )
|
|
{
|
|
$content[] = $xml->xml_build_simple_tag( $k, $v );
|
|
}
|
|
|
|
$entry[] = $xml->xml_build_entry( 'row', $content );
|
|
}
|
|
|
|
$xml->xml_add_entry_to_group( 'group', $entry );
|
|
|
|
$xml->xml_format_document();
|
|
|
|
$doc = $xml->xml_document;
|
|
|
|
//-----------------------------------------
|
|
// Print to browser
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->admin->show_download( $doc, 'skinsets.xml', '', 0 );
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// EXPORT SOME TEMPLATE BITS TO SQL FILE (COMPLETE)
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function export_bits_complete()
|
|
{
|
|
$ids = array();
|
|
|
|
//-----------------------------------------
|
|
// get ids...
|
|
//-----------------------------------------
|
|
|
|
foreach ($this->ipsclass->input as $key => $value)
|
|
{
|
|
if ( preg_match( "/^id_(\d+)$/", $key, $match ) )
|
|
{
|
|
if ($this->ipsclass->input[$match[0]])
|
|
{
|
|
$ids[] = $match[1];
|
|
}
|
|
}
|
|
}
|
|
|
|
$ids = $this->ipsclass->clean_int_array( $ids );
|
|
|
|
//-----------------------------------------
|
|
// Got any?
|
|
//-----------------------------------------
|
|
|
|
if ( ! count( $ids ) )
|
|
{
|
|
$this->ipsclass->main_msg = "You must select SOME template bits to export!";
|
|
$this->export_bits_choose();
|
|
}
|
|
|
|
$final_sql = "";
|
|
|
|
$this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'skin_templates', 'where' => 'suid IN ('.implode(",",$ids).')' ) );
|
|
$this->ipsclass->DB->simple_exec();
|
|
|
|
while( $r = $this->ipsclass->DB->fetch_row() )
|
|
{
|
|
$content = preg_replace( "/'/", "\\'", $this->ipsclass->txt_safeslashes( $r['section_content'] ) );
|
|
$datavar = preg_replace( "/'/", "\\'", $this->ipsclass->txt_safeslashes( $r['func_data'] ) );
|
|
|
|
$content = str_replace( "\n", '\n', $content );
|
|
|
|
$final_sql .= "REPLACE INTO ibf_skin_templates SET set_id=1, group_names_secondary='". $r['group_names_secondary']. "', group_name='{$r['group_name']}', func_name='{$r['func_name']}', section_content='$content', func_data='$datavar';\n";
|
|
}
|
|
|
|
//@header("Content-type: text/plain");
|
|
//print $final_sql;
|
|
//exit();
|
|
|
|
//-----------------------------------------
|
|
// Print to browser
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->admin->show_download( $final_sql, 'templates_update.sql', '', 0 );
|
|
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// EXPORT SOME TEMPLATE BITS TO SQL FILE
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function export_bits_choose()
|
|
{
|
|
$all_templates = array();
|
|
|
|
$this->ipsclass->DB->simple_construct( array( 'select' => 'group_name,set_id,suid,func_name, group_names_secondary', 'from' => 'skin_templates', 'where' => 'set_id=1' ) );
|
|
$this->ipsclass->DB->simple_exec();
|
|
|
|
while ( $r = $this->ipsclass->DB->fetch_row() )
|
|
{
|
|
$all_templates[ $r['group_name'] ][] = $r;
|
|
}
|
|
|
|
ksort( $all_templates );
|
|
|
|
//-----------------------------------------
|
|
// Start output
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->admin->page_title = "Export Selected Template bits";
|
|
$this->ipsclass->admin->page_detail = "Check the box of the bit you wish to export.";
|
|
|
|
//-----------------------------------------
|
|
// start form
|
|
//-----------------------------------------
|
|
|
|
$per_row = 3;
|
|
$td_width = 100 / $per_row;
|
|
$count = 0;
|
|
$output = "";//"<tr align='center'>\n";
|
|
|
|
$this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'exportbitscomplete' ),
|
|
2 => array( 'act' , 'sets' ),
|
|
4 => array( 'section', $this->ipsclass->section_code ),
|
|
) );
|
|
|
|
$this->ipsclass->html .= "<div class='tableborder'>
|
|
<div class='tableheaderalt'>Template Bits</div>
|
|
";
|
|
|
|
foreach( $all_templates as $group_name => $data )
|
|
{
|
|
//-----------------------------------------
|
|
// Start secondary table
|
|
//-----------------------------------------
|
|
|
|
$count = 0;
|
|
|
|
$output .= "<div class='tableborder'>
|
|
<div class='tablesubheader'>$group_name</div>
|
|
<table width='100%' cellspacing='1' cellpadding='4' border='0'>
|
|
<tr>";
|
|
|
|
foreach( $all_templates[ $group_name ] as $r )
|
|
{
|
|
$count++;
|
|
|
|
$class = $count == 2 ? 'tablerow2' : 'tablerow1';
|
|
|
|
$output .= "<td width='{$td_width}%' align='left' class='$class'>
|
|
<input type='checkbox' style='checkbox' value='1' name='id_{$r['suid']}' /> <strong>{$r['func_name']}</strong>
|
|
</td>";
|
|
|
|
if ($count == $per_row )
|
|
{
|
|
$output .= "</tr>\n\n<tr align='center'>";
|
|
$count = 0;
|
|
}
|
|
}
|
|
|
|
if ( $count > 0 and $count != $per_row )
|
|
{
|
|
for ($i = $count ; $i < $per_row ; ++$i)
|
|
{
|
|
$output .= "<td class='tablerow2'> </td>\n";
|
|
}
|
|
|
|
$output .= "</tr>";
|
|
}
|
|
|
|
$output .= "</tr>\n</table></div>";
|
|
}
|
|
|
|
$this->ipsclass->html .= $output;
|
|
|
|
$this->ipsclass->html .= "<div class='tablesubheader' align='center'><input type='submit' class='realbutton' value='EXPORT SELECTED' /></form></div></div>";
|
|
|
|
$this->ipsclass->admin->output();
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// REBUILD TEMPLATES
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function rebuild_all_templates()
|
|
{
|
|
if ( $this->ipsclass->input['removewarning'] == 1 )
|
|
{
|
|
$this->ipsclass->update_cache( array( 'value' => '', 'name' => 'skinpanic', 'donow' => 1, 'deletefirst' => 1, 'array' => 0 ) );
|
|
}
|
|
|
|
$justdone = intval($this->ipsclass->input['justdone']);
|
|
$justdone = $justdone ? $justdone : 1;
|
|
|
|
//-----------------------------------------
|
|
// Get skins
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->DB->simple_construct( array( 'select' => '*',
|
|
'from' => 'skin_sets',
|
|
'where' => 'set_skin_set_id > '.$justdone,
|
|
'order' => 'set_skin_set_id',
|
|
'limit' => array( 0, 1 )
|
|
) );
|
|
|
|
$this->ipsclass->DB->simple_exec();
|
|
|
|
//-----------------------------------------
|
|
// Got a biggun?
|
|
//-----------------------------------------
|
|
|
|
$r = $this->ipsclass->DB->fetch_row();
|
|
|
|
if ( $r['set_skin_set_id'] )
|
|
{
|
|
$this->ipsclass->cache_func->_rebuild_all_caches( array($r['set_skin_set_id']) );
|
|
|
|
$this->ipsclass->admin->redirect( "{$this->ipsclass->base_url}&{$this->ipsclass->form_code}&code=rebuildalltemplates&justdone={$r['set_skin_set_id']}", "Rebuilt cache for skin set {$r['set_name']}<br />Proceeding to the next skin..." );
|
|
}
|
|
else
|
|
{
|
|
$this->ipsclass->main_msg = "All skin templates recached!";
|
|
$this->list_sets();
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Export master skin set.
|
|
//-----------------------------------------
|
|
|
|
function export_master()
|
|
{
|
|
//-----------------------------------------
|
|
// Get xml mah-do-dah
|
|
//-----------------------------------------
|
|
|
|
require_once( KERNEL_PATH.'class_xml.php' );
|
|
|
|
$xml = new class_xml();
|
|
|
|
//-----------------------------------------
|
|
// Start...
|
|
//-----------------------------------------
|
|
|
|
$xml->xml_set_root( 'templateexport', array( 'exported' => time(), 'versionid' => '20000', 'type' => 'master' ) );
|
|
|
|
//-----------------------------------------
|
|
// Get emo group
|
|
//-----------------------------------------
|
|
|
|
$xml->xml_add_group( 'templategroup' );
|
|
|
|
$this->ipsclass->DB->simple_construct( array( 'select' => 'group_name, section_content, func_name, func_data, group_names_secondary', 'from' => 'skin_templates', 'where' => 'set_id=1' ) );
|
|
$this->ipsclass->DB->simple_exec();
|
|
|
|
while ( $r = $this->ipsclass->DB->fetch_row() )
|
|
{
|
|
$content = array();
|
|
|
|
foreach ( $r as $k => $v )
|
|
{
|
|
$content[] = $xml->xml_build_simple_tag( $k, $v );
|
|
}
|
|
|
|
$entry[] = $xml->xml_build_entry( 'template', $content );
|
|
}
|
|
|
|
$xml->xml_add_entry_to_group( 'templategroup', $entry );
|
|
|
|
$xml->xml_format_document();
|
|
|
|
//-----------------------------------------
|
|
// Send to browser.
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->admin->show_download( $xml->xml_document, 'ipb_templates.xml', '', 0 );
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Export master macros
|
|
//-----------------------------------------
|
|
|
|
function export_macro()
|
|
{
|
|
//-----------------------------------------
|
|
// Get xml mah-do-dah
|
|
//-----------------------------------------
|
|
|
|
require_once( KERNEL_PATH.'class_xml.php' );
|
|
|
|
$xml = new class_xml();
|
|
|
|
//-----------------------------------------
|
|
// Start...
|
|
//-----------------------------------------
|
|
|
|
$xml->xml_set_root( 'macroexport', array( 'exported' => time() ) );
|
|
|
|
//-----------------------------------------
|
|
// Get emo group
|
|
//-----------------------------------------
|
|
|
|
$xml->xml_add_group( 'macrogroup' );
|
|
|
|
$this->ipsclass->DB->simple_construct( array( 'select' => 'macro_value,macro_replace', 'from' => 'skin_macro', 'where' => 'macro_set=1' ) );
|
|
$this->ipsclass->DB->simple_exec();
|
|
|
|
while ( $r = $this->ipsclass->DB->fetch_row() )
|
|
{
|
|
$content = array();
|
|
|
|
foreach ( $r as $k => $v )
|
|
{
|
|
$content[] = $xml->xml_build_simple_tag( $k, $v );
|
|
}
|
|
|
|
$entry[$r['macro_value']] = $xml->xml_build_entry( 'macro', $content );
|
|
}
|
|
|
|
$xml->xml_add_entry_to_group( 'macrogroup', $entry );
|
|
|
|
$xml->xml_format_document();
|
|
|
|
//-----------------------------------------
|
|
// Send to browser.
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->admin->show_download( $xml->xml_document, 'macro.xml', '', 0 );
|
|
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// ADD SET
|
|
//-----------------------------------------
|
|
|
|
function add_set()
|
|
{
|
|
//-----------------------------------------
|
|
// Check for input
|
|
//-----------------------------------------
|
|
|
|
$new = array();
|
|
$message = array();
|
|
|
|
if ($this->ipsclass->input['id'] == "")
|
|
{
|
|
$this->ipsclass->admin->error("You must specify an existing skin set ID, go back and try again");
|
|
}
|
|
|
|
if ( $this->ipsclass->input['id'] == 1 )
|
|
{
|
|
$this->ipsclass->main_msg = "You cannot alter the master skin set";
|
|
$this->list_sets();
|
|
}
|
|
|
|
if ( ! $this->ipsclass->input['set_name'] )
|
|
{
|
|
$this->ipsclass->main_msg = "You must enter a skin set name.";
|
|
$this->list_sets();
|
|
}
|
|
|
|
if ( $this->ipsclass->input['id'] == -1 )
|
|
{
|
|
//-----------------------------------------
|
|
// No parent...
|
|
//-----------------------------------------
|
|
|
|
$new['set_skin_set_parent'] = -1;
|
|
$get_from_db = 1;
|
|
}
|
|
else
|
|
{
|
|
$new['set_skin_set_parent'] = $this->ipsclass->input['id'];
|
|
$get_from_db = intval($this->ipsclass->input['id']);
|
|
}
|
|
|
|
$this_set = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => 'set_skin_set_id='.$get_from_db ) );
|
|
|
|
$new['set_name'] = $this->ipsclass->input['set_name'];
|
|
$new['set_image_dir'] = $this_set['set_image_dir'];
|
|
$new['set_hidden'] = intval( $this->ipsclass->input['hidden'] );
|
|
$new['set_default'] = 0;
|
|
$new['set_css_method'] = $this_set['set_css_method'];
|
|
$new['set_cache_css'] = $this_set['set_cache_css'];
|
|
$new['set_cache_macro'] = $this_set['set_cache_macro'];
|
|
$new['set_cache_wrapper'] = $this_set['set_cache_wrapper'];
|
|
|
|
$this->ipsclass->DB->do_insert( 'skin_sets', $new );
|
|
|
|
$newid = $this->ipsclass->DB->get_insert_id();
|
|
|
|
//-----------------------------------------
|
|
// Rebuild caches
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->cache_func->_rebuild_all_caches( array( $newid ) );
|
|
|
|
$this->ipsclass->main_msg = '<b>Skin Set Added</b>';
|
|
|
|
$this->ipsclass->main_msg .= "<br />".implode("<br />", array_merge( $message, $this->ipsclass->cache_func->messages) );
|
|
$this->list_sets();
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Revert customizations > DO
|
|
//-----------------------------------------
|
|
|
|
function do_revert_all()
|
|
{
|
|
//-----------------------------------------
|
|
// Check for input
|
|
//-----------------------------------------
|
|
|
|
$message = array();
|
|
|
|
if ($this->ipsclass->input['id'] == "")
|
|
{
|
|
$this->ipsclass->admin->error("You must specify an existing skin set ID, go back and try again");
|
|
}
|
|
|
|
if ( $this->ipsclass->input['id'] == 1 )
|
|
{
|
|
$this->ipsclass->main_msg = "You cannot alter the master skin set";
|
|
$this->list_sets();
|
|
}
|
|
|
|
$id = intval($this->ipsclass->input['id']);
|
|
|
|
//-----------------------------------------
|
|
// Delete Templates?
|
|
//-----------------------------------------
|
|
|
|
if ( isset($this->ipsclass->input['html']) AND $this->ipsclass->input['html'] )
|
|
{
|
|
$this->ipsclass->DB->simple_exec_query( array( 'delete' => 'skin_templates', 'where' => 'set_id='.$id ) );
|
|
$message[] = 'Removed all custom HTML template bits...';
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Delete Macros?
|
|
//-----------------------------------------
|
|
|
|
if ( isset($this->ipsclass->input['macro']) AND $this->ipsclass->input['macro'] )
|
|
{
|
|
$this->ipsclass->DB->simple_exec_query( array( 'delete' => 'skin_macro', 'where' => 'macro_set='.$id ) );
|
|
$message[] = 'Removed all custom replacement macros...';
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Delete Wrapper
|
|
//-----------------------------------------
|
|
|
|
if ( isset($this->ipsclass->input['wrapper']) AND $this->ipsclass->input['wrapper'] )
|
|
{
|
|
$this->ipsclass->DB->simple_exec_query( array( 'update' => 'skin_sets', 'set' => "set_wrapper=''", 'where' => 'set_skin_set_id='.$id ) );
|
|
$message[] = 'Removed custom wrapper...';
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Delete Wrapper
|
|
//-----------------------------------------
|
|
|
|
if ( isset($this->ipsclass->input['css']) AND $this->ipsclass->input['css'] )
|
|
{
|
|
$this->ipsclass->DB->simple_exec_query( array( 'update' => 'skin_sets', 'set' => "set_css=''", 'where' => 'set_skin_set_id='.$id ) );
|
|
$message[] = 'Removed custom CSS...';
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Rebuild caches
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->cache_func->_rebuild_all_caches( array( $id ) );
|
|
|
|
$this->ipsclass->main_msg = 'Skin set customizations removed';
|
|
|
|
$this->ipsclass->main_msg .= "<br />".implode("<br />", array_merge( $message, $this->ipsclass->cache_func->messages) );
|
|
$this->list_sets();
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Revert customizations form
|
|
//-----------------------------------------
|
|
|
|
function revert_all_form()
|
|
{
|
|
$templates = 0;
|
|
$macros = 0;
|
|
$this->ipsclass->input['id'] = intval($this->ipsclass->input['id']);
|
|
|
|
//-----------------------------------------
|
|
// Check for input
|
|
//-----------------------------------------
|
|
|
|
if ($this->ipsclass->input['id'] == "")
|
|
{
|
|
$this->ipsclass->admin->error("You must specify an existing skin set ID, go back and try again");
|
|
}
|
|
|
|
if ( $this->ipsclass->input['id'] == 1 )
|
|
{
|
|
$this->ipsclass->main_msg = "You cannot alter the master skin set";
|
|
$this->list_sets();
|
|
}
|
|
|
|
$this->ipsclass->admin->page_detail = "<strong>Please note that this change cannot be undone!</strong>";
|
|
$this->ipsclass->admin->page_title = "Revert Skin Set Customizations";
|
|
|
|
//-----------------------------------------
|
|
// Get macro / template info
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->DB->simple_construct( array( 'select' => 'count(*) as aerosmith', 'from' => 'skin_templates', 'where' => "set_id={$this->ipsclass->input['id']}" ) );
|
|
$this->ipsclass->DB->simple_exec();
|
|
|
|
$r = $this->ipsclass->DB->fetch_row();
|
|
$templates = intval($r['aerosmith']);
|
|
|
|
$this->ipsclass->DB->simple_construct( array( 'select' => 'count(*) as aerosmith', 'from' => 'skin_macro', 'where' => "macro_set={$this->ipsclass->input['id']}" ) );
|
|
$this->ipsclass->DB->simple_exec();
|
|
|
|
$r = $this->ipsclass->DB->fetch_row();
|
|
$macros = intval($r['aerosmith']);
|
|
|
|
//-----------------------------------------
|
|
// Get the thingies
|
|
//-----------------------------------------
|
|
|
|
$this_set = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_skin_set_id=".$this->ipsclass->input['id'] ) );
|
|
|
|
//-----------------------------------------
|
|
// Start the form
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code', 'dorevert' ),
|
|
2 => array( 'act' , 'sets' ),
|
|
3 => array( 'id' , $this->ipsclass->input['id'] ),
|
|
4 => array( 'section', $this->ipsclass->section_code ),
|
|
), "theAdminForm" );
|
|
|
|
$none = "<em>No customizations to remove</em>";
|
|
|
|
$html = $templates ? $this->ipsclass->adskin->form_yes_no('html' , 0) : $none;
|
|
$macro = $macros ? $this->ipsclass->adskin->form_yes_no('macro' , 0) : $none;
|
|
$wrapper = $this_set['set_wrapper'] ? $this->ipsclass->adskin->form_yes_no('wrapper', 0) : $none;
|
|
$css = $this_set['set_css'] ? $this->ipsclass->adskin->form_yes_no('css' , 0) : $none;
|
|
|
|
//-----------------------------------------
|
|
// Start output
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->html .= "<div class='tableborder'>
|
|
<div class='tableheaderalt'>Reverting Customizations in set {$this_set['set_name']}</div>
|
|
<div class='tablepad'>
|
|
<fieldset class='tdfset'>
|
|
<legend><strong>Template HTML Customizations</strong></legend>
|
|
<table width='100%' cellpadding='5' cellspacing='0' border='0'>
|
|
<tr>
|
|
<td width='40%' class='tablerow1'>Revert all template bit HTML customizations?<br /><span style='color:gray'>You have {$templates} template customizations</span></td>
|
|
<td width='60%' class='tablerow1'>{$html}</td>
|
|
</tr>
|
|
</table>
|
|
</fieldset>
|
|
<br />
|
|
<fieldset class='tdfset'>
|
|
<legend><strong>Macro Replacement Customizations</strong></legend>
|
|
<table width='100%' cellpadding='5' cellspacing='0' border='0'>
|
|
<tr>
|
|
<td width='40%' class='tablerow1'>Revert all macro customizations?<br /><span style='color:gray'>You have {$macros} macro customizations</span></td>
|
|
<td width='60%' class='tablerow1'>{$macro}</td>
|
|
</tr>
|
|
</table>
|
|
</fieldset>
|
|
<br />
|
|
<fieldset class='tdfset'>
|
|
<legend><strong>Board Header and Footer Wrapper Customizations</strong></legend>
|
|
<table width='100%' cellpadding='5' cellspacing='0' border='0'>
|
|
<tr>
|
|
<td width='40%' class='tablerow1'>Revert Board Header and Footer Wrapper?</td>
|
|
<td width='60%' class='tablerow1'>{$wrapper}</td>
|
|
</tr>
|
|
</table>
|
|
</fieldset>
|
|
<br />
|
|
<fieldset class='tdfset'>
|
|
<legend><strong>Stylesheet (CSS) Customizations</strong></legend>
|
|
<table width='100%' cellpadding='5' cellspacing='0' border='0'>
|
|
<tr>
|
|
<td width='40%' class='tablerow1'>Revert CSS?</td>
|
|
<td width='60%' class='tablerow1'>{$css}</td>
|
|
</tr>
|
|
</table>
|
|
</fieldset>
|
|
<div style='color:red;text-align:center;font-size:11px;padding:6px'>Please note that all customizations will be lost if set to 'yes'<br /><b>This cannot be undone and there are no more confirmation screens</b></div>
|
|
</div>
|
|
</div>";
|
|
|
|
$this->ipsclass->html .= $this->ipsclass->adskin->end_form_standalone("Process");
|
|
|
|
//-----------------------------------------
|
|
// Output
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code ,'Skin Manager Home' );
|
|
$this->ipsclass->admin->nav[] = array( '' ,'Reverting all customizations in set '.$this_set['set_name'] );
|
|
|
|
$this->ipsclass->admin->output();
|
|
}
|
|
|
|
|
|
//-----------------------------------------
|
|
// REMOVE SKIN SET FORM
|
|
//-----------------------------------------
|
|
|
|
function remove_splash()
|
|
{
|
|
$this->ipsclass->admin->page_detail = "Please read this page carefully.";
|
|
$this->ipsclass->admin->page_title = "Removing Skin Set";
|
|
|
|
//-----------------------------------------
|
|
// Get this skin set...
|
|
//-----------------------------------------
|
|
|
|
$this_set = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => 'set_skin_set_id='.intval($this->ipsclass->input['id']) ) );
|
|
|
|
$this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code', 'doremove' ),
|
|
2 => array( 'act' , 'sets' ),
|
|
3 => array( 'id' , $this->ipsclass->input['id'] ),
|
|
4 => array( 'section', $this->ipsclass->section_code ),
|
|
) );
|
|
|
|
$this->ipsclass->adskin->td_header[] = array( " " , "100%" );
|
|
|
|
$this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Remove Skin Set {$this_set['set_name']}" );
|
|
|
|
$this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array(
|
|
"<div style='color:red;font-weight:bold;font-size:11px'>
|
|
PLEASE NOTE: This action cannot be undone</div><br />
|
|
Continuing will permanently remove any customizations to this skin set, including template HTML, CSS, Wrappers and custom macros.
|
|
<br /><br />
|
|
Any children of this skin set will be set as 'root' skins without a parent.
|
|
",
|
|
) );
|
|
|
|
$this->ipsclass->html .= $this->ipsclass->adskin->end_form("Permanently Remove Set {$this_set['set_name']}");
|
|
|
|
$this->ipsclass->html .= $this->ipsclass->adskin->end_table();
|
|
|
|
$this->ipsclass->admin->output();
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// TOGGLE DEFAULT SKIN
|
|
//-----------------------------------------
|
|
|
|
function set_toggle_default()
|
|
{
|
|
$affected_ids = array();
|
|
$children = array();
|
|
$message = array();
|
|
|
|
//-----------------------------------------
|
|
// Check for input
|
|
//-----------------------------------------
|
|
|
|
if ($this->ipsclass->input['id'] == "")
|
|
{
|
|
$this->ipsclass->admin->error("You must specify an existing skin set ID, go back and try again");
|
|
}
|
|
|
|
if ( $this->ipsclass->input['id'] == 1 )
|
|
{
|
|
$this->ipsclass->main_msg = 'You cannot alter the master skin set';
|
|
$this->list_sets();
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Set as default
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->DB->do_update( 'skin_sets', array( 'set_default' => 0 ), "" );
|
|
$this->ipsclass->DB->do_update( 'skin_sets', array( 'set_default' => 1, 'set_hidden' => 0 ), "set_skin_set_id =".intval($this->ipsclass->input['id']) );
|
|
|
|
//-----------------------------------------
|
|
// Rebuild caches and relationships?
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->cache_func->_rebuild_all_caches( array( $this->ipsclass->input['id'] ) );
|
|
|
|
$this->ipsclass->main_msg = 'Skin set to default';
|
|
$this->list_sets();
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// TOGGLE VISIBILITY
|
|
//-----------------------------------------
|
|
|
|
function set_toggle_visible()
|
|
{
|
|
$affected_ids = array();
|
|
$children = array();
|
|
$message = array();
|
|
|
|
//-----------------------------------------
|
|
// Check for input
|
|
//-----------------------------------------
|
|
|
|
if ($this->ipsclass->input['id'] == "")
|
|
{
|
|
$this->ipsclass->admin->error("You must specify an existing skin set ID, go back and try again");
|
|
}
|
|
|
|
if ( $this->ipsclass->input['id'] == 1 )
|
|
{
|
|
$this->ipsclass->main_msg = 'You cannot alter the master skin set';
|
|
$this->list_sets();
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Get current skin
|
|
//-----------------------------------------
|
|
|
|
$skin = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => 'set_skin_set_id='.intval($this->ipsclass->input['id']) ) );
|
|
|
|
$hidden = 1;
|
|
|
|
if ( $skin['set_hidden'] )
|
|
{
|
|
$hidden = 0;
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// We're not going to make all skins invisible?
|
|
//-----------------------------------------
|
|
|
|
if ( $hidden == 1 )
|
|
{
|
|
$count = $this->ipsclass->DB->build_and_exec_query( array( 'select' => 'COUNT(*) as count',
|
|
'from' => 'skin_sets',
|
|
'where' => 'set_hidden=0 AND set_skin_set_id NOT IN ( 1,'. intval($this->ipsclass->input['id']).')' ) );
|
|
|
|
if ( ! intval($count['count']) )
|
|
{
|
|
$this->ipsclass->main_msg = 'You cannot turn your last visible skin set invisible';
|
|
$this->list_sets();
|
|
return;
|
|
}
|
|
}
|
|
|
|
$this->ipsclass->DB->do_update( 'skin_sets', array( 'set_hidden' => $hidden ), 'set_skin_set_id='.intval($this->ipsclass->input['id']) );
|
|
|
|
//-----------------------------------------
|
|
// Rebuild caches and relationships?
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->cache_func->_rebuild_all_caches( array( $this->ipsclass->input['id'] ) );
|
|
|
|
$this->ipsclass->main_msg = 'Skin set visibility changed';
|
|
$this->list_sets();
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// DO REMOVE SKIN SET
|
|
//-----------------------------------------
|
|
|
|
function do_remove()
|
|
{
|
|
$affected_ids = array();
|
|
$children = array();
|
|
$message = array();
|
|
|
|
//-----------------------------------------
|
|
// Check for input
|
|
//-----------------------------------------
|
|
|
|
if ($this->ipsclass->input['id'] == "")
|
|
{
|
|
$this->ipsclass->admin->error("You must specify an existing skin set ID, go back and try again");
|
|
}
|
|
|
|
if ( $this->ipsclass->input['id'] == 1 )
|
|
{
|
|
$this->ipsclass->main_msg = 'You cannot alter the master skin set';
|
|
$this->list_sets();
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Get this skin set...
|
|
//-----------------------------------------
|
|
|
|
$this_set = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => 'set_skin_set_id='.intval($this->ipsclass->input['id']) ) );
|
|
|
|
//-----------------------------------------
|
|
// Can we remove?
|
|
//-----------------------------------------
|
|
|
|
if ( $this_set['set_default'] == 1 )
|
|
{
|
|
$this->ipsclass->main_msg = 'IPB cannot remove this skin as it is set as the default skin, please set another skin set to default and try again.';
|
|
$this->list_sets();
|
|
}
|
|
|
|
$this_count = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'count(*) as jazzyjeff', 'from' => 'skin_sets' ) );
|
|
|
|
if ( $this_count['jazzyjeff'] == 2 )
|
|
{
|
|
$this->ipsclass->main_msg = 'IPB cannot remove this skin as it is the last editable skin set you currently have.';
|
|
$this->list_sets();
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Get any children
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->DB->simple_construct( array( 'select' => 'set_skin_set_id, set_skin_set_parent', 'from' => 'skin_sets', 'where' => "set_skin_set_parent=".intval($this->ipsclass->input['id']) ) );
|
|
$this->ipsclass->DB->simple_exec();
|
|
|
|
while ( $r = $this->ipsclass->DB->fetch_row() )
|
|
{
|
|
$affected_ids[] = $r['set_skin_set_id'];
|
|
$children[] = $r['set_skin_set_id'];
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Update children to root
|
|
//-----------------------------------------
|
|
|
|
if ( count($children) )
|
|
{
|
|
$this->ipsclass->DB->do_update( 'skin_sets', array( 'set_skin_set_parent' => '-1' ), 'set_skin_set_id IN ('.implode(',',$children).')' );
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Members using this skin?
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->DB->do_update( 'members', array( 'skin' => 0 ), 'skin='.intval($this->ipsclass->input['id']) );
|
|
|
|
//-----------------------------------------
|
|
// Delete the skin...
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->DB->simple_exec_query( array( 'delete' => 'skin_sets', 'where' => 'set_skin_set_id='.intval($this->ipsclass->input['id']) ) );
|
|
|
|
//-----------------------------------------
|
|
// Remove macros...
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->DB->simple_exec_query( array( 'delete' => 'skin_macro', 'where' => 'macro_set='.intval($this->ipsclass->input['id']) ) );
|
|
|
|
//-----------------------------------------
|
|
// Remove templates...
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->DB->simple_exec_query( array( 'delete' => 'skin_templates', 'where' => 'set_id='.intval($this->ipsclass->input['id']) ) );
|
|
|
|
//-----------------------------------------
|
|
// Remove template cache...
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->DB->simple_exec_query( array( 'delete' => 'skin_templates_cache', 'where' => 'template_set_id='.intval($this->ipsclass->input['id']) ) );
|
|
|
|
//-----------------------------------------
|
|
// Remove CSS file...
|
|
//-----------------------------------------
|
|
|
|
@unlink( CACHE_PATH.'style_images/css_'.$this->ipsclass->input['id'].'.css' );
|
|
$message[] = 'Clean up: removing CSS cache file...';
|
|
|
|
//-----------------------------------------
|
|
// Remove CACHE folder
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->admin->rm_dir( CACHE_PATH.'cache/skin_cache/cacheid_'.$this->ipsclass->input['id'] );
|
|
$message[] = 'Clean up: removing HTML templates cache folder...';
|
|
|
|
//-----------------------------------------
|
|
// Rebuild caches and relationships?
|
|
//-----------------------------------------
|
|
|
|
if ( count($affected_ids) )
|
|
{
|
|
$this->ipsclass->cache_func->_rebuild_all_caches($affected_ids);
|
|
}
|
|
|
|
$this->ipsclass->cache_func->_rebuild_skin_id_cache();
|
|
|
|
$this->ipsclass->main_msg = 'Skin set removed';
|
|
|
|
$this->ipsclass->main_msg .= "<br />".implode("<br />", array_merge( $message, $this->ipsclass->cache_func->messages) );
|
|
$this->list_sets();
|
|
|
|
}
|
|
|
|
|
|
|
|
//-----------------------------------------
|
|
// ADD / EDIT SKIN SETS
|
|
//-----------------------------------------
|
|
|
|
function save_skin( $type='add' )
|
|
{
|
|
//-----------------------------------------
|
|
// Fix up incoming
|
|
//-----------------------------------------
|
|
|
|
//img / prt
|
|
|
|
if ($type == 'edit')
|
|
{
|
|
if ($this->ipsclass->input['id'] == "")
|
|
{
|
|
$this->ipsclass->admin->error("You must specify an existing skin set ID, go back and try again");
|
|
}
|
|
}
|
|
|
|
if ($this->ipsclass->input['set_name'] == "")
|
|
{
|
|
$this->ipsclass->admin->error("You must specify a name for this skin pack ID");
|
|
}
|
|
|
|
$this_set = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => 'set_skin_set_id = '.intval($this->ipsclass->input['id']) ) );
|
|
|
|
//-----------------------------------------
|
|
// Init var
|
|
//-----------------------------------------
|
|
|
|
$barney = array( 'set_name' => $this->ipsclass->txt_stripslashes($_POST['set_name']),
|
|
'set_css_method' => $this->ipsclass->input['set_css_method'],
|
|
'set_hidden' => $this->ipsclass->input['set_hidden'],
|
|
'set_image_dir' => $this->ipsclass->input['set_image_dir'],
|
|
'set_author_email' => $this->ipsclass->input['set_author_email'],
|
|
'set_author_url' => $this->ipsclass->input['set_author_url'],
|
|
'set_author_name' => $this->ipsclass->input['set_author_name'],
|
|
'set_skin_set_parent' => $this->ipsclass->input['set_skin_set_parent'],
|
|
'set_emoticon_folder' => $this->ipsclass->input['set_emoticon_folder'],
|
|
'set_key' => substr( $this->ipsclass->input['set_key'], 0, 32 ),
|
|
);
|
|
|
|
if ($type == 'add')
|
|
{
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
//-----------------------------------------
|
|
// Did we set it to default?
|
|
//-----------------------------------------
|
|
|
|
if ( $this->ipsclass->input['set_default'] )
|
|
{
|
|
$this->ipsclass->DB->do_update( 'skin_sets', array( 'set_default' => 0 ), 'set_skin_set_id <> '.intval($this->ipsclass->input['id']) );
|
|
$barney['set_default'] = 1;
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Did the parent change?
|
|
//-----------------------------------------
|
|
|
|
$affected_ids = array();
|
|
|
|
if ( $this->ipsclass->input['prt'] != $this->ipsclass->input['set_skin_set_parent'] )
|
|
{
|
|
$affected_ids[ $this_set['set_skin_set_id'] ] = $this_set['set_skin_set_id'];
|
|
|
|
//-----------------------------------------
|
|
// Any kids?
|
|
//-----------------------------------------
|
|
|
|
$children = array();
|
|
$child_id = array();
|
|
|
|
$this->ipsclass->DB->simple_construct( array( 'select' => 'set_skin_set_id', 'from' => 'skin_sets', 'where' => 'set_skin_set_parent='.$this_set['set_skin_set_id'] ) );
|
|
$this->ipsclass->DB->simple_exec();
|
|
|
|
while ( $r = $this->ipsclass->DB->fetch_row() )
|
|
{
|
|
$children[] = $r;
|
|
$child_id[] = $r['set_skin_set_id'];
|
|
$affected_ids[ $r['set_skin_set_id'] ] = $r['set_skin_set_id'];
|
|
}
|
|
|
|
if ( count($children) )
|
|
{
|
|
//-----------------------------------------
|
|
// Move children to direct root children
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->DB->simple_exec_query( array( 'update' => 'skin_sets', 'set' => 'set_skin_set_parent = -1', 'where' => 'set_skin_set_id IN ('.implode(",",$child_id).')' ) );
|
|
}
|
|
}
|
|
|
|
if ( $this->ipsclass->input['css'] != $this->ipsclass->input['set_css_method'] )
|
|
{
|
|
if ( $this->ipsclass->input['set_css_method'] )
|
|
{
|
|
//-----------------------------------------
|
|
// Caching switched on...
|
|
//-----------------------------------------
|
|
|
|
$affected_ids[ $this_set['set_skin_set_id'] ] = $this_set['set_skin_set_id'];
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Img dir changed? recache css
|
|
//-----------------------------------------
|
|
|
|
if ( $this->ipsclass->input['img'] != $this->ipsclass->input['set_image_dir'] )
|
|
{
|
|
$affected_ids[ $this_set['set_skin_set_id'] ] = $this_set['set_skin_set_id'];
|
|
}
|
|
|
|
$this->ipsclass->DB->do_update( 'skin_sets', $barney, "set_skin_set_id=".intval($this->ipsclass->input['id']) );
|
|
|
|
//-----------------------------------------
|
|
// Rebuild caches and relationships?
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->cache_func->_rebuild_all_caches($affected_ids);
|
|
|
|
$this->ipsclass->main_msg = 'Skin Settings Updated';
|
|
|
|
$this->ipsclass->main_msg .= "<br />".implode("<br />", $this->ipsclass->cache_func->messages);
|
|
|
|
//$this->ipsclass->admin->redirect("{$this->ipsclass->form_code}", "Skin Set Updated" );
|
|
$this->list_sets();
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// ADD / EDIT SETS
|
|
//-----------------------------------------
|
|
|
|
function do_form( $type='add' )
|
|
{
|
|
//-----------------------------------------
|
|
// Check for input
|
|
//-----------------------------------------
|
|
|
|
$sets = array();
|
|
$parents = array( 0=> array( '-1', 'No parent' ) );
|
|
$row = array();
|
|
|
|
if ($this->ipsclass->input['id'] == "")
|
|
{
|
|
$this->ipsclass->admin->error("You must specify an existing skin set ID, go back and try again");
|
|
}
|
|
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'skin_sets' ) );
|
|
$this->ipsclass->DB->simple_exec();
|
|
|
|
while ( $r = $this->ipsclass->DB->fetch_row() )
|
|
{
|
|
$sets[ $r['set_skin_set_id'] ] = $r;
|
|
|
|
if ( ($r['set_skin_set_parent'] < 0 and $r['set_skin_set_id'] != 1 ) and ( $this->ipsclass->input['id'] != $r['set_skin_set_id'] ) )
|
|
{
|
|
$parents[] = array( $r['set_skin_set_id'], $r['set_name'] );
|
|
}
|
|
|
|
if ( $this->ipsclass->input['id'] == $r['set_skin_set_id'] )
|
|
{
|
|
$row = $r;
|
|
}
|
|
}
|
|
|
|
|
|
//-----------------------------------------
|
|
|
|
if ($type == 'add')
|
|
{
|
|
$code = 'doadd';
|
|
$button = 'Create New Skin Set';
|
|
$row['set_name'] = $row['set_name'];
|
|
$row['set_default'] = 0;
|
|
}
|
|
else
|
|
{
|
|
$code = 'doedit';
|
|
$button = 'Edit Skin Settings';
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Image dir
|
|
//-----------------------------------------
|
|
|
|
$dirs = array();
|
|
|
|
$dh = opendir( CACHE_PATH.'style_images' );
|
|
|
|
while ( false !== ( $file = readdir( $dh ) ) )
|
|
{
|
|
if (($file != ".") && ($file != ".."))
|
|
{
|
|
if ( is_dir(CACHE_PATH.'style_images/'.$file) )
|
|
{
|
|
$dirs[] = array( $file, $file );
|
|
}
|
|
}
|
|
}
|
|
closedir( $dh );
|
|
|
|
//-----------------------------------------
|
|
// Emoticons dir
|
|
//-----------------------------------------
|
|
|
|
$emodirs = array();
|
|
|
|
$dh = opendir( CACHE_PATH.'style_emoticons' );
|
|
|
|
while ( false !== ( $file = readdir( $dh ) ) )
|
|
{
|
|
if (($file != ".") && ($file != ".."))
|
|
{
|
|
if ( is_dir(CACHE_PATH.'style_emoticons/'.$file) )
|
|
{
|
|
$emodirs[] = array( $file, $file );
|
|
}
|
|
}
|
|
}
|
|
closedir( $dh );
|
|
|
|
|
|
if ( is_writeable( CACHE_PATH."style_images" ) )
|
|
{
|
|
$cssextra = $this->ipsclass->adskin->form_yes_no('set_css_method', $row['set_css_method']);
|
|
}
|
|
else
|
|
{
|
|
$cssextra = "<em>Unavailable, IPB cannot write into your 'style_images' folder</em>";
|
|
}
|
|
|
|
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->admin->page_detail = "Please configure the settings below.";
|
|
$this->ipsclass->admin->page_title = "Manage Skin Sets";
|
|
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code', $code ),
|
|
2 => array( 'act' , 'sets' ),
|
|
3 => array( 'id' , $this->ipsclass->input['id'] ),
|
|
4 => array( 'img' , $row['set_image_dir'] ),
|
|
5 => array( 'prt' , $row['set_skin_set_parent'] ),
|
|
6 => array( 'css' , $row['set_css_method'] ),
|
|
7 => array( 'section', $this->ipsclass->section_code ),
|
|
), "theAdminForm" );
|
|
|
|
//-----------------------------------------
|
|
// Start output
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->html .= "<div class='tableborder'>
|
|
<div class='tableheaderalt'>$button</div>
|
|
<div class='tablerow2'>
|
|
<fieldset class='tdfset'>
|
|
<legend><strong>Basics</strong></legend>
|
|
<table width='100%' cellpadding='5' cellspacing='0' border='0'>
|
|
<tr>
|
|
<td width='40%' class='tablerow1'>Set Title</td>
|
|
<td width='60%' class='tablerow1'>".$this->ipsclass->adskin->form_input('set_name', $row['set_name'])."</td>
|
|
</tr>
|
|
<tr>
|
|
<td width='40%' class='tablerow1'>Hide from members?</td>
|
|
<td width='60%' class='tablerow1'>".$this->ipsclass->adskin->form_yes_no('set_hidden', $row['set_hidden'])."</td>
|
|
</tr>";
|
|
|
|
if ( $row['set_default'] )
|
|
{
|
|
$this->ipsclass->html .= "<tr>
|
|
<td width='40%' class='tablerow1'>Set as default skin?</td>
|
|
<td width='60%' class='tablerow1'><i>Skin set as default already.</i></td>";
|
|
}
|
|
else
|
|
{
|
|
$this->ipsclass->html .= "<tr>
|
|
<td width='40%' class='tablerow1'>Set as default skin?</td>
|
|
<td width='60%' class='tablerow1'>".$this->ipsclass->adskin->form_checkbox('set_default', $row['set_default'])."</td>";
|
|
}
|
|
|
|
$this->ipsclass->html .= "</tr>
|
|
<tr>
|
|
<td width='40%' class='tablerow1'>Skin Set Parent?</td>
|
|
<td width='60%' class='tablerow1'>".$this->ipsclass->adskin->form_dropdown('set_skin_set_parent', $parents, $row['set_skin_set_parent'])."</td>
|
|
</tr>
|
|
<tr>
|
|
<td width='40%' class='tablerow1'>Skin Set Key? (Optional)</td>
|
|
<td width='60%' class='tablerow1'>".$this->ipsclass->adskin->form_input('set_key', $row['set_key'])."</td>
|
|
</tr>
|
|
</table>
|
|
</fieldset>
|
|
<br />
|
|
<fieldset class='tdfset'>
|
|
<legend><strong>CSS Options</strong></legend>
|
|
<table width='100%' cellpadding='5' cellspacing='0' border='0'>
|
|
<tr>
|
|
<td width='40%' class='tablerow1'>Cache CSS to text files?<br /><span style='color:gray'>This will reduce the size of the HTML as the CSS will be in a browser cachable file.</span>
|
|
</td>
|
|
<td width='60%' class='tablerow1'>".$cssextra."<br /><span style='color:red'>Warning: Changing this value will re-cache any cached stylesheet information. Please make sure that you have synchronized any cache files with the database.</span></td>
|
|
</tr>
|
|
</table>
|
|
</fieldset>
|
|
<br />
|
|
<fieldset class='tdfset'>
|
|
<legend><strong>Image Options</strong></legend>
|
|
<table width='100%' cellpadding='5' cellspacing='0' border='0'>
|
|
<tr>
|
|
<td width='40%' class='tablerow1'>Use image directory?<br /><span style='color:gray'>The image directory will be used in place of <#IMG_DIR#> in CSS and macro replacements.</span></td>
|
|
<td width='60%' class='tablerow1'>style_images/ ".$this->ipsclass->adskin->form_dropdown('set_image_dir', $dirs, $row['set_image_dir'])."</td>
|
|
</tr>
|
|
<tr>
|
|
<td width='40%' class='tablerow1'>Use emoticons set?<br /><span style='color:gray'>Choose which set of emoticons to assign to this skin.</span></td>
|
|
<td width='60%' class='tablerow1'>style_emoticons/ ".$this->ipsclass->adskin->form_dropdown('set_emoticon_folder', $emodirs, $row['set_emoticon_folder'])."</td>
|
|
</tr>
|
|
</table>
|
|
</fieldset>
|
|
|
|
<br />
|
|
<fieldset class='tdfset'>
|
|
<legend><strong>Set Author</strong></legend>
|
|
<table width='100%' cellpadding='5' cellspacing='0' border='0'>
|
|
<tr>
|
|
<td width='40%' class='tablerow1'>Set Author Name<br /><span style='color:gray'>*Optional</span></td>
|
|
<td width='60%' class='tablerow1'>".$this->ipsclass->adskin->form_input('set_author_name', $row['set_author_name'])."</td>
|
|
</tr>
|
|
<tr>
|
|
<td width='40%' class='tablerow1'>Set Author Email Address<br /><span style='color:gray'>*Optional</span></td>
|
|
<td width='60%' class='tablerow1'>".$this->ipsclass->adskin->form_input('set_author_email', $row['set_author_email'])."</td>
|
|
</tr>
|
|
<tr>
|
|
<td width='40%' class='tablerow1'>Set Author Website Address<br /><span style='color:gray'>*Optional</span></td>
|
|
<td width='60%' class='tablerow1'>".$this->ipsclass->adskin->form_input('set_author_url', $row['set_author_url'])."</td>
|
|
</tr>
|
|
</table>
|
|
</fieldset>
|
|
</div>
|
|
</div>";
|
|
|
|
|
|
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->html .= $this->ipsclass->adskin->end_form_standalone($button);
|
|
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->admin->output();
|
|
|
|
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// SHOW ALL SKIN SETS
|
|
//-----------------------------------------
|
|
|
|
function list_sets()
|
|
{
|
|
$form_array = array();
|
|
$this_set = "";
|
|
$forums = array();
|
|
$forum_skins = array();
|
|
$macro_array = array();
|
|
$template_array = array();
|
|
$content = "";
|
|
|
|
$this->ipsclass->admin->page_detail = "Simply click on the button next to the skin set you wish to edit and select one of the options from the pop-up menu.";
|
|
$this->ipsclass->admin->page_title = "Manage Skin Sets";
|
|
|
|
//-----------------------------------------
|
|
// Get forum names
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->DB->simple_construct( array( 'select' => 'id, name, skin_id', 'from' => 'forums' ) );
|
|
$this->ipsclass->DB->simple_exec();
|
|
|
|
while ( $f = $this->ipsclass->DB->fetch_row() )
|
|
{
|
|
$forums[ $f['id'] ] = $f['name'];
|
|
|
|
if ( $f['skin_id'] != "")
|
|
{
|
|
$forum_skins[ $f['skin_id'] ][] = $f['name'];
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Get macro / template info
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->DB->cache_add_query( 'stylesets_list_sets_templates', array() );
|
|
$this->ipsclass->DB->cache_exec_query();
|
|
|
|
while ( $r = $this->ipsclass->DB->fetch_row() )
|
|
{
|
|
$template_array[ $r['set_id'] ] = 1;
|
|
}
|
|
|
|
$this->ipsclass->DB->cache_add_query( 'stylesets_list_sets_macros', array() );
|
|
$this->ipsclass->DB->cache_exec_query();
|
|
|
|
while ( $r = $this->ipsclass->DB->fetch_row() )
|
|
{
|
|
$macro_array[ $r['macro_set'] ] = 1;
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// GET SKINS
|
|
//-----------------------------------------
|
|
|
|
$skin_sets = array();
|
|
$last_id = 0;
|
|
$default_skin = "";
|
|
|
|
$this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'skin_sets', 'order' => 'set_skin_set_parent, set_skin_set_id ASC' ) );
|
|
$this->ipsclass->DB->simple_exec();
|
|
|
|
$no_sets = 0;
|
|
$i_sets = 0;
|
|
|
|
while ( $row = $this->ipsclass->DB->fetch_row() )
|
|
{
|
|
$skins[ $row['set_skin_set_id'] ] = $row;
|
|
|
|
if ( $row['set_skin_set_parent'] == -1 )
|
|
{
|
|
$no_sets++;
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Loop-de-loop
|
|
//-----------------------------------------
|
|
|
|
foreach( $skins as $r )
|
|
{
|
|
$i_sets++;
|
|
|
|
$skin_sets[ $r['set_skin_set_id'] ] = $r;
|
|
|
|
$skin_sets[ $r['set_skin_set_parent'] ]['_lastid'] = $r['set_skin_set_id'];
|
|
$skin_sets[ $r['set_skin_set_parent'] ]['_children'][] = $r['set_skin_set_id'];
|
|
|
|
$extra = "";
|
|
$forums = "<img src='{$this->ipsclass->skin_acp_url}/images/skin_notforums.gif' border='0' alt='Not used in forums' title='Not used in forums' />";
|
|
|
|
//-----------------------------------------
|
|
// Used in forums?
|
|
//-----------------------------------------
|
|
|
|
if ( isset($forum_skins[ $r['set_skin_set_id'] ]) AND is_array($forum_skins[ $r['set_skin_set_id'] ]) )
|
|
{
|
|
if ( count($forum_skins[ $r['set_skin_set_id'] ]) > 0 )
|
|
{
|
|
$extra = "Used in forums:".implode( ",", $forum_skins[ $r['set_skin_set_id'] ] );
|
|
|
|
$forums = "<img src='{$this->ipsclass->skin_acp_url}/images/skin_forums.gif' border='0' alt='' title='$extra' />";
|
|
}
|
|
}
|
|
|
|
$this->unaltered = "<img src='{$this->ipsclass->skin_acp_url}/images/skin_item_unaltered.gif' border='0' alt='-' title='Unaltered from parent skin set' /> ";
|
|
$this->altered = "<img src='{$this->ipsclass->skin_acp_url}/images/skin_item_altered.gif' border='0' alt='+' title='Altered from parent skin set' /> ";
|
|
$this->inherited = "<img src='{$this->ipsclass->skin_acp_url}/images/skin_item_inherited.gif' border='0' alt='|' title='Inherited from parent skin set' /> ";
|
|
|
|
//-----------------------------------------
|
|
// Default / Hidden?
|
|
//-----------------------------------------
|
|
|
|
$default = "<a href='{$this->ipsclass->base_url}&{$this->ipsclass->form_code}&code=toggledefault&id={$r['set_skin_set_id']}' title='Make this skin the default'><img src='{$this->ipsclass->skin_acp_url}/images/skin_notdefault.gif' border='0' alt='Not Default' /></a>";
|
|
$hidden = "<a href='{$this->ipsclass->base_url}&{$this->ipsclass->form_code}&code=togglevisible&id={$r['set_skin_set_id']}' title='Toggle visibility'><img src='{$this->ipsclass->skin_acp_url}/images/skin_visible.gif' border='0' alt='visible' title='Skin not hidden from members' /></a>";
|
|
$folder_icon = 'skin_folder.gif';
|
|
$css_extra = "";
|
|
|
|
//-----------------------------------------
|
|
// Child of master, middle skin
|
|
// or last skin?
|
|
//-----------------------------------------
|
|
|
|
if ( $i_sets >= $no_sets )
|
|
{
|
|
$line_image = "<img src='{$this->ipsclass->skin_acp_url}/images/skin_line_l.gif' border='0' /> ";
|
|
}
|
|
else
|
|
{
|
|
$line_image = "<img src='{$this->ipsclass->skin_acp_url}/images/skin_line_t.gif' border='0' /> ";
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Hidden?
|
|
//-----------------------------------------
|
|
|
|
if ($r['set_hidden'] == 1)
|
|
{
|
|
$hidden = "<a href='{$this->ipsclass->base_url}&{$this->ipsclass->form_code}&code=togglevisible&id={$r['set_skin_set_id']}' title='Toggle visibility'><img src='{$this->ipsclass->skin_acp_url}/images/skin_invisible.gif' border='0' alt='Invisible' title='Skin hidden from members' /></a>";
|
|
$folder_icon = 'skin_folder_hidden.gif';
|
|
$css_extra = 'color:#7F7FAA';
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Default?
|
|
//-----------------------------------------
|
|
|
|
if ($r['set_default'] == 1)
|
|
{
|
|
$default = "<img src='{$this->ipsclass->skin_acp_url}/images/skin_default.gif' border='0' alt='Not Default' title='Default skin' />";
|
|
$default_skin = $r['set_name'];
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// IPB Master?
|
|
//-----------------------------------------
|
|
|
|
if ( $r['set_skin_set_id'] == 1 )
|
|
{
|
|
$folder_icon = 'skin_folder_master.gif';
|
|
$line_image = "";
|
|
$css_extra = "color:gray";
|
|
$hidden = "";
|
|
$default = "";
|
|
$forums = "";
|
|
}
|
|
else
|
|
{
|
|
//-----------------------------------------
|
|
// Not..
|
|
//-----------------------------------------
|
|
|
|
if ( $r['set_skin_set_parent'] >= 0 )
|
|
{
|
|
//-----------------------------------------
|
|
// Child though...
|
|
//-----------------------------------------
|
|
|
|
if ( $folder_icon != 'skin_folder_hidden.gif' )
|
|
{
|
|
$folder_icon = 'skin_folder_children.gif';
|
|
}
|
|
|
|
$line_image = "<img src='{$this->ipsclass->skin_acp_url}/images/skin_line_single.gif' border='0' />";
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Skin opts
|
|
//-----------------------------------------
|
|
|
|
if ( $r['set_skin_set_id'] == 1 AND ! IN_DEV )
|
|
{
|
|
$menulist = "\"This is the master skin and cannot be edited or removed.<br />If you wish to customize the default skin, please click"
|
|
."<br />on the skin set '<!DEFAULT>' and choose from the options.\"";
|
|
}
|
|
else
|
|
{
|
|
$menulist = preg_replace( "#,$#", "", $this->html->skin_sets_overview_row_menulist( $r ) );
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Add skin row
|
|
//-----------------------------------------
|
|
$skin_sets[ $r['set_skin_set_id'] ]['_html'] = isset($skin_sets[ $r['set_skin_set_id'] ]['_html']) ? $skin_sets[ $r['set_skin_set_id'] ]['_html'] : '';
|
|
|
|
$skin_sets[ $r['set_skin_set_id'] ]['_html'] .= $this->html->skin_sets_overview_row( $r, $forums, $hidden, $default, $menulist, $i_sets, $no_sets, $folder_icon, $line_image, $css_extra );
|
|
|
|
$form_array[] = array( $r['set_skin_set_id'], $r['set_name'] );
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Show root forums
|
|
//-----------------------------------------
|
|
|
|
foreach( $skin_sets as $id => $data )
|
|
{
|
|
if ( isset($data['set_skin_set_parent']) AND $data['set_skin_set_parent'] == -1 )
|
|
{
|
|
$wrapper_icon = $this->_get_status_of_parent( $data['set_wrapper'] );
|
|
$css_icon = $this->_get_status_of_parent( $data['set_css'] );
|
|
$templates_icon = $this->_get_status_of_parent( isset($template_array[ $data['set_skin_set_id'] ]) ? $template_array[ $data['set_skin_set_id'] ] : 0 );
|
|
$macro_icon = $this->_get_status_of_parent( isset($macro_array[ $data['set_skin_set_id'] ]) ? $macro_array[ $data['set_skin_set_id'] ] : 0 );
|
|
|
|
//-----------------------------------------
|
|
// Fix n' stitch
|
|
//-----------------------------------------
|
|
|
|
$data['_html'] = str_replace( '<!--ALTERED.wrappper-->' , $wrapper_icon , $data['_html'] );
|
|
$data['_html'] = str_replace( '<!--ALTERED.templates-->', $templates_icon, $data['_html'] );
|
|
$data['_html'] = str_replace( '<!--ALTERED.css-->' , $css_icon , $data['_html']);
|
|
$data['_html'] = str_replace( '<!--ALTERED.macro-->' , $macro_icon , $data['_html'] );
|
|
|
|
$content .= $data['_html']."\n<!--CHILDREN:{$id}-->";
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Show any children
|
|
//-----------------------------------------
|
|
|
|
foreach( $skin_sets as $id => $data )
|
|
{
|
|
if ( isset($data['_children']) AND is_array( $data['_children'] ) and count( $data['_children'] ) > 0 )
|
|
{
|
|
$html = "";
|
|
|
|
foreach( $data['_children'] as $cid )
|
|
{
|
|
$image = "";
|
|
|
|
if ( $cid == $data['_lastid'] )
|
|
{
|
|
//-----------------------------------------
|
|
// Last skin, show L
|
|
//-----------------------------------------
|
|
|
|
$image = 'skin_line_l.gif';
|
|
}
|
|
else
|
|
{
|
|
//-----------------------------------------
|
|
// First skin, show T
|
|
//-----------------------------------------
|
|
|
|
$image = 'skin_line_t.gif';
|
|
}
|
|
|
|
$skin_sets[ $cid ]['_html'] = str_replace( "<!--ID:{$cid}-->", "<img src='{$this->ipsclass->skin_acp_url}/images/{$image}' border='0' /> ", $skin_sets[ $cid ]['_html'] );
|
|
|
|
//-----------------------------------------
|
|
// (un)altered icons:
|
|
//-----------------------------------------
|
|
|
|
$wrapper_icon = $this->_get_status_of_child( isset($skin_sets[ $cid ]['set_wrapper']) ? $skin_sets[ $cid ]['set_wrapper'] : '' , isset($skin_sets[ $id ]['set_wrapper']) ? $skin_sets[ $id ]['set_wrapper'] : '' );
|
|
$css_icon = $this->_get_status_of_child( isset($skin_sets[ $cid ]['set_css']) ? $skin_sets[ $cid ]['set_css'] : '' , isset($skin_sets[ $id ]['set_css']) ? $skin_sets[ $id ]['set_css'] : '' );
|
|
$templates_icon = $this->_get_status_of_child( isset($template_array[ $cid ]) ? $template_array[ $cid ] : '' , isset($template_array[ $id ]) ? $template_array[ $id ] : '' );
|
|
$macro_icon = $this->_get_status_of_child( isset($macro_array[ $cid ]) ? $macro_array[ $cid ] : '' , isset($macro_array[ $id ]) ? $macro_array[ $id ] : '' );
|
|
|
|
//-----------------------------------------
|
|
// Fix n' stitch
|
|
//-----------------------------------------
|
|
|
|
$skin_sets[ $cid ]['_html'] = str_replace( '<!--ALTERED.wrappper-->' , $wrapper_icon , $skin_sets[ $cid ]['_html'] );
|
|
$skin_sets[ $cid ]['_html'] = str_replace( '<!--ALTERED.templates-->', $templates_icon, $skin_sets[ $cid ]['_html'] );
|
|
$skin_sets[ $cid ]['_html'] = str_replace( '<!--ALTERED.css-->' , $css_icon , $skin_sets[ $cid ]['_html'] );
|
|
$skin_sets[ $cid ]['_html'] = str_replace( '<!--ALTERED.macro-->' , $macro_icon , $skin_sets[ $cid ]['_html'] );
|
|
|
|
$html .= $skin_sets[ $cid ]['_html'];
|
|
}
|
|
|
|
$content = str_replace( "<!--CHILDREN:{$id}-->", $html, $content );
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Add in default skin name
|
|
//-----------------------------------------
|
|
|
|
$this->ipsclass->html = $this->html->skin_sets_overview( $content );
|
|
|
|
$this->ipsclass->html = str_replace( '<!DEFAULT>', $default_skin, $this->ipsclass->html );
|
|
|
|
if( IN_DEV )
|
|
{
|
|
$this->ipsclass->html .= $this->ipsclass->adskin->start_form( array(
|
|
1 => array( 'section' , 'lookandfeel' ),
|
|
2 => array( 'act' , 'sets' ),
|
|
3 => array( 'code' , 'MOD_mod_xml' ),
|
|
) );
|
|
|
|
$this->ipsclass->html .= $this->ipsclass->adskin->start_table( 'Developers: Export Module Skin Files' );
|
|
$this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array(
|
|
'<b>WHERE</b> group_name <b>LIKE</b> \'%' . $this->ipsclass->adskin->form_input( 'group_name' ) . '%\' <b>AND</b> set_id = ' . $this->ipsclass->adskin->form_input( 'set_id', 1, '', '', 2 ) ) );
|
|
|
|
$this->ipsclass->html .= $this->ipsclass->adskin->end_form( 'Generate & Download XML' );
|
|
|
|
$this->ipsclass->html .= $this->ipsclass->adskin->end_table();
|
|
}
|
|
|
|
$this->ipsclass->admin->output();
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Get status of a child
|
|
//-----------------------------------------
|
|
|
|
function _get_status_of_child($this_item, $parent_item)
|
|
{
|
|
if ( $this_item )
|
|
{
|
|
return $this->altered;
|
|
}
|
|
else if ( $parent_item )
|
|
{
|
|
return $this->inherited;
|
|
}
|
|
else
|
|
{
|
|
return $this->unaltered;
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Get status of a parent
|
|
//-----------------------------------------
|
|
|
|
function _get_status_of_parent($this_item)
|
|
{
|
|
if ( ! $this_item )
|
|
{
|
|
return $this->unaltered;
|
|
}
|
|
else
|
|
{
|
|
return $this->altered;
|
|
}
|
|
}
|
|
|
|
function generate_mod_xml()
|
|
{
|
|
if( empty( $this->ipsclass->input['group_name'] ) )
|
|
{
|
|
$this->list_sets();
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* Set ID
|
|
*/
|
|
$this->ipsclass->input['set_id'] = ( $this->ipsclass->input['set_id'] ) ? (int)$this->ipsclass->input['set_id'] : 1;
|
|
|
|
/**
|
|
* Require the XML class
|
|
*/
|
|
require_once( KERNEL_PATH . 'class_xml.php' );
|
|
$xml = new class_xml();
|
|
|
|
/**
|
|
* Set the root tag
|
|
*/
|
|
$xml->xml_set_root( 'templateexport', array( 'exported' => time(), 'versionid' => '220', 'type' => 'master' ) );
|
|
|
|
/**
|
|
* Create base group
|
|
*/
|
|
$xml->xml_add_group( 'templategroup' );
|
|
|
|
//$content[] = $xml->xml_build_simple_tag( 'description', "This is a descrption" );
|
|
//$entry[] = $xml->xml_build_entry( 'product', $content, array( 'id' => '1.0' ) );
|
|
//$xml->xml_add_entry_to_group( 'productgroup', $entry );
|
|
//$xml->xml_format_document();
|
|
|
|
/**
|
|
* SQL
|
|
*/
|
|
$this->ipsclass->DB->simple_select( '*', 'skin_templates', "group_name LIKE '%{$this->ipsclass->input['group_name']}%' AND set_id = {$this->ipsclass->input['set_id']}" );
|
|
$this->ipsclass->DB->exec_query();
|
|
|
|
if( $this->ipsclass->DB->get_num_rows() )
|
|
{
|
|
while( $row = $this->ipsclass->DB->fetch_row() )
|
|
{
|
|
unset( $content );
|
|
|
|
$content[] = $xml->xml_build_simple_tag( 'group_name', $row['group_name'] );
|
|
$content[] = $xml->xml_build_simple_tag( 'section_content', $row['section_content'] );
|
|
$content[] = $xml->xml_build_simple_tag( 'func_name', $row['func_name'] );
|
|
$content[] = $xml->xml_build_simple_tag( 'func_data', $row['func_data'] );
|
|
|
|
$entry[] = $xml->xml_build_entry( 'template', $content );
|
|
}
|
|
|
|
$xml->xml_add_entry_to_group( 'templategroup', $entry );
|
|
}
|
|
|
|
/**
|
|
* Format
|
|
*/
|
|
$xml->xml_format_document();
|
|
|
|
/**
|
|
* Send to browser
|
|
*/
|
|
$this->ipsclass->admin->show_download( $xml->xml_document, 'mod_templates.xml', '', 0 );
|
|
}
|
|
|
|
}
|
|
|
|
|
|
?>
|