Version 3.0.5

This commit is contained in:
Neo committed 2025-12-19 00:31:03 -08:00
1 parent 19b38c7c74
commit 1d4720f3e2
3755 files changed
+508378 -664541

No files matched your search

@@ -0,0 +1,268 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Admin log skin file
* Last Updated: $Date: 2009-09-24 16:56:42 -0400 (Thu, 24 Sep 2009) $
*
* @author $Author: rikki $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Core
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 5154 $
*/
class cp_skin_adminlogs extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* Show the splash screen for the logs
*
* @access public
* @return string HTML
*/
public function logSplashScreen() {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='acp-box'>
<h3>{$this->lang->words['choose_splash']}</h3>
<table width='100%' class='alternate_rows'>
<tr><td><a href='{$this->settings['base_url']}&amp;module=logs&amp;section=errorlogs'>{$this->lang->words['error_log_thelogs']}</a></td></tr>
<tr><td><a href='{$this->settings['base_url']}&amp;module=logs&amp;section=adminlogs'>{$this->lang->words['alog_adminlogs']}</a></td></tr>
<tr><td><a href='{$this->settings['base_url']}&amp;module=logs&amp;section=modlogs'>{$this->lang->words['mlog_modlogs']}</a></td></tr>
<tr><td><a href='{$this->settings['base_url']}&amp;module=logs&amp;section=emaillogs'>{$this->lang->words['elog_emaillogs']}</a></td></tr>
<tr><td><a href='{$this->settings['base_url']}&amp;module=logs&amp;section=emailerrorlogs'>{$this->lang->words['elog_email_err_logs']}</a></td></tr>
<tr><td><a href='{$this->settings['base_url']}&amp;module=logs&amp;section=spiderlogs'>{$this->lang->words['slog_spider_logs']}</a></td></tr>
<tr><td><a href='{$this->settings['base_url']}&amp;module=logs&amp;section=warnlogs'>{$this->lang->words['wlog_warn_logs']}</a></td></tr>
<tr><td><a href='{$this->settings['base_url']}&amp;module=tools&amp;section=api&amp;do=log_list'>{$this->lang->words['api_error_logs']}</a></td></tr>
<tr><td><a href='{$this->settings['base_url']}&amp;module=system&amp;section=taskmanager&amp;do=task_logs'>{$this->lang->words['sched_error_logs']}</a></td></tr>
<tr><td><a href='{$this->settings['base_url']}&amp;module=system&amp;section=loginlog&amp;do=show'>{$this->lang->words['al_error_logs']}</a></td></tr>
<tr><td><a href='{$this->settings['base_url']}&amp;module=logs&amp;section=spamlogs&amp;do=show'>{$this->lang->words['slog_spamlogs']}</a></td></tr>
</table>
</div>
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* Show the splash screen for the admin logs
*
* @access public
* @param array Rows
* @param array Admins
* @return string HTML
*/
public function adminlogsWrapper( $rows, $admins ) {
$form_array = array(
0 => array( 'member_id' , $this->lang->words['alog_id'] ),
1 => array( 'note' , $this->lang->words['alog_performed'] ),
2 => array( 'ip_address' , $this->lang->words['alog_ip'] ),
3 => array( 'appcomponent' , $this->lang->words['alog_app'] ),
4 => array( 'module' , $this->lang->words['alog_mod'] ),
5 => array( 'section' , $this->lang->words['alog_sec'] ),
6 => array( 'do' , $this->lang->words['alog_do'] ),
);
$form = array();
$form['search_for'] = $this->registry->output->formInput( "search_string" );
$form['search_in'] = $this->registry->output->formDropdown( "search_type", $form_array );
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$this->lang->words['alog_title']}</h2>
</div>
<div class="acp-box">
<h3>{$this->lang->words['alog_last5']}</h3>
<table class='alternate_rows' width='100%'>
<tr>
<th width='20%'>{$this->lang->words['alog_member']}</th>
<th width='40%'>{$this->lang->words['alog_performed']}</th>
<th width='20%'>{$this->lang->words['alog_date']}</th>
<th width='20%'>{$this->lang->words['alog_ip']}</th>
</tr>
HTML;
if( count($rows) AND is_array($rows) )
{
foreach( $rows as $row )
{
$IPBHTML .= <<<HTML
<tr>
<td>{$row['members_display_name']}</td>
<td><span style='color:{$row['color']}'>{$row['note']}</span></td>
<td>{$row['_time']}</td>
<td>{$row['ip_address']}</td>
</tr>
HTML;
}
}
else
{
$IPBHTML .= <<<HTML
<tr>
<td colspan='4' align='center'>{$this->lang->words['alog_noresults']}</td>
</tr>
HTML;
}
$IPBHTML .= <<<HTML
</table>
</div>
<br />
<div class="acp-box">
<h3>{$this->lang->words['alog_saved']}</h3>
<table class='alternate_rows' width='100%'>
<tr>
<th width='30%'>{$this->lang->words['alog_member']}</th>
<th width='20%'>{$this->lang->words['alog_performed']}</th>
<th width='20%'>{$this->lang->words['alog_viewall']}</th>
<th width='30%'>{$this->lang->words['alog_removeall']}</th>
</tr>
HTML;
if( count($admins) AND is_array($admins) )
{
foreach( $admins as $row )
{
$IPBHTML .= <<<HTML
<tr>
<td>{$row['members_display_name']}</td>
<td>{$row['act_count']}</td>
<td><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=view&amp;mid={$row['member_id']}'>{$this->lang->words['alog_view']}</a></td>
<td><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=remove&amp;mid={$row['member_id']}'>{$this->lang->words['alog_remove']}</a></td>
</tr>
HTML;
}
}
else
{
$IPBHTML .= <<<HTML
<tr>
<td colspan='4' align='center'>{$this->lang->words['alog_noresults']}</td>
</tr>
HTML;
}
$IPBHTML .= <<<HTML
</table>
</div>
<br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='view' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class="acp-box">
<h3>{$this->lang->words['alog_search']}</h3>
<ul class="acp-form alternate_rows">
<li>
<label>{$this->lang->words['alog_searchfor']}</label>
{$form['search_for']}
</li>
<li>
<label>{$this->lang->words['alog_searchin']}</label>
{$form['search_in']}
</li>
</ul>
<div class="acp-actionbar">
<input value="{$this->lang->words['alog_searchbutton']}" class="button primary" accesskey="s" type="submit" />
</div>
</div>
</form>
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* View an individual admin's logs
*
* @access public
* @param array Rows
* @param string Page links
* @return string HTML
*/
public function adminlogsView( $rows, $pages ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$this->lang->words['alog_title']}</h2>
</div>
<div class="acp-box">
<h3>{$this->lang->words['alog_saved']}</h3>
<table class="alternate_rows" width='100%'>
<tr>
<th width='20%'>{$this->lang->words['alog_member']}</th>
<th width='40%'>{$this->lang->words['alog_performed']}</th>
<th width='20%'>{$this->lang->words['alog_date']}</th>
<th width='20%'>{$this->lang->words['alog_ip']}</th>
</tr>
HTML;
if( count($rows) AND is_array($rows) )
{
foreach( $rows as $row )
{
$IPBHTML .= <<<HTML
<tr>
<td>{$row['members_display_name']}</td>
<td><span style='color:{$row['color']}'>{$row['note']}</span></td>
<td>{$row['_time']}</td>
<td>{$row['ip_address']}</td>
</tr>
HTML;
}
}
else
{
$IPBHTML .= <<<HTML
<tr>
<td colspan='4' align='center'>{$this->lang->words['alog_noresults']}</td>
</tr>
HTML;
}
$IPBHTML .= <<<HTML
</table>
<div class='acp-actionbar'>
<div class="leftaction">{$pages}</div>
</div>
</div>
<br />
HTML;
//--endhtml--//
return $IPBHTML;
}
}
@@ -0,0 +1,343 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* API users skin file
* Last Updated: $Date: 2009-08-18 16:46:02 -0400 (Tue, 18 Aug 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Core
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 5027 $
*/
class cp_skin_api extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* View api log details
*
* @access public
* @param array Log record
* @return string HTML
*/
public function api_log_detail( $log ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<div class='acp-box'>
<h3>{$this->lang->words['a_detail']}</h3>
<table class='alternate_rows'>
<tr>
<td>
<fieldset>
<legend>{$this->lang->words['a_basics']}</legend>
<table width='100%' cellpadding='4' cellspacing='0'>
<tr>
<td width='30%' class='tablerow1'>{$this->lang->words['a_key']}</td>
<td width='70%' class='tablerow1'><strong>{$log['api_log_key']}</strong></td>
</tr>
<tr>
<td class='tablerow1'>{$this->lang->words['a_ip']}</td>
<td class='tablerow1'>{$log['api_log_ip']}</td>
</tr>
<tr>
<td class='tablerow1'>{$this->lang->words['a_time']}</td>
<td class='tablerow1'>{$log['_api_log_date']}</td>
</tr>
<tr>
<td class='tablerow1'>{$this->lang->words['a_success']}</td>
<td class='tablerow1'><img src='{$this->settings['skin_acp_url']}/images/{$log['_api_log_allowed']}' border='0' alt='-' class='ipd' /></td>
</tr>
</table>
</fieldset>
<br />
<fieldset>
<legend>{$this->lang->words['a_formdata']}</legend>
<div style='border:1px solid black;background-color:#FFF;padding:4px;white-space:pre;height:400px;overflow:auto'>
{$log['_api_log_query']}
</div>
</fieldset>
</td>
</tr>
</table>
</div>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* View API login logs
*
* @access public
* @param array Rows
* @param string Page links
* @return string HTML
*/
public function api_login_view( $logs, $links ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<div class='section_title'>
<h2>{$this->lang->words['a_title']}</h2>
</div>
<div class='acp-box'>
<h3>{$this->lang->words['a_requestlog']}</h3>
<table class='alternate_rows'>
<tr>
<th width='1%'>&nbsp;</th>
<th width='30%'>{$this->lang->words['a_key']}</th>
<th width='20%'>{$this->lang->words['a_ip']}</th>
<th width='44%' align='center'>{$this->lang->words['a_date']}</th>
<th width='5%' align='center'>{$this->lang->words['a_status']}</th>
<th width='5%' align='center'>{$this->lang->words['a_log']}</th>
</tr>
EOF;
if ( is_array( $logs ) AND count( $logs ) )
{
foreach( $logs as $r )
{
$IPBHTML .= <<<EOF
<tr>
<td width='1' valign='middle'>
<img src='{$this->settings['skin_acp_url']}/images/folder_components/xmlrpc/log_row.png' border='0' alt='-' class='ipd' />
</td>
<td><strong>{$r['api_log_key']}</strong></td>
<td><div class='desctext'>{$r['api_log_ip']}</div></td>
<td>{$r['_api_log_date']}</td>
<td><img src='{$this->settings['skin_acp_url']}/images/{$r['_api_log_allowed']}' border='0' alt='-' class='ipd' /></td>
<td width='1' valign='middle'>
<a href='#' onclick="return acp.openWindow('{$this->settings['base_url']}{$this->form_code}&amp;do=log_view_detail&amp;api_log_id={$r['api_log_id']}', 800, 600)" title='{$this->lang->words['a_viewdetails']}'><img src='{$this->settings['skin_acp_url']}/images/folder_components/index/view.png' border='0' alt='-' class='ipd' /></a>
</td>
</tr>
EOF;
}
}
$IPBHTML .= <<<EOF
</table>
<div class='acp-actionbar'>$links</div>
</div>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* List the api users
*
* @access public
* @param array Rows
* @return string HTML
*/
public function api_list( $api_users ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<div class='section_title'>
<h2>{$this->lang->words['a_users']}</h2>
<ul class='context_menu'>
<li><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=api_add' style='text-decoration:none'><img src='{$this->settings['skin_acp_url']}/_newimages/icons/add.png' alt='' /> {$this->lang->words['a_create']}</a></li>
</ul>
</div>
<div class='acp-box'>
<h3>{$this->lang->words['a_users']}</h3>
<table class='alternate_rows'>
<tr>
<th width='1%'>&nbsp;</th>
<th width='40%'>{$this->lang->words['a_user']}</th>
<th width='30%'>{$this->lang->words['a_key']}</th>
<th width='20%'>{$this->lang->words['a_ip']}</th>
<th width='5%'>{$this->lang->words['a_options']}</th>
</tr>
EOF;
if ( count( $api_users ) )
{
foreach( $api_users as $user )
{
$IPBHTML .= <<<EOF
<tr>
<td><img src='{$this->settings['skin_acp_url']}/images/folder_components/xmlrpc/api_user.png' class='ipb' /></td>
<td><strong>{$user['api_user_name']}</strong>
<td><strong style='font-size:14px'>{$user['api_user_key']}</strong>
<td><strong>{$user['api_user_ip']}</strong>
<td width='5%'>
<img class='ipbmenu' id="menu_{$user['api_user_id']}" src='{$this->settings['skin_acp_url']}/_newimages/menu_open.png' alt='{$this->lang->words['a_options']}' />
<ul class='acp-menu' id='menu_{$user['api_user_id']}_menucontent'>
<li class='icon edit'><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=api_edit&amp;api_user_id={$user['api_user_id']}'>{$this->lang->words['a_edit']}</a></li>
<li class='icon delete'><a href='#' onclick='return acp.confirmDelete("{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=api_remove&amp;api_user_id={$user['api_user_id']}");'>{$this->lang->words['a_remove']}</a></li>
</ul>
</td>
</tr>
EOF;
}
}
else
{
$IPBHTML .= <<<EOF
<tr>
<td colspan='5' align='center'>{$this->lang->words['a_nousers']}<br /><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=api_add'>{$this->lang->words['a_createone']}</a></td>
</tr>
EOF;
}
$IPBHTML .= <<<EOF
</table>
</div>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Form to add/edit an API user
*
* @access public
* @param array Form elements
* @param string Form title
* @param string Action code
* @param string Button text
* @param array API user record
* @param string Type (add|edit)
* @param array Permission types
* @return string HTML
*/
public function api_form( $form, $title, $formcode, $button, $api_user, $type, $permissions ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<form id='mainform' action='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=$formcode&amp;api_user_id={$api_user['api_user_id']}' method='post'>
<div class='acp-box'>
<h3>$title</h3>
<ul class='acp-form alternate_rows'>
<li><label class='head'>{$this->lang->words['a_userbasics']}</label></li>
EOF;
if ( $type == 'add' )
{
$IPBHTML .= <<<EOF
<li>
<label>{$this->lang->words['a_userkey']}<span class='desctext'>{$this->lang->words['a_key_info']}</span></label>
<input type='hidden' name='api_user_key' value='{$form['_api_user_key']}' />
{$form['_api_user_key']}
</li>
EOF;
}
$IPBHTML .= <<<EOF
<li>
<label>{$this->lang->words['a_usertitle']}<span class='desctext'>{$this->lang->words['a_usertitle_info']}</span></label>
{$form['api_user_name']}
</li>
<li>
<label>{$this->lang->words['a_restrictip']}<span class='desctext'>{$this->lang->words['a_restrictip_info']}</span></label>
{$form['api_user_ip']}
</li>
</ul>
</div>
<br />
<div class='acp-box'>
<ul id='tabstrip_apiperms' class='tab_bar no_title'>
EOF;
if ( is_array( $permissions ) AND count( $permissions ) )
{
foreach( $permissions as $key => $data )
{
$IPBHTML .= <<<EOF
<li id='tabtab-{$key}'>{$data['title']}</li>
EOF;
}
}
$IPBHTML .= <<<EOF
</ul>
<script type="text/javascript" defer="defer">
//<![CDATA[
document.observe("dom:loaded",function()
{
ipbAcpTabStrips.register('tabstrip_apiperms');
ipbAcpTabStrips.doToggle($('tabtab-ipb'));
});
//]]>
</script>
EOF;
if ( is_array( $permissions ) AND count( $permissions ) )
{
foreach( $permissions as $key => $data )
{
$IPBHTML .= <<<EOF
<div id='tabpane-{$key}'>
<ul class='acp-form alternate_rows'>
EOF;
if ( is_array( $permissions[ $key ]['form_perms'] ) AND ( $permissions[ $key ]['form_perms'] ) )
{
foreach( $permissions[ $key ]['form_perms'] as $perm => $_data )
{
$IPBHTML .= <<<EOF
<li>
<label>{$this->lang->words['a_allowaccess']} {$_data['title']}</label>
{$_data['form']}
</li>
EOF;
}
}
$IPBHTML .= <<<EOF
</ul>
</div>
EOF;
}
}
$IPBHTML .= <<<EOF
<div class='acp-actionbar'>
<div class='centeraction'>
<input type='submit' value=' $button ' class='button primary' />
</div>
</div>
</div>
</form>
EOF;
//--endhtml--//
return $IPBHTML;
}
}
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,197 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Badwords skin file
* Last Updated: $Date: 2009-05-26 18:02:08 -0400 (Tue, 26 May 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Core
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 4690 $
*/
class cp_skin_badwords extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* Edit badwords
*
* @access public
* @param int ID
* @param array Form elements
* @return string HTML
*/
public function badwordEditForm( $id, $form ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$this->lang->words['bwl_title']}</h2>
</div>
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='badword_doedit' />
<input type='hidden' name='id' value='{$id}' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class="acp-box">
<h3>{$this->lang->words['bwl_edit_filter']}</h3>
<ul class="acp-form alternate_rows">
<li>
<label>{$this->lang->words['bwl_before']}</label>
{$form['before']}
</li>
<li>
<label>{$this->lang->words['bwl_after']}</label>
{$form['after']}
</li>
<li>
<label>{$this->lang->words['bwl_method']}</label>
{$form['match']}
</li>
</ul>
<div class="acp-actionbar">
<input type='submit' value='{$this->lang->words['bwl_edit_filter']}' class='button primary' accesskey='s'>
</div>
</div>
</form>
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* Badwords wrapper
*
* @access public
* @param array Badword rows
* @return string HTML
*/
public function badwordsWrapper( $rows ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$this->lang->words['bwl_title']}</h2>
<ul class='context_menu'>
<li>
<a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=badword_export'>
<img src='{$this->settings['skin_acp_url']}/_newimages/icons/exclamation_go.png' alt='' />
{$this->lang->words['bwl_export']}
</a>
</li>
</ul>
</div>
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='badword_add' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class="acp-box">
<h3>{$this->lang->words['bwl_current']}</h3>
<table class="alternate_rows">
<tr>
<th width='40%'>{$this->lang->words['bwl_before']}</th>
<th width='40%'>{$this->lang->words['bwl_after']}</th>
<th width='15%'>{$this->lang->words['bwl_method']}</th>
<th width='5%'>{$this->lang->words['bwl_options']}</th>
</tr>
HTML;
foreach( $rows as $row )
{
$IPBHTML .= <<<HTML
<tr>
<td>{$row['type']}</td>
<td>{$row['replace']}</td>
<td>{$row['method']}</td>
<td style='text-align: center'>
<img class='ipbmenu' id="menu_{$row['wid']}" src='{$this->settings['skin_acp_url']}/_newimages/menu_open.png' alt='{$this->lang->words['bwl_options']}' />
<ul class='acp-menu' id='menu_{$row['wid']}_menucontent'>
<li class='icon edit'><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=badword_edit&id={$row['wid']}'>{$this->lang->words['bwl_filter_edit']}</a></li>
<li class='icon delete'><a href='#' onclick='return acp.confirmDelete("{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=badword_remove&id={$row['wid']}");'>{$this->lang->words['bwl_filter_remove']}</a></li>
</ul>
</td>
</tr>
HTML;
}
$IPBHTML .= <<<HTML
</table>
</div>
<br />
<div class="acp-box">
<h3>{$this->lang->words['bwl_filter_add']}</h3>
<table class="alternate_rows">
<tr>
<th width="40%">{$this->lang->words['bwl_before']}</th>
<th width="40%">{$this->lang->words['bwl_after']}</th>
<th width="20%">{$this->lang->words['bwl_method']}</th>
</tr>
<tr>
<td width="40%"><input name="before" value="" size="30" class="textinput" type="text"></td>
<td width="40%"><input name="after" value="" size="30" class="textinput" type="text"></td>
<td width="20%">
<select name="match" class="dropdown">
<option value="1">{$this->lang->words['bwl_exact']}</option>
<option value="0">{$this->lang->words['bwl_loose']}</option>
</select>
</td>
</tr>
</table>
<div class="acp-actionbar">
<input value="{$this->lang->words['bwl_filter_add']}" class="button primary" accesskey="s" type="submit">
</div>
</div>
</form>
<br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='uploadform' enctype='multipart/form-data' id='uploadform'>
<input type='hidden' name='do' value='badword_import' />
<input type='hidden' name='MAX_FILE_SIZE' value='10000000000' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class="acp-box">
<h3>{$this->lang->words['bwl_import']}</h3>
<ul class="acp-form alternate_rows">
<li>
<label>{$this->lang->words['bwl_import_upload']}<span class="desctext">{$this->lang->words['bwl_import_info']}</span></label>
<input class='textinput' type='file' size='30' name='FILE_UPLOAD'>
</li>
</ul>
<div class="acp-actionbar">
<input type='submit' value='{$this->lang->words['bwl_import']}' class='button primary' accesskey='s'>
</div>
</div>
</form>
HTML;
//--endhtml--//
return $IPBHTML;
}
}
@@ -0,0 +1,537 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* BBcode skin file
* Last Updated: $Date: 2009-07-09 22:20:10 -0400 (Thu, 09 Jul 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Core
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 4864 $
*/
class cp_skin_bbcode extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* BBCode wrapper
*
* @access public
* @param string Content (compiled HTML rows)
* @return string HTML
*/
public function bbcodeWrapper($content) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<style type="text/css">
@import url('{$this->settings['public_dir']}style_css/prettify.css');
</style>
<script type="text/javascript" src="{$this->settings['public_dir']}js/3rd_party/prettify/prettify.js"></script>
<!-- By default we load generic code, php, css, sql and xml/html; load others here if desired -->
<script type="text/javascript">
Event.observe( window, 'load', function(e){ prettyPrint() });
</script>
<div class='section_title'>
<h2>{$this->lang->words['bbcode_header']}</h2>
<ul class='context_menu'>
<li>
<a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=bbcode_add'>
<img src='{$this->settings['skin_acp_url']}/_newimages/icons/style_add.png' alt='' />
{$this->lang->words['addnew_bbcode']}
</a>
</li>
<li>
<a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=bbcode_export'>
<img src='{$this->settings['skin_acp_url']}/_newimages/icons/style_go.png' alt='' />
{$this->lang->words['export_bbcode']}
</a>
</li>
<li>
<a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=bbcode_import_all'>
<img src='{$this->settings['skin_acp_url']}/_newimages/icons/style_add.png' alt='' />
{$this->lang->words['import_bbcode_all']}
</a>
</li>
<li>
<a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=bbcode_export_all'>
<img src='{$this->settings['skin_acp_url']}/_newimages/icons/style_go.png' alt='' />
{$this->lang->words['export_bbcode_all']}
</a>
</li>
</ul>
</div>
<div class="acp-box">
<h3>{$this->lang->words['your_bbcodes']}</h3>
<table class="alternate_rows" width='100%'>
<tr>
<th width='45%'>{$this->lang->words['bbcode_title']}</th>
<th width='50%'>{$this->lang->words['bbcode_tag']}</th>
<th width='5%'>{$this->lang->words['bbcode_options']}</th>
</tr>
{$content}
</table>
</div>
<br />
<form action='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=bbcode_test' method='post'>
<div class="acp-box">
<h3>{$this->lang->words['test_parse']}</h3>
<p align="center"><textarea name='bbtest' rows='10' cols='70'>
EOF;
$IPBHTML .= isset($_POST['bbtest']) ? $_POST['bbtest'] : $this->lang->words['enter_test_parse'];
$IPBHTML .= <<<EOF
</textarea>
</p>
<div class="acp-actionbar">
<input type='submit' value='{$this->lang->words['test_parse']}' class="button primary"/>
</div>
</div>
</form>
<br />
<form action='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=bbcode_import' method='post' enctype='multipart/form-data'>
<div class="acp-box">
<h3>{$this->lang->words['import_new_bbcode']}</h3>
<ul class="acp-form alternate_rows">
<li>
<label>{$this->lang->words['upload_bbcode_xml']}<span class='desctext'>{$this->lang->words['upload_bbcode_dupe']}</span></label>
<input type='file' name='FILE_UPLOAD' />
</li>
<ul>
<div class="acp-actionbar">
<input type='submit' value='{$this->lang->words['bbcode_import']}' class="button primary" />
</div>
</div>
</form>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* BBCode record
*
* @access public
* @param array BBCode info
* @return string HTML
*/
public function bbcodeRow( $row ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<tr>
<td>{$row['bbcode_title']}</td>
<td><pre>{$row['bbcode_fulltag']}</pre></td>
<td style='text-align: center'>
<img class='ipbmenu' id="menu_{$row['bbcode_id']}" src='{$this->settings['skin_acp_url']}/_newimages/menu_open.png' alt='{$this->lang->words['bbcode_options']}' />
<ul class='acp-menu' id='menu_{$row['bbcode_id']}_menucontent'>
<li class='icon edit'><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=bbcode_edit&id={$row['bbcode_id']}'>{$this->lang->words['edit_bbcode']}</a></li>
<li class='icon export'><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=bbcode_export&id={$row['bbcode_id']}'>{$this->lang->words['export_bbcode']}</a></li>
EOF;
if( IN_DEV OR !$row['bbcode_protected'] )
{
$IPBHTML .= <<<EOF
<li class='icon delete'><a href='#' onclick='return acp.confirmDelete("{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=bbcode_delete&id={$row['bbcode_id']}");'>{$this->lang->words['delete_bbcode']}</a></li>
EOF;
}
$IPBHTML .= <<<EOF
</ul>
</td>
</tr>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* BBCode add/edit form
*
* @access public
* @param string Type (add|edit)
* @param array BBcode info
* @param array Sections to edit in
* @return string HTML
*/
public function bbcodeForm( $type, $bbcode, $sections ) {
//-----------------------------------------
// Set some of the form variables
//-----------------------------------------
$form_code = $type == 'edit' ? 'bbcode_doedit' : 'bbcode_doadd';
$button = $type == 'edit' ? $this->lang->words['edit_bbcode'] : $this->lang->words['addnew_bbcode'];
$secure_key = ipsRegistry::getClass('adminFunctions')->getSecurityKey();
$all_groups = array( 0 => array ( 'all', $this->lang->words['all_groups'] ) );
foreach( $this->cache->getCache('group_cache') as $group_data )
{
$all_groups[] = array( $group_data['g_id'], $group_data['g_title'] );
}
$ss_dropdown = array( 0 => array ( 'all', $this->lang->words['available_sections'] ) );
if( is_array($sections) AND count($sections) )
{
foreach( $sections as $sect_key => $sect_value )
{
$ss_dropdown[] = array( $sect_key, $sect_value );
}
}
$form = array();
$form['bbcode_title'] = $this->registry->output->formInput( 'bbcode_title', $this->request['bbcode_title'] ? $this->request['bbcode_title'] : $bbcode['bbcode_title'] );
$form['bbcode_desc'] = $this->registry->output->formTextarea( 'bbcode_desc', $this->request['bbcode_desc'] ? $this->request['bbcode_desc'] : $bbcode['bbcode_desc'] );
$form['bbcode_example'] = $this->registry->output->formTextarea( 'bbcode_example', $this->request['bbcode_example'] ? $this->request['bbcode_example'] : $bbcode['bbcode_example'] );
$form['bbcode_tag'] = '[ ' . $this->registry->output->formSimpleInput( 'bbcode_tag', $this->request['bbcode_tag'] ? $this->request['bbcode_tag'] : $bbcode['bbcode_tag'], 10) . ' ]';
$form['bbcode_useoption'] = $this->registry->output->formYesNo( 'bbcode_useoption', $this->request['bbcode_useoption'] ? $this->request['bbcode_useoption'] : $bbcode['bbcode_useoption'] );
$form['bbcode_switch_option'] = $this->registry->output->formYesNo( 'bbcode_switch_option', $this->request['bbcode_switch_option'] ? $this->request['bbcode_switch_option'] : $bbcode['bbcode_switch_option'] );
$form['bbcode_replace'] = $this->registry->output->formTextarea( 'bbcode_replace', htmlspecialchars($_POST['bbcode_replace'] ? $_POST['bbcode_replace'] : $bbcode['bbcode_replace']) );
$form['bbcode_menu_option_text'] = $this->registry->output->formSimpleInput( 'bbcode_menu_option_text', $this->request['bbcode_menu_option_text'] ? $this->request['bbcode_menu_option_text'] : $bbcode['bbcode_menu_option_text'], 50);
$form['bbcode_menu_content_text'] = $this->registry->output->formSimpleInput( 'bbcode_menu_content_text', $this->request['bbcode_menu_content_text'] ? $this->request['bbcode_menu_content_text'] : $bbcode['bbcode_menu_content_text'], 50);
$form['bbcode_single_tag'] = $this->registry->output->formYesNo( 'bbcode_single_tag', $this->request['bbcode_single_tag'] ? $this->request['bbcode_single_tag'] : $bbcode['bbcode_single_tag'] );
$form['bbcode_groups'] = $this->registry->output->formMultiDropdown( "bbcode_groups[]", $all_groups, $this->request['bbcode_groups'] ? $this->request['bbcode_groups'] : explode( ",", $bbcode['bbcode_groups'] ) );
$form['bbcode_sections'] = $this->registry->output->formMultiDropdown( "bbcode_sections[]", $ss_dropdown, $this->request['bbcode_sections'] ? $this->request['bbcode_sections'] : explode( ",", $bbcode['bbcode_sections'] ) );
$form['bbcode_php_plugin'] = $this->registry->output->formInput( 'bbcode_php_plugin', $this->request['bbcode_php_plugin'] ? $this->request['bbcode_php_plugin'] : $bbcode['bbcode_php_plugin'] );
$form['bbcode_no_parsing'] = $this->registry->output->formYesNo( 'bbcode_no_parsing', $this->request['bbcode_no_parsing'] ? $this->request['bbcode_no_parsing'] : $bbcode['bbcode_no_parsing'] );
$form['bbcode_protected'] = $this->registry->output->formYesNo( 'bbcode_protected', $this->request['bbcode_protected'] ? $this->request['bbcode_protected'] : $bbcode['bbcode_protected'] );
$form['bbcode_strip_search'] = $this->registry->output->formYesNo( 'bbcode_strip_search', $this->request['bbcode_strip_search'] ? $this->request['bbcode_strip_search'] : $bbcode['bbcode_strip_search'] );
$apps = array();
/* Application drop down options */
foreach( ipsRegistry::$applications as $app_dir => $app_data )
{
$apps[] = array( $app_dir, $app_data['app_title'] );
}
$form['bbcode_app'] = $this->registry->output->formDropdown( 'bbcode_app', $apps, $this->request['bbcode_app'] ? $this->request['bbcode_app'] : $bbcode['bbcode_app'] );
$form['bbcode_optional_option'] = $this->registry->output->formYesNo( 'bbcode_optional_option', $this->request['bbcode_optional_option'] ? $this->request['bbcode_optional_option'] : $bbcode['bbcode_optional_option'] );
$form['bbcode_aliases'] = $this->registry->output->formTextarea( 'bbcode_aliases', $this->request['bbcode_aliases'] ? $this->request['bbcode_aliases'] : $bbcode['bbcode_aliases'] );
$form['bbcode_image'] = $this->registry->output->formInput( 'bbcode_image', $this->request['bbcode_image'] ? $this->request['bbcode_image'] : $bbcode['bbcode_image'] );
/* Content cache is enabled? */
if ( $type == 'edit' AND IPSContentCache::isEnabled() )
{
$_cacheCount = IPSContentCache::count();
$form['drop_cache'] = $this->registry->output->formYesNo( 'drop_cache', $this->request['drop_cache'] );
$this->lang->words['bbcache_action'] = sprintf( $this->lang->words['bbcache_action'], $_cacheCount );
}
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<div class='section_title'>
<h2>{$this->lang->words['custom_bbcode_head']}</h2>
</div>
<form action='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do={$form_code}&amp;secure_key={$secure_key}' method='post'>
<input type='hidden' name='id' value='{$bbcode['bbcode_id']}' />
EOF;
if ( $form['drop_cache'] )
{
$IPBHTML .= <<<EOF
<div class='warning'>
<h4>{$this->lang->words['bbcache_title']}</h4>
{$this->lang->words['bbcache_desc']}
<p><strong>{$this->lang->words['bbcache_action']}</strong> {$form['drop_cache']}</p>
</div>
<br />
EOF;
}
$IPBHTML .= <<<EOF
<div class="acp-box">
<h3>{$button}</h3>
<ul class="acp-form alternate_rows">
<li>
<label>{$this->lang->words['bbcode_title']}</label>
{$form['bbcode_title']}
</li>
<li>
<label>{$this->lang->words['bbcode_description']}<span class='desctext'>{$this->lang->words['bbcode_usedinguide']}</span></label>
{$form['bbcode_desc']}
</li>
<li>
<label>{$this->lang->words['bbcode_example']}<span class='desctext'>{$this->lang->words['bbcode_usedinguide']}<br />{$this->lang->words['bbcode_example_info']}</span></label>
{$form['bbcode_example']}
</li>
<li>
<label>{$this->lang->words['bbcode_tag']}<span class='desctext'>{$this->lang->words['bbcode_tag_info']}</span></label>
{$form['bbcode_tag']}
</li>
<li>
<label>{$this->lang->words['bbcode_aliases']}<span class='desctext'>{$this->lang->words['bbcode_aliases_info']}</span></label>
{$form['bbcode_aliases']}
</li>
<li>
<label>{$this->lang->words['bbcode_singletag']}<span class='desctext'>{$this->lang->words['bbcode_singletag_info']}</span></label>
{$form['bbcode_single_tag']}
</li>
<li>
<label>{$this->lang->words['bbcode_useoption']}<span class='desctext'>{$this->lang->words['bbcode_useoption_info']}</span></label>
{$form['bbcode_useoption']}
</li>
<li>
<label>{$this->lang->words['bbcode_optional']}<span class='desctext'>{$this->lang->words['bbcode_optional_info']}</span></label>
{$form['bbcode_optional_option']}
</li>
<li>
<label>{$this->lang->words['bbcode_switch']}<span class='desctext'>{$this->lang->words['bbcode_switch_info']}</span></label>
{$form['bbcode_switch_option']}
</li>
<li>
<label>{$this->lang->words['bbcode_noparse']}<span class='desctext'>{$this->lang->words['bbcode_noparse_info']}</span></label>
{$form['bbcode_no_parsing']}
</li>
<li>
<label>{$this->lang->words['bbcode_stripsearch']}<span class='desctext'>{$this->lang->words['bbcode_stripsearch_info']}</span></label>
{$form['bbcode_strip_search']}
</li>
<li>
<label>{$this->lang->words['bbcode_replace']}<span class='desctext'>{$this->lang->words['bbcode_replace_info']}</span></label>
{$form['bbcode_replace']}
</li>
<li>
<label>{$this->lang->words['bbcode_php']}<span class='desctext'>{$this->lang->words['bbcode_php_info']}</span></label>
{$form['bbcode_php_plugin']}<br />
{$this->lang->words['bbcode_php_info_loc']}
</li>
<li>
<label>{$this->lang->words['bbcode_groups']}<span class='desctext'>{$this->lang->words['bbcode_groups_info']}</span></label>
{$form['bbcode_groups']}
</li>
<li>
<label>{$this->lang->words['bbcode_whereused']}<span class='desctext'>{$this->lang->words['bbcode_whereused_info']}</span></label>
{$form['bbcode_sections']}
</li>
<li>
<label>{$this->lang->words['bbcode_assoc_app']}</label>
{$form['bbcode_app']}
</li>
<li>
<label>{$this->lang->words['bbcode_image']}<span class='desctext'>{$this->lang->words['bbcode_image_info']}</span></label>
{$form['bbcode_image']}<br />
{$this->lang->words['bbcode_image_info_loc']}
</li>
<li>
<label>{$this->lang->words['bbcode_optdial']}<span class='desctext'>{$this->lang->words['bbcode_optdial_info']}</span></label>
{$form['bbcode_menu_option_text']}
</li>
<li>
<label>{$this->lang->words['bbcode_contdial']}<span class='desctext'>{$this->lang->words['bbcode_contdial_infp']}</span></label>
{$form['bbcode_menu_content_text']}
</li>
EOF;
if( IN_DEV )
{
$IPBHTML .= <<<EOF
<li>
<label>{$this->lang->words['bbcode_protected']}<span class='desctext'>{$this->lang->words['bbcode_protected_info']}</span></label>
{$form['bbcode_protected']}
</li>
EOF;
}
$IPBHTML .= <<<EOF
</ul>
<div class="acp-actionbar">
<input type='submit' value=' {$button} ' class="button primary" />
</div>
</div>
</form>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Media tag add/edit form
*
* @access public
* @param string Type (add|edit)
* @param array Tag info
* @param array Errors
* @return string HTML
*/
public function mediaTagForm( $type, $data, $errors=array() ) {
//-----------------------------------------
// Set some of the form variables
//-----------------------------------------
$form_code = $type == 'edit' ? 'domediatagedit' : 'domediatagadd';
$button = $type == 'edit' ? $this->lang->words['media_edit'] : $this->lang->words['media_add'];
$title = $type == 'edit' ? $this->lang->words['media_edit_replace'] : $this->lang->words['media_add_replace'];
$secure_key = ipsRegistry::getClass('adminFunctions')->getSecurityKey();
$form = array();
$form['mediatag_name'] = $this->registry->output->formInput( 'mediatag_name', $data['mediatag_name'], 'mediatag_name', 50 );
$form['mediatag_match'] = $this->registry->output->formInput( 'mediatag_match', $data['mediatag_match'], 'mediatag_match', 50 );
$form['mediatag_replace'] = $this->registry->output->formTextarea( 'mediatag_replace', $data['mediatag_replace'] );
$IPBHTML = "";
//--starthtml--//
if( is_array($errors) AND count($errors) )
{
$error_string = implode( '', $errors );
$IPBHTML .= <<<EOF
<div class='warning'><h4>{$this->lang->words['media_error']}</h4><ul>{$error_string}</ul></div><br />
EOF;
}
$IPBHTML .= <<<EOF
<form action='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do={$form_code}&amp;secure_key={$secure_key}' method='post'>
<input type='hidden' name='id' value='{$data['mediatag_id']}' />
<div class="acp-box">
<h3>{$title}</h3>
<ul class="acp-form alternate_rows">
<li>
<label>{$this->lang->words['media_title']}<span class='desctext'>{$this->lang->words['media_title_info']}</span></label>
{$form['mediatag_name']}
</li>
<li>
<label>{$this->lang->words['media_match']}<span class='desctext'>{$this->lang->words['media_match_info']}</span></label>
{$form['mediatag_match']}
</li>
<li>
<label>{$this->lang->words['media_html']}<span class='desctext'>{$this->lang->words['media_html_info']}</span></label>
{$form['mediatag_replace']}
</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value=' {$button} ' class="button primary" />
</div>
</div>
</form>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Media tags wrapper
*
* @access public
* @param string Content (compiled HTML rows)
* @return string HTML
*/
public function mediaTagWrapper($content) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<div class='section_title'>
<h2>{$this->lang->words['media_tag_title']}</h2>
<ul class='context_menu'>
<li><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=form_add'><img src='{$this->settings['skin_acp_url']}/_newimages/icons/add.png' alt='' /> {$this->lang->words['media_add']}</a></li>
<li><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=mediatag_export'><img src='{$this->settings['skin_acp_url']}/_newimages/icons/arrow_switch.png' alt='' /> {$this->lang->words['media_exports']}</a></li>
</ul>
</div>
<div class="acp-box">
<h3>{$this->lang->words['media_current']}</h3>
<table class="alternate_rows" width='100%'>
<tr>
<th width='95%'>{$this->lang->words['media_name']}</th>
<th width='5%'>{$this->lang->words['bbcode_options']}</th>
</tr>
{$content}
</table>
</div>
<br />
<form action='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=mediatag_import' method='post' enctype='multipart/form-data'>
<div class="acp-box">
<h3>{$this->lang->words['media_import']}</h3>
<ul class="acp-form alternate_rows">
<li>
<label>{$this->lang->words['media_upload']}<span class='desctext'>{$this->lang->words['media_upload_desc']}</span></label>
<input type='file' name='FILE_UPLOAD' />
</li>
</ul>
<div class="acp-actionbar">
<input type='submit' value='{$this->lang->words['media_import_button']}' class="button primary" />
</div>
</div>
</form>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Media tag record
*
* @access public
* @param array Row
* @return string HTML
*/
public function mediaTagRow( $row ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<tr>
<td>{$row['mediatag_name']}</td>
<td align='right'>
<img class="ipbmenu" id="menu{$row['mediatag_id']}" src="{$this->settings['skin_acp_url']}/_newimages/menu_open.png" alt="">
<ul style="position: absolute; display: none; z-index: 9999;" class="acp-menu" id='menu{$row['mediatag_id']}_menucontent'>
<li style="z-index: 10000;" class='icon edit'><a style="z-index: 10000;" href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=form_edit&id={$row['mediatag_id']}'>{$this->lang->words['media_edit']}</a></li>
<li style="z-index: 10000;" class='icon export'><a style="z-index: 10000;" href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=mediatag_export&id={$row['mediatag_id']}'>{$this->lang->words['media_export']}</a></li>
<li style="z-index: 10000;" class='icon delete'><a style="z-index: 10000;" href='#' onclick='return acp.confirmDelete("{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=do_del&amp;id={$row['mediatag_id']}")'>{$this->lang->words['media_delete']}</a></li>
</ul>
</a>
</td>
</tr>
EOF;
//--endhtml--//
return $IPBHTML;
}
}
@@ -0,0 +1,895 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Diagnostics skin file
* Last Updated: $Date: 2009-10-01 10:02:08 -0400 (Thu, 01 Oct 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Core
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 5190 $
*/
class cp_skin_diagnostics extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* DB Index checker
*
* @access public
* @param array Errors
* @param array Tables
* @return string HTML
*/
public function indexChecker( $errors=array(), $tables=array() ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$this->lang->words['d_ititle']}</h2>
</div>
HTML;
if( count( $errors ) )
{
$IPBHTML .= <<<HTML
<div class='acp-box alternate_rows'>
<h3>{$app}</h3>
<table width='100%'>
<th>{$this->lang->words['d_ierrors']}</th>
<tr>
<td><span class='rss-feed-invalid'>{$this->lang->words['d_ifixall']}<a href='{$this->settings['base_url']}{$this->form_code}&amp;section=diagnostics&amp;do=dbindex&amp;fix=all'>{$this->lang->words['d_ifixall_link']}</a></span></td>
</tr>
</table>
</div><br />
HTML;
}
$IPBHTML .= <<<HTML
<div class='acp-box alternate_rows'>
<h3>{$this->lang->words['d_dnav']}</h3>
<table width='100%'>
<tr>
<th>{$this->lang->words['chckr_table']}</th>
<th>{$this->lang->words['chckr_status']}</th>
<th>{$this->lang->words['chckr_fix']}</th>
</tr>
HTML;
if( is_array( $tables ) && count( $tables ) )
{
$i = 0;
foreach( $tables as $app_title => $_tables )
{
$IPBHTML .= <<<HTML
<tr>
<th colspan='3'>{$app_title}</th>
</tr>
HTML;
foreach( $_tables as $r )
{
if( $r['status'] == 'ok' )
{
$IPBHTML .= <<<HTML
<tr>
<td><span style='color:green'>{$r['table']}</span></td>
<td>
<span style='color:green'>
<ul class='bullets'>
<li>
HTML;
$IPBHTML .= implode( "</li><li>", $r['index'] );
$IPBHTML .= <<<HTML
</li>
</ul>
</span>
</td>
<td>&nbsp;</td>
</tr>
HTML;
}
else
{
$IPBHTML .= <<<HTML
<tr>
<td><span style='color:red'>{$r['table']}</span></td>
<td>
<ul class='bullets'>
HTML;
foreach( $r['index'] as $index )
{
if( in_array( $index, $r['missing'] ) )
{
$IPBHTML .= "<li><span style='color:red'>Отсутствует индекс: {$index}</span></li>";
}
else
{
$IPBHTML .= "<li><span style='color:green'>{$index}</li>";
}
}
$IPBHTML .= <<<HTML
</ul>
</td>
<td>
<a href='{$this->settings['base_url']}{$this->form_code}&amp;section=diagnostics&amp;do=dbindex&amp;fix={$r['table']}'>{$this->lang->words['d_inauto']}</a>{$this->lang->words['d_iman']}
<div>
<ul class='bullets'>
<li>
HTML;
$IPBHTML .= implode( "</li><li>", $r['fixsql'] );
$IPBHTML .= <<<HTML
</li>
</ul>
</div>
</td>
</tr>
HTML;
}
}
}
}
$IPBHTML .= <<<HTML
</table>
</div>
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* DB checker
*
* @access public
* @param array Errors
* @param array Tables
* @return string HTML
*/
public function dbChecker( $errors=array(), $tables=array() ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$this->lang->words['d_dtitle']}</h2>
</div>
HTML;
if( count( $errors ) )
{
$IPBHTML .= <<<HTML
<div class='acp-box alternate_rows'>
<h3>{$app}</h3>
<table width='100%'>
<th>{$this->lang->words['d_ierrors']}</th>
<tr>
<td><span class='rss-feed-invalid'>{$this->lang->words['d_ifixall']}<a href='{$this->settings['base_url']}{$this->form_code}&amp;section=diagnostics&amp;do=dbchecker&amp;fix=all'>{$this->lang->words['d_ifixall_link']}</a></span></td>
</tr>
</table>
</div><br />
HTML;
}
$IPBHTML .= <<<HTML
<div class='acp-box alternate_rows'>
<h3>{$this->lang->words['d_dnav']}</h3>
<table width='100%'>
<tr>
<th>{$this->lang->words['d_dtbl']}</th>
<th>{$this->lang->words['d_dstatus']}</th>
<th>{$this->lang->words['d_dfix']}</th>
</tr>
HTML;
if( count( $tables ) )
{
$i = 0;
foreach( $tables as $app_title => $_tables )
{
$IPBHTML .= <<<HTML
<tr>
<th colspan='3'>{$app_title}</th>
</tr>
HTML;
if( !is_array($_tables) OR !count($_tables) )
{
continue;
}
foreach( $_tables as $r )
{
$_column = '';
if( $r['column'] )
{
$_column = ' (' . $r['column'] . ')';
}
if( $r['status'] == 'ok' )
{
$IPBHTML .= <<<HTML
<tr>
<td><span style='color:green'>{$r['table']}{$_column}</span></td>
<td><img src='{$this->settings['skin_acp_url']}/images/aff_tick.png' border='0' alt='YN' class='ipd' /></td>
<td>&nbsp;</td>
</tr>
HTML;
}
else
{
$IPBHTML .= <<<HTML
<tr>
<td><span style='color:red'>{$r['table']}</span></td>
<td><img src='{$this->settings['skin_acp_url']}/images/aff_cross.png' border='0' alt='YN' class='ipd' /></td>
<td>
<a href='{$this->settings['base_url']}{$this->form_code}&amp;section=diagnostics&amp;do=dbchecker&amp;fix={$r['key']}'>{$this->lang->words['d_iauto']}</a>{$this->lang->words['d_iman']}
<div>
<ul class='bullets'>
<li>
HTML;
$IPBHTML .= implode( "</li><li>", $r['fixsql'] );
$IPBHTML .= <<<HTML
</li>
</ul>
</div>
</td>
</tr>
HTML;
}
}
}
}
$IPBHTML .= <<<HTML
</table>
</div>
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* Version history record
*
* @access public
* @param array Version info
* @return string HTML
*/
public function acp_version_history_row( $r ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<tr>
<td class='tablerow1'>{$r['upgrade_version_human']} ({$r['upgrade_version_id']})</td>
<td class='tablerow2'>{$r['_date']}</td>
</tr>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Version history wrapper
*
* @access public
* @param string Content
* @return string HTML
*/
public function acp_version_history_wrapper($content) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<a name='versions'></a>
<div class='tableborder'>
<div class='tableheaderalt'>{$this->lang->words['last_5_version_history']}</div>
<table width='100%' cellpadding='4' cellspacing='0'>
{$content}
</table>
</div>
<br />
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Diagnostics overview
*
* @access public
* @param array Data
* @return string HTML
*/
public function diagnosticsOverview( $data=array() ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<div class='section_title'>
<h2>{$this->lang->words['d_atitle']}</h2>
</div>
<div class="acp-box">
<h3>{$this->lang->words['sys_system_overview']}</h3>
<table class='alternate_rows' width='100%'>
<tr>
<td><strong>{$this->lang->words['sys_ipboard_version']}</strong></td>
<td>{$data['version']} (ID:{$data['version_full']})</td>
</tr>
<tr>
<td><strong>{$data['driver_type']} {$this->lang->words['sys_version']}</strong></td>
<td>{$data['version_sql']}</td>
</tr>
<tr>
<td><strong>{$this->lang->words['sys_php_version']}</strong></td>
<td>{$data['version_php']}</td>
</tr>
<tr>
<td><strong>{$this->lang->words['sys_disabled_funcs']}</strong></td>
<td>{$data['disabled']}</td>
</tr>
<tr>
<td><strong>{$this->lang->words['sys_loaded_ext']}</strong></td>
<td>{$data['extensions']}</td>
</tr>
<tr>
<td><strong>{$this->lang->words['sys_safe_mod']}</strong></td>
<td>{$data['safe_mode']}</td>
</tr>
EOF;
if ( defined( 'IPS_TOPICMARKERS_DEBUG' ) and IPS_TOPICMARKERS_DEBUG === TRUE )
{
$IPBHTML .= <<<EOF
<tr>
<td><strong>Отслеживание прочитанности тем</strong></td>
<td>ON ( <a href='{$this->settings['base_url']}{$this->form_code}&amp;do=tm_index'>Просмотр журнала</a> )</td>
</tr>
EOF;
}
$IPBHTML .= <<<EOF
<tr>
<td><strong>{$this->lang->words['sys_sys_software']}</strong></td>
<td>{$data['server']}</td>
</tr>
<tr>
<td><strong>{$this->lang->words['sys_current_load']}</strong></td>
<td>{$data['load']}</td>
</tr>
<tr>
<td><strong>{$this->lang->words['sys_total_mem']}</strong></td>
<td>{$data['total_memory']}</td>
</tr>
<tr>
<td><strong>{$this->lang->words['sys_avail_mem']}</strong></td>
<td>{$data['avail_memory']}</td>
</tr>
</table>
</div>
<br />
<div class="tableborder">
<div class="tableheaderalt">{$this->lang->words['system_processes']}</div>
<table cellpadding='0' cellspacing='0' width='100%'>
<tr>
<td class='tablerow1' width='100%'>{$data['tasks']}</td>
</tr>
</table>
</div>
<br />
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Version checker
*
* @access public
* @param array Versions
* @param string History info
* @param array Results
* @return string HTML
*/
public function versionCheckerResults( $versions=array(), $history='', $results=array() ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<div class='section_title'>
<h2>{$this->lang->words['d_vtitle']}</h2>
</div>
<div class="acp-box">
<h3>{$this->lang->words['d_vinfo']}</h3>
<table class='alternate_rows' width='100%'>
<tr>
<td class='tablerow1' width='30%'>{$this->lang->words['sys_ipboard_version']}</td>
<td class='tablerow2' width='70%'>{$versions['version']} (ID:{$versions['version_full']})</td>
</tr>
EOF;
if( !$history )
{
$IPBHTML .= <<<EOF
<tr>
<td class='tablerow1' width='30%'>История обновлений</td>
<td class='tablerow2' width='70%'><i>Обновлений не было или история отсутствует</i></td>
</tr>
EOF;
}
else
{
$IPBHTML .= $history;
}
$IPBHTML .= <<<EOF
</table>
</div>
<br />
<div class="acp-box">
<h3>{$this->lang->words['d_vnav']}</h3>
<table class='alternate_rows' width='100%'>
EOF;
if( count($results) AND is_array($results) )
{
foreach( $results as $file => $version )
{
if( trim($version) == $versions['version'] )
{
$version = "<span style='color:green;'>{$version}</span>";
}
else
{
$version = "<span style='font-weight:bold; color:red;'>{$version}</span>";
}
$IPBHTML .= <<<EOF
<tr>
<td width="90%">{$file}</td>
<td>{$version}</td>
</tr>
EOF;
}
}
$IPBHTML .= <<<EOF
</table>
</div>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Permission checker results
*
* @access public
* @param array Results from permission checking
* @return string HTML
*/
public function permissionsResults( $results=array() ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<div class='section_title'>
<h2>{$this->lang->words['d_ptitle']}</h2>
</div>
<div class='acp-box'>
<h3>{$this->lang->words['perm_check_results']}</h3>
<table class='alternate_rows'>
EOF;
if( count($results) AND is_array($results) )
{
foreach( $results as $result )
{
$IPBHTML .= <<<EOF
<tr>
<td>{$result}</td>
</tr>
EOF;
}
}
$IPBHTML .= <<<EOF
</table>
</div>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Whitespace checker
*
* @access public
* @param array Results from checking for whitespace
* @return string HTML
*/
public function whitespaceResults( $results=array() ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<div class='section_title'>
<h2>{$this->lang->words['d_wtitle']}</h2>
</div>
<div class="acp-box">
<h3>{$this->lang->words['d_wnav']}</h3>
<table class='alternate_rows'>
EOF;
if( count($results) AND is_array($results) )
{
foreach( $results as $result )
{
$IPBHTML .= <<<EOF
<tr>
<td>{$result} {$this->lang->words['d_wfound']}</td>
</tr>
EOF;
}
}
else
{
$IPBHTML .= <<<EOF
<tr>
<td>{$this->lang->words['d_wclear']}</td>
</tr>
EOF;
}
$IPBHTML .= <<<EOF
</table>
</div>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* view log entry in pop-up window
*/
function topicMarkers_viewLog( $data ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<div class='acp-box'>
<h3>{$data['marker_message']} - ID пользователя: {$data['marker_member_id']}</h3>
<table class='alternate_rows' width='100%'>
<thead>
<tr>
<th width='15%'>Ключ</th>
<th width='85%'>Значение</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Время</strong></td>
<td>{$data['_marker_timestamp']}</td>
</tr>
<tr>
<td><strong>URL</strong></td>
<td>{$data['marker_url']}</td>
</tr>
<tr>
<td><strong>Сессия</strong></td>
<td>{$data['marker_session_key']}</td>
</tr>
EOF;
foreach( array( 1,2,3,4,5 ) as $n )
{
if ( $data['marker_data_' . $n ] )
{
$IPBHTML .= <<<EOF
<tr>
<td valign='top'><strong>marker_data_{$n}</strong></td>
<td>{$this->topicMarkers_arrayLoop($data['marker_data_' . $n ])}</td>
</tr>
EOF;
}
}
foreach( array( 'storage', 'memory', 'freezer' ) as $n )
{
if ( $data['marker_data_' . $n ] )
{
$IPBHTML .= <<<EOF
<tr>
<td valign='top' onclick="$('tm__{$n}').toggle();"><strong><a href='javascript:void(0)' title='Скрыть/Показать'>marker_data_{$n}</a></strong></td>
<td id='tm__{$n}'>{$this->topicMarkers_arrayLoop($data['marker_data_' . $n ])}</td>
</tr>
EOF;
}
}
$IPBHTML .=<<<EOF
<tbody>
</table>
</div>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Topic marker array loop
*
* @access public
* @param array Results
* @return string HTML
*/
/**
* view log entry in pop-up window
*/
function topicMarkers_arrayLoop( $data ) {
$IPBHTML = "";
//--starthtml--//
if ( ! is_array( $data ) AND substr( $data, 0, 2 ) == 'a:' )
{
$data = unserialize( $data );
}
$this->_indexLoop++;
$IPBHTML .= <<<EOF
<table class='alternate_rows' width='100%'>
<thead>
<tr>
<th width='20%'>Ключ</th>
<th width='80%'>Значение</th>
</tr>
</thead>
<tbody>
EOF;
if ( is_array( $data ) AND count( $data ) )
{
foreach( $data as $k => $v )
{
if ( ! is_array( $v ) AND substr( $v, 0, 2 ) == 'a:' )
{
$v = unserialize( $v );
}
if ( is_array( $v ) and count( $v ) )
{
$_key = md5( $k . serialize( $v ) . '__' . $this->_indexLoop );
$IPBHTML .= "
<tr>
<td valign='top' onclick=\"$('tmi__{$_key}').toggle();\"><strong><a href='javascript:void(0)' title='Скрыть/Показать'>{$k}</a></strong></td>
<td id='tmi__{$_key}'>" . $this->topicMarkers_arrayLoop( $v ) . "</td>
</tr>\n";
}
else
{
if ( is_int( $v ) AND strlen( $v ) == 10 )
{
$_t = $this->registry->class_localization->getDate( $v, 'long' );
}
$IPBHTML .= <<<EOF
<tr>
<td valign='top'><strong>{$k}</strong></td>
<td><span title='$_t'>{$v}</span></td>
</tr>
EOF;
}
}
}
$IPBHTML .=<<<EOF
<tbody>
</table>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Topic marker main index
*
* @access public
* @param array Results
* @return string HTML
*/
public function topicMarkers_membersIndex( $member, $markers, $pages ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
{$pages}
<br style='clear: both' />
<div class='section_title'>
<h2><img src='{$member['pp_thumb_photo']}' style='width: 30px; height: 30px; border: 1px solid #d8d8d8' /> Прочитанные темы: {$member['members_display_name']}'s logs</h2>
</div>
<div class='acp-box'>
<h3>Прочитанные темы</h3>
<table class='alternate_rows'>
<tr>
<th style='width: 5%'></th>
<th style='width: 20%'>Сообщение</th>
<th style='width: 30%'>Вермя</th>
<th style='width: 45%'>URL</th>
<th style='width: 20%'>Действия</th>
</tr>
EOF;
if( count($markers) AND is_array($markers) )
{
$lastSessionKey = '';
foreach( $markers as $marker )
{
$style = ( $lastSessionKey AND $lastSessionKey != $marker['marker_session_key'] ) ? 'border-top:1px dotted #999' : '';
$time = $this->registry->class_localization->getDate( $marker['marker_timestamp'], 'long' );
$url = str_replace( str_replace( 'http://', '', $this->settings['_original_base_url'] ), '', $marker['marker_url'] );
$_key = base64_encode( $marker['marker_microtime'] );
$IPBHTML .= <<<EOF
<tr style='$style'>
<td><img src='{$this->settings['skin_acp_url']}/_newimages/icons/disk.png' alt='' /></td>
<td><strong>{$marker['marker_message']}</strong></td>
<td>{$time}</td>
<td><span style='font-size:0.9em;color:gray'>{$url}</span></td>
<td>
<img class='ipbmenu' id="menu-{$_key}" src='{$this->settings['skin_acp_url']}/_newimages/menu_open.png' alt='{$this->lang->words['a_options']}' />
<ul class='acp-menu' id='menu-{$_key}_menucontent'>
<li class='icon view'><a href='{$this->settings['base_url']}{$this->form_code}&amp;do=tm_memberindex&amp;member_id={$marker['marker_member_id']}&amp;marker_session_key={$marker['marker_session_key']}'>Просмотр сессий</a></li>
<li class='icon view'><a href='#' onclick="return acp.openWindow('{$this->settings['base_url']}{$this->form_code}&amp;do=tm_viewLog&amp;member_id={$marker['marker_member_id']}&amp;_id={$_key}', 800, 800, 'log-{$_key}');">Просмотр всего журнала</a></li>
</ul>
</td>
</tr>
EOF;
$lastSessionKey = $marker['marker_session_key'];
}
}
$IPBHTML .= <<<EOF
</table>
</div>
<br style='clear: both' />
{$pages}
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Topic marker main index
*
* @access public
* @param array Results
* @return string HTML
*/
public function topicMarkers_index( $results=array() ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<div class='section_title'>
<h2>Отметка прочтенности тем</h2>
</div>
<div class='acp-box'>
<h3>Сессии</h3>
<table class='alternate_rows'>
EOF;
if( count($results) AND is_array($results) )
{
foreach( $results as $result )
{
$time = $this->registry->class_localization->getDate( $result['max_ts'], 'short' );
$IPBHTML .= <<<EOF
<tr>
<td width='5%'>
<a href='{$this->settings['base_url']}&amp;module=members&amp;section=members&amp;do=viewmember&amp;member_id={$result['_memberData']['member_id']}'><img src='{$result['_memberData']['pp_thumb_photo']}' style='width: 30px; height: 30px; border: 1px solid #d8d8d8' /></a>
</td>
<td width='40%' class='member_name'>
<a href='{$this->settings['base_url']}&amp;module=members&amp;section=members&amp;do=viewmember&amp;member_id={$result['_memberData']['member_id']}'>{$result['_memberData']['members_display_name']}</a>
<div style='font-weight:normal'>{$result['_memberData']['_group_formatted']}</div>
</td>
<td width='30%'>Последнее: {$time}</td>
<td width='25%' align='right'><a href='{$this->settings['base_url']}{$this->form_code}&amp;do=tm_memberindex&amp;member_id={$result['_memberData']['member_id']}'>Записи журнала ({$result['count']})</a></td>
</tr>
EOF;
}
}
$IPBHTML .= <<<EOF
</table>
</div>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* phpinfo() output
*
* @access public
* @param string Content from running phpinfo()
* @return string HTML
*/
public function phpInfo( $content ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<style type='text/css'>
.center {text-align: center;}
.center table { margin-left: auto; margin-right: auto; text-align: left; }
.center th { text-align: center; }
h1 {font-size: 150%;}
h2 {font-size: 125%;}
.p {text-align: left;}
.e {background-color: #ccccff; font-weight: bold;}
.h {background-color: #9999cc; font-weight: bold;}
.v {background-color: #cccccc; white-space: normal;}
</style>
{$content}
EOF;
//--endhtml--//
return $IPBHTML;
}
}
@@ -0,0 +1,186 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Email error logs
* Last Updated: $Date: 2009-03-27 11:41:38 -0400 (Fri, 27 Mar 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Core
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 4333 $
*/
class cp_skin_emailerrorlogs extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* Show the splash screen for the email error logs
*
* @access public
* @param array Records
* @param string Page links
* @return string HTML
*/
public function emailerrorlogsWrapper( $rows, $links ) {
$form_array = array(
0 => array( 'subject' , $this->lang->words['erlog_subject']),
2 => array( 'email_from', $this->lang->words['erlog_fromemail'] ),
3 => array( 'email_to' , $this->lang->words['erlog_toemail'] ),
4 => array( 'error' , $this->lang->words['erlog_error'] ),
);
$type_array = array(
0 => array( 'exact' , $this->lang->words['erlog_exact'] ),
1 => array( 'loose' , $this->lang->words['erlog_loose'] ),
);
$form = array();
$form['type'] = $this->registry->output->formDropdown( "type" , $form_array, $this->request['type'] );
$form['match'] = $this->registry->output->formDropdown( "match", $type_array, $this->request['match'] );
$form['string'] = $this->registry->output->formInput( "string", $this->request['string'] );
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<script type='text/javascript' src='{$this->settings['js_main_url']}acp.forms.js'></script>
<div class='section_title'>
<h2>{$this->lang->words['erlog_title']}</h2>
</div>
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='remove' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class="acp-box">
<h3>{$this->lang->words['erlog_thelogs']}</h3>
<table class="alternate_rows" width='100%'>
<tr>
<th width='25%'>{$this->lang->words['erlog_to']}</th>
<th width='25%'>{$this->lang->words['erlog_subject']}</th>
<th width='27%'>{$this->lang->words['erlog_error']}</th>
<th width='20%'>{$this->lang->words['erlog_date']}</th>
<th width='3%'><input type='checkbox' title="{$this->lang->words['my_checkall']}" id='checkAll' /></th>
</tr>
HTML;
if( count($rows) AND is_array($rows) )
{
foreach( $rows as $row )
{
$IPBHTML .= <<<HTML
<tr>
<td>{$row['mlog_to']}</td>
<td><a href='#' onclick='return acp.openWindow("{$this->settings['base_url']}&{$this->form_code_js}&do=viewemail&id={$row['mlog_id']}",400,350,"{$row['mlog_id']}")' title='{$this->lang->words['erlog_reademail']}'>{$row['mlog_subject']}</a></td>
<td>{$row['mlog_msg']}<br />{$row['mlog_code']}&nbsp;{$row['mlog_smtp_msg']}</td>
<td>{$row['_date']}</td>
<td><input type='checkbox' name='id_{$row['mlog_id']}' value='1' class='checkAll' /></td>
</tr>
HTML;
}
}
else
{
$IPBHTML .= <<<HTML
<tr>
<td colspan='5' align='center'>{$this->lang->words['erlog_noresults']}</td>
</tr>
HTML;
}
$IPBHTML .= <<<HTML
</table>
<div class="acp-actionbar">
<div class="leftaction">{$links}</div>
<div class="rightaction">
<input type="checkbox" id="checkbox" name="type" value="all" />&nbsp;{$this->lang->words['erlog_removeall']}&nbsp;<input type="submit" value="{$this->lang->words['erlog_removechecked']}" class="button primary" />
</div>
</div>
</div>
</form>
<br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='list' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class="acp-box">
<h3>{$this->lang->words['erlog_search']}</h3>
<p align="center">{$this->lang->words['erlog_searchwhere']} {$form['type']} {$form['match']} {$form['string']}</p>
<div class="acp-actionbar">
<input value="{$this->lang->words['erlog_searchbutton']}" class="button primary" accesskey="s" type="submit" />
</div>
</div>
</form>
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* Record for an email error log entry
*
* @access public
* @param array Email error log record
* @return string HTML
*/
public function emailerrorlogsEmail( $row ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class="acp-box">
<h3>{$row['mlog_subject']}</h3>
<table class="alternate_rows" width='100%'>
<tr>
<td width='15%'>{$this->lang->words['erlog_log_from']}</td>
<td>&lt;{$row['mlog_from']}&gt;</td>
</tr>
<tr>
<td width='15%'>{$this->lang->words['erlog_log_to']}</td>
<td>&lt;{$row['mlog_to']}&gt;</td>
</tr>
<tr>
<td width='15%'>{$this->lang->words['erlog_log_sent']}</td>
<td>{$row['_date']}</td>
</tr>
<tr>
<td width='15%'>{$this->lang->words['erlog_log_subject']}</td>
<td>{$row['_subject']}</td>
</tr>
<tr>
<td colspan='2'>{$row['mlog_content']}...</td>
</tr>
<tr>
<td colspan='2'>{$this->lang->words['erlog_ipberror']} {$row['mlog_msg']}
<br />{$this->lang->words['erlog_smtpcode']} {$row['mlog_code']}
<br />{$this->lang->words['erlog_smtperror']} {$row['mlog_smtp_error']}</td>
</tr>
</table>
</div>
<br />
HTML;
//--endhtml--//
return $IPBHTML;
}
}
@@ -0,0 +1,189 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Email logs skin file
* Last Updated: $Date: 2009-05-28 13:24:24 -0400 (Thu, 28 May 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Core
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 4699 $
*/
class cp_skin_emaillogs extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* Email logs wrapper
*
* @access public
* @param array Email log rows
* @param string Page links
* @return string HTML
*/
public function emaillogsWrapper( $rows, $links ) {
$form_array = array(
0 => array( 'subject' , $this->lang->words['elog_subject'] ),
1 => array( 'content' , $this->lang->words['elog_body'] ),
2 => array( 'email_from' , $this->lang->words['elog_from'] ),
3 => array( 'email_to' , $this->lang->words['elog_to'] ),
4 => array( 'name_from' , $this->lang->words['elog_from_name'] ),
5 => array( 'name_to' , $this->lang->words['elog_to_name'] ),
);
$type_array = array(
0 => array( 'exact' , $this->lang->words['elog_exactly'] ),
1 => array( 'loose' , $this->lang->words['elog_loose'] ),
);
$form = array();
$form['type'] = $this->registry->output->formDropdown( "type" , $form_array, $this->request['type'] );
$form['match'] = $this->registry->output->formDropdown( "match", $type_array, $this->request['match'] );
$form['string'] = $this->registry->output->formInput( "string", $this->request['string'] );
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<script type='text/javascript' src='{$this->settings['js_main_url']}acp.forms.js'></script>
<div class='section_title'>
<h2>{$this->lang->words['elog_title']}</h2>
</div>
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='remove' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class="acp-box">
<h3>{$this->lang->words['elog_theemails']}</h3>
<table class="alternate_rows" width='100%'>
<tr>
<th width='25%'>{$this->lang->words['elog_from_name']}</th>
<th width='25%'>{$this->lang->words['elog_subject']}</th>
<th width='27%'>{$this->lang->words['elog_to_name']}</th>
<th width='20%'>{$this->lang->words['elog_date']}</th>
<th width='3%'><input type='checkbox' title="{$this->lang->words['my_checkall']}" id='checkAll' /></th>
</tr>
HTML;
if( count($rows) AND is_array($rows) )
{
foreach( $rows as $row )
{
$IPBHTML .= <<<HTML
<tr>
<!--ACPNOTE: Missing acp_search.gif -->
<td><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=list&amp;type=fromid&amp;id={$row['member_id']}' title='{$this->lang->words['elog_show_title']}'><img src='{$this->settings['skin_acp_url']}/_newimages/icons/view.png' border='0' alt='{$this->lang->words['elog_byid']}'></a>&nbsp;<b><a href='{$this->settings['board_url']}/index.{$this->settings['php_ext']}?showuser={$row['member_id']}' title='{$this->lang->words['elog_profile']}' target='_blank'>{$row['members_display_name']}</a></b></td>
<td><a href='#' onclick='return acp.openWindow("{$this->settings['base_url']}&{$this->form_code_js}&do=viewemail&id={$row['email_id']}",400,350,"{$row['email_id']}")' title='{$this->lang->words['elog_read']}'>{$row['email_subject']}</a></td>
<td><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=list&amp;type=toid&amp;id={$row['to_id']}' title='{$this->lang->words['elog_show_title']}'><img src='{$this->settings['skin_acp_url']}/_newimages/icons/view.png' border='0' alt='{$this->lang->words['elog_byid']}'></a>&nbsp;<b><a href='{$this->settings['board_url']}/index.{$this->settings['php_ext']}?showuser={$row['to_id']}' title='{$this->lang->words['elog_profile']}' target='_blank'>{$row['to_name']}</a></b></td>
<td>{$row['_date']}</td>
<td><input type='checkbox' name='id_{$row['email_id']}' value='1' class='checkAll' /></td>
</tr>
HTML;
}
}
else
{
$IPBHTML .= <<<HTML
<tr>
<td colspan='5' align='center'>{$this->lang->words['elog_noresults']}</td>
</tr>
HTML;
}
$IPBHTML .= <<<HTML
</table>
<div class="acp-actionbar">
<div class="leftaction">{$links}</div>
<div class="rightaction">
<input type="checkbox" id="checkbox" name="type" value="all" />&nbsp;{$this->lang->words['elog_removeall']}&nbsp;<input type="submit" value="{$this->lang->words['elog_removechecked']}" class="button primary" />
</div>
</div>
</div>
</form>
<br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='list' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class="acp-box">
<h3>{$this->lang->words['elog_search']}</h3>
<p align="center">{$this->lang->words['elog_searchwhere']} {$form['type']} {$form['match']} {$form['string']}</p>
<div class="acp-actionbar">
<input value="{$this->lang->words['elog_searchbutton']}" class="button primary" accesskey="s" type="submit" />
</div>
</div>
</form>
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* Email log entry
*
* @access public
* @param array Email log entry
* @return string HTML
*/
public function emaillogsEmail( $row ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class="acp-box">
<h3>{$row['email_subject']}</h3>
<table class="alternate_rows" width='100%'>
<tr>
<td width='15%'>{$this->lang->words['elog_log_from']}</td>
<td>{$row['members_display_name']} &lt;{$row['from_email_address']}&gt;</td>
</tr>
<tr>
<td width='15%'>{$this->lang->words['elog_log_to']}</td>
<td>{$row['to_name']} &lt;{$row['to_email_address']}&gt;</td>
</tr>
<tr>
<td width='15%'>{$this->lang->words['elog_log_sent']}</td>
<td>{$row['_date']}</td>
</tr>
<tr>
<td width='15%'>{$this->lang->words['elog_log_ip']}</td>
<td>{$row['from_ip_address']}</td>
</tr>
<tr>
<td width='15%'>{$this->lang->words['elog_log_subject']}</td>
<td>{$row['email_subject']}</td>
</tr>
<tr>
<td colspan='2'>{$row['email_content']}</td>
</tr>
</table>
</div>
<br />
HTML;
//--endhtml--//
return $IPBHTML;
}
}
@@ -0,0 +1,453 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Emoticon manager skin file
* Last Updated: $Date: 2009-07-08 21:23:44 -0400 (Wed, 08 Jul 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Core
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 4856 $
*/
class cp_skin_emoticons extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* Emoticon pack splash page
*
* @access public
* @param array Form elements
* @return string HTML
*/
public function emoticonsPackSplash( $form )
{
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$this->lang->words['emo_title']}</h2>
</div>
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='emo_packexport' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->_admin_auth_key}' />
<div class='acp-box'>
<h3>{$this->lang->words['emote_export']}</h3>
<ul class='acp-form alternate_rows'>
<li>
<label>{$this->lang->words['emote_export_which']}<span class='desctext'>{$this->lang->words['emote_xml_pack']}</span></label>
{$form['emo_set']}
</li>
</ul>
<div class='acp-actionbar'>
<div class='centeraction'>
<input type='submit' value='{$this->lang->words['emote_export_button']}' class='button primary' accesskey='s'>
</div>
</div>
</div>
</form><br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='uploadform' enctype='multipart/form-data' id='uploadform'>
<input type='hidden' name='do' value='emo_packimport' />
<input type='hidden' name='MAX_FILE_SIZE' value='10000000000' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->_admin_auth_key}' />
<div class='acp-box'>
<h3>{$this->lang->words['emote_import']}</h3>
<table width='100%' class='alternate_rows'>
<tr>
<td width='60%' valign='middle'>
{$this->lang->words['emote_import_which']}<br />
<span class='desctext'>{$this->lang->words['emote_xml_export']}</span>
</td>
<td width='40%' valign='middle'>{$form['emo_set']}</td>
</tr>
<tr>
<td width='60%' valign='middle'>
{$this->lang->words['emote_import_newgroup']}<br />
<span class='desctext'>{$this->lang->words['emote_import_name']}</span>
</td>
<td width='40%' valign='middle'>{$form['new_emo_set']}</td>
</tr>
<tr>
<td width='60%' valign='middle'>
{$this->lang->words['emote_import_over']}<br />
<span class='desctext'>{$this->lang->words['emote_import_replace']}</span>
</td>
<td width='40%' valign='middle'>{$form['overwrite']}</td>
</tr>
<tr>
<td width='60%' valign='middle'>{$this->lang->words['emote_import_upload']}<br /><span class='desctext'>{$this->lang->words['emote_import_browse']}</span></td>
<td width='40%' valign='middle'><input class='textinput' type='file' size='30' name='FILE_UPLOAD'></td>
</tr>
</table>
<div class='acp-actionbar'>
<div class='centeraction'>
<input type='submit' value='{$this->lang->words['emote_import_button']}' class='button primary' accesskey='s'>
</div>
</div>
</div>
</form>
HTML;
return $IPBHTML;
}
/**
* Show the splash screen for the logs
*
* @access public
* @param array Db records
* @param array File records
* @param string Width for table cells
* @param int Number of emoticons per row
* @return string HTML
*/
public function emoticonsDirectoryManagement( $db_rows, $file_rows, $td_width, $per_row )
{
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$this->lang->words['emo_control']}</h2>
</div>
<div class='acp-box'>
<h3>{$this->lang->words['emote_assigned']}'{$this->request['id']}'</h3>
<form action='{$this->settings['base_url']}{$this->form_code}do=emo_doedit&id={$this->request['id']}' method='post'>
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->_admin_auth_key}' />
<table class='alternate_rows' width='100%'>
<tr align='center'>
HTML;
/* Loop through the database emoticons */
$count = 0;
foreach( $db_rows as $r )
{
$count++;
$IPBHTML .= <<<HTML
<td width='{$td_width}%' align='center'>
<fieldset>
<legend><strong>{$r['image']}</strong></legend>
<input type='hidden' name='emo_id_{$r['id']}' value='{$r['id']}' />
<img src='../public/style_emoticons/{$this->request['id']}/{$r['image']}' border='0' />&nbsp;&nbsp;&nbsp;&nbsp;
HTML;
if( $this->request['id'] == 'default' )
{
$IPBHTML .= <<<HTML
<a href='{$this->settings['base_url']}{$this->form_code}do=emo_remove&eid={$r['id']}&id={$this->request['id']}' title='{$this->lang->words['emote_delete_title']}'>
<img src='{$this->settings['skin_acp_url']}/images/emo_delete.gif' border='0' alt='{$this->lang->words['emote_delete_title']}' />
</a>
<br />
<input type='textinput' class='realbutton' size='10' name='emo_type_{$r['id']}' value='{$r['typed']}' />
HTML;
}
else
{
$IPBHTML .= <<<HTML
<br /><br /><span style='font-family:Verdana,Arial;font-size:10px;font-weight:bold;'>{$r['typed']}</span>
HTML;
}
$IPBHTML .= <<<HTML
<br /><br />{$this->lang->words['emote_clickable']} <input type='checkbox' name='emo_click_{$r['id']}' value='1' {$r['_click']} />
</fieldset>
</td>
HTML;
if( $count == $per_row )
{
$IPBHTML .= <<<HTML
</tr>
<tr align='center'>
HTML;
$count = 0;
}
}
/* Finish off a row in progress */
if( $count > 0 and $count != $per_row )
{
for( $i = $count ; $i < $per_row ; ++$i )
{
$IPBHTML .= <<<HTML
<td>&nbsp;</td>
HTML;
}
$IPBHTML .= <<<HTML
</tr>
HTML;
}
$IPBHTML .= <<<HTML
</table>
<div class='acp-actionbar'>
<div class='centeraction'>
<input type='submit' class='button primary' value='{$this->lang->words['emote_update_button']}' />
</div>
</div>
</form>
</div><br />
HTML;
/* Display unassigned emoticons */
if( is_array( $file_rows ) && count( $file_rows ) )
{
$IPBHTML .= <<<HTML
<div class='acp-box'>
<h3>{$this->lang->words['emote_unassigned']}'{$this->request['id']}'</h3>
<form action='{$this->settings['base_url']}{$this->form_code}do=emo_doadd&id={$this->request['id']}' method='post'>
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->_admin_auth_key}' />
<table class='alternate_rows' width='100%'>
<tr>
HTML;
/* Loop through the unassigned emoticons */
$master_count = 0;
$count = 0;
foreach( $file_rows as $r )
{
$master_count++;
$count++;
$IPBHTML .= <<<HTML
<td width='{$td_width}%' align='center'>
<fieldset>
<legend><strong>{$r['image']}</strong></legend>
<img src='../public/style_emoticons/{$this->request['id']}/{$r['image']}' border='0' />&nbsp;&nbsp;
{$this->lang->words['emote_add']}<input name='emo_add_{$master_count}' type='checkbox' value='1' /><br />
{$this->lang->words['emote_text']}<input type='textinput' class='realbutton' size='10' name='emo_type_{$master_count}' value='{$r['poss_name']}' /><br /><br />
{$this->lang->words['emote_clickable']} <input type='checkbox' name='emo_click_{$master_count}' value='1' />
<input type='hidden' name='emo_image_{$master_count}' value='{$r['image']}' />
</fieldset>
</td>
HTML;
if( $count == $per_row )
{
$IPBHTML .= <<<HTML
</tr>
<tr align='center'>
HTML;
$count = 0;
}
}
/* Finish off a row in progress */
if( $count > 0 and $count != $per_row )
{
for( $i = $count ; $i < $per_row ; ++$i )
{
$IPBHTML .= <<<HTML
<td>&nbsp;</td>
HTML;
}
$IPBHTML .= <<<HTML
</tr>
HTML;
}
$IPBHTML .= <<<HTML
</table>
<div class='acp-actionbar'>
<div class='centeraction'>
<input type='submit' class='button primary' value='{$this->lang->words['emote_add_button']}' />&nbsp;&nbsp;
<input type='submit' name='addall' class='button primary' value='{$this->lang->words['emote_addall_button']}' />
</div>
</div>
</form>
</div>
HTML;
}
return $IPBHTML;
}
/**
* Overview of emoticon packs
*
* @access public
* @param array Records
* @return string HTML
*/
public function emoticonsOverview( $rows )
{
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<script type="text/javascript" src="{$this->settings['js_main_url']}acp.emoticons.js"></script>
<script type='text/javascript'>
ipb.templates['emo_manage'] = new Template( "<form action='{$this->settings['base_url']}{$this->form_code}' method='post'>" +
"<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->_admin_auth_key}' />" +
"<input type='hidden' name='do' value='#{form_do}' />" +
"<input type='hidden' name='id' value='#{form_id}' />" +
"<div class='acp-box'><h3>{$this->lang->words['emoticon_folder']}</h3><ul class='acp-form'><li><label for='name_#{form_id}'>{$this->lang->words['emoticon_folder_name']}</label><input type='text' size='30' class='input_text' id='name_#{form_id}' value='#{folder_name}' name='emoset'></li></ul><div class='acp-actionbar'><input type='submit' value='#{form_value}' class='realbutton' id='save_folder_#{id}' /></div></div>" +
"</form>" );
ipb.lang['emoticons'] = [];
ipb.lang['emoticons']['add'] = "{$this->lang->words['emote_addfolder']}";
ipb.lang['emoticons']['edit'] = "{$this->lang->words['emote_editfolder']}";
</script>
<div class='section_title'>
<h2>{$this->lang->words['emo_control']}</h2>
<ul class='context_menu'>
<li><a href='#' id='folder_edit_0' return false;'><img src='{$this->settings['skin_acp_url']}/_newimages/icons/table_add.png' alt='' /> {$this->lang->words['emote_createnew']}</a></li>
</ul>
<script type='text/javascript'>
$('folder_edit_0').observe('click', acp.emoticons.folder.bindAsEventListener( this, 0 ) );
</script>
</div>
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='uploadform' enctype='multipart/form-data' id='uploadform'>
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->_admin_auth_key}' />
<input type='hidden' name='do' value='emo_upload'>
<input type='hidden' name='MAX_FILE_SIZE' value='10000000000'>
<input type='hidden' name='dir_default' value='1'>
<div class='acp-box'>
<h3>{$this->lang->words['emote_current']}</h3>
<table width='100%' class='alternate_rows'>
<tr>
<th width='50%' align='center'>{$this->lang->words['emote_emofolder']}</th>
<th width='5%' align='center'>{$this->lang->words['emote_upload']}</th>
<th width='20%' align='center'>{$this->lang->words['emote_num_disk']}</th>
<th width='20%' align='center'>{$this->lang->words['emote_num_group']}</th>
<th width='5%' align='center'>{$this->lang->words['emote_options']}</th>
</tr>
HTML;
foreach( $rows as $data )
{
$IPBHTML .= <<<HTML
<tr>
<td valign='middle'>
<div style='width:auto;float:right;'><img src='{$this->settings['skin_acp_url']}/images/{$data['icon']}' title='{$data['title']}' alt='{$data['icon']}' /></div>
{$data['line_image']}<img src='{$this->settings['skin_acp_url']}/images/emoticon_folder.gif' border='0'>&nbsp;
<a href='{$this->settings['base_url']}{$this->form_code}do=emo_manage&amp;id={$data['dir']}' title='{$this->lang->words['emote_manageset']}'><b>{$data['dir']}</b></a>
</td>
<td valign='middle'><center>{$data['checkbox']}</center></td>
<td valign='middle'><center>{$data['count']}</center></td>
<td valign='middle'><center>{$data['dir_count']}</td>
<td align='right'>
<img class="ipbmenu" id="menu{$data['dir']}" src="{$this->settings['skin_acp_url']}/_newimages/menu_open.png" alt="">
<ul style="position: absolute; display: none; z-index: 9999;" class="acp-menu" id='menu{$data['dir']}_menucontent'>
<li style="z-index: 10000;" class='icon view'><a style="z-index: 10000;" href='{$this->settings['base_url']}{$this->form_code_js}do=emo_manage&amp;id={$data['dir']}'>{$data['link_text']}</a></li>
HTML;
if( $data['dir'] != 'default' OR IN_DEV == 1 )
{
$IPBHTML .= <<<HTML
<li style="z-index: 10000;" class='icon edit'>
<a style="z-index: 10000;" href='#' id="folder_edit_{$data['dir']}">{$this->lang->words['emote_editfolder']}</a>
<script type='text/javascript'>
$("folder_edit_{$data['dir']}").observe('click', acp.emoticons.folder.bindAsEventListener( this, "{$data['dir']}" ) );
</script>
</li>
<li style="z-index: 10000;" class='icon delete'><a style="z-index: 10000;" href='#' onclick='return acp.confirmDelete("{$this->settings['base_url']}{$this->form_code_js}do=emo_setremove&amp;id={$data['dir']}");'>{$this->lang->words['emote_deletefolder']}</a></li>
HTML;
}
else
{
$IPBHTML .= <<<HTML
<li style="z-index: 10000;" class='icon delete'>{$this->lang->words['emote_dontdeletedef']}</li>
HTML;
}
$IPBHTML .= <<<HTML
</ul>
</td>
</tr>
HTML;
}
$IPBHTML .= <<<HTML
</table>
</div><br />
HTML;
if( SAFE_MODE_ON )
{
$IPBHTML .= <<<HTML
</form>
HTML;
}
else
{
$IPBHTML .= <<<HTML
<div class='acp-box'>
<h3>{$this->lang->words['emote_uploademos']}</h3>
<table width='100%' class='alternate_rows'>
<tr>
<td width='50%' align='center'><input type='file' value='' class='realbutton' name='upload_1' size='30' /></td>
<td width='50%' align='center'><input type='file' class='realbutton' name='upload_2' size='30' /></td>
</tr>
<tr>
<td width='50%' align='center'><input type='file' class='realbutton' name='upload_3' size='30' /></td>
<td width='50%' align='center'><input type='file' class='realbutton' name='upload_4' size='30' /></td>
</tr>
</table>
<div class='acp-actionbar'>
<div class='centeraction'>
<input type='submit' value='{$this->lang->words['emote_uploadtofolders']}' class='button primary' />
</div>
</div>
</div>
</form>
HTML;
}
return $IPBHTML;
}
}
@@ -0,0 +1,141 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Error log skin file
* Last Updated: $Date: 2009-05-28 13:24:24 -0400 (Thu, 28 May 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Core
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 4699 $
*/
class cp_skin_errorlogs extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* Error log wrapper
*
* @access public
* @param array Rows
* @param string Page links
* @return string HTML
*/
public function errorlogsWrapper( $rows, $links ) {
$form_array = array(
0 => array( 'log_error' , $this->lang->words['error_log_error']),
2 => array( 'log_error_code' , $this->lang->words['error_log_code'] ),
3 => array( 'log_request_uri', $this->lang->words['error_log_uri'] ),
4 => array( 'members_display_name', $this->lang->words['error_log_member'] ),
);
$type_array = array(
0 => array( 'exact' , $this->lang->words['erlog_exact'] ),
1 => array( 'loose' , $this->lang->words['erlog_loose'] ),
);
$form = array();
$form['type'] = $this->registry->output->formDropdown( "type" , $form_array, $this->request['type'] );
$form['match'] = $this->registry->output->formDropdown( "match", $type_array, $this->request['match'] );
$form['string'] = $this->registry->output->formInput( "string", $this->request['string'] );
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<script type='text/javascript' src='{$this->settings['js_main_url']}acp.forms.js'></script>
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='remove' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class="acp-box">
<h3>{$this->lang->words['error_log_thelogs']}</h3>
<table class='alternate_rows' width='100%'>
<tr>
<th width='10%'>{$this->lang->words['error_log_code']}</th>
<th width='30%'>{$this->lang->words['error_log_error']}</th>
<th width='15%'>{$this->lang->words['error_log_ip']}</th>
<th width='20%'>{$this->lang->words['error_log_uri']}</th>
<th width='10%'>{$this->lang->words['error_log_member']}</th>
<th width='10%'>{$this->lang->words['error_log_date']}</th>
<th width='3%'><input type='checkbox' title="{$this->lang->words['my_checkall']}" id='checkAll' /></th>
</tr>
HTML;
if( count( $rows ) AND is_array( $rows ) )
{
foreach( $rows as $row )
{
$IPBHTML .= <<<HTML
<tr>
<td>{$row['log_error_code']}</td>
<td>{$row['log_error']}</td>
<td>{$row['log_ip_address']}</td>
<td>{$row['log_request_uri']}</td>
<td>{$row['members_display_name']}</td>
<td>{$row['_date']}</td>
<td><input type='checkbox' name='id_{$row['log_id']}' value='1' class='checkAll' /></td>
</tr>
HTML;
}
}
else
{
$IPBHTML .= <<<HTML
<tr>
<td colspan='7' align='center'>{$this->lang->words['error_log_noresults']}</td>
</tr>
HTML;
}
$IPBHTML .= <<<HTML
</table>
<div class='acp-actionbar'>
<div class='leftaction'>
{$links}
</div>
<div class='rightaction'>
<input type="checkbox" id="checkbox" name="type" value="all" />&nbsp;{$this->lang->words['erlog_removeall']}&nbsp;<input type="submit" value="{$this->lang->words['erlog_removechecked']}" class="button primary" />
</div>
</div>
</div>
</form>
<br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='list' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['error_log_search']}</h3>
<p align="center">
<label>{$this->lang->words['erlog_searchwhere']}</label>
{$form['type']} {$form['match']} {$form['string']}
</p>
</ul>
<div class='acp-actionbar'>
<input value="{$this->lang->words['erlog_searchbutton']}" class="button primary" accesskey="s" type="submit" />
</div>
</div>
</form>
HTML;
//--endhtml--//
return $IPBHTML;
}
}
@@ -0,0 +1,195 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Manage help files skin file
* Last Updated: $Date: 2009-09-24 16:56:42 -0400 (Thu, 24 Sep 2009) $
*
* @author $Author: rikki $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Core
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 5154 $
*/
class cp_skin_help_files extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* Form to add/edit a help file
*
* @access public
* @param string Action
* @param int ID
* @param array Form elements
* @param string Button text
* @return string HTML
*/
public function helpFileForm( $do, $id, $form, $button )
{
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$this->lang->words['h_title']}</h2>
</div>
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='postingform'>
<input type='hidden' name='do' value='{$do}' />
<input type='hidden' name='id' value='{$id}' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$button}</h3>
<ul class='acp-form alternate_rows'>
<li>
<label>{$this->lang->words['h_filetitle']}</label>
{$form['title']}
</li>
<li>
<label>{$this->lang->words['h_filedesc']}</label>
{$form['description']}
</li>
<li>
<label>{$this->lang->words['h_fileapp']}</label>
{$form['appDir']}
</li>
<li>
<label>{$this->lang->words['h_filetext']}</label>
<div class='clear'><textarea id='editor_main' name='editor_main' style='width: 100%; height: 500px;'>{$form['text']}</textarea></div>
</li>
</ul>
<div class='acp-actionbar'>
<div class='centeraction'>
<input type='submit' value='{$button}' class='button primary' accesskey='s'>
</div>
</div>
</div>
</form>
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* List the current help files
*
* @access public
* @param array Rows
* @return string HTML
*/
public function helpFilesList( $rows )
{
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$this->lang->words['h_title']}</h2>
<ul class='context_menu'>
<li>
<a href='{$this->settings['base_url']}{$this->form_code}&amp;do=new' title='{$this->lang->words['h_addnew']}'>
<img src='{$this->settings['skin_acp_url']}/_newimages/icons/help_add.png' alt='' />
{$this->lang->words['h_addnew']}
</a>
</li>
<li>
<a href='{$this->settings['base_url']}{$this->form_code}&amp;do=exportXml' title='{$this->lang->words['h_export']}'>
<img src='{$this->settings['skin_acp_url']}/_newimages/icons/export.png' alt='' />
{$this->lang->words['h_export']}
</a>
</li>
<li>
<a href='{$this->settings['base_url']}{$this->form_code}&amp;do=importXml' title='{$this->lang->words['h_import']}'>
<img src='{$this->settings['skin_acp_url']}/_newimages/icons/import.png' alt='' />
{$this->lang->words['h_import']}
</a>
</li>
</ul>
</div>
<script type="text/javascript">
window.onload = function() {
Sortable.create( 'sortable_handle', { revert: true, format: 'faq_([0-9]+)', onUpdate: dropItLikeItsHot, handle: 'draghandle' } );
};
dropItLikeItsHot = function( draggableObject, mouseObject )
{
var options = {
method : 'post',
parameters : Sortable.serialize( 'sortable_handle', { tag: 'li', name: 'faq' } )
};
new Ajax.Request( "{$this->settings['base_url']}&{$this->form_code_js}&do=doreorder&md5check={$this->registry->adminFunctions->getSecurityKey()}".replace( /&amp;/g, '&' ), options );
return false;
};
</script>
<div class='acp-box'>
<h3>{$this->lang->words['h_current']}</h3>
<ul id='sortable_handle' class='alternate_rows'>
HTML;
foreach( $rows as $r )
{
$IPBHTML .= <<<HTML
<li id='faq_{$r['id']}'>
<table style='width: 100%'>
<tr>
<td style='width: 3%'>
<div class='draghandle'><img src='{$this->settings['skin_acp_url']}/_newimages/drag_icon.png' alt=''></div>
</td>
<td style='width: 93%'>
<strong><a href='{$this->settings['base_url']}{$this->form_code}&amp;do=edit&amp;id={$r['id']}'>{$r['title']}</a></strong><br />
<span class='desctext'>{$r['description']}</span>
</td>
<td style='width: 4%'>
<img class='ipbmenu' id="menu-{$r['id']}" src='{$this->settings['skin_acp_url']}/_newimages/menu_open.png' alt='{$this->lang->words['a_options']}' />
<ul class='acp-menu' id='menu-{$r['id']}_menucontent'>
<li class='icon edit'><a href='{$this->settings['base_url']}{$this->form_code}&amp;do=edit&amp;id={$r['id']}'>{$this->lang->words['h_edit']}</a></li>
<li class='icon delete'><a href='#' onclick='return acp.confirmDelete("{$this->settings['base_url']}{$this->form_code}&amp;do=remove&amp;id={$r['id']}");'>{$this->lang->words['h_remove']}</a></li>
</ul>
</td>
</tr>
</table>
</li>
HTML;
}
$IPBHTML .= <<<HTML
</ul>
</div>
<br />
</form>
HTML;
//--endhtml--//
return $IPBHTML;
}
}
@@ -0,0 +1,637 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Hooks export skin file
* Last Updated: $Date: 2009-03-29 22:18:15 -0400 (Sun, 29 Mar 2009) $
*
* @author $Author: rikki $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Core
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 4343 $
*/
class cp_skin_hooks_export extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* Inline settings dhtml box
*
* @access public
* @param array Hook data
* @param array Form elements
* @return string HTML
*/
public function inline_settings( $hook, $form=array() )
{
$IPBHTML = "";
$IPBHTML .= <<<EOF
<script type='text/javascript'>
acp.hooks.fields['MF__settings'] = {};
acp.hooks.fields['MF__settings']['fields'] = $A(['setting_groups', 'settings']);
acp.hooks.fields['MF__settings']['url'] = "app=core&amp;module=ajax&amp;section=hooks&amp;do=save&amp;name=settings&amp;id={$hook['hook_id']}";
acp.hooks.fields['MF__settings']['callback'] = function( t, json ){
$('MF__settings').innerHTML = json['message'];
new Effect.Pulsate( $('MF__settings'), { pulses: 3 } );
}
</script>
<div class='acp-box'>
<h3>Добавление настроек</h3>
<ul class='acp-form'>
<li>
Выберите одну или несколько групп настроек для экспорта. Все настройки этих групп будут полностью сохранены
</li>
<li style='padding-left: 15px'>
{$form['groups']}
</li>
<li>
Выберите индивидуальную настройку для экспорта. Все необходимые значения настройки будут сохранены
</li>
<li style='padding-left: 15px'>
{$form['settings']}
</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value=' Сохранить ' class='realbutton' id='MF__settings_save' />
</div>
</div>
EOF;
return $IPBHTML;
}
/**
* Inline modules dhtml box
*
* @access public
* @param array Hook data
* @param array Form elements
* @return string HTML
*/
public function inline_modules( $hook, $form=array() )
{
$IPBHTML = "";
$IPBHTML .= <<<EOF
<script type='text/javascript'>
acp.hooks.fields['MF__modules'] = {};
acp.hooks.fields['MF__modules']['fields'] = $A(['modules']);
acp.hooks.fields['MF__modules']['url'] = "app=core&amp;module=ajax&amp;section=hooks&amp;do=save&amp;name=modules&amp;id={$hook['hook_id']}";
acp.hooks.fields['MF__modules']['callback'] = function( t, json ){
$('MF__modules').innerHTML = json['message'];
new Effect.Pulsate( $('MF__modules'), { pulses: 3 } );
}
</script>
<div class='acp-box'>
<h3>Добавление модулей</h3>
<ul class='acp-form'>
<li>
Выберите один или несколько модулей для экспорта
</li>
<li style='padding-left: 15px'>
{$form['modules']}
</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value=' Сохранить ' class='realbutton' id='MF__modules_save' />
</div>
</div>
EOF;
return $IPBHTML;
}
/**
* Inline custom script dhtml box
*
* @access public
* @param array Hook data
* @param array Form elements
* @return string HTML
*/
public function inline_custom( $hook, $form=array() )
{
$IPBHTML = "";
$IPBHTML .= <<<EOF
<script type='text/javascript'>
acp.hooks.fields['MF__custom'] = {};
acp.hooks.fields['MF__custom']['fields'] = $A(['custom']);
acp.hooks.fields['MF__custom']['url'] = "app=core&amp;module=ajax&amp;section=hooks&amp;do=save&amp;name=custom&amp;id={$hook['hook_id']}";
acp.hooks.fields['MF__custom']['callback'] = function( t, json ){
$('MF__custom').innerHTML = json['message'];
new Effect.Pulsate( $('MF__custom'), { pulses: 3 } );
}
</script>
<div class='acp-box'>
<h3>Добавление установочных скриптов</h3>
<ul class='acp-form'>
<li>
Введите имя файла, содержащего скрипт установки/удаления. Файл должен иметь префикс "install_" в имени и находится в директории hooks/. Префикс перед именем файла вы можете не указывать
</li>
<li style='padding-left: 15px'>
install_ {$form['custom']}
</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value=' Сохранить ' class='realbutton' id='MF__custom_save' />
</div>
</div>
EOF;
return $IPBHTML;
}
/**
* Inline help files dhtml box
*
* @access public
* @param array Hook data
* @param array Form elements
* @return string HTML
*/
public function inline_help( $hook, $form=array() )
{
$IPBHTML = "";
$IPBHTML .= <<<EOF
<script type='text/javascript'>
acp.hooks.fields['MF__help'] = {};
acp.hooks.fields['MF__help']['fields'] = $A(['help']);
acp.hooks.fields['MF__help']['url'] = "app=core&amp;module=ajax&amp;section=hooks&amp;do=save&amp;name=help&amp;id={$hook['hook_id']}";
acp.hooks.fields['MF__help']['callback'] = function( t, json ){
$('MF__help').innerHTML = json['message'];
new Effect.Pulsate( $('MF__help'), { pulses: 3 } );
}
</script>
<div class='acp-box'>
<h3>Добавление разделов помощи</h3>
<ul class='acp-form'>
<li>
Выберите один или несколько разделов помощи для экспорта
</li>
<li style='padding-left: 15px'>
{$form['help']}
</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value=' Сохранить ' class='realbutton' id='MF__help_save' />
</div>
</div>
EOF;
return $IPBHTML;
}
/**
* Inline tasks dhtml box
*
* @access public
* @param array Hook data
* @param array Form elements
* @return string HTML
*/
public function inline_tasks( $hook, $form=array() )
{
$IPBHTML = "";
$IPBHTML .= <<<EOF
<script type='text/javascript'>
acp.hooks.fields['MF__tasks'] = {};
acp.hooks.fields['MF__tasks']['fields'] = $A(['tasks']);
acp.hooks.fields['MF__tasks']['url'] = "app=core&amp;module=ajax&amp;section=hooks&amp;do=save&amp;name=tasks&amp;id={$hook['hook_id']}";
acp.hooks.fields['MF__tasks']['callback'] = function( t, json ){
$('MF__tasks').innerHTML = json['message'];
new Effect.Pulsate( $('MF__tasks'), { pulses: 3 } );
}
</script>
<div class='acp-box'>
<h3>Добавление задач</h3>
<ul class='acp-form'>
<li>
Выберите одну или несколько задач для экспорта (не забудьте приложить PHP файлы задач к модификации)
</li>
<li style='padding-left: 15px'>
{$form['tasks']}
</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value=' Сохранить ' class='realbutton' id='MF__tasks_save' />
</div>
</div>
EOF;
return $IPBHTML;
}
/**
* Inline language bits dhtml box
*
* @access public
* @param array Hook data
* @param array Form elements
* @param int Current index
* @return string HTML
*/
public function inline_languages( $hook, $form=array(), $i=0 )
{
$IPBHTML = "";
$IPBHTML .= <<<EOF
<script type='text/javascript'>
acp.hooks.fields['MF__language'] = {};
acp.hooks.fields['MF__language']['fields'] = $A([]);
acp.hooks.fields['MF__language']['url'] = "app=core&amp;module=ajax&amp;section=hooks&amp;do=save&amp;name=language&amp;id={$hook['hook_id']}";
acp.hooks.fields['MF__language']['callback'] = function( t, json ){
$('MF__language').innerHTML = json['message'];
new Effect.Pulsate( $('MF__language'), { pulses: 3 } );
}
ipb.templates['lang_row'] = new Template("<li><table width='100%' cellpadding='0' cellspacing='0'><tr><td style='width: 30%; vertical-align: top;'>#{control}<br /><span class='desctext langdesc' id='container_desc_#{containerid}' style='display: none'>Выберите языковые строки для добавления &rarr;</span></td><td style='vertical-align: top;'><div id='container_#{containerid}' style='display: none'></div></td></tr></table></li>");
acp.hooks.languageMax = $i;
</script>
<style type='text/css'>
.langdesc {
font-size: 13px;
padding: 5px;
}
</style>
<div class='acp-box'>
<h3>Добавление языковых конструкций</h3>
<div style='max-height: 350px; overflow: auto'>
<ul class='acp-form alternate_rows sep_rows' id='language_wrap'>
EOF;
if( $i )
{
for( $k=1; $k<$i; $k++ )
{
$IPBHTML .= <<<EOF
<li>
<table width='100%' cellpadding='0' cellspacing='0'>
<tr>
<td style='width: 30%; vertical-align: top;'>
{$form['language_file_' . $k ]}<br />
<span class='desctext langdesc' id='container_desc_{$k}'>Выберите языковые строки для добавления &rarr;</span>
</td>
<td style='vertical-align: top;'>
<div id='container_{$k}'>
{$form['language_strings_' . $k ]}
<script type='text/javascript'>
acp.hooks.fields['MF__language']['fields'].push("language_{$k}");
acp.hooks.fields['MF__language']['fields'].push("strings_{$k}");
</script>
</div>
</td>
</tr>
</table>
</li>
EOF;
}
}
$IPBHTML .= <<<EOF
<li>
<table width='100%' cellpadding='0' cellspacing='0'>
<tr>
<td style='width: 30%; vertical-align: top;'>
{$form['language_file_' . $i ]}<br />
<span class='desctext langdesc' id='container_desc_{$i}' style='display: none'>Выберите языковые строки для добавления&rarr;</span>
</td>
<td style='vertical-align: top;'>
<div id='container_{$i}' style='display: none'>
{$form['language_strings_' . $i ]}
<script type='text/javascript'>
acp.hooks.fields['MF__language']['fields'].push("language_{$i}");
acp.hooks.fields['MF__language']['fields'].push("strings_{$i}");
</script>
</div>
</td>
</tr>
</table>
</li>
</ul>
</div>
<div class='acp-actionbar'>
<input type='submit' value='Добавить еще' class='realbutton' id='addLanguage' /> <input type='submit' value=' Сохранить ' class='realbutton' id='MF__language_save' />
<script type='text/javascript'>
$('addLanguage').observe('click', acp.hooks.addAnotherLanguage);
</script>
</div>
</div>
EOF;
return $IPBHTML;
}
/**
* Inline skin bits dhtml box
*
* @access public
* @param array Hook data
* @param array Form elements
* @param int Current index
* @return string HTML
*/
public function inline_skins( $hook, $form=array(), $i=0 )
{
$IPBHTML = "";
$IPBHTML .= <<<EOF
<script type='text/javascript'>
acp.hooks.fields['MF__templates'] = {};
acp.hooks.fields['MF__templates']['fields'] = $A([]);
acp.hooks.fields['MF__templates']['url'] = "app=core&amp;module=ajax&amp;section=hooks&amp;do=save&amp;name=skins&amp;id={$hook['hook_id']}";
acp.hooks.fields['MF__templates']['callback'] = function( t, json ){
$('MF__templates').innerHTML = json['message'];
new Effect.Pulsate( $('MF__templates'), { pulses: 3 } );
}
ipb.templates['skin_row'] = new Template("<li><table width='100%' cellpadding='0' cellspacing='0'><tr><td style='width: 35%; vertical-align: top;'>#{control}<br /><span class='desctext skindesc' id='s_container_desc_#{containerid}' style='display: none'>Выберите шаблоны для добавления &rarr;</span></td><td style='vertical-align: top;'><div id='s_container_#{containerid}' style='display: none'></div></td></tr></table></li>");
acp.hooks.skinMax = $i;
</script>
<style type='text/css'>
.skindesc {
font-size: 13px;
padding: 5px;
}
</style>
<div class='acp-box'>
<h3>Добавление шаблонов</h3>
<div style='max-height: 350px; overflow: auto'>
<ul class='acp-form alternate_rows sep_rows' id='skin_wrap'>
EOF;
if( $i )
{
for( $k=1; $k<$i; $k++ )
{
$IPBHTML .= <<<EOF
<li>
<table width='100%' cellpadding='0' cellspacing='0'>
<tr>
<td style='width: 35%; vertical-align: top;'>
{$form['skin_file_' . $k ]}<br />
<span class='desctext skindesc' id='s_container_desc_{$k}'>Выберите шаблоны для добавления &rarr;</span>
</td>
<td style='vertical-align: top;'>
<div id='s_container_{$k}'>
{$form['skin_method_' . $k ]}
<script type='text/javascript'>
acp.hooks.fields['MF__templates']['fields'].push("templates_{$k}");
acp.hooks.fields['MF__templates']['fields'].push("skin_{$k}");
</script>
</div>
</td>
</tr>
</table>
</li>
EOF;
}
}
$IPBHTML .= <<<EOF
<li>
<table width='100%' cellpadding='0' cellspacing='0'>
<tr>
<td style='width: 35%; vertical-align: top;'>
{$form['skin_file_' . $i ]}<br />
<span class='desctext skindesc' id='s_container_desc_{$i}' style='display: none'>Выберите шаблоны для добавления &rarr;</span>
</td>
<td style='vertical-align: top;'>
<div id='s_container_{$i}' style='display: none'>
{$form['language_strings_' . $i ]}
<script type='text/javascript'>
acp.hooks.fields['MF__templates']['fields'].push("templates_{$i}");
acp.hooks.fields['MF__templates']['fields'].push("skin_{$i}");
</script>
</div>
</td>
</tr>
</table>
</li>
</ul>
</div>
<div class='acp-actionbar'>
<input type='submit' value='Добавить еще' class='realbutton' id='addTemplates' /> <input type='submit' value=' Сохранить
' class='realbutton' id='MF__templates_save' />
<script type='text/javascript'>
$('addTemplates').observe('click', acp.hooks.addAnotherTemplate);
</script>
</div>
</div>
EOF;
return $IPBHTML;
}
/**
* Inline database changes dhtml box
*
* @access public
* @param array Hook data
* @param array Form elements
* @param int Current index
* @return string HTML
*/
public function inline_database( $hook, $form=array(), $i=0 )
{
$IPBHTML = "";
$IPBHTML .= <<<EOF
<script type='text/javascript'>
acp.hooks.fields['MF__database'] = {};
acp.hooks.fields['MF__database']['fields'] = $A([]);
acp.hooks.fields['MF__database']['url'] = "app=core&amp;module=ajax&amp;section=hooks&amp;do=save&amp;name=database&amp;id={$hook['hook_id']}";
acp.hooks.fields['MF__database']['callback'] = function( t, json ){
$('MF__database').innerHTML = json['message'];
new Effect.Pulsate( $('MF__database'), { pulses: 3 } );
}
ipb.templates['db_row'] = new Template("<li><table width='100%' cellpadding='0' cellspacing='0'><tr><td style='width: 35%; vertical-align: top;'><select name='type_#{id}' onchange='acp.hooks.generateFields(#{id});' id='type_#{id}' class='dropdown'><option value='0'>Выберите</option><option value='create'>Создать таблицу</option><option value='alter'>Изменить таблицу</option><option value='update'>Обновить данные</option><option value='insert'>Добавить данные</option></select><br /><span class='desctext dbdesc' id='d_container_desc_#{id}' style='display: none'>Выберите строчки для добавления &rarr;</span></td><td style='vertical-align: top;'><div id='d_container_#{id}' style='display: none' class='dbcontainer'></div></td></tr></table></li>");
ipb.templates['db_create'] = new Template("Укажите имя таблицы (без префикса)<br /><input name='name_#{id}' id='name_#{id}' type='input' /><br /><br />Укажите индексы таблицы, так же как они идут в SQL запросе для создания таблицы<br /><textarea name='fields_#{id}' id='fields_#{id}'></textarea><br /><br />Укажите тип таблицы (напр-р, myisam или innodb)<br /><input name='tabletype_#{id}' id='tabletype_#{id}' type='input' />");
ipb.templates['db_alter'] = new Template("Укажите тип изменения таблицы<br /><select name='altertype_#{id}' id='altertype_#{id}'><option value='add'>Добавление поля</option><option value='change'>Изменение поля</option><option value='remove'>Удаление поля</option></select><br /><br />Укажите имя таблицы (без префикса)<br /><input name='table_#{id}' id='table_#{id}' type='text' /><br /><br />Укажите имя поля<br /><input name='field_#{id}' id='field_#{id}' type='text'><br /><br />(Только для изменения поля) укажите новое имя поля<br /><input name='newfield_#{id}' id='newfield_#{id}' type='text'><br /><br />Укажите тип поля (напр-р, varchar(255))<br /><input name='fieldtype_#{id}' id='fieldtype_#{id}' type='text'><br /><br />Укажите значение по-умолчанию<br /><input name='default_#{id}' id='default_#{id}' type='text' />");
ipb.templates['db_update'] = new Template("Укажите имя таблицы (без префикса)<br /><input name='table_#{id}' id='table_#{id}' type='text'><br /><br />Укажите имя поля<br /><input name='field_#{id}' id='field_#{id}' type='text'><br /><br />Укажите новое значение<br /><input name='newvalue_#{id}' id='newvalue_#{id}' type='text'><br /><br />Укажите старое значени (полезно для операции удаления модификации)<br /><input name='oldvalue_#{id}' id='oldvalue_#{id}' type='text'><br /><br />Укажите дополнительное значение для WHERE<br /><input name='where_#{id}' id='where_#{id}' type='text'>");
ipb.templates['db_insert'] = new Template("Укажите имя таблицы (без префикса)<br /><input name='table_#{id}' id='table_#{id}' type='text' /><br /><br />Укажите данные для добавления в формате column=value, column=value<br /><textarea name='updates_#{id}' id='updates_#{id}'></textarea><br /><br />Укажите пару column=value для совпадения при удалении<br /><input name='fordelete_#{id}' id='fordelete_#{id}' type='text' />");
acp.hooks.dbMax = $i;
</script>
<style type='text/css'>
.dbdesc {
font-size: 13px;
padding: 5px;
}
.dbcontainer input,
.dbcontainer select,
.dbcontainer textarea {
margin: 4px 0px 4px 10px;
}
</style>
<div class='acp-box'>
<h3>Добавление изменений БД</h3>
<div style='max-height: 350px; overflow: auto'>
<ul class='acp-form alternate_rows sep_rows' id='database_wrap'>
EOF;
if( $i )
{
for( $k=1; $k<$i; $k++ )
{
$IPBHTML .= <<<EOF
<li>
<table width='100%' cellpadding='0' cellspacing='0'>
<tr>
<td style='width: 35%; vertical-align: top;'>
{$form['type_' . $k ]}<br />
<span class='desctext dbdesc' id='d_container_desc_{$k}'>Укажите параметры &rarr;</span>
</td>
<td style='vertical-align: top;'>
<div id='d_container_{$k}' class='dbcontainer'>
EOF;
if( $form['field_1_' . $k ] )
{
$IPBHTML .= <<<EOF
{$form['description_1_' . $k ]}<br />
{$form['field_1_' . $k ]}<br /><br />
EOF;
}
if( $form['field_2_' . $k ] )
{
$IPBHTML .= <<<EOF
{$form['description_2_' . $k ]}<br />
{$form['field_2_' . $k ]}<br /><br />
EOF;
}
if( $form['field_3_' . $k ] )
{
$IPBHTML .= <<<EOF
{$form['description_3_' . $k ]}<br />
{$form['field_3_' . $k ]}<br /><br />
EOF;
}
if( $form['field_4_' . $k ] )
{
$IPBHTML .= <<<EOF
{$form['description_4_' . $k ]}<br />
{$form['field_4_' . $k ]}<br /><br />
EOF;
}
if( $form['field_5_' . $k ] )
{
$IPBHTML .= <<<EOF
{$form['description_5_' . $k ]}<br />
{$form['field_5_' . $k ]}<br /><br />
EOF;
}
if( $form['field_6_' . $k ] )
{
$IPBHTML .= <<<EOF
{$form['description_6_' . $k ]}<br />
{$form['field_6_' . $k ]}<br /><br />
EOF;
}
$IPBHTML .= <<<EOF
<script type='text/javascript'>
acp.hooks.fields['MF__database']['fields'].push( "type_{$k}" );
acp.hooks.fields['MF__database']['fields'].push( "name_{$k}" );
acp.hooks.fields['MF__database']['fields'].push( "fields_{$k}" );
acp.hooks.fields['MF__database']['fields'].push( "tabletype_{$k}" );
acp.hooks.fields['MF__database']['fields'].push( "altertype_{$k}" );
acp.hooks.fields['MF__database']['fields'].push( "table_{$k}" );
acp.hooks.fields['MF__database']['fields'].push( "field_{$k}" );
acp.hooks.fields['MF__database']['fields'].push( "newfield_{$k}" );
acp.hooks.fields['MF__database']['fields'].push( "fieldtype_{$k}" );
acp.hooks.fields['MF__database']['fields'].push( "default_{$k}" );
acp.hooks.fields['MF__database']['fields'].push( "where_{$k}" );
acp.hooks.fields['MF__database']['fields'].push( "newvalue_{$k}" );
acp.hooks.fields['MF__database']['fields'].push( "oldvalue_{$k}" );
acp.hooks.fields['MF__database']['fields'].push( "updates_{$k}" );
acp.hooks.fields['MF__database']['fields'].push( "fordelete_{$k}" );
acp.hooks.dbMax = {$k};
</script>
</div>
</td>
</tr>
</table>
</li>
EOF;
}
}
$IPBHTML .= <<<EOF
<li>
<table width='100%' cellpadding='0' cellspacing='0'>
<tr>
<td style='width: 35%; vertical-align: top;'>
{$form['type_' . $i ]}<br />
<span class='desctext dbdesc' id='d_container_desc_{$i}' style='display: none'>Укажите параметры &rarr;</span>
</td>
<td style='vertical-align: top;'>
<div id='d_container_{$i}' style='display: none' class='dbcontainer'>
{$form['language_strings_' . $i ]}
<script type='text/javascript'>
acp.hooks.fields['MF__database']['fields'].push("type_{$i}");
</script>
</div>
</td>
</tr>
</table>
</li>
</ul>
</div>
<div class='acp-actionbar'>
<input type='submit' value='Добавить еще' class='realbutton' id='addDB' /> <input type='submit' value=' Сохранить ' class='realbutton' id='MF__database_save' />
<script type='text/javascript'>
$('addDB').observe('click', acp.hooks.addAnotherDB);
</script>
</div>
</div>
EOF;
return $IPBHTML;
}
}
@@ -0,0 +1,220 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* ACP live search skin file
* Last Updated: $Date: 2009-06-15 20:38:43 -0400 (Mon, 15 Jun 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Core
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 4777 $
*/
class cp_skin_livesearch extends output
{
/**
* Currently hiding settings
*
* @access private
* @var bool
*/
private $startedHideSettings = false;
/**
* Currently hiding page links
*
* @access private
* @var bool
*/
private $startedHidePages = false;
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* Display the live search results
*
* @access public
* @param array Results
* @param string Current search term
* @return string HTML
*/
public function liveSearchDisplay( $results, $search_term ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<ul>
EOF;
if( count($results) )
{
foreach( $results as $key => $output )
{
if( $key == 'settings' )
{
$text = $this->lang->words['ls_settings'];
}
else if( $key == 'location' )
{
$text = $this->lang->words['ls_acppages'];
}
if( !$output )
{
continue;
}
$IPBHTML .= <<<EOF
<li>
<span class='section'>{$text} <img src='{$this->settings['skin_acp_url']}/_newimages/icons_livesearch/{$key}.png' alt='{$this->lang->words['icon']}' /></span>
<ol>
{$output}
</ol>
EOF;
// If we started hidding settings, we need to stop hiding them now...
if( $key == 'settings' AND $this->startedHideSettings )
{
$this->startedHideSettings = false;
$IPBHTML .= <<<EOF
</div>
<div style='text-align: center;' id='hideSettingsShow'>
<a href='#' onclick="$('hideSettingsShow').hide();$('hideSettings').show();clearTimeout( ACPLiveSearch.searchTimer['hide'] );return false;">{$this->lang->words['ls_view_more_settings']}</a>
</div>
EOF;
}
// If we started hidding pages, we need to stop hiding them now...
else if( $key == 'location' AND $this->startedHidePages )
{
$this->startedHidePages = false;
$IPBHTML .= <<<EOF
</div>
<div style='text-align: center;' id='hidePagesShow'>
<a href='#' onclick="$('hidePagesShow').hide();$('hidePages').show();clearTimeout( ACPLiveSearch.searchTimer['hide'] );return false;">{$this->lang->words['ls_view_more_acp']}</a>
</div>
EOF;
}
$IPBHTML .= <<<EOF
</li>
EOF;
}
}
else
{
$IPBHTML .= <<<EOF
<li><em>No results</em></li>
EOF;
}
$IPBHTML .= <<<EOF
</ul>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Result for settings
*
* @access public
* @param array Result
* @param int Total count
* @param int Section count
* @return string HTML
*/
public function searchRowSetting( $r, $count, $secCount ) {
$IPBHTML = "";
//--starthtml--//
if( $secCount > 10 )
{
if( !$this->startedHideSettings )
{
$this->startedHideSettings = true;
$IPBHTML .= <<<EOF
</ol>
<div id='hideSettings' style='display:none;'>
<ol style='margin-top:0px;'>
EOF;
}
}
$IPBHTML .= <<<EOF
<li><a href='{$this->settings['_base_url']}&amp;app=core&amp;module=tools&amp;section=settings&amp;do=setting_view&amp;conf_group={$r['conf_group']}&amp;search={$this->request['search_term']}'>{$r['conf_title']}</a></li>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Result for acp pages
*
* @access public
* @param array Result
* @param int Total count
* @param int Section count
* @return string HTML
*/
public function searchRowLocation( $r, $count, $secCount ) {
$IPBHTML = "";
if( $secCount > 10 )
{
if( !$this->startedHidePages )
{
$this->startedHidePages = true;
$IPBHTML .= <<<EOF
</ol>
<div id='hidePages' style='display:none;'>
<ol style='margin-top:0px;'>
EOF;
}
}
//--starthtml--//
$IPBHTML .= <<<EOF
<li><a href='{$this->settings['_base_url']}{$r['fullurl']}'>{$r['title']}</a></li>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Live search template
*
* @access public
* @return string HTML
*/
public function liveSearchTemplate() {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<div id='search_stem'></div>
<div id='search_inner'>
<h3 class='bar'>{$this->lang->words['ls_quick_search']}</h3>
<div id='ajax_result'></div>
</div>
EOF;
//--endhtml--//
return $IPBHTML;
}
}
@@ -0,0 +1,243 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Moderator log skin file
* Last Updated: $Date: 2009-09-22 11:55:32 -0400 (Tue, 22 Sep 2009) $
*
* @author $Author: matt $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Core
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 5139 $
*/
class cp_skin_modlogs extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* Moderator logs wrapper
*
* @access public
* @param array Rows
* @param array Moderators
* @return string HTML
*/
public function modlogsWrapper( $rows, $admins ) {
$form_array = array(
0 => array( 'topic_title' , $this->lang->words['mlog_topictitle'] ),
1 => array( 'ip_address' , $this->lang->words['mlog_ip'] ),
2 => array( 'member_name' , $this->lang->words['mlog_name'] ),
3 => array( 'topic_id' , $this->lang->words['mlog_tid'] ),
4 => array( 'forum_id' , $this->lang->words['mlog_fid'] ),
5 => array( 'action' , $this->lang->words['mlog_action'] )
);
$form = array();
$form['search_for'] = $this->registry->output->formInput( "search_string" );
$form['search_in'] = $this->registry->output->formDropdown( "search_type", $form_array );
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$this->lang->words['mlog_title']}</h2>
</div>
<div class="acp-box">
<h3>{$this->lang->words['mlog_last5']}</h3>
<table class="alternate_rows" width='100%'>
<tr>
<th width='15%'>{$this->lang->words['mlog_member']}</th>
<th width='15%'>{$this->lang->words['mlog_action']}</th>
<th width='15%'>{$this->lang->words['mlog_forum']}</th>
<th width='25%'>{$this->lang->words['mlog_topictitle']}</th>
<th width='20%'>{$this->lang->words['mlog_date']}</th>
<th width='10%'>{$this->lang->words['mlog_ip']}</th>
</tr>
HTML;
if( count($rows) AND is_array($rows) )
{
foreach( $rows as $row )
{
$IPBHTML .= <<<HTML
<tr>
<td>{$row['members_display_name']}</td>
<td><span style='font-weight:bold;color:red'>{$row['action']}</span></td>
<td><b>{$row['name']}</b></td>
<td>{$row['topic_title']}{$row['topic']}</td>
<td>{$row['_time']}</td>
<td>{$row['ip_address']}</td>
</tr>
HTML;
}
}
else
{
$IPBHTML .= <<<HTML
<tr>
<td colspan='6' align='center'>{$this->lang->words['mlog_noresults']}</td>
</tr>
HTML;
}
$IPBHTML .= <<<HTML
</table>
</div>
<br />
<div class="acp-box">
<h3>{$this->lang->words['mlog_thelogs']}</h3>
<table class="alternate_rows" width='100%'>
<tr>
<th width='30%'>{$this->lang->words['mlog_member']}</th>
<th width='20%'>{$this->lang->words['mlog_action']}</th>
<th width='20%'>{$this->lang->words['mlog_viewall']}</th>
<th width='30%'>{$this->lang->words['mlog_removeall']}</th>
</tr>
HTML;
if( count($admins) AND is_array($admins) )
{
foreach( $admins as $row )
{
$IPBHTML .= <<<HTML
<tr>
<td>{$row['members_display_name']}</td>
<td>{$row['act_count']}</td>
<td><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=view&amp;mid={$row['member_id']}'>{$this->lang->words['mlog_view']}</a></td>
<td><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=remove&amp;mid={$row['member_id']}'>{$this->lang->words['mlog_remove']}</a></td>
</tr>
HTML;
}
}
else
{
$IPBHTML .= <<<HTML
<tr>
<td colspan='4' align='center'>{$this->lang->words['mlog_noresults']}</td>
</tr>
HTML;
}
$IPBHTML .= <<<HTML
</table>
</div>
<br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='view' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class="acp-box">
<h3>{$this->lang->words['mlog_search']}</h3>
<ul class="acp-form alternate_rows">
<li>
<label>{$this->lang->words['mlog_searchfor']}</label>
{$form['search_for']}
</li>
<li>
<label>{$this->lang->words['mlog_searchin']}</label>
{$form['search_in']}
</li>
</ul>
<div class="acp-actionbar">
<input value="{$this->lang->words['mlog_searchbutton']}" class="button primary" accesskey="s" type="submit" />
</div>
</div>
</form>
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* View a single moderator log entry
*
* @access public
* @param array Records
* @param string Page links
* @return string HTML
*/
public function modlogsView( $rows, $pages ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$this->lang->words['mlog_title']}</h2>
</div>
<div class="acp-box">
<h3>{$this->lang->words['mlog_thelogs']}</h3>
<table class="alternate_rows" width='100%'>
<tr>
<th width='15%'>{$this->lang->words['mlog_member']}</th>
<th width='15%'>{$this->lang->words['mlog_action']}</th>
<th width='15%'>{$this->lang->words['mlog_forum']}</th>
<th width='25%'>{$this->lang->words['mlog_topictitle']}</th>
<th width='20%'>{$this->lang->words['mlog_date']}</th>
<th width='10%'>{$this->lang->words['mlog_ip']}</th>
</tr>
HTML;
if( count($rows) AND is_array($rows) )
{
foreach( $rows as $row )
{
$IPBHTML .= <<<HTML
<tr>
<td>{$row['members_display_name']}</td>
<td><span style='font-weight:bold;color:red'>{$row['action']}</span></td>
<td><b>{$row['name']}</b></td>
<td>{$row['topic_title']}{$row['topic']}</td>
<td>{$row['_time']}</td>
<td>{$row['ip_address']}</td>
</tr>
HTML;
}
}
else
{
$IPBHTML .= <<<HTML
<tr>
<td colspan='6' align='center'>{$this->lang->words['mlog_noresults']}</td>
</tr>
HTML;
}
$IPBHTML .= <<<HTML
</table>
<div class='acp-actionbar'>
<div class="leftaction">{$pages}</div>
</div>
</div>
<br />
HTML;
//--endhtml--//
return $IPBHTML;
}
}
@@ -0,0 +1,993 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Dashboard skin file
* Last Updated: $Date: 2009-10-23 21:23:07 -0400 (Fri, 23 Oct 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Core
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 5283 $
*/
class cp_skin_mycp extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* Main dashboard template
*
* @access public
* @param array Content blocks
* @param array Forums
* @param array Groups
* @param array URLs
* @return string HTML
*/
public function mainTemplate( $content, $forums, $groups, $urls=array() ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<div class='section_title'>
<h2>{$this->lang->words['cp_welcomeipb3']}</h2>
</div>
<!--in_dev_notes-->
<!--in_dev_check-->
<!--warningconverter-->
<!--warninginstaller-->
<!--warningupgrade-->
<!--boardoffline-->
<!--fulltext-->
<div id='dashboard'>
<div id='quick_start'>
<table width='100%' cellpadding='0' cellspacing='0'>
<tr>
<td>
<a href='{$this->settings['_base_url']}app=members&amp;module=members&amp;section=members' title='{$this->lang->words['cp_managemembers']}'><img src='{$this->settings['skin_acp_url']}/_newimages/icons/user_edit.png' border='0' alt='{$this->lang->words['cp_managemembers']}' /> {$this->lang->words['cp_managemembers']}</a>
</td>
<td>
<a href='{$this->settings['_base_url']}app=core&amp;module=tools&amp;section=settings&amp;do=settingsview' title='{$this->lang->words['cp_editsettings']}'><img src='{$this->settings['skin_acp_url']}/_newimages/icons/cog_edit.png' border='0' alt='{$this->lang->words['cp_editsettings']}' /> {$this->lang->words['cp_editsettings']}</a>
</td>
<td>
<a href='{$this->settings['_base_url']}app=core&amp;module=templates&amp;section=skinsets' title='{$this->lang->words['cp_skinmanager']}'><img src='{$this->settings['skin_acp_url']}/_newimages/icons/folder_palette.png' border='0' alt='{$this->lang->words['cp_skinmanager']}' /> {$this->lang->words['cp_skinmanager']}</a>
</td>
</tr>
<tr>
<td>
<a href='{$this->settings['_base_url']}app=members&amp;module=groups&amp;section=groups&amp;do=groups_overview' title='{$this->lang->words['cp_managegroups']}'><img src='{$this->settings['skin_acp_url']}/_newimages/icons/group.png' border='0' alt='{$this->lang->words['cp_managegroups']}' /> {$this->lang->words['cp_managegroups']}</a>
</td>
<td>
<a href='{$this->settings['_base_url']}app=members&amp;module=members&amp;section=tools&amp;do=validating' title='{$this->lang->words['cp_managevalidating']}'><img src='{$this->settings['skin_acp_url']}/_newimages/icons/user_warn.png' border='0' alt='{$this->lang->words['cp_managevalidating']}' /> {$this->lang->words['cp_managevalidating']}</a>
</td>
<td>
<a href='{$this->settings['_base_url']}app=core&amp;module=languages&amp;section=manage_languages' title='{$this->lang->words['cp_langmanager']}'><img src='{$this->settings['skin_acp_url']}/_newimages/icons/book_next.png' border='0' alt='{$this->lang->words['cp_langmanager']}' /> {$this->lang->words['cp_langmanager']}</a>
</td>
</tr>
<tr>
<td>
<a href='{$this->settings['_base_url']}app=forums&amp;module=forums&amp;section=forums' title='{$this->lang->words['cp_manageforums']}'><img src='{$this->settings['skin_acp_url']}/_newimages/icons/comments.png' border='0' alt='{$this->lang->words['cp_manageforums']}' /> {$this->lang->words['cp_manageforums']}</a>
</td>
<td>
<a href='{$this->settings['_base_url']}app=members&amp;module=bulkmail&amp;section=bulkmail&amp;do=bulk_mail' title='{$this->lang->words['cp_bulkmailer']}'><img src='{$this->settings['skin_acp_url']}/_newimages/icons/email_add.png' border='0' alt='{$this->lang->words['cp_bulkmailer']}' /> {$this->lang->words['cp_bulkmailer']}</a>
</td>
<td>
<a href='{$this->settings['_base_url']}app=core&amp;module=posts&amp;section=emoticons' title='{$this->lang->words['cp_emoticonmanager']}'><img src='{$this->settings['skin_acp_url']}/_newimages/icons/emoticon_grin.png' border='0' alt='{$this->lang->words['cp_emoticonmanager']}' /> {$this->lang->words['cp_emoticonmanager']}</a>
</td>
</tr>
</table>
</div>
<br />
<div id='search_and_stats'>
<div id='quick_search' class='acp-box'>
<h3>{$this->lang->words['cp_quicksearch']}</h3>
<table width='100%' cellpadding='0' cellspacing='0' border='0' class='alternate_rows'>
<tr>
<td style='width: 40%'>{$this->lang->words['cp_find']} <strong>{$this->lang->words['cp_members']}</strong>:</td>
<td style='width: 60%'>
<form action='{$this->settings['_base_url']}&amp;app=members&amp;module=members&amp;section=members&amp;do=members_list&amp;__update=1&amp;f_member_contains_type=contains&amp;f_member_contains=members_display_name' method='post'><input type='text' size='20' class='textinput' id='members_display_name' name='f_member_contains_text' value='' /> <input type='submit' value='{$this->lang->words['cp_go']}' class='realbutton' onclick='return ACPHomepage.editMember()' /></form>
</td>
</tr>
<tr>
<td>{$this->lang->words['cp_find']} <strong>{$this->lang->words['cp_systemsettings']}</strong>:</td>
<td>
<form name='settingform' id='settingform' action='{$this->settings['_base_url']}&amp;app=core&amp;module=tools&amp;section=settings&amp;do=setting_view' method='post'><input type='text' size='20' class='textinput' name='search' value='' /> <input type='submit' value='{$this->lang->words['cp_go']}' class='realbutton' /></form>
</td>
</tr>
<tr>
<td>{$this->lang->words['cp_find']} <strong>{$this->lang->words['cp_ipaddresses']}</strong>:</td>
<td>
<form name='ipform' id='ipform' action='{$this->settings['_base_url']}&amp;app=members&amp;module=members&amp;section=tools&amp;do=learn_ip' method='post'><input type='text' size='20' class='textinput' name='ip' value='' /> <input type='submit' value='{$this->lang->words['cp_go']}' class='realbutton' /></form>
</td>
</tr>
<tr>
<td>{$this->lang->words['cp_edit']} <strong>{$this->lang->words['cp_usergroup']}</strong>:</td>
<td>
<form name='newmem' id='newmem' action='{$this->settings['base_url']}&amp;app=members&amp;module=groups&amp;section=groups&amp;do=edit' method='post'><select name='id'>{$groups}</select> <input type='submit' value='{$this->lang->words['cp_go']}' class='realbutton' /></form>
</td>
</tr>
</table>
</div>
<div id='stats_overview' class='acp-box'>
<h3>{$this->lang->words['cp_systemstats']}</h3>
<table width='100%' cellpadding='0' cellspacing='0' class='alternate_rows'>
{$content['stats']}
</table>
</div>
</div>
<br />
<div id='notes_and_news'>
<div id='admin_notes' class='acp-box'>
<h3>{$this->lang->words['cp_adminnotes']}</h3>
<form action='{$this->settings['base_url']}&amp;app=core&amp;module=mycp&amp;section=dashboard&amp;save=1' method='post'>
<table width='100%' cellpadding='0' cellspacing='0' border='0'>
{$content['ad_notes']}
</table>
</form>
</div>
<!-- Version Check -->
<div id='ips_update_wrapper' style='display:none'>
<!-- Security Update -->
<div id='ips_update_security' class='acp-box' style='display:none'>
<h3>{$this->lang->words['cp_securityupdate']}</h3>
<p style='text-align:center'>
{$this->lang->words['cp_version']} <strong><span id='acp-version-security'></span></strong> {$this->lang->words['cp_securityupdate']}!
<br />
<input type='button' onclick='upgradeMoreInfo()' class='button' value='{$this->lang->words['cp_moreinformation']}' />
<input type='button' onclick='resetContinue()' class='button' value='{$this->lang->words['cp_resetwarning']}' />
</p>
</div>
<!-- Normal Version Upgrade -->
<div id='ips_update_update' class='acp-box' style='display:none'>
<h3>{$this->lang->words['cp_newversion']}</h3>
<p style='text-align:center'>
{$this->lang->words['cp_version']} <strong><span id='acp-version-update'></span></strong> {$this->lang->words['cp_updateavailable']}!
<br />
<input type='button' onclick='upgradeMoreInfo()' class='button' value='{$this->lang->words['cp_moreinformation']}' />
</p>
</div>
<!-- Normal Version Upgrade -->
<div id='ips_update_normal' class='acp-box' style='display:none'>
<h3>{$this->lang->words['cp_newversion']}</h3>
<p style='text-align:center'>
{$this->lang->words['cp_version']} <strong><span id='acp-version-normal'></span></strong> {$this->lang->words['cp_availablenow']}!
<br />
<input type='button' onclick='upgradeMoreInfo()' class='button' value='{$this->lang->words['cp_moreinformation']}' />
</p>
</div>
</div>
<!--IPS WIDGETS-->
<div id='ips_news' class='acp-box'>
<h3>{$this->lang->words['cp_ipslatestnews']}</h3>
<div id='ips_news_content'></div>
</div>
</div>
<div id='blog_and_bulletin'>
<div id='ips_blog' class='acp-box'>
<h3>{$this->lang->words['cp_ipsblogs']}</h3>
<div id='ips_blog_content'></div>
</div>
<div id='ips_supportbox' class='acp-box'>
<h3>{$this->lang->words['cp_ipsbulletin']}</h3>
<p id='ips_supportbox_content'></p>
</div>
<!--IPS WIDGETS-->
</div>
<div id='admin_boxes'>
<div id='active_admins' class='acp-box'>
<h3>{$this->lang->words['cp_activeadmins']}</h3>
{$content['acp_online']}
</div>
<!--acplogins-->
</div>
</div>
<br />
<script type="text/javascript" src='{$this->settings['js_app_url']}acp.homepage.js'></script>
<!-- HIDDEN "INFORMATION" DIV -->
<div id='acp-update-info-wrapper' style='display:none'>
<h3>{$this->lang->words['cp_noticeupdate']}</h3>
<div class='acp-box'>
<p style='text-align: center;padding:6px;padding-top:24px'>
{$this->lang->words['cp_update_info']}
<br />
<br />
<input type='button' value='{$this->lang->words['cp_visitcc']}' onclick='upgradeContinue()' class='button' />
</p>
</div>
</div>
<!-- / HIDDEN "INFORMATION" DIV -->
<script type='text/javascript'>
function upgradeMoreInfo()
{
curPop = new ipb.Popup( 'acpVersionInfo', {
type: 'pane',
modal: true,
initial: $('acp-update-info-wrapper').innerHTML,
hideAtStart: false,
w: '400px',
h: '150px'
});
return false;
}
function upgradeContinue()
{
acp.openWindow( IPSSERVER_download_link, 800, 600 );
}
/* Warning CONTINUE / CANCEL */
function resetContinue()
{
if ( confirm( "{$this->lang->words['cp_wannareset']}" ) )
{
acp.redirect( ipb.vars['base_url'] + "&amp;app=core&amp;module=mycp&amp;section=dashboard&amp;reset_security_flag=1&amp;new_build=" + IPSSERVER_download_ve + "&amp;new_reason=" + IPSSERVER_download_vt, 1 );
}
}
/* Set up global vars */
var _newsFeed = null;
var _blogFeed = null;
var _versionCheck = null;
var _keithFeed = null;
/* ---------------------- */
/* ONLOAD: IPS widgets */
/* ---------------------- */
function onload_ips_widgets()
{
var head = $$('head')[0];
/* Grab files */
head.insert( new Element('script', { src: "{$urls['news']}", 'type': 'text/javascript' } ) );
head.insert( new Element('script', { src: "{$urls['blogs']}", 'type': 'text/javascript' } ) );
head.insert( new Element('script', { src: "{$urls['version_check']}", 'type': 'text/javascript' } ) );
head.insert( new Element('script', { src: "{$urls['keiths_bits']}", 'type': 'text/javascript' } ) );
/* ---------------------- */
/* Feeds */
/* ---------------------- */
_newsFeed = setTimeout( '_newsFeedFunction()', 1000 );
_blogFeed = setTimeout( '_blogFeedFunction()', 1000 );
/* ---------------------- */
/* Update boxes */
/* ---------------------- */
_versionCheck = setTimeout( '_versionCheckFunction()', 1000 );
/* ---------------------- */
/* Load Keith */
/* ---------------------- */
_keithFeed = setTimeout( '_keithFeedFunction()', 1000 );
}
/* ---------------------- */
/* Keith Feed YumYum */
/* ---------------------- */
function _keithFeedFunction()
{
if ( typeof( IPS_KEITH_CONTENT ) != 'undefined' )
{
clearTimeout( _keithFeed );
if ( IPS_KEITH_CONTENT && IPS_KEITH_CONTENT != 'none' )
{
/* Show version numbers */
$( 'ips_supportbox_content' ).innerHTML = IPS_KEITH_CONTENT.replace( /&#0039;/g, "'" );
}
}
else
{
_keithFeed = setTimeout( '_keithFeedFunction()', 1000 );
}
}
/* ---------------------- */
/* Version Check */
/* ---------------------- */
function _versionCheckFunction()
{
if ( typeof( IPSSERVER_update_type ) != 'undefined' )
{
clearTimeout( _versionCheck );
if ( IPSSERVER_update_type && IPSSERVER_update_type != 'none' )
{
var _show = '';
var _text = '';
switch( IPSSERVER_update_type )
{
case 'security':
_show = 'ips_update_security';
_text = 'acp-version-security';
break;
case 'update':
_show = 'ips_update_update';
_text = 'acp-version-update';
break;
case 'normal':
_show = 'ips_update_normal'
_text = 'acp-version-normal';
break;
}
$( _show ).style.display = '';
$( 'ips_update_wrapper' ).style.display = '';
/* Show version numbers */
$( _text ).innerHTML = IPSSERVER_download_vh;
}
}
else
{
_versionCheck = setTimeout( '_versionCheckFunction()', 1000 );
}
}
/* ---------------------- */
/* BLOG FEED */
/* ---------------------- */
function _blogFeedFunction()
{
if ( typeof( ipsBlogFeed ) != 'undefined' )
{
clearTimeout( _blogFeed );
eval( ipsBlogFeed );
var finalString = '';
var _len = ipsBlogFeed['items'].length;
if( typeof( ipsBlogFeed['error'] ) == 'undefined' )
{
for( i = 0; i < _len; i++ )
{
var _style = ( i + 1 < _len ) ? 'padding:2px;border-bottom:1px dotted black' : 'padding:2px';
var _title = ( ipsBlogFeed['items'][i]['title'].length > 50 ) ? ipsBlogFeed['items'][i]['title'].substr( 0, 47 ) + '...' : ipsBlogFeed['items'][i]['title'];
finalString += "<div style='" + _style + "'><img src='{$this->settings['skin_acp_url']}/_newimages/icons/ipsnews_item.gif' border='0' /> <a href='" + ipsBlogFeed['items'][i]['link'] + "' target='_blank' style='text-decoration:none'title='" + ipsBlogFeed['items'][i]['title'] + "'>" + _title + "</a></div>\\n";
}
}
if ( finalString )
{
$( 'ips_blog_content' ).innerHTML = finalString;
}
else
{
$( 'ips_blog' ).style.display = 'none';
}
}
else
{
_blogFeed = setTimeout( '_blogFeedFunction()', 1000 );
}
}
/* ---------------------- */
/* NEWS FEED */
/* ---------------------- */
function _newsFeedFunction()
{
if ( typeof( ipsNewsFeed ) != 'undefined' )
{
clearTimeout( _newsFeed );
eval( ipsNewsFeed );
var finalString = '';
var _len = ipsNewsFeed['items'].length;
if( typeof( ipsNewsFeed['error'] ) == 'undefined' )
{
for( i = 0; i < _len; i++ )
{
var _style = ( i + 1 < _len ) ? 'padding:2px;border-bottom:1px dotted black' : 'padding:2px';
var _title = ( ipsNewsFeed['items'][i]['title'].length > 50 ) ? ipsNewsFeed['items'][i]['title'].substr( 0, 47 ) + '...' : ipsNewsFeed['items'][i]['title'];
finalString += "<div style='" + _style + "'><img src='{$this->settings['skin_acp_url']}/_newimages/icons/ipsnews_item.gif' border='0' /> <a href='" + ipsNewsFeed['items'][i]['link'] + "' target='_blank' style='text-decoration:none' title='" + ipsNewsFeed['items'][i]['title'] + "'>" + _title + "</a></div>\\n";
}
}
if ( finalString )
{
$( 'ips_news_content' ).innerHTML = finalString;
}
else
{
$( 'ips_news' ).style.display = 'none';
}
}
else
{
_newsFeed = setTimeout( '_newsFeedFunction()', 1000 );
}
}
/* Set up onload event */
Event.observe( window, 'load', onload_ips_widgets );
//]]>
</script>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Wrapper for validating users
*
* @access public
* @param string Content
* @return string HTML
*/
public function acp_validating_wrapper($content) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<div class='dashboard_border'>
<div class='dashboard_header'>{$this->lang->words['cp_adminvalidationqueue']}</div>
{$content}
<div align='right'>
<a href='{$this->settings['base_url']}&amp;app=members&amp;module=members&amp;section=tools&amp;do=validating' style='text-decoration:none'>{$this->lang->words['cp_more']} &raquo;</a>
</div>
</div>
<br />
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Validating users row
*
* @access public
* @param array Data
* @return string HTML
*/
public function acp_validating_block( $data ) {
$IPBHTML = "";
//--starthtml--//
$data['url'] = $this->registry->output->buildSEOUrl( $this->settings['board_url'] . '/index.php?showuser=' . $data['member_id'], 'none', $data['members_seo_name'], 'showuser' );
$IPBHTML .= <<<EOF
<div class='dashboard_sub_row_alt'>
<div style='float:right;'>
<a href='{$this->settings['_base_url']}&amp;app=members&amp;module=members&amp;section=tools&amp;do=domod&amp;_admin_auth_key={$this->registry->getClass('adminFunctions')->_admin_auth_key}&amp;mid_{$data['member_id']}=1&amp;type=approve'><img src='{$this->settings['skin_acp_url']}/images/aff_tick.png' alt='{$this->lang->words['cp_yes']}' class='ipd' /></a>&nbsp;
<a href='{$this->settings['_base_url']}&amp;app=members&amp;module=members&amp;section=tools&amp;do=domod&amp;_admin_auth_key={$this->registry->getClass('adminFunctions')->_admin_auth_key}&amp;mid_{$data['member_id']}=1&amp;type=delete'><img src='{$this->settings['skin_acp_url']}/images/aff_cross.png' alt='{$this->lang->words['cp_no']}' class='ipd' /></a>
</div>
<div>
<strong><a href='{$data['url']}' target='_blank'>{$data['members_display_name']}</a></strong>{$data['_coppa']}<br />
&nbsp;&nbsp;{$data['email']}</a><br />
<div class='desctext'>&nbsp;&nbsp;{$this->lang->words['cp_ip']}: <a href='{$this->settings['base_url']}&amp;app=members&amp;module=members&amp;section=toolsdo=learn_ip&amp;ip={$data['ip_address']}'>{$data['ip_address']}</a></div>
<div class='desctext'>&nbsp;&nbsp;{$this->lang->words['cp_registered']} {$data['_entry']}</div>
</div>
</div>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Show warning that converter is still present
*
* @access public
* @param int Converter flag
* @return string HTML
*/
public function warning_converter( $converter ) {
$IPBHTML = "";
//--starthtml--//
$this->lang->words['cp_warning_converter'] = sprintf( $this->lang->words['cp_warning_converter'], $this->settings['_base_url'] );
$IPBHTML .= <<<EOF
{$this->lang->words['cp_warning_converter']}
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Show the ACP notes block
*
* @access public
* @param string Current notes
* @return string HTML
*/
public function acp_notes($notes) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<tr>
<td class='notes acp-row-on'>
<textarea name='notes' class="dashboard_notes" rows='8' cols='25'>{$notes}</textarea>
</td>
</tr>
<tr>
<td class='acp-actionbar'>
<input type='submit' value='{$this->lang->words['cp_savenotes']}' class='realbutton' />
</td>
</tr>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Show a latest login record
*
* @access public
* @param array Record
* @return string HTML
*/
public function acp_last_logins_row( $r ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<tr>
<td width='1' valign='middle'>
<img src='{$this->settings['skin_acp_url']}/images/{$r['_admin_img']}' border='0' alt='-' class='ipd' />
</td>
<td class=''>
<strong>{$r['admin_username']}</strong>
<div class='desctext'>
{$r['_admin_time']}
</div>
</td>
<td class=''>
<a href='#' onclick="return acp.openWindow('{$this->settings['base_url']}module=system&amp;section=loginlog&amp;do=view_detail&amp;detail={$r['admin_id']}', 400, 400)" title='Подробнее'><img src='{$this->settings['skin_acp_url']}/images/folder_components/index/view.png' border='0' alt='-' class='ipd' title='{$this->lang->words['cp_view']}' /></a>
</td>
</tr>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Wrapper for latest ACP logins
*
* @access public
* @param string Content
* @return string HTML
*/
public function acp_last_logins_wrapper($content) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<div id='admin_logins' class="acp-box">
<h3>{$this->lang->words['cp_latestadminlogins']}</h3>
<table cellspacing='0' cellpadding='0' border='0' width='100%'>
{$content}
</table>
<div class="more">
<a href='{$this->settings['base_url']}&amp;app=core&amp;module=system&amp;section=loginlog' style='text-decoration:none'>{$this->lang->words['cp_more']} &raquo;</a>
</div>
</div>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Show the admins online record
*
* @access public
* @param array Record
* @return string HTML
*/
public function acp_onlineadmin_row( $r ) {
$IPBHTML = "";
//--starthtml--//
$r['url'] = $this->registry->output->buildSEOUrl( $this->settings['board_url'] . '/index.php?showuser=' . $r['session_member_id'], 'none', $r['members_seo_name'], 'showuser' );
$IPBHTML .= <<<EOF
<tr>
<td class=''>
<strong style='font-size:12px'><a href='{$r['url']}' target='_blank'>{$r['members_display_name']}</a></strong>
<div class='desctext'>{$r['session_location']} (IP: {$r['session_ip_address']})</div>
</td>
<td class=''>
<img src='{$r['pp_thumb_photo']}' width='{$r['pp_thumb_width']}' height='{$r['pp_thumb_height']}' />
</td>
</tr>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Admins online wrapper
*
* @access public
* @param string Content
* @return string HTML
*/
public function acp_onlineadmin_wrapper($content) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<table width='100%' cellpadding='4' cellspacing='0'>
{$content}
</table>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Show latest actions record
*
* @access public
* @param array Record
* @return string HTML
*/
public function acp_lastactions_row( $rowb ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<tr>
<td class='tablerow1' width='1' valign='middle'>
<img src='{$this->settings['skin_acp_url']}/images/folder_components/index/user.png' border='0' alt='-' class='ipd' />
</td>
<td class='tablerow1'>
<b>{$rowb['members_display_name']}</b>
<div class='desctext'>{$this->lang->words['cp_ip']}: {$rowb['ip_address']}</div>
</td>
<td class='tablerow2'>{$rowb['_ctime']}</td>
</tr>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Latest actions wrapper
*
* @access public
* @param string Content
* @return string HTML
*/
public function acp_lastactions_wrapper($content) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<div class='tableborder'>
<div class='tableheaderalt'>{$this->lang->words['cp_lastacpactions']}</div>
<table width='100%' cellpadding='4' cellspacing='0'>
<tr>
<td class='tablesubheader' width='1%'>&nbsp;</td>
<td class='tablesubheader' width='44'>{$this->lang->words['cp_membername']}</td>
<td class='tablesubheader' width='55%'>{$this->lang->words['cp_timeofaction']}</td>
</tr>
$content
</table>
<div class='tablefooter' align='right'>
<a href='{$this->settings['base_url']}&amp;app=core&amp;module=logs&amp;section=adminlogs' style='text-decoration:none'>{$this->lang->words['cp_more']} &raquo;</a>
</div>
</div>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* ACP Statistics wrapper
*
* @access public
* @param array Content
* @return string HTML
*/
public function acp_stats_wrapper($content) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<tr>
<td>
<strong>{$this->lang->words['cp_totalmembers']}</strong>
<div class='sub desctext'>
{$this->lang->words['cp_onlinenow']}<br />
{$this->lang->words['cp_awaitingvalidation']}<br />
{$this->lang->words['cp_lockedaccounts']}<br />
{$this->lang->words['cp_coppaaccounts']}<br />
{$this->lang->words['cp_spammeraccounts']}
</div>
</td>
<td>
{$content['members']}
<div class='desctext'>
<a href='{$this->settings['board_url']}/index.php?app=members&amp;section=online&amp;module=online' target='_blank' title='{$this->lang->words['cp_onlinenow_info']}'>{$this->lang->words['cp_view']}</a> ({$content['sessions']})<br />
<a href='{$this->settings['base_url']}&amp;app=members&amp;module=members&amp;section=tools&amp;do=validating'>{$this->lang->words['cp_manage']}</a> ({$content['validate']})<br />
<a href='{$this->settings['base_url']}&amp;app=members&amp;module=members&amp;section=tools&amp;do=locked'>{$this->lang->words['cp_manage']}</a> ({$content['locked']})<br />
<a href='{$this->settings['base_url']}&amp;app=members&amp;module=members&amp;section=tools&amp;do=validating&amp;filter=coppa'>{$this->lang->words['cp_manage']}</a> ({$content['coppa']})<br />
<a href='{$this->settings['base_url']}&amp;app=members&amp;module=members&amp;section=tools&amp;do=spam'>{$this->lang->words['cp_manage']}</a> ({$content['spammer'][0]})
</div>
</td>
</tr>
<tr>
<td>
<strong>{$this->lang->words['cp_topics']}</strong>
<div class='sub desctext'>
{$this->lang->words['cp_awaitingmoderation']}
</div>
</td>
<td>{$content['topics']}<br /><span class='desctext'>{$content['topics_mod']}</span></td>
</tr>
<tr>
<td>
<strong>{$this->lang->words['cp_posts']}</strong>
<div class='sub desctext'>
{$this->lang->words['cp_awaitingmoderation']}
</div>
</td>
<td>{$content['replies']}<br /><span class='desctext'>{$content['posts_mod']}</span></td>
</tr>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Show a warning about the PHP version
*
* @access public
* @param string PHP version
* @return string HTML
*/
public function acp_php_version_warning( $phpversion ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
{$this->lang->words['cp_php_warning']}
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Show a warning box
*
* @access public
* @param string Title
* @param string Content
* @return string HTML
*/
public function warning_box($title, $content) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<div class='warning'>
<h4><img src='{$this->settings['skin_acp_url']}/_newimages/icons/bullet_error.png' border='0' alt='{$this->lang->words['cp_error']}' /> {$title}</h4>
{$content}
</div>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Show warning that unlocked installer is present
*
* @access public
* @return string HTML
*/
public function warning_unlocked_installer() {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
{$this->lang->words['cp_unlocked_warning']}
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Show unfinished upgrade warning
*
* @access public
* @return string HTML
*/
public function warning_upgrade() {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
{$this->lang->words['cp_upgrade_warning']}
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Show locked installer present warning
*
* @access public
* @return string HTML
*/
public function warning_installer() {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
{$this->lang->words['cp_installer_warning']}
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Show a warning that an emergency skin rebuild has occurred
*
* @access public
* @return string HTML
* @deprecated Don't think this is done/called anymore
*/
public function warning_rebuild_emergency() {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
{$this->lang->words['cp_emergency']}
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Show a warning that the rebuild following the upgrade hasn't been completed
*
* @access public
* @return string HTML
*/
public function warning_rebuild_upgrade() {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
{$this->lang->words['cp_warning_rebuild']}
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Show form to change details
*
* @access public
* @return string HTML
*/
public function showChangeForm() {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<form id='mainform' action='{$this->settings['base_url']}&amp;module=mycp&amp;section=details&amp;do=save' method='post'>
<div class='acp-box'>
<h3>{$this->lang->words['mycp_change_details']}</h3>
<ul class='acp-form'>
<li class='head'><label>{$this->lang->words['change_email_details']}</label></li>
<li class='acp-row-on'>
<label>{$this->lang->words['change__email']}</label>
<input class='textinput' type='text' name='email' size='30' />
</li>
<li class='acp-row-off'>
<label>{$this->lang->words['change__email_confirm']}</label>
<input class='textinput' type='text' name='email_confirm' size='30' />
</li>
<li class='head'><label>{$this->lang->words['change_pass_details']}</label></li>
<li class='acp-row-on'>
<label>{$this->lang->words['change__pass']}<span class='desctext'>{$this->lang->words['pw_will_logout']}</span></label>
<input class='textinput' type='password' name='password' size='30' />
</li>
<li class='acp-row-off'>
<label>{$this->lang->words['change__pass_confirm']}</label>
<input class='textinput' type='password' name='password_confirm' size='30' />
</li>
</ul>
<div class='acp-actionbar'>
<div class='centeraction'>
<input type='submit' value=' {$this->lang->words['change__confirm']} ' class='button primary' />
</div>
</div>
</div>
</form>
EOF;
//--endhtml--//
return $IPBHTML;
}
}
@@ -0,0 +1,129 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Performance mode skin file
* Last Updated: $Date: 2009-04-14 08:05:32 -0400 (Tue, 14 Apr 2009) $
*
* @author $Author: rikki $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Core
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 4455 $
*/
class cp_skin_performance extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* Show the results from toggling the mode
*
* @access public
* @param bool Currently on or off
* @param array Actions that were taken
* @return string HTML
*/
public function toggleResults( $current, $actions=array() )
{
$IPBHTML = "";
//--starthtml--//
$text = $current ? "<div style='font-weight: bold; color: red; font-size: 22px;'>" . $this->lang->words['perf_on'] . "</div>" : "<div style='font-weight: bold; color: green; font-size: 22px;'>" . $this->lang->words['perf_off'] . "</div>";
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$this->lang->words['perf_help_title']}</h2>
</div>
<div class='section_info'>
{$this->lang->words['perf_help_information']}
</div>
<div class='acp-box'>
<h3>{$this->lang->words['perf_current']}</h3>
<div class='acp-row_off' style='padding: 10px;'>
{$text}
</div>
HTML;
if( count($actions) )
{
$IPBHTML .= "<ul style='list-style: disc; margin-left: 40px'>";
foreach( $actions as $action )
{
$IPBHTML .= <<<HTML
<li style='padding: 3px 5px'>
{$action}
</li>
HTML;
}
$IPBHTML .= "</ul>";
}
$IPBHTML .= <<<HTML
<div class='acp-actionbar' style='padding-top: 12px'><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=toggle' class='button'>{$this->lang->words['perf_toggle']}</a></div>
</div>
<br />
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* Show the overview page
*
* @access public
* @param string Content
* @return string HTML
*/
public function overview( $current )
{
$IPBHTML = "";
//--starthtml--//
$text = $current ? "<div style='font-weight: bold; color: red; font-size: 22px;'>" . $this->lang->words['perf_on'] . "</div>" : "<div style='font-weight: bold; color: green; font-size: 22px;'>" . $this->lang->words['perf_off'] . "</div>";
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$this->lang->words['perf_help_title']}</h2>
</div>
<div class='section_info'>
{$this->lang->words['perf_help_information']}
</div>
<div class='acp-box'>
<h3>{$this->lang->words['perf_current']}</h3>
<div class='acp-row_off' style='padding: 10px;'>
{$text}
</div>
<div class='acp-actionbar' style='padding-top: 12px'><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=toggle' class='button'>{$this->lang->words['perf_toggle']}</a></div>
</div>
<br />
HTML;
//--endhtml--//
return $IPBHTML;
}
}
@@ -0,0 +1,163 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Question and answer skin file
* Last Updated: $Date: 2009-04-02 11:17:56 -0400 (Thu, 02 Apr 2009) $
*
* @author $Author: matt $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Core
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 4393 $
*/
class cp_skin_qanda extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* Show the q&a form
*
* @access public
* @param string Action
* @param int ID
* @param array Form elements
* @param string Button text
* @return string HTML
*/
public function showForm( $do, $id, $form, $button )
{
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$this->lang->words['qa_help_title']}</h2>
</div>
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='postingform'>
<input type='hidden' name='do' value='{$do}' />
<input type='hidden' name='id' value='{$id}' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$button}</h3>
<ul class='acp-form alternate_rows'>
<li>
<label>{$this->lang->words['qa_form_question']}</label>
{$form['question']}
</li>
<li>
<label>{$this->lang->words['qa_form_answers']}</label>
{$form['answers']}
</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value='{$button}' class='realbutton' accesskey='s'>
</div>
</div>
</form>
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* Show the overview page
*
* @access public
* @param array Rows
* @return string HTML
*/
public function overview( $rows )
{
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$this->lang->words['qa_help_title']}</h2>
<ul class='context_menu'>
<li>
<a href='{$this->settings['base_url']}{$this->form_code}&amp;do=new' title='{$this->lang->words['qa_addlink']}'>
<img src='{$this->settings['skin_acp_url']}/_newimages/icons/help_add.png' alt='' />
{$this->lang->words['qa_addlink']}
</a>
</li>
</ul>
</div>
HTML;
if ( count( $rows ) AND ! $this->settings['registration_qanda'] )
{
$this->lang->words['qa_not_on_desc'] = sprintf( $this->lang->words['qa_not_on_desc'], $this->settings['base_url'] . $this->form_code .'&amp;do=switchOn' );
$IPBHTML .= $this->registry->output->global_template->warning_box( $this->lang->words['qa_not_on_title'], $this->lang->words['qa_not_on_desc'] ) . "<br />";
}
$IPBHTML .= <<<HTML
<div class='acp-box'>
<h3>{$this->lang->words['qa_current']}</h3>
<table class='alternate_rows'>
HTML;
if( count($rows) )
{
$IPBHTML .= <<<HTML
<tr>
<th width='95%'>{$this->lang->words['qa_form_question']}</th>
<th width='5%'>{$this->lang->words['qa_options']}</th>
</tr>
HTML;
foreach( $rows as $r )
{
$IPBHTML .= <<<HTML
<tr>
<td>{$r['qa_question']}</td>
<td>
<img class='ipbmenu' id="menu-{$r['qa_id']}" src='{$this->settings['skin_acp_url']}/_newimages/menu_open.png' alt='{$this->lang->words['a_options']}' />
<ul class='acp-menu' id='menu-{$r['qa_id']}_menucontent'>
<li class='icon edit'><a href='{$this->settings['base_url']}{$this->form_code}&amp;do=edit&amp;id={$r['qa_id']}'>{$this->lang->words['qa_edit']}</a></li>
<li class='icon delete'><a href='#' onclick='return acp.confirmDelete("{$this->settings['base_url']}{$this->form_code}&amp;do=remove&amp;id={$r['qa_id']}");'>{$this->lang->words['qa_delete']}</a></li>
</ul>
</td>
</tr>
HTML;
}
}
else
{
$IPBHTML .= <<<HTML
<tr><td>{$this->lang->words['qa_none']}</td></tr>
HTML;
}
$IPBHTML .= <<<HTML
</table>
</div>
<br />
HTML;
//--endhtml--//
return $IPBHTML;
}
}
@@ -0,0 +1,506 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Cleanup and rebuild tools skin file
* Last Updated: $Date: 2009-11-16 12:37:20 -0500 (Mon, 16 Nov 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Core
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 5414 $
*/
class cp_skin_rebuild extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* Splash screen of available tools
*
* @access public
* @return string HTML
*/
public function toolsSplashScreen()
{
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$this->lang->words['re_230to300']}</h2>
</div>
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='300pms' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['re_300pms']}</h3>
<ul class='acp-form alternate_rows'>
<li>{$this->lang->words['re_300pms_info']}</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value='{$this->lang->words['re_runtool']}' class='button primary' accesskey='s'>
</div>
</div>
</form>
<div class='section_title'>
<h2>{$this->lang->words['re_20to21']}</h2>
</div>
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='210tool_settings' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['re_dupe2']}</h3>
<ul class='acp-form alternate_rows'>
<li>{$this->lang->words['re_dupe2_info']}</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value='{$this->lang->words['re_runtool']}' class='button primary' accesskey='s'>
</div>
</div>
</form><br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='210calevents' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['re_events']}</h3>
<ul class='acp-form alternate_rows'>
<li>{$this->lang->words['re_events_info']}</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value='{$this->lang->words['re_runtool']}' class='button primary' accesskey='s'>
</div>
</div>
</form><br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='210polls' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['re_polls']}</h3>
<ul class='acp-form alternate_rows'>
<li>{$this->lang->words['re_polls_info']}</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value='{$this->lang->words['re_runtool']}' class='button primary' accesskey='s'>
</div>
</div>
</form><br />
<div class='section_title'>
<h2>{$this->lang->words['re_1xto20']}</h2>
</div>
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='tool_settings' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['re_dupe1']}</h3>
<ul class='acp-form alternate_rows'>
<li>{$this->lang->words['re_dupe1_info']}</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value='{$this->lang->words['re_runtool']}' class='button primary' accesskey='s'>
</div>
</div>
</form><br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='tool_converge' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['re_converge']}</h3>
<ul class='acp-form alternate_rows'>
<li>{$this->lang->words['re_converge_info']}</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value='{$this->lang->words['re_runtool']}' class='button primary' accesskey='s'>
</div>
</div>
</form><br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='tool_bansettings' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['re_ban']}</h3>
<ul class='acp-form alternate_rows'>
<li>{$this->lang->words['re_ban_info']}</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value='{$this->lang->words['re_runtool']}' class='button primary' accesskey='s'>
</div>
</div>
</form>
HTML;
//--endhtml//
return $IPBHTML;
}
/**
* Rebuild content splash screen
*
* @access public
* @param array Form elements
* @param array Sections we can rebuild
* @param array Sections we have rebuilt
* @return string HTML
*/
public function rebuildSplashScreen( $form, $rebuildSections, $rebuiltSections )
{
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$this->lang->words['re_title']}</h2>
</div>
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='docount' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['re_stats']}</h3>
<ul class='acp-form alternate_rows'>
<li>
<label>{$this->lang->words['re_s_total']}</label>
{$form['posts']}
</li>
<li>
<label>{$this->lang->words['re_s_members']}</label>
{$form['members']}
</li>
<li>
<label>{$this->lang->words['re_s_last']}</label>
{$form['lastreg']}
</li>
<li>
<label>{$this->lang->words['re_s_most']}</label>
{$form['online']}
</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value='{$this->lang->words['re_stats']}' class='button primary' accesskey='s'>
</div>
</div>
</form><br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='doresynctopics' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['re_topics']}</h3>
<ul class='acp-form alternate_rows'>
<li>
<label>{$this->lang->words['re_topics']}<span class='desctext'>{$this->lang->words['re_topics_info']}</span></label>
{$form['pergo']}&nbsp;{$this->lang->words['re_percycle']}
</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value='{$this->lang->words['re_topics']}' class='button primary' accesskey='s'>
</div>
</div>
</form><br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='doresyncforums' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['re_forums']}</h3>
<ul class='acp-form alternate_rows'>
<li>
<label>{$this->lang->words['re_forums']}<span class='desctext'>{$this->lang->words['re_forums_info']}</span></label>
{$form['pergo']}&nbsp;{$this->lang->words['re_percycle']}
</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value='{$this->lang->words['re_forums']}' class='button primary' accesskey='s'>
</div>
</div>
</form><br />
HTML;
if( count($rebuildSections) )
{
$IPBHTML .= <<<HTML
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='doposts' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['re_rebuild']}</h3>
<ul class='acp-form alternate_rows'>
<li>
<label>{$this->lang->words['re_rebuildbutton']}<span class='desctext'>{$this->lang->words['re_rebuild_info']}</span></label>
<div style='overflow:auto'>
<ul>
<li><input type='radio' name='type' id='type_none' checked='checked' value='0' /> <label style='float:none;' for='type_none'>{$this->lang->words['remenu_none']}</label></li>
HTML;
foreach( $rebuildSections as $section )
{
$description = '';
if( in_array( $section[0], $rebuiltSections ) )
{
$description = "<div class='desctext' style='color:red; margin-left: 28px;'>{$this->lang->words['noneed_rebuild_again']}</div>";
}
$IPBHTML .= <<<HTML
<li><input type='radio' name='type' id='type_{$section[0]}' value='{$section[0]}' /> <label style='float:none;' for='type_{$section[0]}'>{$section[1]}</label>{$description}</li>
HTML;
}
$IPBHTML .= <<<HTML
</ul>&nbsp;&nbsp;{$form['pergo']}&nbsp;{$this->lang->words['re_percycle']}</div>
</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value='{$this->lang->words['re_rebuildbutton']}' class='button primary' accesskey='s'>
</div>
</div>
</form><br />
HTML;
}
$IPBHTML .= <<<HTML
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='dopostnames' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['re_user']}</h3>
<ul class='acp-form alternate_rows'>
<li>
<label>{$this->lang->words['re_user']}<span class='desctext'>{$this->lang->words['re_user_info']}</span></label>
{$form['pergo']}&nbsp;{$this->lang->words['re_percycle']}
</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value='{$this->lang->words['re_user']}' class='button primary' accesskey='s'>
</div>
</div>
</form><br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='doseousernames' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['re_seouser']}</h3>
<ul class='acp-form alternate_rows'>
<li>
<label>{$this->lang->words['re_seouser']}<span class='desctext'>{$this->lang->words['re_seouser_info']}</span></label>
{$form['pergo']}&nbsp;{$this->lang->words['re_percycle']}
</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value='{$this->lang->words['re_seouser']}' class='button primary' accesskey='s'>
</div>
</div>
</form><br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='domsgcounts' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['re_msgcount']}</h3>
<ul class='acp-form alternate_rows'>
<li>
<label>{$this->lang->words['re_msgcount']}<span class='desctext'>{$this->lang->words['re_msgcount_info']}</span></label>
{$form['pergo']}&nbsp;{$this->lang->words['re_percycle']}
</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value='{$this->lang->words['re_msgcount']}' class='button primary' accesskey='s'>
</div>
</div>
</form><br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='dopostcounts' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['re_count']}</h3>
<ul class='acp-form alternate_rows'>
<li>
<label>{$this->lang->words['re_count']}<span class='desctext'>{$this->lang->words['re_count_info']}</span></label>
{$form['pergo']}&nbsp;{$this->lang->words['re_percycle']}
</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value='{$this->lang->words['re_count']}' class='button primary' accesskey='s'>
</div>
</div>
</form><br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='dophotos' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['re_pphoto']}</h3>
<ul class='acp-form alternate_rows'>
<li>
<label>{$this->lang->words['re_pphoto']}<span class='desctext'>{$this->lang->words['re_pphoto_info']}</span></label>
{$form['pergo']}&nbsp;{$this->lang->words['re_percycle']}
</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value='{$this->lang->words['re_pphoto']}' class='button primary' accesskey='s'>
</div>
</div>
</form><br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='dothumbnails' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['re_thumb']}</h3>
<ul class='acp-form alternate_rows'>
<li>
<label>{$this->lang->words['re_thumb']}<span class='desctext'>{$this->lang->words['re_thumb_info']}</span></label>
{$form['pergo']}&nbsp;{$this->lang->words['re_percycle']}
</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value='{$this->lang->words['re_thumb']}' class='button primary' accesskey='s'>
</div>
</div>
</form><br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='doattachdata' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['re_data']}</h3>
<ul class='acp-form alternate_rows'>
<li>
<label>{$this->lang->words['re_data']}<span class='desctext'>{$this->lang->words['re_data_info']}</span></label>
{$form['pergo']}&nbsp;{$this->lang->words['re_percycle']}
</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value='{$this->lang->words['re_data']}' class='button primary' accesskey='s'>
</div>
</div>
</form><br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='cleanattachments' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['re_orph']}</h3>
<ul class='acp-form alternate_rows'>
<li>
<label>{$this->lang->words['re_orph']}<span class='desctext'>{$this->lang->words['re_orph_info']}</span></label>
{$form['pergo']}&nbsp;{$this->lang->words['re_percycle']}
</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value='{$this->lang->words['re_orph']}' class='button primary' accesskey='s'>
</div>
</div>
</form><br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='cleanavatars' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['re_av']}</h3>
<ul class='acp-form alternate_rows'>
<li>
<label>{$this->lang->words['re_av']}<span class='desctext'>{$this->lang->words['re_av_info']}</span></label>
{$form['pergo']}&nbsp;{$this->lang->words['re_percycle']}
</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value='{$this->lang->words['re_av']}' class='button primary' accesskey='s'>
</div>
</div>
</form><br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='cleanphotos' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['re_uphoto']}</h3>
<ul class='acp-form alternate_rows'>
<li>
<label>{$this->lang->words['re_uphoto']}<span class='desctext'>{$this->lang->words['re_uphoto_info']}</span></label>
{$form['pergo']}&nbsp;{$this->lang->words['re_percycle']}
</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value='{$this->lang->words['re_uphoto']}' class='button primary' accesskey='s'>
</div>
</div>
</form>
HTML;
//--endhtml--//
return $IPBHTML;
}
}
@@ -0,0 +1,616 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Report center skin file
* Last Updated: $Date: 2009-05-21 16:47:25 -0400 (Thu, 21 May 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Core
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 4682 $
*/
class cp_skin_reports extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* Show the plugins overview page
*
* @access public
* @param string Content
* @return string HTML
*/
public function report_plugin_overview($content) {
$IPBHTML .= <<<EOF
<div class='section_title'>
<h2>{$this->lang->words['r_plugmanager']}</h2>
<ul class='context_menu'>
<li>
<a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;code=create_plugin' title='{$this->lang->words['r_regnew']}'>
<img src='{$this->settings['skin_acp_url']}/_newimages/icons/plugin_add.png' alt='' />
{$this->lang->words['r_regnew']}
</a>
</li>
</ul>
</div>
<div class="acp-box">
<h3>{$this->lang->words['r_regplugins']}</h3>
<table class="alternate_rows">
<tr>
<th width='35%'>{$this->lang->words['r_name']}</th>
<th width='20%'>{$this->lang->words['r_author']}</th>
<th width='5%' style='text-align: center'>{$this->lang->words['r_enabled']}</th>
<th width='5%' style='text-align: center'>{$this->lang->words['r_options']}</th>
</tr>
{$content}
</table>
</div>
EOF;
return $IPBHTML;
}
/**
* Show a report plugin row
*
* @access public
* @param array Data for the plugin record
* @return string HTML
*/
public function report_plugin_row( $data ) {
$IPBHTML .= <<<EOF
<tr>
<td><strong>{$data['class_title']}
EOF;
if( $data['pversion'] )
{
$IPBHTML .= ' ' . $data['pversion'];
}
$IPBHTML .= <<<EOF
</strong><div class='desctext'>{$data['class_desc']}</td>
<td>
EOF;
if( $data['author_url'] != '' )
{
$IPBHTML .= "<a href=\"{$data['author_url']}\" target=\"_blank\">{$data['author']}</a>";
}
else
{
$IPBHTML .= $data['author'];
}
$IPBHTML .= <<<EOF
</td>
<td style='text-align: center'>
<a href="{$this->settings['base_url']}&amp;{$this->form_code}&amp;code=plugin_toggle&amp;plugin_id={$data['com_id']}" title='{$this->lang->words['r_toggleendis']}'><img src='{$this->settings['skin_acp_url']}/_newimages/icons/{$data['_enabled_img']}' border='0' alt='YN' class='ipd' /></a>
</td>
<td style='text-align: center'>
<img class='ipbmenu' id="menu{$data['com_id']}" src='{$this->settings['skin_acp_url']}/_newimages/menu_open.png' alt='{$this->lang->words['r_options']}' />
<ul class='acp-menu' id='menu{$data['com_id']}_menucontent'>
<li class='icon edit'><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;code=edit_plugin&amp;com_id={$data['com_id']}'>{$this->lang->words['r_editsettings']}</a></li>
EOF;
if( $data['lockd'] != 1 || IN_DEV == 1 )
{
$IPBHTML .= <<<EOF
<li class='icon edit'><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;code=change_plugin&amp;com_id={$data['com_id']}'>{$this->lang->words['r_plugindetails']}</a></li>
<li class='icon delete'><a href='#' onclick='return acp.confirmDelete("{$this->settings['base_url']}&amp;{$this->form_code}&amp;code=remove_plugin&amp;com_id={$data['com_id']}");'>{$this->lang->words['r_removeplugin']}</a></li>
EOF;
}
$IPBHTML .= <<<EOF
</ul>
</td>
</tr>
EOF;
return $IPBHTML;
}
/**
* Show the status overview page
*
* @access public
* @param string Content
* @return string HTML
*/
public function report_status_overview($content) {
$IPBHTML .= <<<EOF
<script type="text/javascript">
window.onload = function() {
Sortable.create( 'sortable_handle', { revert: true, format: 'status_([0-9]+)', onUpdate: dropItLikeItsHot, handle: 'draghandle' } );
};
dropItLikeItsHot = function( draggableObject, mouseObject )
{
var options = {
method : 'post',
parameters : Sortable.serialize( 'sortable_handle', { tag: 'li', name: 'status' } )
};
new Ajax.Request( "{$this->settings['base_url']}&{$this->form_code_js}&do=reorder&md5check={$this->registry->adminFunctions->getSecurityKey()}".replace( /&amp;/g, '&' ), options );
return false;
};
</script>
<div class='section_title'>
<h2>{$this->lang->words['r_statmanager']}</h2>
<ul class='context_menu'>
<li><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;code=create_status'><img src='{$this->settings['skin_acp_url']}/_newimages/icons/page_add.png' alt=''>{$this->lang->words['r_createnew']}</a></li>
</ul>
</div>
<div class="acp-box">
<h3>{$this->lang->words['r_repstatsev']}</h3>
<ul id='sortable_handle'>
{$content}
</ul>
</div>
EOF;
return $IPBHTML;
}
/**
* Show a status row
*
* @access public
* @param array Status data
* @return string HTML
*/
public function report_status_row( $data ) {
$IPBHTML .= <<<EOF
<li id='status_{$data['status']}'>
<table width='100%' cellpadding='0' cellspacing='0' border='0' class='hierarchy double_pad'>
<tr class='parent'>
<td style='width: 2%; text-align: center'>
<div class='draghandle'><img src='{$this->settings['skin_acp_url']}/_newimages/drag_icon.png' alt='' /></div>
</td>
<td style='width: 61%'>
<strong>{$data['title']}</strong>
</td>
<td style='width: 34%; text-align: right'>
<a href="{$this->settings['base_url']}&amp;{$this->form_code}&amp;code=set_status&amp;status=new&amp;id={$data['status']}" title="{$this->lang->words['r_new_report']}"><img src='{$this->settings['skin_acp_url']}/_newimages/report_new_{$data['_is_new']}.png' border='0' alt='{$this->lang->words['r_new_report']}' /></a>
<a href="{$this->settings['base_url']}&amp;{$this->form_code}&amp;code=set_status&amp;status=complete&amp;id={$data['status']}" title="{$this->lang->words['r_complete_report']}"><img src='{$this->settings['skin_acp_url']}/_newimages/report_complete_{$data['_is_complete']}.png' border='0' alt='{$this->lang->words['r_complete_report']}' /></a>
<a href="{$this->settings['base_url']}&amp;{$this->form_code}&amp;code=set_status&amp;status=active&amp;id={$data['status']}" title="{$this->lang->words['r_active_report']}"><img src='{$this->settings['skin_acp_url']}/_newimages/report_active_{$data['_is_active']}.png' border='0' alt='{$this->lang->words['r_active_report']}' /></a>
</td>
<td style='width: 3%'>
<img class='ipbmenu' id="stat_menu{$data['status']}" src='{$this->settings['skin_acp_url']}/_newimages/menu_open.png' alt='{$this->lang->words['a_options']}' />
<ul class='acp-menu' id='stat_menu{$data['status']}_menucontent'>
<li class='icon add'><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;code=add_image&amp;id={$data['status']}'>{$this->lang->words['r_addimg']}</a></li>
<li class='icon edit'><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;code=edit_status&amp;id={$data['status']}'>{$this->lang->words['r_editstatus']}</a></li>
<li class='icon delete'><a href='#' onclick='return acp.confirmDelete("{$this->settings['base_url']}&amp;{$this->form_code}&amp;code=remove_status&amp;id={$data['status']}");'>{$this->lang->words['r_removestatus']}</a></li>
</ul>
</td>
</tr>
{$data['status_images']}
</table>
</li>
EOF;
return $IPBHTML;
}
/**
* Show a report status image
*
* @access public
* @param array Status image data
* @return string HTML
*/
public function report_status_image( $data ) {
$IPBHTML .= <<<EOF
<tr class='child'>
<td>&nbsp;</td>
<td style='padding-left: 20px;' colspan='3'>
<img class='ipbmenu' id="statimg{$data['id']}" src='{$this->settings['skin_acp_url']}/_newimages/menu_open.png' alt='{$this->lang->words['a_options']}' />
<img src='{$this->settings['public_dir']}{$data['img']}' border='0' alt='{$data['points']}' title="{$data['points']}{$this->lang->words['r_points_sufix']}" width="{$data['width']}" height="{$data['height']}" /> {$data['points']} баллов
<ul class='acp-menu' id='statimg{$data['id']}_menucontent'>
<li class='icon edit'><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;code=edit_image&amp;id={$data['id']}'>{$this->lang->words['r_editimg']}</a></li>
<li class='icon delete'><a href='#' onclick='return acp.confirmDelete("{$this->settings['base_url']}&amp;{$this->form_code}&amp;code=remove_image&amp;id={$data['id']}");'>{$this->lang->words['r_removeimg']}</a></li>
</ul>
</td>
</tr>
EOF;
return $IPBHTML;
}
/**
* Show the main overview template
*
* @access public
* @param string Content
* @return string HTML
*/
public function overview_main_template($content) {
$IPBHTML .= <<<EOF
<div class='section_title'>
<h2>{$this->lang->words['r_overview_title']}</h2>
<ul class='context_menu'>
<li>
<a href='{$this->settings['_base_url']}&amp;app=core&amp;module=tools&amp;section=settings&amp;do=setting_view&amp;conf_title_keyword=warnsetup'>
<img src='{$this->settings['skin_acp_url']}/_newimages/icons/cog.png' alt='' />
{$this->lang->words['config_rc_settings']}
</a>
</li>
</ul>
</div>
<div class="acp-box">
<h3>{$this->lang->words['r_overview']}</h3>
<table class="alternate_rows">
<tr>
<td class='tablerow1' width='40%'>{$this->lang->words['r_totalreports']}</td>
<td class='tablerow2'>{$content['reports_total']}</td>
</tr>
<tr>
<td class='tablerow1'>{$this->lang->words['r_totalcomments']}</td>
<td class='tablerow2'>{$content['comments_total']}</td>
</tr>
<tr>
<td class='tablerow1'>{$this->lang->words['r_activeplugins']}</td>
<td class='tablerow2'>{$content['active_plugins']} / {$content['total_plugins']}</td>
</tr>
</table>
</div>
<br />
<div class="acp-box">
<h3>{$this->lang->words['r_graphstats']}</h3>
<table class="alternate_rows">
<tr>
<td>
<img src='{$this->settings['base_url']}&amp;{$this->form_code}&amp;code=chart_report_stats' />
<img src='{$this->settings['base_url']}&amp;{$this->form_code}&amp;code=chart_top_moderator' />
</td>
</tr>
</table>
</div>
EOF;
return $IPBHTML;
}
/**
* Show the form to add/edit a plugin
*
* @access public
* @param array Plugin data
* @return string HTML
*/
public function pluginForm( $plug_data=array() ) {
//-----------------------------------------
// Set some of the form variables
//-----------------------------------------
$secure_key = ipsRegistry::getClass('adminFunctions')->getSecurityKey();
if( $plug_data['pversion'] )
{
$plug_data['pversion'] = substr($plug_data['pversion'], 1);
}
$code = 'create_plugin';
if( $plug_data['class_title'] )
{
$code = 'change_plugin';
}
$plug_data = (is_array($plug_data) AND count($plug_data)) ? $plug_data : $this->request;
$form = array();
$form['plugi_title'] = $this->registry->output->formInput('plugi_title', $plug_data['class_title']);
$form['plugi_version'] = $this->registry->output->formInput('plugi_version', $plug_data['pversion']);
$form['plugi_desc'] = $this->registry->output->formInput('plugi_desc', htmlspecialchars($plug_data['class_desc'], ENT_QUOTES));
$form['plugi_author_url'] = $this->registry->output->formInput('plugi_author_url', $plug_data['author_url']);
$form['plugi_author'] = $this->registry->output->formInput('plugi_author', $plug_data['author']);
$form['plugi_file'] = $this->registry->output->formInput('plugi_file', ( $plug_data['my_class'] ? $plug_data['my_class'] : 'default' ));
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<div class='section_title'>
<h2>Плагины системы жалоб</h2>
</div>
<form action='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do={$code}&amp;secure_key={$secure_key}' method='post'>
<input type='hidden' name='finish' value='1' />
<input type='hidden' name='com_id' value='{$plug_data['com_id']}' />
<div class="acp-box">
<h3>{$this->lang->words['r_registernew']}</h3>
<ul class='acp-form alternate_rows'>
<li>
<label>{$this->lang->words['r_plugintitle']}<span class="desctext">{$this->lang->words['r_whatcall']}</span></label>
{$form['plugi_title']}
</li>
<li>
<label>{$this->lang->words['r_version']}</label>
{$form['plugi_version']}
</li>
<li>
<label>{$this->lang->words['r_description']}</label>
{$form['plugi_desc']}
</li>
<li>
<label>{$this->lang->words['r_authorname']}</label>
{$form['plugi_author']}
</li>
<li>
<label>{$this->lang->words['r_authorurl']}</label>
{$form['plugi_author_url']}
</li>
<li>
<label>{$this->lang->words['r_pluginfile']}</label>
/admin/applications/core/sources/reportPlugins/&nbsp;{$form['plugi_file']}&nbsp;.php
</li>
</ul>
<div class="acp-actionbar">
<input type='submit' value=' {$this->lang->words['r_save']} ' class="button primary" />
</div>
</div>
</form>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Add a row
*
* @access public
* @param string Title
* @param string Description
* @param string Form field
* @return string HTML
*/
public function addRow( $title, $desc='', $form_field='' ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<li>
<label>{$title}
EOF;
if( $desc )
{
$IPBHTML .= <<<EOF
<span class='desctext'>{$desc}</span>
EOF;
}
$IPBHTML .= <<<EOF
</label>
{$form_field}
</li>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Show the form to "finish" adding the plugin
*
* @access public
* @param array Plugin data
* @param array Groups that can report
* @param array Groups that can moderate
* @param string Extra form data
* @return string HTML
*/
public function finishPluginForm( $plug_data, $sel_can_report, $sel_group_perm, $extraForm ) {
//-----------------------------------------
// Set some of the form variables
//-----------------------------------------
$secure_key = ipsRegistry::getClass('adminFunctions')->getSecurityKey();
foreach( $this->cache->getCache('group_cache') as $g )
{
$groups[] = array( $g['g_id'], $g['g_title'] );
}
$form = array();
$form['plugi_can_report'] = $this->registry->output->formMultiDropdown('plugi_can_report[]', $groups, $sel_can_report );
$form['plugi_gperm'] = $this->registry->output->formMultiDropdown('plugi_gperm[]', $groups, $sel_group_perm);
$form['plugi_onoff'] = $this->registry->output->formYesNo('plugi_onoff', $plug_data['onoff']);
$form['plugi_lockd'] = $this->registry->output->formYesNo('plugi_lockd', $plug_data['lockd']);
$form['plugi_enabled'] = $this->registry->output->formYesNo('plugi_onoff', $plug_data['onoff']);
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<form action='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=edit_plugin&amp;secure_key={$secure_key}&amp;com_id={$plug_data['com_id']}' method='post'>
<input type='hidden' name='finish' value='1' />
<div class="acp-box">
<h3>{$this->lang->words['r_editplugin']}</h3>
<ul class='acp-form alternate_rows'>
<li>
<label>{$this->lang->words['r_groups_submit']}<span class="desctext">{$this->lang->words['r_groups_submit_info']}</span></label>
{$form['plugi_can_report']}
</li>
<li>
<label>{$this->lang->words['r_groups']}<span class="desctext">{$this->lang->words['r_groups_info']}</span></label>
{$form['plugi_gperm']}
</li>
<li>
<label>{$this->lang->words['r_pluginenabled']}</label>
{$form['plugi_enabled']}
</li>
EOF;
if( IN_DEV == 1 )
{
$IPBHTML .= <<<EOF
<li>
<label>{$this->lang->words['r_safemode']}</label>
{$form['plugi_lockd']}
</li>
EOF;
}
$IPBHTML .= <<<EOF
{$extraForm}
</ul>
<div class='acp-actionbar'>
<input type='submit' value=' {$this->lang->words['r_save']} ' class="button primary" />
</div>
</div>
</form>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Form to add/edit a status image
*
* @access public
* @param string Code
* @param array Status record
* @param array Image data
* @return string HTML
*/
public function imageForm( $code, $status, $image_data=array() ) {
//-----------------------------------------
// Set some of the form variables
//-----------------------------------------
$secure_key = ipsRegistry::getClass('adminFunctions')->getSecurityKey();
$image_data = ( is_array( $image_data ) && count( $image_data ) ) ? $image_data : $this->request;
$form = array();
$form['img_filename'] = $this->registry->output->formInput('img_filename',str_replace("#", "&#35;", $image_data['img'] ));
$form['img_width'] = $this->registry->output->formInput('img_width',$image_data['width']);
$form['img_height'] = $this->registry->output->formInput('img_height',$image_data['height']);
$form['img_points'] = $this->registry->output->formInput('img_points', $image_data['points']);
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<form action='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do={$code}&amp;secure_key={$secure_key}' method='post'>
<input type='hidden' name='finish' value='1' />
<input type='hidden' name='id' value='{$image_data['id']}' />
<div class="acp-box">
<h3>{$status['title']} : {$this->lang->words['r_confimage']}</h3>
<ul class='acp-form alternate_rows'>
<li>
<label>{$this->lang->words['r_image']}<span class='desctext'>{$this->lang->words['r_image_info']}</span></label>
{$form['img_filename']}
</li>
<li>
<label>{$this->lang->words['r_width']}</label>
{$form['img_width']}
</li>
<li>
<label>{$this->lang->words['r_height']}</label>
{$form['img_height']}
</li>
<li>
<label>{$this->lang->words['r_points']}<span class='desctext'>{$this->lang->words['r_points_info']}</span></label>
{$form['img_points']}
</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value=' {$this->lang->words['r_save']} ' class='button primary' />
</div>
</div>
</form>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Form to add/edit a status
*
* @access public
* @param string Code
* @param array Status data
* @return string HTML
*/
public function statusForm( $code='create_status', $status=array() ) {
//-----------------------------------------
// Set some of the form variables
//-----------------------------------------
$secure_key = ipsRegistry::getClass('adminFunctions')->getSecurityKey();
$status = ( is_array( $status ) AND count( $status ) ) ? $status : $this->request;
$form = array();
$form['stat_title'] = $this->registry->output->formInput( 'stat_title' ,$status['title'] );
$form['stat_ppr'] = $this->registry->output->formInput( 'stat_ppr' ,$status['points_per_report'] );
$form['stat_pph'] = $this->registry->output->formInput( 'stat_pph' ,$status['minutes_to_apoint'] );
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<form action='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do={$code}&amp;secure_key={$secure_key}' method='post'>
<input type='hidden' name='finish' value='1' />
<input type='hidden' name='id' value='{$status['status']}' />
<div class="acp-box">
<h3>{$this->lang->words['r_' . $code ]}</h3>
<ul class='acp-form alternate_rows'>
<li>
<label>{$this->lang->words['r_name']}<span class='desctext'>{$this->lang->words['r_name_info']}</span></label>
{$form['stat_title']}
</li>
<li>
<label>{$this->lang->words['r_pointsper']}<span class='desctext'>{$this->lang->words['r_pointsper_info']}</span></label>
{$form['stat_ppr']}
</li>
<li>
<label>{$this->lang->words['r_minutes']}<span class='desctext'>{$this->lang->words['r_minutes_info']}</span></label>
{$form['stat_pph']}
</li>
</ul>
<div class='acp-actionbar'>
<input type='submit' value=' {$this->lang->words['r_save']} ' class="button primary"/>
</div>
</div>
</form>
EOF;
//--endhtml--//
return $IPBHTML;
}
}
@@ -0,0 +1,654 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Security skin file
* Last Updated: $Date: 2009-05-21 16:47:25 -0400 (Thu, 21 May 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Core
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 4682 $
*/
class cp_skin_security extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* List administrators
*
* @access public
* @param array Rows
* @return string HTML
*/
public function list_admin_overview($rows) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='acp-box'>
<h3>{$this->lang->words['skin_header_admins']}</h3>
<table class="alternate_rows" width='100%'>
<tr>
<th width='20%'>{$this->lang->words['skin_th_name']}</th>
<th width='15%'>{$this->lang->words['skin_th_primary_group']}</th>
<th width='15%'>{$this->lang->words['skin_th_secondary_group']}</th>
<th width='15%'>{$this->lang->words['skin_th_ip']}</th>
<th width='20%'>{$this->lang->words['skin_th_email']}</th>
<th width='10%'>{$this->lang->words['skin_th_posts']}</th>
<th width='5%'>&nbsp;</th>
</tr>
HTML;
if( count( $rows ) AND is_array( $rows ) )
{
foreach( $rows as $row )
{
$IPBHTML .= <<<HTML
<tr>
<td><strong>{$row['members_display_name']}</strong><div class='desctext'>{$row['_joined']}</div></td>
<td>{$row['_mgroup']}</td>
<td>{$row['_mgroup_others']}&nbsp;</td>
<td><div class='desctext'>{$row['ip_address']}</div></td>
<td>{$row['email']}</td>
<td>{$row['posts']}</td>
<td><a href='{$this->settings['_base_url']}&amp;app=members&amp;module=members&amp;section=members&amp;do=viewmember&amp;member_id={$row['member_id']}'>{$this->lang->words['skin_edit_member']}</a></td>
</tr>
HTML;
}
}
else
{
$IPBHTML .= <<<HTML
<tr>
<td colspan='7' align='center'>{$this->lang->words['skin_log_noresults']}</td>
</tr>
HTML;
}
$IPBHTML .= <<<HTML
</table>
</div>
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* Row for list administrator
*
* @access public
* @param array Member data
* @return string HTML
* @deprecated Seems this is handled by list_admin_overview, maybe?
*/
public function list_admin_row( $member ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<tr>
<td class='tablerow1'>
<strong>{$member['members_display_name']}</strong>
<div class='desctext'>{$member['_joined']}</div>
</td>
<td class='tablerow1'>
{$member['_mgroup']}
</td>
<td class='tablerow2'>
{$member['_mgroup_others']}&nbsp;
</td>
<td class='tablerow1'>
<div class='desctext'>{$member['ip_address']}</div>
</td>
<td class='tablerow2'>
{$member['email']}
</td>
<td class='tablerow2'>
{$member['posts']}
</td>
<td class='tablerow1'>
<a href='{$this->settings['_base_url']}&amp;app=members&amp;module=members&amp;section=members&amp;do=viewmember&amp;member_id={$member['member_id']}'>{$this->lang->words['skin_edit_member']}</a>
</td>
</tr>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Wrapper to show files checked for anti-virus
*
* @access public
* @param string Content
* @return string HTML
*/
public function anti_virus_checked_wrapper($content) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<br />
<div class='tableborder'>
<div class='tableheaderalt'>{$this->lang->words['skin_header_virus']}</div>
<table cellpadding='0' cellspacing='0' width='100%'>
$content
</table>
<div align='center' class='tablefooter'>&nbsp;</div>
</div>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Anti-virus checked file row
*
* @access public
* @param string Path to file
* @return string HTML
*/
public function anti_virus_checked_row( $file_path ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<tr>
<td class='tablerow1'>
<img src='{$this->settings['skin_acp_url']}/images/folder_components/security/checked_folder.png' border='0' alt='-' class='ipd' />
$file_path
</td>
</tr>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Wrapper for bad files from AV checker
*
* @access public
* @param string Content
* @return string HTML
*/
public function anti_virus_bad_files_wrapper($content) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<div class='tableborder'>
<div class='tableheaderalt'>{$this->lang->words['skin_suspicious_files']}</div>
<div class='tablesubheader' style='padding-right:0px'>
<div align='right' style='padding-right:10px'>
{$this->lang->words['skin_th_filesize']}
</div>
</div>
<table cellpadding='0' cellspacing='0' width='100%'>
$content
</table>
<div align='center' class='tablefooter'>&nbsp;</div>
</div>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Row for bad files in AV checker
*
* @access public
* @param string File path
* @param string File name
* @param array Data about the file
* @return string HTML
*/
public function anti_virus_bad_files_row( $file_path, $file_name, $data ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<tr>
<td class='tablerow1'>
<div style='float:right'>
<div class='desctext'>({$data['human']}k) &nbsp; {$data['mtime']}</div>
</div>
<img src='{$this->settings['skin_acp_url']}/images/folder_components/security/bad_file.png' border='0' alt='-' class='ipd' />
<span style='border:1px solid #555;background-color:#FFFFFF'>
<span style='width:{$data['left_width']}px;background-color:{$data['color']}'>
<img src='{$this->settings['skin_acp_url']}/images/blank.gif' height='20' width='{$data['left_width']}' alt='' />
</span>
<img src='{$this->settings['skin_acp_url']}/images/blank.gif' height='20' width='{$data['right_width']}' alt='' />
</span>
&nbsp; <span class='desctext'>[ {$data['score']} ]</span> <a target='_blank' href='{$this->settings['board_url']}/{$file_path}'>{$file_name}</a>
</td>
</tr>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Wrapper for files from deep scan
*
* @access public
* @param string Content
* @return string HTML
*/
public function deep_scan_bad_files_wrapper($content) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<form action='{$this->settings['base_url']}{$this->form_code}&amp;do=deep_scan' method='POST'>
<div style='padding-bottom:10px'>{$this->lang->words['sec_show']}:
<select name='filter'>
<option value='all'>{$this->lang->words['sec_show_all']}</option>
<option value='score-5'>{$this->lang->words['sec_score_5_or_more']}</option>
<option value='score-6'>{$this->lang->words['sec_score_6_or_more']}</option>
<option value='score-7'>{$this->lang->words['sec_score_7_or_more']}</option>
<option value='score-8'>{$this->lang->words['sec_score_8_or_more']}</option>
<option value='score-9'>{$this->lang->words['sec_score_9_or_more']}</option>
<option value='large'>{$this->lang->words['sec_files_55k_or_larger']}</option>
<option value='recent'>{$this->lang->words['sec_modified_in_the_past_30_days']}</option>
</select>
<input type='submit' value=' Фильтровать ' />
</div>
</form>
<div class='tableborder'>
<div class='tableheaderalt'>{$this->lang->words['sec_executable_files']}</div>
<div class='tablesubheader' style='padding-right:0px'>
<div align='right' style='padding-right:10px'>
{$this->lang->words['sec_file_size']} &nbsp; {$this->lang->words['sec_last_modified']}
</div>
</div>
<table cellpadding='0' cellspacing='0' width='100%'>
$content
</table>
<div align='center' class='tablefooter'>&nbsp;</div>
</div>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Show the row for the bad file from deep scan
*
* @access public
* @param string File path
* @param string File name
* @param array Data about the bad file record
* @return string HTML
*/
public function deep_scan_bad_files_row( $file_path, $file_name, $data ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<tr>
<td class='tablerow1'>
<div style='float:right'>
<div class='desctext'>({$data['human']}k) &nbsp; {$data['mtime']}</div>
</div>
<img src='{$this->settings['skin_acp_url']}/images/folder_components/security/bad_file.png' border='0' alt='-' class='ipd' />
<span style='border:1px solid #555;background-color:#FFFFFF'>
<span style='width:{$data['left_width']}px;background-color:{$data['color']}'>
<img src='{$this->settings['skin_acp_url']}/images/blank.gif' height='20' width='{$data['left_width']}' alt='' />
</span>
<img src='{$this->settings['skin_acp_url']}/images/blank.gif' height='20' width='{$data['right_width']}' alt='' />
</span>
&nbsp; <span class='desctext'>[ {$data['score']} ]</span> <a target='_blank' href='{$this->settings['board_url']}/{$file_path}'>$file_path</a>
</td>
</tr>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Security tools overview page
*
* @access public
* @param string Content
* @return string HTML
*/
public function securityOverview( $content ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<div class='section_title'>
<h2>{$this->lang->words['sec_ipboard_security_center']}</h2>
</div>
<div class='information-box'>
{$this->lang->words['sec_the_security_center_is_a_centr']}<br />
{$this->lang->words['sec_your_installation_is_checked_a']}
</div>
<br />
<div class='acp-box'>
<h3>{$this->lang->words['h3_title_security']}</h3>
<table cellpadding='0' cellspacing='0' border='0' class='alternate_rows triple_pad'>
{$content['bad']}
{$content['ok']}
{$content['good']}
</table>
</div>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* "Bad" security item
*
* @access public
* @param string Title
* @param string Description
* @param string Button text
* @param string URL
* @param string Unique key
* @return string HTML
*/
public function security_item_bad( $title, $desc, $button, $url, $key ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<tr>
<td style='width: 3%'>
<img src='{$this->settings['skin_acp_url']}/_newimages/icons/exclamation.png' alt='{$this->lang->words['sec_information']}' />
</td>
<td style='width: 77%'>
<strong>{$title}</strong><br />
<span class='desctext'>{$desc}</span>
</td>
<td style='width: 20%'>
<a href='{$this->settings['base_url']}&amp;$url' class='realbutton'>$button</a>
</td>
</tr>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* "Good" security item
*
* @access public
* @param string Title
* @param string Description
* @param string Button text
* @param string URL
* @param string Unique key
* @return string HTML
*/
public function security_item_good( $title, $desc, $button, $url, $key ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<tr>
<td style='width: 3%'>
<img src='{$this->settings['skin_acp_url']}/_newimages/icons/accept.png' alt='{$this->lang->words['sec_information']}' />
</td>
<td style='width: 77%'>
<strong>{$title}</strong><br />
<span class='desctext'>{$desc}</span>
</td>
<td style='width: 20%'>
<a href='{$this->settings['base_url']}&amp;$url' class='realbutton'>$button</a>
</td>
</tr>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* "Ok" security item
*
* @access public
* @param string Title
* @param string Description
* @param string Button text
* @param string URL
* @param string Unique key
* @return string HTML
*/
public function security_item_ok( $title, $desc, $button, $url, $key ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<tr>
<td style='width: 3%'>
<img src='{$this->settings['skin_acp_url']}/_newimages/icons/warning.png' alt='{$this->lang->words['sec_information']}' />
</td>
<td style='width: 77%'>
<strong>{$title}</strong><br />
<span class='desctext'>{$desc}</span>
</td>
<td style='width: 20%'>
<a href='{$this->settings['base_url']}&amp;$url' class='realbutton'>$button</a>
</td>
</tr>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Form to add the htaccess file
*
* @access public
* @return string HTML
*/
public function htaccess_form() {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<form id='mainform' method='post' action='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=acphtaccess_do'>
<div class='information-box'>
<table cellpadding='0' cellspacing='0'>
<tr>
<td width='1%' valign='top'>
<img src='{$this->settings['skin_acp_url']}/images/folder_components/security/id_card_ok.png' alt='{$this->lang->words['sec_information']}' />
</td>
<td width='100%' valig='top' style='padding-left:10px'>
<h2 style='margin:0px'>{$this->lang->words['sec_acp_htaccess_protection']}</h2>
<p style='margin:0px'>
<br />
{$this->lang->words['sec_invision_power_board_can_write']}
<br />
<br />
<strong>{$this->lang->words['sec_please_note']}</strong>
<br />
{$this->lang->words['sec_using_this_tool_will_overwrite']}
<br />
<br />
<fieldset>
<legend><strong>{$this->lang->words['sec_username']}</strong></legend>
<input type='text' name='name' size='40' value='{$_POST['name']}' />
</fieldset>
<br />
<fieldset>
<legend><strong>{$this->lang->words['sec_password']}</strong></legend>
<input type='password' name='pass' size='40' value='{$_POST['pass']}' />
</fieldset>
<br />
<input type='submit' value=' {$this->lang->words['sec_proceed']} ' />
</p>
</td>
</tr>
</table>
</div>
</form>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Show details to manually set htaccess file
*
* @access public
* @param string .htaccess password
* @param string .htaccess auth
* @return string HTML
*/
public function htaccess_data( $htaccess_pw, $htaccess_auth ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<form id='mainform'>
<div class='information-box'>
<table cellpadding='0' cellspacing='0'>
<tr>
<td width='1%' valign='top'>
<img src='{$this->settings['skin_acp_url']}/images/folder_components/security/id_card_ok.png' alt='information' />
</td>
<td width='100%' valig='top' style='padding-left:10px'>
<h2 style='margin:0px'>{$this->lang->words['sec_cp_htaccess_protection']}</h2>
<p style='margin:0px'>
<br />
<strong>{$this->lang->words['sec_ipboard_is_unable_to_write_int']}</strong>
<br />
<br />
{$this->lang->words['sec_please_create_a_file_called_ht']}
<br />
<textarea rows='5' cols='70' style='width:98%;height:100px'>$htaccess_pw</textarea>
<br />
<br />
{$this->lang->words['sec_please_create_a_file_called_ht_1']}
<br />
<textarea rows='5' cols='70' style='width:98%;height:100px'>$htaccess_auth</textarea>
</p>
</td>
</tr>
</table>
</div>
</form>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Rename admin directory details
*
* @access public
* @return string HTML
*/
public function rename_admin_dir() {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<form id='mainform'>
<div class='information-box'>
<table cellpadding='0' cellspacing='0'>
<tr>
<td width='1%' valign='top'>
<img src='{$this->settings['skin_acp_url']}/images/folder_components/security/id_card_ok.png' alt='{$this->lang->words['sec_information']}' />
</td>
<td width='100%' valig='top' style='padding-left:10px'>
<h2 style='margin:0px'>{$this->lang->words['sec_renaming_the_cp_sitecontrol_di']}</h2>
<p style='margin:0px'>
<br />
{$this->lang->words['sec_ipboard_has_a_dedicated_direct']}
<br />
<br />
<strong>{$this->lang->words['sec_step_1']}</strong>
<br />
{$this->lang->words['sec_first_youll_need_to_physically']}
<br/ >
{$this->lang->words['sec_locate_the_admin_directory_cho']}
<br />
<br />
<strong>Step 2:</strong>
{$this->lang->words['sec_locate_the_initdataphp_file_th']}
<br />{$this->lang->words['sec_near_the_top_of_this_file_youl']}
<br />
<pre>//--------------------------------------------------------------------------
// USER CONFIGURABLE ELEMENTS: PATHS & FOLDER NAMES
//--------------------------------------------------------------------------
/**
* CP_DIRECTORY
*
* The name of the CP directory
* @since 2.0.0.2005-01-01
*/
define( 'CP_DIRECTORY', 'admin' );</pre>
<br />
{$this->lang->words['sec_change_the_line_define_cp_dire']}
<br />
<br />
<strong>{$this->lang->words['sec_your_cp_directory_has_now_been']}</strong>
</p>
</td>
</tr>
</table>
</div>
</form>
EOF;
//--endhtml--//
return $IPBHTML;
}
}
@@ -0,0 +1,256 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Setup skin file
* Last Updated: $Date: 2009-06-18 19:43:48 -0400 (Thu, 18 Jun 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Core
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 4790 $
*/
class cp_skin_setup extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* Redirect screen for app setup
*
* @access public
* @param array Output pieces
* @param array Error pieces
* @param string Next URL to redirect to
* @return string HTML
*/
public function setup_redirectScreen( $output, $errors, $next_url ) {
$IPBHTML = "";
//--starthtml--//
$text = ( strtolower($this->request['type']) == 'install' ) ? $this->lang->words['type__installation'] : $this->lang->words['type__upgradet'];
$this->lang->words['type__text'] = sprintf( $this->lang->words['type__text'], $text );
$IPBHTML .= <<<EOF
<div class='information-box'>
<h2>{$this->lang->words['ipboard_setup_title']}</h2>
<p style='font-size:12px'>
<br />
<strong>{$this->lang->words['ipboard_welcome_setup']}</strong>
<br />
{$this->lang->words['type__text']}
<br />
<br />
EOF;
if ( is_array( $errors ) AND count( $errors ) )
{
$IPBHTML .= "<strong>{$this->lang->words['error__display']}</strong><br /><br />";
foreach( $errors as $msg )
{
$IPBHTML .= "<span style='color:red'>&middot; " . $msg . "</span><br />";
}
$IPBHTML .= <<<EOF
<div class='input-ok-content' style='margin-left:60px;padding:15px;width:300px'>
<strong><a href='{$next_url}'>{$this->lang->words['error__continue']}</a></strong>
</div>
EOF;
}
else
{
if ( is_array( $output ) AND count( $output ) )
{
$IPBHTML .= "<strong>{$this->lang->words['progress_report']}</strong><br /><br />";
foreach( $output as $msg )
{
$IPBHTML .= "<span style='color:green'>&middot; " . $msg . "</span><br />";
}
}
$IPBHTML .= <<<EOF
<script type='text/javascript'>
setTimeout("redirect()",1500);
function redirect()
{
var url_bit = "{$next_url}";
acp.redirect( url_bit.replace( new RegExp( "&amp;", "g" ) , '&' ), true );
}
//>
</script>
<div class='input-ok-content' style='margin-left:60px;padding:15px;width:300px'>
<strong><a href='$next_url'>{$this->lang->words['redir__continue']}</a></strong>
</div>
EOF;
}
$IPBHTML .= <<<EOF
</p>
</div>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Show the finished screen for app setup
*
* @access public
* @param array Data
* @param string Type of setup
* @return string HTML
*/
public function setup_completed_screen( $data, $type ) {
$IPBHTML = "";
//--starthtml--//
$text = ( $type == 'install' ) ? $this->lang->words['type__installation'] : $this->lang->words['type__upgradet'];
$lang = sprintf( $this->lang->words['type__text_finished'], $text );
$IPBHTML .= <<<EOF
<div class='information-box'>
<h2>{$data['title']} {$text}</h2>
<p style='font-size:12px'>
<br />
<strong>{$this->lang->words['ipboard_welcome_setup']}</strong>
<br />
{$lang}
<br /><br />
<a href='{$this->settings['base_url']}app=core&amp;module=applications'><b>{$this->lang->words['return_to_overview']}</b></a>
</p>
</div>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Show the splash start screen for app setup
*
* @access public
* @param array Data
* @param array Errors
* @param string Setup type
* @return string HTML
*/
public function setup_splash_screen( $data, $errors, $type ) {
$IPBHTML = "";
//--starthtml--//
$has_errors = 0;
$text = ( $type == 'install' ) ? $this->lang->words['install_latest'] : $this->lang->words['upgrade_latest'];
$prefix = ( $type == 'install' ) ? $this->lang->words['type__install'] : $this->lang->words['type__upgrade'];
$IPBHTML .= <<<EOF
<div class='section_title'>
<h2>{$this->lang->words['ipboard_setup_title']}</h2>
</div>
EOF;
if ( is_array( $errors ) AND count( $errors ) )
{
$has_errors = 1;
$IPBHTML .= <<<EOF
<div class='warning'>
<h4>{$this->lang->words['please_correct_errors']}</h4>
EOF;
foreach( $errors as $msg )
{
$IPBHTML .= $msg . "<br />";
}
$IPBHTML .= "</div><br />";
}
$IPBHTML .= <<<EOF
<form action="{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=sql&amp;app_directory={$data['app_directory']}&amp;type={$type}&amp;version={$data['next_version']}" method='post'>
<div class='acp-box'>
<h3>{$prefix} {$data['title']} {$this->lang->words['applications_title']}</h3>
<table class='form_table alternate_rows double_pad'>
<tr>
<td style='width: 40%'>
<strong>{$this->lang->words['current_version']}</strong>
</td>
<td style='width: 60%'>
{$data['current_version']}
</td>
</tr>
<tr>
<td>
<strong>{$prefix} {$this->lang->words['version_suffix']}</strong>
</td>
<td>
{$data['latest_version']}
</td>
</tr>
<tr>
<td>
<strong>{$this->lang->words['author_suffix']}</strong>
</td>
<td>
{$data['author']}
</td>
</tr>
<tr>
<td>
<strong>{$this->lang->words['duplicate_tables']}</strong>
</td>
<td>
<select name='dupe_tables' id='dupeTables'>
<option value='skip'>{$this->lang->words['dup__skip']}</option>
<option value='drop'>{$this->lang->words['dup__drop']}</option>
</select>
</td>
</tr>
</table>
EOF;
if( !$has_errors )
{
$IPBHTML .= <<<EOF
<div class='acp-actionbar'>
<input type='submit' value='{$this->lang->words['continue_button']}' class='realbutton' />
</div>
EOF;
}
$IPBHTML .= <<<EOF
</div>
</form>
EOF;
//--endhtml--//
return $IPBHTML;
}
}
@@ -0,0 +1,131 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Error log skin file
* Last Updated: $Date$
*
* @author $Author$
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Core
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision$
*/
class cp_skin_spamlogs extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
public function spamServiceTest( $result )
{
$IPBHTML = "";
if( $result == 'DEBUG_MODE_SUCCESFUL_API_TEST' )
{
$IPBHTML .= <<<HTML
<div class='information-box'>
<b>{$this->lang->words['slog_api_connected']}</b>
</div>
HTML;
}
else
{
$IPBHTML .= <<<HTML
<div class='information-box warning'>
<b>{$this->lang->words['slog_api_failed']}: {$result}</b>
</div>
HTML;
}
return $IPBHTML;
}
/**
* Spam log wrapper
*
* @access public
* @param array Rows
* @param string Page links
* @return string HTML
*/
public function spamlogsWrapper( $rows, $links ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<script type='text/javascript' src='{$this->settings['js_main_url']}acp.forms.js'></script>
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='remove' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class="acp-box">
<h3>{$this->lang->words['slog_spamlogs']}</h3>
<table class='alternate_rows' width='100%'>
<tr>
<th width='5%'>{$this->lang->words['slog_list_id']}</th>
<th width='25%'>{$this->lang->words['slog_list_date']}</th>
<th width='15%'>{$this->lang->words['slog_list_code']}</th>
<th width='25%'>{$this->lang->words['slog_list_msg']}</th>
<th width='15%'>{$this->lang->words['slog_list_email']}</th>
<th width='10%'>{$this->lang->words['slog_list_ip']}</th>
<th width='3%'><input type='checkbox' title="{$this->lang->words['my_checkall']}" id='checkAll' /></th>
</tr>
HTML;
if( count( $rows ) AND is_array( $rows ) )
{
foreach( $rows as $row )
{
$IPBHTML .= <<<HTML
<tr>
<td>{$row['id']}</td>
<td>{$row['_time']}</td>
<td>{$row['log_code']}: {$this->lang->words['slog_response_'.$row['log_code']]}</td>
<td>{$row['log_msg']}</td>
<td>{$row['email_address']}</td>
<td>{$row['ip_address']}</td>
<td><input type='checkbox' name='id_{$row['id']}' value='1' class='checkAll' /></td>
</tr>
HTML;
}
}
else
{
$IPBHTML .= <<<HTML
<tr>
<td colspan='7' align='center'>{$this->lang->words['slog_noresults']}</td>
</tr>
HTML;
}
$IPBHTML .= <<<HTML
</table>
<div class='acp-actionbar'>
<div class='leftaction'>
{$links}
</div>
<div class='rightaction'>
<input type="checkbox" id="checkbox" name="type" value="all" />&nbsp;{$this->lang->words['erlog_removeall']}&nbsp;<input type="submit" value="{$this->lang->words['erlog_removechecked']}" class="button primary" />
</div>
</div>
</div>
</form>
HTML;
//--endhtml--//
return $IPBHTML;
}
}
@@ -0,0 +1,177 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Spiderlogs skin file
* Last Updated: $Date: 2009-02-04 15:03:36 -0500 (Wed, 04 Feb 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Core
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 3887 $
*/
class cp_skin_spiderlogs extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* Spider logs wrapper
*
* @access public
* @param array Spider log rows
* @return string HTML
*/
public function spiderlogsWrapper( $rows ) {
$form = array();
$form['search_for'] = $this->registry->output->formInput( "search_string" );
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$this->lang->words['slog_title']}</h2>
</div>
<div class="acp-box">
<h3>{$this->lang->words['slog_thelogs']}</h3>
<table class="alternate_rows" width='100%'>
<tr>
<th width='20%'>{$this->lang->words['slog_botname']}</th>
<th width='20%'>{$this->lang->words['slog_hits']}</th>
<th width='20%'>{$this->lang->words['slog_last']}</th>
<th width='20%'>{$this->lang->words['slog_viewall']}</th>
<th width='20%'>{$this->lang->words['slog_removeall']}</th>
</tr>
HTML;
if( count($rows) AND is_array($rows) )
{
foreach( $rows as $row )
{
$IPBHTML .= <<<HTML
<tr>
<td>{$row['_bot_name']}</td>
<td>{$row['cnt']}</td>
<td>{$row['_time']}</td>
<td><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=view&amp;bid={$row['_bot_url']}'>{$this->lang->words['slog_view']}</a></td>
<td><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=remove&amp;bid={$row['_bot_url']}'>{$this->lang->words['slog_remove']}</a></td>
</tr>
HTML;
}
}
else
{
$IPBHTML .= <<<HTML
<tr>
<td colspan='6' align='center'>{$this->lang->words['slog_noresults']}</td>
</tr>
HTML;
}
$IPBHTML .= <<<HTML
</table>
</div>
<br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='view' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class="acp-box">
<h3>{$this->lang->words['slog_search']}</h3>
<p align="center">{$this->lang->words['slog_searchfor']} {$form['search_for']}{$this->lang->words['slog_searchquery']}</p>
<div class="acp-actionbar">
<input value="{$this->lang->words['slog_searchbutton']}" class="button primary" accesskey="s" type="submit" />
</div>
</div>
</form>
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* View a single spider's log entry
*
* @access public
* @param array Rows
* @param string Page links
* @return string HTML
*/
public function spiderlogsView( $rows, $pages ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$this->lang->words['slog_title']}</h2>
</div>
<div class="acp-box">
<h3>{$this->lang->words['slog_thelogs']}</h3>
<table class="alternate_rows" width='100%'>
<tr>
<th width='25%'>{$this->lang->words['slog_botname']}</th>
<th width='25%'>{$this->lang->words['slog_querystring']}</th>
<th width='25%'>{$this->lang->words['slog_time']}</th>
<th width='25%'>{$this->lang->words['slog_ip']}</th>
</tr>
HTML;
if( count($rows) AND is_array($rows) )
{
foreach( $rows as $row )
{
$IPBHTML .= <<<HTML
<tr>
<td>{$row['_bot_name']}</td>
<td>{$row['_query_string']}</td>
<td>{$row['_time']}</td>
<td>{$row['ip_address']}</td>
</tr>
HTML;
}
}
else
{
$IPBHTML .= <<<HTML
<tr>
<td colspan='6' align='center'>{$this->lang->words['slog_noresults']}</td>
</tr>
HTML;
}
$IPBHTML .= <<<HTML
</table>
<div class='acp-actionbar'>
<div class="actionleft">{$pages}</div>
</div>
</div>
<br />
HTML;
//--endhtml--//
return $IPBHTML;
}
}
@@ -0,0 +1,451 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* SQL Toolbox skin file
* Last Updated: $Date: 2009-05-20 21:25:47 -0400 (Wed, 20 May 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Core
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 4680 $
*/
class cp_skin_sql extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* Search index splash page
*
* @access public
* @param array Table data
* @param array Searchable applications
* @return string HTML
*/
public function sqlSearchIndex( $table_data, $searchable_apps ){
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='acp-box'>
<h3>{$this->lang->words['my_si_data']}</h3>
<ul class="acp-form alternate_rows">
<li>
<label>{$this->lang->words['my_si_rows']}</label>
{$table_data['Rows']}
</li>
<li>
<label>{$this->lang->words['my_si_datasize']}</label>
{$table_data['Data_length']}
</li>
<li>
<label>{$this->lang->words['my_si_indexsize']}</label>
{$table_data['Index_length']}
</li>
</ul>
</div>
<br />
<div class='acp-box'>
<h3>{$this->lang->words['my_si_searchable']}</h3>
<ul class="acp-form alternate_rows">
HTML;
foreach( $searchable_apps as $key => $data )
{
$data['entries'] = intval($data['entries']);
$IPBHTML .= <<<HTML
<li>
<label>{$data['title']} <span class='desctext'>{$data['entries']} {$this->lang->words['my_si_entries']}</span></label>
<a href='{$this->settings['base_url']}{$this->form_code}&amp;do=rebuild_app_search_index&amp;app_key={$key}'>{$this->lang->words['my_si_clickrebuild']}</a>
</li>
HTML;
}
$IPBHTML .= <<<HTML
</ul>
</div>
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* Result from running an SQL tool
*
* @access public
* @param string Page title
* @param array Columns
* @param array Rows
* @return string HTML
*/
public function sqlToolResult( $title, $columns, $rows ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='acp-box'>
<h3>{$title}</h3>
<table class='alternate_rows real-table'>
<tr>
HTML;
foreach( $columns as $r )
{
$IPBHTML .= <<<HTML
<th width='*'>{$r}</th>
HTML;
}
$IPBHTML .= <<<HTML
</tr>
<tr>
HTML;
foreach( $rows as $r )
{
$num = $num == 1 ? 2 : 1;
$IPBHTML .= <<<HTML
<td>{$r}</td>
HTML;
}
$IPBHTML .= <<<HTML
</tr>
</table>
</div>
<br />
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* Show the header for an SQL tool result
*
* @access public
* @return string HTML
*/
public function sqlToolResultHeader() {
$IPBHTML = "";
//--starthtml--//
$title = sprintf( $this->lang->words['my_title'], $this->true_version );
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$title}</h2>
</div>
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* Splash screen to create an SQL backup
*
* @access public
* @return string HTML
*/
public function sqlSafeBackupSplashScreen() {
$IPBHTML = "";
//--starthtml--//
$title = sprintf( $this->lang->words['my_backuptitle'], $this->true_version );
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$title}</h2>
</div>
<div class='acp-box with_bg'>
<h3>{$this->lang->words['my_simple_backup']}</h3>
<p>{$this->lang->words['my_simple_backup']}</p>
<p>{$this->lang->words['my_simple_text']}</p>
<p><b><a href='{$this->settings['base_url']}{$this->form_code}&amp;do=dosafebackup&amp;create_tbl={$this->request['create_tbl']}&amp;addticks={$this->request['addticks']}&amp;skip={$this->request['skip']}&amp;enable_gzip={$this->request['enable_gzip']}'>{$this->lang->words['my_start_backup']}</a></b></p>
</div>
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* Show the form to create an SQL backup
*
* @access public
* @param array Form elements
* @return string HTML
*/
public function sqlBackupForm( $form ) {
$IPBHTML = "";
//--starthtml--//
$title = sprintf( $this->lang->words['my_backuptitle'], $this->true_version );
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$title}</h2>
</div>
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='safebackup' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['my_simple_backup']}</h3>
<ul class="acp-form alternate_rows">
<li>
<label>{$this->lang->words['my_createtable']}</label>
{$form['create_tbl']}
</li>
<li>
<label>{$this->lang->words['my_backticks']} <span class='desctext'>{$this->lang->words['my_iferror']}</span></label>
<input type='checkbox' name='addticks' value='1' />
</li>
<li>
<label>{$this->lang->words['my_skinnoness']} <span class='desctext'>{$this->lang->words['my_skinnoness_notes']}</span></label>
{$form['skip']}
</li>
<li>
<label>{$this->lang->words['my_gzipcontent']} <span class='desctext'>{$this->lang->words['my_gzipnotes']}</span></label>
{$form['enable_gzip']}
</li>
</ul>
<div class="acp-actionbar"><input type='submit' value='{$this->lang->words['my_start_backup']}' class='realbutton' accesskey='s' /></div>
</div>
</form>
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* View results from executing an SQL query
*
* @access public
* @param array Queries
* @param array Headers for the queries
* @param array Rows from the queries
* @param string Page links
* @return string HTML
*/
public function sqlViewResults( $queries, $headers, $rows, $pages ) {
$IPBHTML = "";
//--starthtml--//
$query = implode( ";\n", $queries );
$title = sprintf( $this->lang->words['my_title'], $this->true_version );
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$title}</h2>
</div>
HTML;
//-----------------------------------------
// When coming from db checker/index checker, won't be set
//-----------------------------------------
if( $this->form_code )
{
$IPBHTML .= <<<HTML
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='runsql' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box with_bg'>
<h3>{$this->lang->words['my_run']}</h3>
<textarea name='query' cols='40' rows='5'>{$query}</textarea>
<div class='acp-actionbar'><input type='submit' value='{$this->lang->words['my_runnew']}' class='realbutton' accesskey='s' /></div>
</div>
</form>
<br />
HTML;
}
foreach( $queries as $index => $aQuery )
{
$IPBHTML .= <<<HTML
<div>{$pages}</div>
<div class='acp-box clear'>
<h3>{$this->lang->words['my_results']}</h3>
<table class='alternate_rows real-table'>
<tr>
HTML;
if( count($headers[ $index ]) )
{
foreach( $headers[ $index ] as $r )
{
$IPBHTML .= <<<HTML
<th width='*'>{$r}</th>
HTML;
}
}
$IPBHTML .= <<<HTML
</tr>
HTML;
if( count($rows[ $index ]) )
{
foreach( $rows[ $index ] as $r )
{
$IPBHTML .= <<<HTML
<tr>
HTML;
foreach( $r as $_r )
{
$num = ( $num == 1 ) ? 2 : 1;
$IPBHTML .= <<<HTML
<td>{$_r}</td>
HTML;
}
$IPBHTML .= <<<HTML
</tr>
HTML;
}
}
$IPBHTML .= <<<HTML
</tr>
</table>
</div>
<div style='margin-top: 2px;'>{$pages}</div>
<br />
HTML;
}
//--endhtml--//
return $IPBHTML;
}
/**
* Show the database tables (SQL Toolbox homepage)
*
* @access public
* @param array Tables
* @return string HTML
*/
public function sqlListTables( $rows ) {
$IPBHTML = "";
//--starthtml--//
$title = sprintf( $this->lang->words['my_title'], $this->true_version );
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$title}</h2>
</div>
<script type='text/javascript' src='{$this->settings['js_main_url']}acp.forms.js'></script>
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theForm' id='theForm'>
<input type='hidden' name='do' value='dotool' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['my_tables']}</h3>
<table class='alternate_rows'>
<tr>
<th width='20%'>{$this->lang->words['my_table']}</th>
<th width='10%'>{$this->lang->words['my_rows']}</th>
<th width='10%'>{$this->lang->words['my_export']}</th>
<th width='10%'><input id='checkAll' type="checkbox" title="{$this->lang->words['my_checkall']}" /></th>
</tr>
HTML;
foreach( $rows as $r )
{
$IPBHTML .= <<<HTML
<tr>
<td>
<b><span style='font-size:12px'><a href='{$this->settings['base_url']}{$this->form_code}&amp;do=runsql&query={$r['query']}'>{$r['table']}</a></span></b>
</td>
<td>{$r['rows']}</td>
<td><a href='{$this->settings['base_url']}{$this->form_code}&do=export_tbl&tbl={$r['table']}'>{$this->lang->words['my_export']}</a></b></td>
<td><input name="tbl_{$r['table']}" value='1' type='checkbox' class='checkAll' /></td>
</tr>
HTML;
}
$IPBHTML .= <<<HTML
</table>
<div class='acp-actionbar'>
<div class='rightaction'>
<select name='tool'>
<option value='optimize'>{$this->lang->words['my_optimize']}</option>
<option value='repair'>{$this->lang->words['my_repair']}</option>
<option value='check'>{$this->lang->words['my_check']}</option>
<option value='analyze'>{$this->lang->words['my_analyze']}</option>
</select>
<input type='submit' value='{$this->lang->words['my_go']}' class='realbutton' />
</div>
</div>
</div>
</form>
<br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='runsql' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class='acp-box'>
<h3>{$this->lang->words['my_run']}</h3>
<ul class="acp-form alternate_rows">
<li>
<label>{$this->lang->words['my_manadvanced']}</label>
<textarea name='query' cols='40' rows='5'></textarea>
</li>
</ul>
<div class='acp-actionbar'><input type='submit' value='{$this->lang->words['my_run']}' class='realbutton' accesskey='s' /></div>
</div>
</form>
HTML;
//--endhtml--//
return $IPBHTML;
}
}
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,325 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Warn log skin file
* Last Updated: $Date: 2009-03-27 11:41:38 -0400 (Fri, 27 Mar 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Core
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 4333 $
*/
class cp_skin_warnlogs extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* Warn logs wrapper
*
* @access public
* @param array Records
* @param array Members
* @return string HTML
*/
public function warnlogsWrapper( $rows, $members ) {
$form_array = array(
0 => array( 'notes' , $this->lang->words['wlog_notes'] ),
1 => array( 'contact' , $this->lang->words['wlog_emailpm'] ),
);
$form = array();
$form['search_for'] = $this->registry->output->formInput( "search_string" );
$form['search_in'] = $this->registry->output->formDropdown( "search_type", $form_array );
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$this->lang->words['wlog_title']}</h2>
</div>
<div class="acp-box">
<h3>{$this->lang->words['wlog_last10']}</h3>
<table class="alternate_rows" width='100%'>
<tr>
<th width='10%'>{$this->lang->words['wlog_type']}</th>
<th width='25%'>{$this->lang->words['wlog_warned']}</th>
<th width='15%' style='text-align: center'>{$this->lang->words['wlog_wascontacted']}</th>
<th width='25%'>{$this->lang->words['wlog_date']}</th>
<th width='25%'>{$this->lang->words['wlog_warnedby']}</th>
</tr>
HTML;
if( count($rows) AND is_array($rows) )
{
foreach( $rows as $row )
{
$IPBHTML .= <<<HTML
<tr>
<td>{$row['_type']}</td>
<td>{$row['_a_name']}</td>
<td style='text-align: center'>{$row['_cont']}</td>
<td>{$row['_date']}</td>
<td>{$row['p_name']}</td>
</tr>
HTML;
}
}
else
{
$IPBHTML .= <<<HTML
<tr>
<td colspan='6' align='center'>{$this->lang->words['wlog_noresults']}</td>
</tr>
HTML;
}
$IPBHTML .= <<<HTML
</table>
</div>
<br />
<div class="acp-box">
<h3>{$this->lang->words['wlog_thelogs']}</h3>
<table class="alternate_rows" width='100%'>
<tr>
<th width='30%'>{$this->lang->words['wlog_member']}</th>
<th width='20%'>{$this->lang->words['wlog_times']}</th>
<th width='20%'>{$this->lang->words['wlog_viewall']}</th>
<th width='30%'>{$this->lang->words['wlog_removeall']}</th>
</tr>
HTML;
if( count($members) AND is_array($members) )
{
foreach( $members as $row )
{
$IPBHTML .= <<<HTML
<tr>
<td>{$row['members_display_name']}</td>
<td>{$row['act_count']}</td>
<td><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=view&amp;mid={$row['wlog_mid']}'>{$this->lang->words['wlog_viewlog']}</a></td>
<td><a href='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=remove&amp;mid={$row['wlog_mid']}'>{$this->lang->words['wlog_remove']}</a></td>
</tr>
HTML;
}
}
else
{
$IPBHTML .= <<<HTML
<tr>
<td colspan='4' align='center'>{$this->lang->words['wlog_noresults']}</td>
</tr>
HTML;
}
$IPBHTML .= <<<HTML
</table>
</div>
<br />
<form action='{$this->settings['base_url']}{$this->form_code}' method='post' name='theAdminForm' id='theAdminForm'>
<input type='hidden' name='do' value='view' />
<input type='hidden' name='_admin_auth_key' value='{$this->registry->adminFunctions->generated_acp_hash}' />
<div class="acp-box">
<h3>{$this->lang->words['wlog_search']}</h3>
<ul class="acp-form alternate_rows">
<li>
<label>{$this->lang->words['wlog_searchfor']}</label>
{$form['search_for']}
</li>
<li>
<label>{$this->lang->words['wlog_searchin']}</label>
{$form['search_in']}
</li>
</ul>
<div class="acp-actionbar">
<input value="{$this->lang->words['wlog_searchbutton']}" class="button primary" accesskey="s" type="submit" />
</div>
</div>
</form>
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* View an individual member's log
*
* @access public
* @param array Log rows
* @param string Page links
* @return string HTML
*/
public function warnlogsView( $rows, $pages ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$this->lang->words['wlog_title']}</h2>
</div>
<div class="acp-box">
<h3>{$this->lang->words['wlog_thelogs']}</h3>
<table class="alternate_rows" width='100%'>
<tr>
<th width='5%'>{$this->lang->words['wlog_type']}</th>
<th width='15%'>{$this->lang->words['wlog_member']}</th>
<th width='10%'>{$this->lang->words['wlog_wascontacted']}</th>
<th width='10%'>{$this->lang->words['wlog_modq']}</th>
<th width='10%'>{$this->lang->words['wlog_susp']}</th>
<th width='10%'>{$this->lang->words['wlog_nopost']}</th>
<th width='15%'>{$this->lang->words['wlog_date']}</th>
<th width='15%'>{$this->lang->words['wlog_warnedby']}</th>
<th width='10%'>{$this->lang->words['wlog_viewnotes']}</th>
</tr>
HTML;
if( count($rows) AND is_array($rows) )
{
foreach( $rows as $row )
{
$IPBHTML .= <<<HTML
<tr>
<td>{$row['_type']}</td>
<td>{$row['_a_name']}</td>
<td>{$row['_cont']}</td>
<td>{$row['_mod']}</td>
<td>{$row['_susp']}</td>
<td>{$row['_post']}</td>
<td>{$row['_date']}</td>
<td>{$row['p_name']}</td>
<td><a href='#' onclick='return acp.openWindow("{$this->settings['base_url']}&{$this->form_code}&do=viewnote&id={$row['wlog_id']}",400,400,"{$this->lang->words['wlog_log']}"); return false;'>{$this->lang->words['wlog_viewlog']}</a></td>
</tr>
HTML;
}
}
else
{
$IPBHTML .= <<<HTML
<tr>
<td colspan='9' align='center'>{$this->lang->words['wlog_noresults']}</td>
</tr>
HTML;
}
$IPBHTML .= <<<HTML
</table>
<div class='acp-actionbar'>
<div class="leftaction">{$pages}</div>
</div>
</div>
<br />
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* View a member's warn log note
*
* @access public
* @param array Note data
* @return string HTML
*/
public function warnlogsNote( $row ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class="acp-box">
<h3>{$this->lang->words['wlog_warnnotes']}</h3>
<table class="alternate_rows" width='100%'>
<tr>
<td width='15%'>{$this->lang->words['wlog_log_from']}</td>
<td>{$row['p_name']}</td>
</tr>
<tr>
<td width='15%'>{$this->lang->words['wlog_log_to']}</td>
<td>{$row['a_name']}</td>
</tr>
<tr>
<td width='15%'>{$this->lang->words['wlog_log_sent']}</td>
<td>{$row['_date']}</td>
</tr>
<tr>
<td colspan='2'>{$row['_text']}</td>
</tr>
</table>
</div>
<br />
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* View contact information for a warn log
*
* @access public
* @param array Warn log details
* @return string HTML
*/
public function warnlogsContact( $row ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class="acp-box">
<h3>{$row['_type']}: {$row['_subject']}</h3>
<table class="alternate_rows" width='100%'>
<tr>
<td width='15%'><strong>{$this->lang->words['wlog_log_from']}</strong></td>
<td>{$row['p_name']}</td>
</tr>
<tr>
<td width='15%'>{$this->lang->words['wlog_log_to']}</td>
<td>{$row['a_name']}</td>
</tr>
<tr>
<td width='15%'>{$this->lang->words['wlog_log_sent']}</td>
<td>{$row['_date']}</td>
</tr>
<tr>
<td width='15%'>{$this->lang->words['wlog_log_subject']}</td>
<td>{$row['_subject']}</td>
</tr>
<tr>
<td colspan='2'>{$row['_text']}</td>
</tr>
</table>
</div>
<br />
HTML;
//--endhtml--//
return $IPBHTML;
}
}
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,75 @@
/**
* IPS Template Skin Diff Thingy
* (c) Invision Power Services, Inc
* @author Matt Mecham
*/
/* Log Tray */
#diffLowDrawInner
{
margin-left: auto;
margin-right: auto;
background-color: #FFFFFF;
background-repeat: repeat-x;
border: 1px solid #5b5b5b;
width: 500px;
}
#diffLowDrawInner table
{
height: 120px;
width: 100%;
}
#diffDone
{
margin:auto;
text-align:center;
font-weight:bold;
font-size:14px;
}
#diffLogText
{
width: 96%;
height: 45px;
padding:10px;
font-size:22px;
margin:auto;
text-align:center;
font-weight:bold;
overflow: auto;
}
/* Progress Bar */
#diffLogProgressBar
{
border: 1px solid #5b5b5b;
background-color: #2B2B2B;
width: 200px;
height: 15px;
padding-top:0px;
padding-bottom:2px;
padding-right:5px;
padding-left:0px;
margin-left: auto;
margin-right: auto;
margin-bottom:10px;
}
#diffLogProgressBarInner
{
padding:0px;
margin:0px;
height:14px;
width:68%;
background-image: url("images/icon_components/templates/diff/progressbar.gif");
background-repeat: repeat-x;
}
#diffStatusImage
{
float:left;
margin-top: -4px;
margin-left: 115px;
}
@@ -0,0 +1,75 @@
/**
* IPS Template Skin Search And Replace Thingy
* (c) Invision Power Services, Inc
* @author Matt Mecham
*/
/* Log Tray */
#SandRLowDrawInner
{
margin-left: auto;
margin-right: auto;
background-color: #FFFFFF;
background-repeat: repeat-x;
border: 1px solid #5b5b5b;
width: 500px;
}
#SandRLowDrawInner table
{
height: 120px;
width: 100%;
}
#SandRDone
{
margin:auto;
text-align:center;
font-weight:bold;
font-size:14px;
}
#SandRLogText
{
width: 96%;
height: 45px;
padding:10px;
font-size:22px;
margin:auto;
text-align:center;
font-weight:bold;
overflow: auto;
}
/* Progress Bar */
#SandRLogProgressBar
{
border: 1px solid #5b5b5b;
background-color: #2B2B2B;
width: 200px;
height: 15px;
padding-top:0px;
padding-bottom:2px;
padding-right:5px;
padding-left:0px;
margin-left: auto;
margin-right: auto;
margin-bottom:10px;
}
#SandRLogProgressBarInner
{
padding:0px;
margin:0px;
height:14px;
width:68%;
background-image: url("images/icon_components/templates/sandr/progressbar.gif");
background-repeat: repeat-x;
}
#SandRStatusImage
{
float:left;
margin-top: -4px;
margin-left: 115px;
}