Files
IPB/upload/sources/action_admin/skin_diff.php
T
2025-12-19 00:24:35 -08:00

818 lines
28 KiB
PHP

<?php
/*
+--------------------------------------------------------------------------
| Invision Power Board 2.2.2
| =============================================
| by Matthew Mecham
| (c) 2001 - 2006 Invision Power Services, Inc.
| http://www.invisionpower.com
| =============================================
| Web: http://www.invisionboard.com
| http://www.ibresource.ru/products/invisionpowerboard/
| Time: Monday 05th of March 2007 10:10:54 PM
| Release: e3790216629e5a2aaf37070b32237f06
| Licence Info: http://www.invisionboard.com/?license
| http://www.ibresource.ru/license
+---------------------------------------------------------------------------
| INVISION POWER BOARD ÍÅ ßÂËßÅÒÑß ÁÅÑÏËÀÒÍÛÌ ÏÐÎÃÐÀÌÌÍÛÌ ÎÁÅÑÏÅ×ÅÍÈÅÌ!
| Ïðàâà íà ÏÎ ïðèíàäëåæàò Invision Power Services
| Ïðàâà íà ïåðåâîä IBResource (http://www.ibresource.ru)
+---------------------------------------------------------------------------
| > $Date: 2006-12-08 16:41:30 -0500 (Fri, 08 Dec 2006) $
| > $Revision: 781 $
| > $Author: bfarber $
+---------------------------------------------------------------------------
|
| > Skin Difference Engine
| > Module written by Matt Mecham
| > Date started: 22nd July 2005
+--------------------------------------------------------------------------
*/
if ( ! defined( 'IN_ACP' ) )
{
print "<h1>Íåêîððåêòíûé àäðåñ</h1>Âû íå èìååòå äîñòóïà ê ýòîìó ôàéëó íàïðÿìóþ. Åñëè âû íåäàâíî îáíîâëÿëè ôîðóì, âû äîëæíû îáíîâèòü âñå ñîîòâåòñòâóþùèå ôàéëû.";
exit();
}
class ad_skin_diff
{
/**
* Section title name
*
* @var string
*/
var $perm_main = "lookandfeel";
/**
* Section title name
*
* @var string
*/
var $perm_child = "skindiff";
function auto_run()
{
$this->ipsclass->admin->page_detail = "Ñðàâíèòü âàø ñòèëü.";
$this->ipsclass->admin->page_title = "HTML Ñðàâíåíèå ñòèëåé";
$this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Ñðàâíåíèå' );
//-----------------------------------------
// LOAD HTML
//-----------------------------------------
$this->html = $this->ipsclass->acp_load_template('cp_skin_lookandfeel');
//-----------------------------------------
// What to do?
//-----------------------------------------
switch($this->ipsclass->input['code'])
{
case 'skin_diff':
$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':rundiff' );
$this->skin_differences_start();
break;
case 'skin_diff_process':
$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':rundiff' );
$this->skin_differences_process();
break;
case 'skin_diff_view':
$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':rundiff' );
$this->skin_differences_view();
break;
case 'skin_diff_export':
$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':export' );
$this->skin_differences_export();
break;
case 'skin_diff_view_diff':
$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':rundiff' );
$this->skin_differences_view_diff();
break;
case 'skin_diff_from_skin':
$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':rundiff' );
$this->skin_differences_start_from_skin();
break;
case 'skin_diff_remove':
$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':remove' );
$this->skin_differences_remove();
break;
default:
$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':' );
$this->skin_differences_list();
break;
}
}
/*-------------------------------------------------------------------------*/
// Compare skin differences [VIEW]
/*-------------------------------------------------------------------------*/
/**
* Compare skin differences (XML files)
*
* @since 2.1.0.2005-07-35
*/
function skin_differences_remove()
{
//-----------------------------------------
// Init
//-----------------------------------------
$diff_session_id = intval( $this->ipsclass->input['diff_session_id'] );
//-----------------------------------------
// Get current session
//-----------------------------------------
$current_session = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*', 'from' => 'template_diff_session', 'where' => 'diff_session_id='.$diff_session_id ) );
if ( ! $current_session['diff_session_id'] )
{
$this->ipsclass->admin->error("Íåâîçìîæíî ïîëó÷èòü òåêóùóþ ñåññèþ øàáëîíà.");
}
//-----------------------------------------
// Delete from IMPORT
//-----------------------------------------
$this->ipsclass->DB->build_and_exec_query( array( 'delete' => 'templates_diff_import', 'where' => 'diff_session_id='.$diff_session_id ) );
//-----------------------------------------
// Delete from SESSION
//-----------------------------------------
$this->ipsclass->DB->build_and_exec_query( array( 'delete' => 'template_diff_session', 'where' => 'diff_session_id='.$diff_session_id ) );
//-----------------------------------------
// Delete from CHANGES
//-----------------------------------------
$this->ipsclass->DB->build_and_exec_query( array( 'delete' => 'template_diff_changes', 'where' => 'diff_session_id='.$diff_session_id ) );
//-----------------------------------------
// Done...
//-----------------------------------------
$this->ipsclass->main_msg = "Îò÷åò î ðàçëè÷èÿõ óäàëåí";
$this->skin_differences_list();
}
/*-------------------------------------------------------------------------*/
// Compare skin differences [EXPORT]
/*-------------------------------------------------------------------------*/
/**
* Compare skin differences (EXPORT)
*
* @since 2.1.0.2005-07-22
*/
function skin_differences_export()
{
//-----------------------------------------
// Init
//-----------------------------------------
$diff_session_id = intval( $this->ipsclass->input['diff_session_id'] );
$content = '';
$missing = 0;
$changed = 0;
//-----------------------------------------
// Get current session
//-----------------------------------------
$current_session = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*', 'from' => 'template_diff_session', 'where' => 'diff_session_id='.$diff_session_id ) );
if ( ! $current_session['diff_session_id'] )
{
$this->ipsclass->admin->error("Íåâîçìîæíî ïîëó÷èòü òåêóùóþ ñåññèþ øàáëîíà");
}
//-----------------------------------------
// Get data
//-----------------------------------------
$this->ipsclass->DB->build_query( array( 'select' => '*',
'from' => 'template_diff_changes',
'where' => 'diff_session_id='.$diff_session_id,
'order' => 'diff_change_func_group ASC, diff_change_func_name ASC' ) );
$this->ipsclass->DB->exec_query();
while( $row = $this->ipsclass->DB->fetch_row() )
{
//-----------------------------------------
// Culmulate
//-----------------------------------------
$row['diff_change_type'] ? $changed++ : $missing++;
$row['diff_change_content'] = str_replace( "\n", "<br>", $row['diff_change_content']);
$row['diff_change_content'] = str_replace( "&gt;&lt;", "&gt;\n&lt;" ,$row['diff_change_content']);
$row['diff_change_content'] = preg_replace( "#(?<!(\<del|\<ins)) {1}(?!:style)#i", "&nbsp;" ,$row['diff_change_content']);
$content .= $this->html->skin_diff_export_row( $row['diff_change_func_name'], $row['diff_change_func_group'], $row['diff_change_content'] );
}
$content = $this->html->skin_diff_export_overview( $content, $missing, $changed, $current_session['diff_session_title'], gmdate( 'r' ) );
$this->ipsclass->admin->show_download( $content, 'ipb-difference-export.html', "unknown/unknown", 0 );
$this->ipsclass->admin->output();
}
/*-------------------------------------------------------------------------*/
// Compare skin differences [VIEW]
/*-------------------------------------------------------------------------*/
/**
* Compare skin differences (XML files)
*
* @since 2.1.0.2005-07-22
*/
function skin_differences_view_diff()
{
//-----------------------------------------
// Init
//-----------------------------------------
$diff_key = $this->ipsclass->input['diff_key'];
//-----------------------------------------
// Get data
//-----------------------------------------
$diff_row = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*',
'from' => 'template_diff_changes',
'where' => "diff_change_key='".$diff_key."'" ) );
if ( ! $diff_row['diff_change_key'] )
{
$this->ipsclass->admin->error( "Êëþ÷ íå íàéäåí" );
}
$diff_row['diff_change_content'] = str_replace( "\n", "<br>", $diff_row['diff_change_content']);
$diff_row['diff_change_content'] = str_replace( "&gt;&lt;", "&gt;\n&lt;" ,$diff_row['diff_change_content']);
$diff_row['diff_change_content'] = preg_replace( "#(?<!(\<del|\<ins)) {1}(?!:style)#i", "&nbsp;" ,$diff_row['diff_change_content']);
$this->ipsclass->html = $this->html->skin_diff_view_bit( $diff_row['diff_change_func_group'], $diff_row['diff_change_func_name'], $diff_row['diff_change_content'] );
$this->ipsclass->admin->print_popup();
}
/*-------------------------------------------------------------------------*/
// Compare skin differences [VIEW]
/*-------------------------------------------------------------------------*/
/**
* Compare skin differences (XML files)
*
* @since 2.1.0.2005-07-22
*/
function skin_differences_view()
{
//-----------------------------------------
// Init
//-----------------------------------------
$diff_session_id = intval( $this->ipsclass->input['diff_session_id'] );
$content = '';
$missing = 0;
$changed = 0;
$last_group = '';
//-----------------------------------------
// Get current session
//-----------------------------------------
$current_session = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*', 'from' => 'template_diff_session', 'where' => 'diff_session_id='.$diff_session_id ) );
if ( ! $current_session['diff_session_id'] )
{
$this->ipsclass->admin->error("Íåâîçìîæíî ïîëó÷èòü òåêóùóþ ñåññèþ øàáëîíà.");
}
//-----------------------------------------
// Get data
//-----------------------------------------
$this->ipsclass->DB->build_query( array( 'select' => '*',
'from' => 'template_diff_changes',
'where' => 'diff_session_id='.$diff_session_id,
'order' => 'diff_change_func_group ASC, diff_change_func_name ASC' ) );
$this->ipsclass->DB->exec_query();
while( $row = $this->ipsclass->DB->fetch_row() )
{
//-----------------------------------------
// Gen data
//-----------------------------------------
$key = $diff_session_id.':'.$row['diff_change_func_group'].':'.$row['diff_change_func_name'];
$size = $this->ipsclass->size_format( $this->ipsclass->math_strlen_to_bytes( strlen( $row['diff_change_content'] ) ) );
//-----------------------------------------
// Diff type
//-----------------------------------------
if ( ! $row['diff_change_type'] )
{
$diff_is = '<span style="color:red">Íîâîå</span>';
$missing++;
}
else
{
$diff_is = '<span style="color:green">Èçìåíåíî</span>';
$changed++;
}
//-----------------------------------------
// New cat?
//-----------------------------------------
if ( $last_group != $row['diff_change_func_group'] )
{
$last_group = $row['diff_change_func_group'];
$content .= $this->html->skin_diff_row_newgroup( $row['diff_change_func_group'] );
}
//-----------------------------------------
// Culmulate
//-----------------------------------------
$content .= $this->html->skin_diff_row( $row['diff_change_func_name'], $size, $key, $diff_is, str_replace( ':', '_', $key ) );
}
$this->ipsclass->html = $this->html->skin_diff_overview( $content, $missing, $changed );
$this->ipsclass->admin->output();
}
/*-------------------------------------------------------------------------*/
// Compare skin differences: From 1 skin to another
/*-------------------------------------------------------------------------*/
/**
* Compare skin differences (XML files)
*
* @since 2.1.0.2005-07-22
*/
function skin_differences_start_from_skin()
{
//-----------------------------------------
// Init
//-----------------------------------------
$content = "";
$skin_id = intval( $this->ipsclass->input['skin_id'] );
//-----------------------------------------
// Check...
//-----------------------------------------
if ( ! $skin_id )
{
$this->ipsclass->admin->error( "No skin ID passed!" );
}
//-----------------------------------------
// Get skin set...
//-----------------------------------------
$skin_set = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => 'set_skin_set_id='.$skin_id ) );
if ( ! $skin_set['set_skin_set_id'] )
{
$this->ipsclass->admin->error( "Íå âûáðàí ID ñòèëÿ (çàíîâî!)" );
}
//-----------------------------------------
// Get number template bits
//-----------------------------------------
$total_bits = $this->ipsclass->DB->build_and_exec_query( array( 'select' => 'COUNT(*) as count', 'from' => 'skin_templates', 'where' => 'set_id=1' ) );
//-----------------------------------------
// Create session
//-----------------------------------------
$this->ipsclass->DB->do_insert( 'template_diff_session', array( 'diff_session_togo' => intval( $total_bits['count'] ),
'diff_session_done' => 0,
'diff_session_title' => "Ñðàâíåíèå ñî ñòèëåì: ".$skin_set['set_name'],
'diff_session_updated' => time(),
'diff_session_ignore_missing' => 1 ) );
$diff_session_id = $this->ipsclass->DB->get_insert_id();
$seen_templates = array();
//-----------------------------------------
// Grab template bits from DB
//-----------------------------------------
$this->ipsclass->DB->build_query( array( 'select' => '*', 'from' => 'skin_templates', 'where' => 'set_id='.$skin_id ) );
$outer = $this->ipsclass->DB->exec_query();
while( $entry = $this->ipsclass->DB->fetch_row( $outer ) )
{
$check = $this->ipsclass->DB->build_and_exec_query( array( 'select' => 'diff_key', 'from' => 'templates_diff_import', 'where' => "diff_key='".$diff_session_id.':'.$entry[ 'group_name' ].':'.$entry[ 'func_name' ]."'" ) );
if( $this->ipsclass->DB->get_num_rows() == 0 )
{
$this->ipsclass->DB->do_insert( 'templates_diff_import', array( 'diff_key' => $diff_session_id.':'.$entry[ 'group_name' ].':'.$entry[ 'func_name' ],
'diff_func_group' => $entry[ 'group_name' ],
'diff_func_data' => $entry[ 'func_data' ],
'diff_func_name' => $entry[ 'func_name' ],
'diff_func_content' => $entry[ 'section_content' ],
'diff_session_id' => $diff_session_id ) );
$seen_templates[ $entry[ 'group_name' ].':'.$entry[ 'func_name' ] ] = $entry['updated'];
}
else
{
if( $seen_templates[ $entry[ 'group_name' ].':'.$entry[ 'func_name' ] ] < $entry['updated'] )
{
$this->ipsclass->DB->do_update( 'templates_diff_import', array( 'diff_func_group' => $entry[ 'group_name' ],
'diff_func_data' => $entry[ 'func_data' ],
'diff_func_name' => $entry[ 'func_name' ],
'diff_func_content' => $entry[ 'section_content' ],
'diff_session_id' => $diff_session_id ), 'diff_key='.$diff_session_id.':'.$entry[ 'group_name' ].':'.$entry[ 'func_name' ] );
}
}
}
$this->ipsclass->admin->output_multiple_redirect_init( $this->ipsclass->base_url.'&'.$this->ipsclass->form_code_js."&code=skin_diff_process&diff_session_id={$diff_session_id}&pergo=10" );
}
/*-------------------------------------------------------------------------*/
// Compare skin differences
/*-------------------------------------------------------------------------*/
/**
* Compare skin differences (XML files)
*
* @since 2.1.0.2005-07-22
*/
function skin_differences_start()
{
//-----------------------------------------
// Init
//-----------------------------------------
$content = "";
$seen = array();
//-----------------------------------------
// Check...
//-----------------------------------------
if ( ! $this->ipsclass->input['diff_session_title'] )
{
$this->ipsclass->admin->error( "Âû äîëæíû ââåñòè íàçâàíèå" );
}
//-----------------------------------------
// Get uploaded file
//-----------------------------------------
if ( $_FILES['FILE_UPLOAD']['name'] == "" or ! $_FILES['FILE_UPLOAD']['name'] or ($_FILES['FILE_UPLOAD']['name'] == "none") )
{
//-----------------------------------------
// Ut-oh....
//-----------------------------------------
$this->ipsclass->admin->error( "Ôàéë íå áûë çàãðóæåí" );
}
else
{
//-----------------------------------------
// Get uploaded schtuff
//-----------------------------------------
$tmp_name = $_FILES['FILE_UPLOAD']['name'];
$tmp_name = preg_replace( "#\.gz$#", "", $tmp_name );
$content = $this->ipsclass->admin->import_xml( $tmp_name );
}
if( !$content )
{
$this->ipsclass->admin->error( "There was no content in the file to process" );
}
//-----------------------------------------
// Get number missing template bits
//-----------------------------------------
$total_bits = $this->ipsclass->DB->build_and_exec_query( array( 'select' => 'COUNT(*) as count', 'from' => 'skin_templates', 'where' => 'set_id=1' ) );
//-----------------------------------------
// Create session
//-----------------------------------------
$this->ipsclass->DB->allow_sub_select = 1;
$this->ipsclass->DB->do_insert( 'template_diff_session', array( 'diff_session_togo' => intval( $total_bits['count'] ),
'diff_session_done' => 0,
'diff_session_title' => $this->ipsclass->input['diff_session_title'],
'diff_session_updated' => time(),
'diff_session_ignore_missing' => intval( $this->ipsclass->input['diff_session_ignore_missing'] ) ) );
$diff_session_id = $this->ipsclass->DB->get_insert_id();
//-----------------------------------------
// Get xml mah-do-dah
//-----------------------------------------
require_once( KERNEL_PATH.'class_xml.php' );
$xml = new class_xml();
//-----------------------------------------
// Check to see if its an archive...
//-----------------------------------------
if ( preg_match( "#<xmlarchive generator=\"IPB\"#si", $content ) )
{
//-----------------------------------------
// It is an archive... expand...
//-----------------------------------------
require( KERNEL_PATH.'class_xmlarchive.php' );
$xmlarchive = new class_xmlarchive( KERNEL_PATH );
$xmlarchive->xml_read_archive_data( $content );
//-----------------------------------------
// Get the XML documents
//-----------------------------------------
$import_xml = array();
foreach( $xmlarchive->file_array as $f )
{
$import_xml[ $f['filename'] ] = $f['content'];
}
//-----------------------------------------
// Import Templates
//-----------------------------------------
$content = $import_xml['ipb_templates.xml'];
}
//-----------------------------------------
// Parse document
//-----------------------------------------
$xml->xml_parse_document( $content );
//-----------------------------------------
// Import template bits...
//-----------------------------------------
if ( ! is_array( $xml->xml_array['templateexport']['templategroup']['template'] ) )
{
$this->ipsclass->admin->error("Îøèáêà ñ ipb_templates.xml - ïðîäîëæèòü íåâîçìîæíî");
}
foreach( $xml->xml_array['templateexport']['templategroup']['template'] as $entry )
{
$diff_key = $diff_session_id.':'.$entry[ 'group_name' ]['VALUE'].':'.$entry[ 'func_name' ]['VALUE'];
if ( ! $seen[ $diff_key ] )
{
$this->ipsclass->DB->allow_sub_select = 1;
$this->ipsclass->DB->do_insert( 'templates_diff_import', array( 'diff_key' => $diff_session_id.':'.$entry[ 'group_name' ]['VALUE'].':'.$entry[ 'func_name' ]['VALUE'],
'diff_func_group' => $entry[ 'group_name' ]['VALUE'],
'diff_func_data' => $entry[ 'func_data' ]['VALUE'],
'diff_func_name' => $entry[ 'func_name' ]['VALUE'],
'diff_func_content' => $entry[ 'section_content' ]['VALUE'],
'diff_session_id' => $diff_session_id ) );
$seen[ $diff_key ] = 1;
}
}
$this->ipsclass->admin->output_multiple_redirect_init( $this->ipsclass->base_url.'&'.$this->ipsclass->form_code_js."&code=skin_diff_process&diff_session_id={$diff_session_id}&pergo=10" );
}
/*-------------------------------------------------------------------------*/
// Compare skin differences [PROCESS]
/*-------------------------------------------------------------------------*/
/**
* Compare skin differences (PROCESS)
*
* @since 2.1.0.2005-07-22
*/
function skin_differences_process()
{
//-----------------------------------------
// INIT
//-----------------------------------------
$pergo = intval( $this->ipsclass->input['pergo'] ) ? intval( $this->ipsclass->input['pergo'] ) : 10;
$diff_session_id = intval( $this->ipsclass->input['diff_session_id'] );
$done = 0;
$img = '<img src="'.$this->ipsclass->skin_acp_url.'/images/aff_tick_small.png" border="0" alt="-" /> ';
//-----------------------------------------
// Get current session
//-----------------------------------------
$current_session = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*', 'from' => 'template_diff_session', 'where' => 'diff_session_id='.$diff_session_id ) );
if ( ! $current_session['diff_session_id'] )
{
$this->ipsclass->admin->error("Íåâîçìîæíî ïîëó÷èòü òåêóùóþ ñåññèþ øàáëîíà.");
}
//-----------------------------------------
// Get Diff library
//-----------------------------------------
require_once( KERNEL_PATH . 'class_difference.php' );
$class_difference = new class_difference();
$class_difference->method = 'PHP';
//-----------------------------------------
// Get template bits to check
//-----------------------------------------
$this->ipsclass->DB->build_query( array( 'select' => '*',
'from' => 'skin_templates',
'where' => 'set_id=1',
'order' => 'suid ASC',
'limit' => array( intval( $current_session['diff_session_done'] ), intval( $pergo ) ) ) );
$outer = $this->ipsclass->DB->exec_query();
if ( ! $this->ipsclass->DB->get_num_rows( $outer ) )
{
$done = 1;
}
else
{
while( $row = $this->ipsclass->DB->fetch_row( $outer ) )
{
//-----------------------------------------
// Get corresponding row from diff table
//-----------------------------------------
$diff_row = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*',
'from' => 'templates_diff_import',
'where' => "diff_func_group='{$row['group_name']}' AND diff_func_name='{$row['func_name']}' AND diff_session_id=".$diff_session_id ) );
//-----------------------------------------
// Got anything?
//-----------------------------------------
if ( $diff_row['diff_key'] )
{
//-----------------------------------------
// Get difference
//-----------------------------------------
$difference = $class_difference->get_differences( $row['section_content'], $diff_row['diff_func_content'] );
//-----------------------------------------
// Got any differences?
//-----------------------------------------
if ( $class_difference->diff_found )
{
//-----------------------------------------
// Get corresponding row from diff table
//-----------------------------------------
$diff_check = $this->ipsclass->DB->build_and_exec_query( array( 'select' => 'diff_change_key',
'from' => 'template_diff_changes',
'where' => "diff_change_key='" . $diff_session_id.':'.$row['group_name'].':'.$row['func_name'] . "'" ) );
if( $diff_check['diff_change_key'] )
{
$this->ipsclass->DB->do_update( 'template_diff_changes', array( 'diff_change_func_group' => $row['group_name'],
'diff_change_func_name' => $row['func_name'],
'diff_change_content' => $difference,
'diff_change_type' => 1,
'diff_session_id' => $diff_session_id ),
"diff_change_key='" . $diff_session_id.':'.$row['group_name'].':'.$row['func_name'] . "'" );
}
else
{
$this->ipsclass->DB->do_insert( 'template_diff_changes', array( 'diff_change_key' => $diff_session_id.':'.$row['group_name'].':'.$row['func_name'],
'diff_change_func_group' => $row['group_name'],
'diff_change_func_name' => $row['func_name'],
'diff_change_content' => $difference,
'diff_change_type' => 1,
'diff_session_id' => $diff_session_id ) );
}
}
}
else
{
if ( ! $current_session['diff_session_ignore_missing'] )
{
$this->ipsclass->DB->do_insert( 'template_diff_changes', array( 'diff_change_key' => $diff_session_id.':'.$row['group_name'].':'.$row['func_name'],
'diff_change_func_group' => $row['group_name'],
'diff_change_func_name' => $row['func_name'],
'diff_change_content' => htmlspecialchars($row['section_content']),
'diff_change_type' => 0,
'diff_session_id' => $diff_session_id ) );
}
}
//-----------------------------------------
// Increment
//-----------------------------------------
$current_session['diff_session_done']++;
}
}
//-----------------------------------------
// Update current session
//-----------------------------------------
$this->ipsclass->DB->do_update( 'template_diff_session', array( 'diff_session_done' => intval( $current_session['diff_session_done'] ) ), 'diff_session_id='.$diff_session_id );
//-----------------------------------------
// Done or more?
//-----------------------------------------
if ( ! $done )
{
$this->ipsclass->admin->output_multiple_redirect_hit( $this->ipsclass->base_url.'&'.$this->ipsclass->form_code_js."&code=skin_diff_process&diff_session_id={$diff_session_id}&pergo=".$pergo,
$img.' '.$current_session['diff_session_done'].' èç '. $current_session['diff_session_togo'] .' øàáëîíîâ îáðàáîòàíî...' );
}
else
{
$this->ipsclass->admin->output_multiple_redirect_done( "<a href='{$this->ipsclass->base_url}&{$this->ipsclass->form_code}&code=skin_diff_view&diff_session_id={$diff_session_id}' target='_top'>Ðåçóëüòàòû</a>");
}
}
/*-------------------------------------------------------------------------*/
// Compare skin differences [START]
/*-------------------------------------------------------------------------*/
/**
* Compare skin differences (START)
*
* @since 2.1.0.2005-07-22
*/
function skin_differences_list()
{
//-----------------------------------------
// Init
//-----------------------------------------
$content = '';
//-----------------------------------------
// Get sessions
//-----------------------------------------
$this->ipsclass->DB->build_query( array( 'select' => '*',
'from' => 'template_diff_session',
'order' => 'diff_session_updated DESC' ) );
$this->ipsclass->DB->exec_query();
while( $row = $this->ipsclass->DB->fetch_row() )
{
//-----------------------------------------
// Gen data
//-----------------------------------------
$row['_date'] = $this->ipsclass->get_date( $row['diff_session_updated'], 'TINY' );
//-----------------------------------------
// Culmulate
//-----------------------------------------
$content .= $this->html->skin_diff_main_row( $row );
}
$this->ipsclass->html = $this->html->skin_diff_main_overview( $content );
$this->ipsclass->admin->output();
}
}
?>