Version 3.4.6

This commit is contained in:
Neo committed 2025-12-19 00:40:53 -08:00
1 parent e4478369d8
commit b45ea0dffb
1568 files changed
+155104 -161665

No files matched your search

@@ -2,7 +2,7 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.4.5
* IP.Board v3.4.6
* Archive stuff (AJAX) - Matt Mecham
* Last Updated: $Date: 2011-05-05 12:03:47 +0100 (Thu, 05 May 2011) $
* </pre>
@@ -5,6 +5,6 @@
<hr>
You have reached this page in error, please use your back button to return to the forum.
<hr>
<a href="http://www.invisionpower.com">IP.Board</a>
IP.Board
</body>
</html>
@@ -2,7 +2,7 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.4.5
* IP.Board v3.4.6
* Member property updater (AJAX)
* Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
* </pre>
@@ -1,395 +1,395 @@
<?php
/**
* @file archive.php Archive Action File
*~TERABYTE_DOC_READY~
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
* $License: http://www.invisionpower.com/company/standards.php#license$
* $Author: ips_terabyte $ (Original: Matt)
* @since 11 Nov 2011
* $LastChangedDate: 2010-10-14 13:11:17 -0400 (Thu, 14 Oct 2010) $
* @version v3.4.5
* $Revision: 477 $
*/
if ( ! defined( 'IN_ACP' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'.";
exit();
}
/**
* @class admin_forums_archive_archive
* @brief Archive Action File
*/
class admin_forums_archive_archive extends ipsCommand
{
/**
* Skin object shortcut
*
* @var $html
*/
public $html;
/**
* String for the screen url bit
*
* @var $form_code
*/
public $form_code = '';
/**
* String for the JS url bit
*
* @var $form_code_js
*/
public $form_code_js = '';
/**
* Main function executed automatically by the controller
*
* @param object $registry Registry object
* @return @e void
*/
public function doExecute( ipsRegistry $registry )
{
/* Load Skin and Lang */
$this->html = $this->registry->output->loadTemplate( 'cp_skin_archive' );
$this->form_code = $this->html->form_code = 'module=archive&amp;section=archive&amp;';
$this->html->form_code_js = $this->html->form_code_js = 'module=archive&section=archive&';
$this->lang->loadLanguageFile( array( 'admin_archive' ) );
/* Load up archive class */
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/archive/writer.php', 'classes_archive_writer' );
$this->archiveWriter = new $classToLoad();
$this->archiveWriter->setApp('forums');
/* Check for class_forums */
if ( ipsRegistry::isClassLoaded('class_forums') !== TRUE )
{
$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'forums' ) . "/sources/classes/forums/class_forums.php", 'class_forums', 'forums' );
$this->registry->setClass( 'class_forums', new $classToLoad( $registry ) );
$this->registry->class_forums->forumsInit();
}
switch( $this->request['do'] )
{
case 'toggleArchiving':
$this->_archiveToggle();
break;
case 'rules':
$this->_archiveRules();
break;
case 'saveRules':
$this->_saveRules();
break;
case 'saveRestorePrefs':
$this->_saveRestorePrefs();
break;
case 'overview':
default:
$this->_archiveDash();
break;
}
/* Output */
$this->registry->output->html_main .= $this->registry->output->global_template->global_frame_wrapper();
$this->registry->output->sendOutput();
}
/**
* Archive Toggle
*
* @return @e void
*/
protected function _saveRestorePrefs()
{
/* Load up archive class */
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/archive/restore.php', 'classes_archive_restore' );
$archiveRestore = new $classToLoad();
$archiveRestore->setApp('forums');
/* Show topics waiting unarchiving */
$restoreData = $archiveRestore->getRestoreData();
/* Update */
IPSLib::updateSettings( array( 'archive_restore_days' => intval( $this->request['restoreDays'] ) ) );
/* Fetch and store tids */
$date = IPS_UNIX_TIME_NOW - ( 86400 * intval( $this->request['restoreDays'] ) );
$mouse = $archiveRestore->engine->remoteDB->buildAndFetch( array( 'select' => 'min(archive_topic_id) as min, max(archive_topic_id) as max',
'from' => 'forums_archive_posts',
'where' => 'archive_content_date > ' . $date ) ); /* @todo - abstract this to the engine */
$restoreData['restore_min_tid'] = intval( $mouse['min'] );
$restoreData['restore_max_tid'] = intval( $mouse['max'] );
/* Save */
$archiveRestore->setRestoreData( $restoreData );
/* Done */
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . $this->form_code . 'do=overview', TRUE );
}
/**
* Archive Toggle
*
* @return @e void
*/
protected function _archiveToggle()
{
/* Update */
IPSLib::updateSettings( array( 'archive_on' => ( $this->settings['archive_on'] ? 0 : 1 ) ) );
/* Done */
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . $this->form_code . 'do=overview', TRUE );
}
/**
* Archive dashboard
*
* @return @e void
*/
protected function _archiveDash()
{
/* Init */
$archTopics = array();
$restoreTopics = array();
$restoreCount = 0;
$unArchiveCount = 0;
/* Test remote DB */
$connexTest = $this->_connectionTest();
/* Load up archive class */
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/archive/restore.php', 'classes_archive_restore' );
$archiveRestore = new $classToLoad();
$archiveRestore->setApp('forums');
/* Load topic class */
$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'forums' ) . "/sources/classes/topics.php", 'app_forums_classes_topics', 'forums' );
$topicClass = new $classToLoad( $this->registry );
/* Show topics waiting unarchiving */
$restoreData = $archiveRestore->getRestoreData();
/* Get pids and that */
if ( count( $restoreData['restore_manual_tids'] ) )
{
$restoreTopics = $topicClass->getTopics( array( 'topicId' => array_keys( $restoreData['restore_manual_tids'] ), 'limit' => 10, 'getCount' => true ) );
$restoreCount = $topicClass->getTopicsCount();
foreach( $restoreTopics as $tid => $data )
{
$restoreTopics[ $tid ]['nav'] = $this->registry->class_forums->forumsBreadcrumbNav( $data['forum_id'] );
}
}
/* Get count of topics left to unarchive */
if ( $restoreData['restore_min_tid'] AND $restoreData['restore_max_tid'] )
{
$date = IPS_UNIX_TIME_NOW - ( 86400 * intval( $this->settings['archive_restore_days'] ) );
$restoreCount += $topicClass->getTopics( array( 'archiveState' => array( 'archived' ), 'dateIsGreater' => $date, 'tidIsGreater' => ( $restoreData['restore_min_tid'] -1 ), 'tidIsLess' => ( $restoreData['restore_max_tid'] - 1 ), 'getCountOnly' => true ) );
if ( count( $restoreCount ) < 10 )
{
$tmp = $topicClass->getTopics( array( 'archiveState' => array( 'archived' ), 'dateIsGreater' => $date, 'tidIsGreater' => ( $restoreData['restore_min_tid'] - 1 ), 'tidIsLess' => ( $restoreData['restore_max_tid'] + 1 ), 'limit' => (10 - count( $restoreTopics ) ) ) );
}
foreach( $tmp as $tid => $data )
{
$restoreTopics[ $tid ] = $data;
$restoreTopics[ $tid ]['nav'] = $this->registry->class_forums->forumsBreadcrumbNav( $data['forum_id'] );
}
}
/* Fetch latest archived topics */
$archTopics = $topicClass->getTopics( array( 'archiveState' => array( 'working', 'archived' ), 'topicType' => array( 'hidden', 'visible' ), 'limit' => 10, 'getCount' => true, 'sortField' => 'tid', 'sortOrder' => 'desc' ) );
$archCount = $topicClass->getTopicsCount();
foreach( $archTopics as $tid => $data )
{
$archTopics[ $tid ]['nav'] = $this->registry->class_forums->forumsBreadcrumbNav( $data['forum_id'] );
}
$possibleCounts = $this->archiveWriter->getArchivePossibleCount();
/* Show dash */
$this->registry->output->html .= $this->html->archiveDashboard( $restoreTopics, $restoreCount, $archTopics, $archCount, $possibleCounts, $connexTest );
}
/**
* Archive Rules overview
*
* @return @e void
*/
protected function _archiveRules()
{
/* Get archive count so far */
$counts = $this->archiveWriter->getArchivePossibleCount();
$rules = $this->archiveWriter->getRulesFromDb();
if ( $counts['count'] < 1 )
{
$textString = $this->lang->words['archive_no_query'];
}
else
{
$textString = sprintf( $this->lang->words['archive_x_query'], $counts['percentage'], $this->lang->formatNumber( $counts['count'] ), $this->lang->formatNumber( $counts['total'] ) );
}
/* Post process */
foreach( array('archive', 'skip' ) as $type )
{
if ( ! empty( $rules[ $type ]['forum']['text'] ) )
{
$ids = IPSLib::isSerialized( $rules[ $type ]['forum']['text'] ) ? unserialize( $rules[ $type ]['forum']['text'] ) : array();
if ( count( $ids ) )
{
foreach( $ids as $fid )
{
$data = $this->registry->class_forums->getForumbyId( $fid );
if ( $data['id'] )
{
$rules[ $type ]['forum']['_parseData'][ $fid ] = array( 'data' => $this->registry->class_forums->getForumbyId( $fid ),
'nav' => $this->html->buildForumNav( $this->registry->class_forums->forumsBreadcrumbNav( $fid, 'showforum=', true ) ) );
}
}
}
}
if ( ! empty( $rules[ $type ]['member']['text'] ) )
{
$ids = ( IPSLib::isSerialized( $rules[ $type ]['member']['text'] ) ) ? unserialize( $rules[ $type ]['member']['text'] ) : array();
if ( count( $ids ) )
{
$members = IPSMember::load( $ids, 'all' );
foreach( $members as $id => $data )
{
$members[ $id ] = IPSMember::buildProfilePhoto( $members[ $id ]);
$members[ $id ]['photoTag'] = IPSMember::buildPhotoTag( $members[ $id ], 'inset' );
}
foreach( $ids as $fid )
{
$rules[ $type ]['member']['_parseData']['count'] = count( $members );
$rules[ $type ]['member']['_parseData']['data'] = $members;
}
}
}
}
/* Show rules page */
$this->registry->output->html .= $this->html->archiveRules( IPSText::jsonEncodeForTemplate( $rules ), $textString );
}
/**
* Save Rules
*
* @return @e void
*/
protected function _saveRules()
{
/* Get fields to save */
$archiveFields = $this->archiveWriter->getArchiveOnFields();
$skipFields = $this->archiveWriter->getArchiveSkipFields();
/* To save */
$archiveData = array();
$skipData = array();
/* Loop through and get archive data */
foreach( $archiveFields as $k )
{
if ( isset( $_POST[ 'archive_field_' . $k ] ) )
{
$archiveData[ $k ] = array( 'value' => $_POST[ 'archive_field_' . $k ],
'text' => isset( $_POST[ 'archive_field_' . $k . '_text' ] ) ? $_POST[ 'archive_field_' . $k . '_text' ] : '',
'unit' => isset( $_POST[ 'archive_field_' . $k . '_unit' ] ) ? $_POST[ 'archive_field_' . $k . '_unit' ] : '' );
}
}
/* Loop through and get skup data */
foreach( $skipFields as $k )
{
if ( isset( $_POST[ 'skip_field_' . $k ] ) )
{
$skipData[ $k ] = array( 'value' => $_POST[ 'skip_field_' . $k ],
'text' => isset( $_POST[ 'skip_field_' . $k . '_text' ] ) ? $_POST[ 'skip_field_' . $k . '_text' ] : '',
'unit' => isset( $_POST[ 'skip_field_' . $k . '_unit' ] ) ? $_POST[ 'skip_field_' . $k . '_unit' ] : '' );
}
}
/* Update rules */
foreach( $archiveData as $k => $data )
{
$this->DB->replace( 'core_archive_rules', array( 'archive_key' => md5( 'forums_' . $k . '_0' ),
'archive_app' => 'forums',
'archive_field' => $k,
'archive_value' => $data['value'],
'archive_text' => $data['text'],
'archive_unit' => $data['unit'],
'archive_skip' => 0 ), array( 'archive_key' ) );
}
/* Update rules */
foreach( $skipData as $k => $data )
{
$this->DB->replace( 'core_archive_rules', array( 'archive_key' => md5( 'forums_' . $k . '_1' ),
'archive_app' => 'forums',
'archive_field' => $k,
'archive_value' => $data['value'],
'archive_text' => $data['text'],
'archive_unit' => $data['unit'],
'archive_skip' => 1 ), array( 'archive_key' ) );
}
/* Done */
return $this->_archiveRules();
}
/**
* Test remote DB
*
* @return @e boolean
*/
protected function _connectionTest()
{
if ( ! empty( $this->settings['archive_remote_sql_database'] ) && ! empty( $this->settings['archive_remote_sql_user'] ) )
{
/* Load up archive class */
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/archive/writer.php', 'classes_archive_writer' );
$archiveWriter = new $classToLoad();
$archiveWriter->setApp('forums');
/* Test */
$result = $archiveWriter->testConnection();
if ( is_string( $result ) && $result == 'NO_TABLE' )
{
/* Try and create table */
$archiveWriter->createTable();
$archiveWriter->flush();
/* Try test again */
return $archiveWriter->testConnection();
}
else
{
return $result;
}
}
return true;
}
<?php
/**
* @file archive.php Archive Action File
*~TERABYTE_DOC_READY~
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
* $License: http://www.invisionpower.com/company/standards.php#license$
* $Author: ips_terabyte $ (Original: Matt)
* @since 11 Nov 2011
* $LastChangedDate: 2010-10-14 13:11:17 -0400 (Thu, 14 Oct 2010) $
* @version v3.4.6
* $Revision: 477 $
*/
if ( ! defined( 'IN_ACP' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'.";
exit();
}
/**
* @class admin_forums_archive_archive
* @brief Archive Action File
*/
class admin_forums_archive_archive extends ipsCommand
{
/**
* Skin object shortcut
*
* @var $html
*/
public $html;
/**
* String for the screen url bit
*
* @var $form_code
*/
public $form_code = '';
/**
* String for the JS url bit
*
* @var $form_code_js
*/
public $form_code_js = '';
/**
* Main function executed automatically by the controller
*
* @param object $registry Registry object
* @return @e void
*/
public function doExecute( ipsRegistry $registry )
{
/* Load Skin and Lang */
$this->html = $this->registry->output->loadTemplate( 'cp_skin_archive' );
$this->form_code = $this->html->form_code = 'module=archive&amp;section=archive&amp;';
$this->html->form_code_js = $this->html->form_code_js = 'module=archive&section=archive&';
$this->lang->loadLanguageFile( array( 'admin_archive' ) );
/* Load up archive class */
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/archive/writer.php', 'classes_archive_writer' );
$this->archiveWriter = new $classToLoad();
$this->archiveWriter->setApp('forums');
/* Check for class_forums */
if ( ipsRegistry::isClassLoaded('class_forums') !== TRUE )
{
$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'forums' ) . "/sources/classes/forums/class_forums.php", 'class_forums', 'forums' );
$this->registry->setClass( 'class_forums', new $classToLoad( $registry ) );
$this->registry->class_forums->forumsInit();
}
switch( $this->request['do'] )
{
case 'toggleArchiving':
$this->_archiveToggle();
break;
case 'rules':
$this->_archiveRules();
break;
case 'saveRules':
$this->_saveRules();
break;
case 'saveRestorePrefs':
$this->_saveRestorePrefs();
break;
case 'overview':
default:
$this->_archiveDash();
break;
}
/* Output */
$this->registry->output->html_main .= $this->registry->output->global_template->global_frame_wrapper();
$this->registry->output->sendOutput();
}
/**
* Archive Toggle
*
* @return @e void
*/
protected function _saveRestorePrefs()
{
/* Load up archive class */
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/archive/restore.php', 'classes_archive_restore' );
$archiveRestore = new $classToLoad();
$archiveRestore->setApp('forums');
/* Show topics waiting unarchiving */
$restoreData = $archiveRestore->getRestoreData();
/* Update */
IPSLib::updateSettings( array( 'archive_restore_days' => intval( $this->request['restoreDays'] ) ) );
/* Fetch and store tids */
$date = IPS_UNIX_TIME_NOW - ( 86400 * intval( $this->request['restoreDays'] ) );
$mouse = $archiveRestore->engine->remoteDB->buildAndFetch( array( 'select' => 'min(archive_topic_id) as min, max(archive_topic_id) as max',
'from' => 'forums_archive_posts',
'where' => 'archive_content_date > ' . $date ) ); /* @todo - abstract this to the engine */
$restoreData['restore_min_tid'] = intval( $mouse['min'] );
$restoreData['restore_max_tid'] = intval( $mouse['max'] );
/* Save */
$archiveRestore->setRestoreData( $restoreData );
/* Done */
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . $this->form_code . 'do=overview', TRUE );
}
/**
* Archive Toggle
*
* @return @e void
*/
protected function _archiveToggle()
{
/* Update */
IPSLib::updateSettings( array( 'archive_on' => ( $this->settings['archive_on'] ? 0 : 1 ) ) );
/* Done */
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . $this->form_code . 'do=overview', TRUE );
}
/**
* Archive dashboard
*
* @return @e void
*/
protected function _archiveDash()
{
/* Init */
$archTopics = array();
$restoreTopics = array();
$restoreCount = 0;
$unArchiveCount = 0;
/* Test remote DB */
$connexTest = $this->_connectionTest();
/* Load up archive class */
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/archive/restore.php', 'classes_archive_restore' );
$archiveRestore = new $classToLoad();
$archiveRestore->setApp('forums');
/* Load topic class */
$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'forums' ) . "/sources/classes/topics.php", 'app_forums_classes_topics', 'forums' );
$topicClass = new $classToLoad( $this->registry );
/* Show topics waiting unarchiving */
$restoreData = $archiveRestore->getRestoreData();
/* Get pids and that */
if ( count( $restoreData['restore_manual_tids'] ) )
{
$restoreTopics = $topicClass->getTopics( array( 'topicId' => array_keys( $restoreData['restore_manual_tids'] ), 'limit' => 10, 'getCount' => true ) );
$restoreCount = $topicClass->getTopicsCount();
foreach( $restoreTopics as $tid => $data )
{
$restoreTopics[ $tid ]['nav'] = $this->registry->class_forums->forumsBreadcrumbNav( $data['forum_id'] );
}
}
/* Get count of topics left to unarchive */
if ( $restoreData['restore_min_tid'] AND $restoreData['restore_max_tid'] )
{
$date = IPS_UNIX_TIME_NOW - ( 86400 * intval( $this->settings['archive_restore_days'] ) );
$restoreCount += $topicClass->getTopics( array( 'archiveState' => array( 'archived' ), 'dateIsGreater' => $date, 'tidIsGreater' => ( $restoreData['restore_min_tid'] -1 ), 'tidIsLess' => ( $restoreData['restore_max_tid'] - 1 ), 'getCountOnly' => true ) );
if ( count( $restoreCount ) < 10 )
{
$tmp = $topicClass->getTopics( array( 'archiveState' => array( 'archived' ), 'dateIsGreater' => $date, 'tidIsGreater' => ( $restoreData['restore_min_tid'] - 1 ), 'tidIsLess' => ( $restoreData['restore_max_tid'] - 1 ), 'limit' => (10 - count( $restoreTopics ) ) ) );
}
foreach( $tmp as $tid => $data )
{
$restoreTopics[ $tid ] = $data;
$restoreTopics[ $tid ]['nav'] = $this->registry->class_forums->forumsBreadcrumbNav( $data['forum_id'] );
}
}
/* Fetch latest archived topics */
$archTopics = $topicClass->getTopics( array( 'archiveState' => array( 'working', 'archived' ), 'topicType' => array( 'hidden', 'visible' ), 'limit' => 10, 'getCount' => true, 'sortField' => 'tid', 'sortOrder' => 'desc' ) );
$archCount = $topicClass->getTopicsCount();
foreach( $archTopics as $tid => $data )
{
$archTopics[ $tid ]['nav'] = $this->registry->class_forums->forumsBreadcrumbNav( $data['forum_id'] );
}
$possibleCounts = $this->archiveWriter->getArchivePossibleCount();
/* Show dash */
$this->registry->output->html .= $this->html->archiveDashboard( $restoreTopics, $restoreCount, $archTopics, $archCount, $possibleCounts, $connexTest );
}
/**
* Archive Rules overview
*
* @return @e void
*/
protected function _archiveRules()
{
/* Get archive count so far */
$counts = $this->archiveWriter->getArchivePossibleCount();
$rules = $this->archiveWriter->getRulesFromDb();
if ( $counts['count'] < 1 )
{
$textString = $this->lang->words['archive_no_query'];
}
else
{
$textString = sprintf( $this->lang->words['archive_x_query'], $counts['percentage'], $this->lang->formatNumber( $counts['count'] ), $this->lang->formatNumber( $counts['total'] ) );
}
/* Post process */
foreach( array('archive', 'skip' ) as $type )
{
if ( ! empty( $rules[ $type ]['forum']['text'] ) )
{
$ids = IPSLib::isSerialized( $rules[ $type ]['forum']['text'] ) ? unserialize( $rules[ $type ]['forum']['text'] ) : array();
if ( count( $ids ) )
{
foreach( $ids as $fid )
{
$data = $this->registry->class_forums->getForumbyId( $fid );
if ( $data['id'] )
{
$rules[ $type ]['forum']['_parseData'][ $fid ] = array( 'data' => $this->registry->class_forums->getForumbyId( $fid ),
'nav' => $this->html->buildForumNav( $this->registry->class_forums->forumsBreadcrumbNav( $fid, 'showforum=', true ) ) );
}
}
}
}
if ( ! empty( $rules[ $type ]['member']['text'] ) )
{
$ids = ( IPSLib::isSerialized( $rules[ $type ]['member']['text'] ) ) ? unserialize( $rules[ $type ]['member']['text'] ) : array();
if ( count( $ids ) )
{
$members = IPSMember::load( $ids, 'all' );
foreach( $members as $id => $data )
{
$members[ $id ] = IPSMember::buildProfilePhoto( $members[ $id ]);
$members[ $id ]['photoTag'] = IPSMember::buildPhotoTag( $members[ $id ], 'inset' );
}
foreach( $ids as $fid )
{
$rules[ $type ]['member']['_parseData']['count'] = count( $members );
$rules[ $type ]['member']['_parseData']['data'] = $members;
}
}
}
}
/* Show rules page */
$this->registry->output->html .= $this->html->archiveRules( IPSText::jsonEncodeForTemplate( $rules ), $textString );
}
/**
* Save Rules
*
* @return @e void
*/
protected function _saveRules()
{
/* Get fields to save */
$archiveFields = $this->archiveWriter->getArchiveOnFields();
$skipFields = $this->archiveWriter->getArchiveSkipFields();
/* To save */
$archiveData = array();
$skipData = array();
/* Loop through and get archive data */
foreach( $archiveFields as $k )
{
if ( isset( $_POST[ 'archive_field_' . $k ] ) )
{
$archiveData[ $k ] = array( 'value' => $_POST[ 'archive_field_' . $k ],
'text' => isset( $_POST[ 'archive_field_' . $k . '_text' ] ) ? $_POST[ 'archive_field_' . $k . '_text' ] : '',
'unit' => isset( $_POST[ 'archive_field_' . $k . '_unit' ] ) ? $_POST[ 'archive_field_' . $k . '_unit' ] : '' );
}
}
/* Loop through and get skup data */
foreach( $skipFields as $k )
{
if ( isset( $_POST[ 'skip_field_' . $k ] ) )
{
$skipData[ $k ] = array( 'value' => $_POST[ 'skip_field_' . $k ],
'text' => isset( $_POST[ 'skip_field_' . $k . '_text' ] ) ? $_POST[ 'skip_field_' . $k . '_text' ] : '',
'unit' => isset( $_POST[ 'skip_field_' . $k . '_unit' ] ) ? $_POST[ 'skip_field_' . $k . '_unit' ] : '' );
}
}
/* Update rules */
foreach( $archiveData as $k => $data )
{
$this->DB->replace( 'core_archive_rules', array( 'archive_key' => md5( 'forums_' . $k . '_0' ),
'archive_app' => 'forums',
'archive_field' => $k,
'archive_value' => $data['value'],
'archive_text' => $data['text'],
'archive_unit' => $data['unit'],
'archive_skip' => 0 ), array( 'archive_key' ) );
}
/* Update rules */
foreach( $skipData as $k => $data )
{
$this->DB->replace( 'core_archive_rules', array( 'archive_key' => md5( 'forums_' . $k . '_1' ),
'archive_app' => 'forums',
'archive_field' => $k,
'archive_value' => $data['value'],
'archive_text' => $data['text'],
'archive_unit' => $data['unit'],
'archive_skip' => 1 ), array( 'archive_key' ) );
}
/* Done */
return $this->_archiveRules();
}
/**
* Test remote DB
*
* @return @e boolean
*/
protected function _connectionTest()
{
if ( ! empty( $this->settings['archive_remote_sql_database'] ) && ! empty( $this->settings['archive_remote_sql_user'] ) )
{
/* Load up archive class */
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/archive/writer.php', 'classes_archive_writer' );
$archiveWriter = new $classToLoad();
$archiveWriter->setApp('forums');
/* Test */
$result = $archiveWriter->testConnection();
if ( is_string( $result ) && $result == 'NO_TABLE' )
{
/* Try and create table */
$archiveWriter->createTable();
$archiveWriter->flush();
/* Try test again */
return $archiveWriter->testConnection();
}
else
{
return $result;
}
}
return true;
}
}
@@ -7,7 +7,7 @@
* $Author: ips_terabyte $
* @since Tuesday 17th August 2004
* $LastChangedDate: 2010-10-14 13:11:17 -0400 (Thu, 14 Oct 2010) $
* @version v3.4.5
* @version v3.4.6
* $Revision: 477 $
*/
@@ -5,6 +5,6 @@
<hr>
You have reached this page in error, please use your back button to return to the forum.
<hr>
<a href="http://www.invisionpower.com/">IP.Board</a>
IP.Board
</body>
</html>
@@ -5,6 +5,6 @@
<hr>
You have reached this page in error, please use your back button to return to the forum.
<hr>
<a href="http://www.invisionpower.com">IP.Board</a>
IP.Board
</body>
</html>
@@ -2,10 +2,10 @@
<menu>
<tabitems>
<item>
<title>Архивация</title>
<title>Archiving</title>
<subitems>
<subitem>
<subitemtitle>Обзор Архивации</subitemtitle>
<subitemtitle>Archive Overview</subitemtitle>
<subitemlang>archive_overview</subitemlang>
<subsection>archive</subsection>
<subitemurl>do=forums_overview</subitemurl>
@@ -15,10 +15,10 @@
</subitems>
</item>
<item>
<title>Правила Архивации</title>
<title>Archive Rules</title>
<subitems>
<subitem>
` <subitemtitle>Правила Архивации</subitemtitle>
<subitemtitle>Archive Rules</subitemtitle>
<subitemlang>archive_rules</subitemlang>
<subsection>archive</subsection>
<subitemurl>do=rules</subitemurl>
@@ -1,16 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<permissions>
<group>
<grouptitle>Архивирование</grouptitle>
<grouptitle>Archiving</grouptitle>
<grouplang>forums_archive</grouplang>
<items>
<item>
<key>archive_overview</key>
<string>Может просматривать обзорную страницу архивации?</string>
<string>Can overview archiving?</string>
</item>
<item>
<key>archive_rules</key>
<string>Может управлять правилами архивации?</string>
<string>Can manage archiving rules?</string>
</item>
</items>
</group>
@@ -7,7 +7,7 @@
* $Author: ips_terabyte $
* @since 14th May 2003
* $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $
* @version v3.4.5
* @version v3.4.6
* $Revision: 8655 $
*/
@@ -5,6 +5,6 @@
<hr>
You have reached this page in error, please use your back button to return to the forum.
<hr>
<a href="http://www.invisionpower.com">IP.Board</a>
IP.Board
</body>
</html>
@@ -1,355 +1,355 @@
<?php
/**
* <pre>
* Invision Power Services
* IP.Board v3.4.5
* Attachments: Search
* Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
* </pre>
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Forums
* @link http://www.invisionpower.com
* @since Mon 24th May 2004
* @version $Rev: 10721 $
*/
if ( ! defined( 'IN_ACP' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'.";
exit();
}
class admin_forums_attachments_search extends ipsCommand
{
/**
* Skin object
*
* @var object Skin templates
*/
protected $html;
/**
* Shortcut for url
*
* @var string URL shortcut
*/
protected $form_code;
/**
* Shortcut for url (javascript)
*
* @var string JS URL shortcut
*/
protected $form_code_js;
/**
* Main class entry point
*
* @param object ipsRegistry reference
* @return @e void [Outputs to screen]
*/
public function doExecute( ipsRegistry $registry )
{
//-----------------------------------------
// Load HTML and language bits
//-----------------------------------------
$this->html = $this->registry->output->loadTemplate( 'cp_skin_attachments' );
$this->lang->loadLanguageFile( array( 'admin_attachments' ) );
//-----------------------------------------
// Set up stuff
//-----------------------------------------
$this->form_code = $this->html->form_code = 'module=attachments&amp;section=search';
$this->form_code_js = $this->html->form_code_js = 'module=attachments&section=search';
//-----------------------------------------
// StRT!
//-----------------------------------------
switch( $this->request['do'] )
{
case 'attach_search_complete':
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'view_attachments' );
$this->_searchResults();
break;
case 'attach_bulk_remove':
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'remove_attachments' );
$this->_bulkRemoveAttachments();
break;
case 'overview':
case 'search':
default:
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'view_attachments' );
$this->_searchForm();
break;
}
/* Output */
$this->registry->output->html_main .= $this->registry->output->global_template->global_frame_wrapper();
$this->registry->output->sendOutput();
}
/**
* Bulk remove attachments
*
* @return @e void [Outputs to screen]
*/
protected function _bulkRemoveAttachments()
{
foreach ( $_POST as $key => $value )
{
if ( preg_match( "/^attach_(\d+)$/", $key, $match ) )
{
if ( $this->request[ $match[0] ] )
{
$ids[] = $match[1];
}
}
}
$ids = IPSLib::cleanIntArray( $ids );
$attach_tid = array();
if ( count( $ids ) )
{
//-----------------------------------------
// Get attach details?
//-----------------------------------------
$this->DB->build( array(
'select' => 'a.*',
'from' => array( 'attachments' => 'a' ),
'where' => "a.attach_rel_id > 0 AND a.attach_id IN(" . implode( ",", $ids ) . ")",
'add_join' => array(
array(
'select' => 'p.pid, p.topic_id',
'from' => array( 'posts' => 'p' ),
'where' => "p.pid=a.attach_rel_id AND attach_rel_module='post'",
'type' => 'left',
),
)
) );
$this->DB->execute();
while ( $killmeh = $this->DB->fetch() )
{
if ( $killmeh['attach_location'] )
{
@unlink( $this->settings['upload_dir'] . "/" . $killmeh['attach_location'] );
}
if ( $killmeh['attach_thumb_location'] )
{
@unlink( $this->settings['upload_dir'] . "/" . $killmeh['attach_thumb_location'] );
}
$attach_tid[ $killmeh['topic_id'] ] = $killmeh['topic_id'];
}
$this->DB->delete( 'attachments', "attach_id IN(" . implode( ",", $ids ) . ")" );
$this->registry->adminFunctions->saveAdminLog( sprintf( $this->lang->words['deleted_attachments'], implode( ",", $ids ) ) );
//-----------------------------------------
// Recount topic upload marker
//-----------------------------------------
require_once( IPSLib::getAppDir('forums') . '/sources/classes/post/classPost.php' );/*noLibHook*/
$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'forums' ) . '/sources/classes/post/classPostForms.php', 'classPostForms', 'forums' );
$postlib = new $classToLoad( $this->registry );
foreach( $attach_tid as $tid )
{
if( $tid )
{
$postlib->recountTopicAttachments( $tid );
}
}
$this->registry->output->global_message = $this->lang->words['attachments_removed'];
}
else
{
$this->registry->output->global_message = $this->lang->words['noattach_to_remove'];
}
if ( $this->request['return'] == 'stats' )
{
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . 'module=attachments&section=stats' );
}
else
{
if ( $_POST['url'] )
{
foreach( explode( '&', $_POST['url'] ) as $u )
{
list ( $k, $v ) = explode( '=', $u );
$this->request[ $k] = $v ;
}
}
$this->_searchResults();
}
}
/**
* Attachment search results
*
* @return @e void [Outputs to screen]
*/
protected function _searchResults()
{
$show = intval($this->request['show']);
$show = $show > 100 ? 100 : $show;
//-----------------------------------------
// Build URL
//-----------------------------------------
$url = "";
$url_components = array( 'extension', 'filesize', 'filesize_gt', 'days', 'days_gt', 'hits', 'hits_gt', 'filename', 'authorname', 'onlyimage', 'orderby', 'sort', 'show' );
foreach( $url_components as $u )
{
$url .= $u . '=' . $this->request[ $u ] . '&';
}
//-----------------------------------------
// Build Query
//-----------------------------------------
$queryfinal = "";
$query = array();
if ( $this->request['extension'] )
{
$query[] = 'a.attach_ext="' . strtolower( str_replace( ".", "", $this->request['extension'] ) ) . '"';
}
if ( $this->request['filesize'] )
{
$gt = $this->request['filesize_gt'] == 'gt' ? '>=' : '<';
$query[] = "a.attach_filesize {$gt} " . intval( $this->request['filesize']*1024 );
}
if ( $this->request['days'] )
{
$day_break = time() - intval( $this->request['days'] * 86400 );
$gt = $this->request['days_gt'] == 'lt' ? '>=' : '<';
$query[] = "a.attach_date {$gt} {$day_break}";
}
if ( $this->request['hits'] )
{
$gt = $this->request['hits_gt'] == 'gt' ? '>=' : '<';
$query[] = "a.attach_hits {$gt} " . intval($this->request['hits']);
}
if ( $this->request['filename'] )
{
$query[] = $this->DB->buildLower('a.attach_file') . ' LIKE "%' . strtolower( $this->request['filename'] ) . '%"';
}
if ( $this->request['authorname'] )
{
$query[] = $this->DB->buildLower('p.author_name') . ' LIKE "%' . mb_strtolower( $this->request['authorname'] ) . '%"';
}
if ( $this->request['onlyimage'] )
{
$query[] = 'a.attach_is_image=1';
}
if ( count($query) )
{
$queryfinal = 'AND '. implode( " AND ", $query );
}
$rows = array();
$this->DB->build( array( 'select' => 'a.*',
'from' => array( 'attachments' => 'a' ),
'where' => "attach_rel_module='post'".$queryfinal,
'add_join' => array(
0 => array( 'select' => 'p.author_id, p.author_name, p.post_date',
'from' => array( 'posts' => 'p' ),
'where' => 'p.pid=a.attach_rel_id',
'type' => 'left' ),
1 => array( 'select' => 't.tid, t.forum_id, t.title',
'from' => array( 'topics' => 't' ),
'where' => 'p.topic_id=t.tid',
'type' => 'left' ),
2 => array( 'select' => 'm.members_display_name',
'from' => array( 'members' => 'm' ),
'where' => 'm.member_id=a.attach_member_id',
'type' => 'left' )
),
'order' => "a.attach_" . $this->request['orderby'] . " " . $this->request['sort'],
'limit' => array( 0, $show ) ) );
$this->DB->execute();
while ( $r = $this->DB->fetch() )
{
$r['stitle'] = $r['title'] ? "<a href='{$this->settings['board_url']}/index.php?showtopic={$r['tid']}&view=findpost&p={$r['attach_rel_id']}' title='{$r['title']}'>" . IPSText::truncate( $r['title'], 30 ) . "</a>" : $this->lang->words['attach_not_topic'];
$r['attach_filesize'] = IPSLib::sizeFormat($r['attach_filesize']);
$r['attach_date'] = ipsRegistry::getClass( 'class_localization')->getDate( $r['attach_date'], 'SHORT', 1 );
$rows[] = $r;
}
$this->registry->output->html .= $this->html->attachmentSearchResults( $url, $rows );
}
/**
* Show attachment search form
*
* @return @e void [Outputs to screen]
*/
protected function _searchForm()
{
$gt_array = array( 0 => array( 'gt', $this->lang->words['se_morethan'] ), 1 => array( 'lt', $this->lang->words['se_lessthan'] ) );
//-----------------------------------------
// FORM
//-----------------------------------------
$form['extension'] = $this->registry->output->formSimpleInput( 'extension', isset($_POST['extension']) ? $_POST['extension'] : '', 10 );
$form['filesize_gt'] = $this->registry->output->formDropdown( 'filesize_gt', $gt_array, isset($_POST['filesize_gt']) ? $_POST['filesize_gt'] : '' );
$form['filesize'] = $this->registry->output->formSimpleInput( 'filesize', isset($_POST['filesize']) ? $_POST['filesize'] : '', 10 );
$form['days_gt'] = $this->registry->output->formDropdown( 'days_gt', $gt_array, isset($_POST['days_gt']) ? $_POST['days_gt'] : '' );
$form['days'] = $this->registry->output->formSimpleInput( 'days', isset($_POST['days']) ? $_POST['days'] : '', 10 );
$form['hits_gt'] = $this->registry->output->formDropdown( 'hits_gt', $gt_array, isset($_POST['hits_gt']) ? $_POST['hits_gt'] : '' );
$form['hits'] = $this->registry->output->formSimpleInput( 'hits', isset($_POST['hits']) ? $_POST['hits'] : '', 10 );
$form['filename'] = $this->registry->output->formInput( 'filename', isset($_POST['filename']) ? $_POST['filename'] : '' );
$form['authorname'] = $this->registry->output->formInput( 'authorname', isset($_POST['authorname']) ? $_POST['authorname'] : '' );
$form['onlyimage'] = $this->registry->output->formYesNo( 'onlyimage', isset($_POST['onlyimage']) ? $_POST['onlyimage'] : '' );
$form['orderby'] = $this->registry->output->formDropdown( 'orderby', array( 0 => array( 'date' , $this->lang->words['se_odate'] ),
1 => array( 'hits' , $this->lang->words['se_oviews'] ),
2 => array( 'filesize', $this->lang->words['se_osize'] ),
3 => array( 'file' , $this->lang->words['se_oname'] ),
), isset($_POST['orderby']) ? $_POST['orderby'] : '' );
$form['sort'] = $this->registry->output->formDropdown( 'sort' , array( 0 => array( 'desc' , $this->lang->words['se_odsc'] ),
1 => array( 'asc' , $this->lang->words['se_oasc'] ),
), isset($_POST['sort']) ? $_POST['sort'] : '' );
$form['show'] = $this->registry->output->formSimpleInput( 'show', isset($_POST['show']) ? $_POST['show'] : 25, 10 );
$this->registry->output->html .= $this->html->attachmentSearchForm( $form );
}
<?php
/**
* <pre>
* Invision Power Services
* IP.Board v3.4.6
* Attachments: Search
* Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
* </pre>
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Forums
* @link http://www.invisionpower.com
* @since Mon 24th May 2004
* @version $Rev: 10721 $
*/
if ( ! defined( 'IN_ACP' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'.";
exit();
}
class admin_forums_attachments_search extends ipsCommand
{
/**
* Skin object
*
* @var object Skin templates
*/
protected $html;
/**
* Shortcut for url
*
* @var string URL shortcut
*/
protected $form_code;
/**
* Shortcut for url (javascript)
*
* @var string JS URL shortcut
*/
protected $form_code_js;
/**
* Main class entry point
*
* @param object ipsRegistry reference
* @return @e void [Outputs to screen]
*/
public function doExecute( ipsRegistry $registry )
{
//-----------------------------------------
// Load HTML and language bits
//-----------------------------------------
$this->html = $this->registry->output->loadTemplate( 'cp_skin_attachments' );
$this->lang->loadLanguageFile( array( 'admin_attachments' ) );
//-----------------------------------------
// Set up stuff
//-----------------------------------------
$this->form_code = $this->html->form_code = 'module=attachments&amp;section=search';
$this->form_code_js = $this->html->form_code_js = 'module=attachments&section=search';
//-----------------------------------------
// StRT!
//-----------------------------------------
switch( $this->request['do'] )
{
case 'attach_search_complete':
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'view_attachments' );
$this->_searchResults();
break;
case 'attach_bulk_remove':
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'remove_attachments' );
$this->_bulkRemoveAttachments();
break;
case 'overview':
case 'search':
default:
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'view_attachments' );
$this->_searchForm();
break;
}
/* Output */
$this->registry->output->html_main .= $this->registry->output->global_template->global_frame_wrapper();
$this->registry->output->sendOutput();
}
/**
* Bulk remove attachments
*
* @return @e void [Outputs to screen]
*/
protected function _bulkRemoveAttachments()
{
foreach ( $_POST as $key => $value )
{
if ( preg_match( "/^attach_(\d+)$/", $key, $match ) )
{
if ( $this->request[ $match[0] ] )
{
$ids[] = $match[1];
}
}
}
$ids = IPSLib::cleanIntArray( $ids );
$attach_tid = array();
if ( count( $ids ) )
{
//-----------------------------------------
// Get attach details?
//-----------------------------------------
$this->DB->build( array(
'select' => 'a.*',
'from' => array( 'attachments' => 'a' ),
'where' => "a.attach_rel_id > 0 AND a.attach_id IN(" . implode( ",", $ids ) . ")",
'add_join' => array(
array(
'select' => 'p.pid, p.topic_id',
'from' => array( 'posts' => 'p' ),
'where' => "p.pid=a.attach_rel_id AND attach_rel_module='post'",
'type' => 'left',
),
)
) );
$this->DB->execute();
while ( $killmeh = $this->DB->fetch() )
{
if ( $killmeh['attach_location'] )
{
@unlink( $this->settings['upload_dir'] . "/" . $killmeh['attach_location'] );
}
if ( $killmeh['attach_thumb_location'] )
{
@unlink( $this->settings['upload_dir'] . "/" . $killmeh['attach_thumb_location'] );
}
$attach_tid[ $killmeh['topic_id'] ] = $killmeh['topic_id'];
}
$this->DB->delete( 'attachments', "attach_id IN(" . implode( ",", $ids ) . ")" );
$this->registry->adminFunctions->saveAdminLog( sprintf( $this->lang->words['deleted_attachments'], implode( ",", $ids ) ) );
//-----------------------------------------
// Recount topic upload marker
//-----------------------------------------
require_once( IPSLib::getAppDir('forums') . '/sources/classes/post/classPost.php' );/*noLibHook*/
$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'forums' ) . '/sources/classes/post/classPostForms.php', 'classPostForms', 'forums' );
$postlib = new $classToLoad( $this->registry );
foreach( $attach_tid as $tid )
{
if( $tid )
{
$postlib->recountTopicAttachments( $tid );
}
}
$this->registry->output->global_message = $this->lang->words['attachments_removed'];
}
else
{
$this->registry->output->global_message = $this->lang->words['noattach_to_remove'];
}
if ( $this->request['return'] == 'stats' )
{
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . 'module=attachments&section=stats' );
}
else
{
if ( $_POST['url'] )
{
foreach( explode( '&', $_POST['url'] ) as $u )
{
list ( $k, $v ) = explode( '=', $u );
$this->request[ $k] = $v ;
}
}
$this->_searchResults();
}
}
/**
* Attachment search results
*
* @return @e void [Outputs to screen]
*/
protected function _searchResults()
{
$show = intval($this->request['show']);
$show = $show > 100 ? 100 : $show;
//-----------------------------------------
// Build URL
//-----------------------------------------
$url = "";
$url_components = array( 'extension', 'filesize', 'filesize_gt', 'days', 'days_gt', 'hits', 'hits_gt', 'filename', 'authorname', 'onlyimage', 'orderby', 'sort', 'show' );
foreach( $url_components as $u )
{
$url .= $u . '=' . $this->request[ $u ] . '&';
}
//-----------------------------------------
// Build Query
//-----------------------------------------
$queryfinal = "";
$query = array();
if ( $this->request['extension'] )
{
$query[] = 'a.attach_ext="' . strtolower( str_replace( ".", "", $this->request['extension'] ) ) . '"';
}
if ( $this->request['filesize'] )
{
$gt = $this->request['filesize_gt'] == 'gt' ? '>=' : '<';
$query[] = "a.attach_filesize {$gt} " . intval( $this->request['filesize']*1024 );
}
if ( $this->request['days'] )
{
$day_break = time() - intval( $this->request['days'] * 86400 );
$gt = $this->request['days_gt'] == 'lt' ? '>=' : '<';
$query[] = "a.attach_date {$gt} {$day_break}";
}
if ( $this->request['hits'] )
{
$gt = $this->request['hits_gt'] == 'gt' ? '>=' : '<';
$query[] = "a.attach_hits {$gt} " . intval($this->request['hits']);
}
if ( $this->request['filename'] )
{
$query[] = $this->DB->buildLower('a.attach_file') . ' LIKE "%' . strtolower( $this->request['filename'] ) . '%"';
}
if ( $this->request['authorname'] )
{
$query[] = $this->DB->buildLower('p.author_name') . ' LIKE "%' . strtolower( $this->request['authorname'] ) . '%"';
}
if ( $this->request['onlyimage'] )
{
$query[] = 'a.attach_is_image=1';
}
if ( count($query) )
{
$queryfinal = 'AND '. implode( " AND ", $query );
}
$rows = array();
$this->DB->build( array( 'select' => 'a.*',
'from' => array( 'attachments' => 'a' ),
'where' => "attach_rel_module='post'".$queryfinal,
'add_join' => array(
0 => array( 'select' => 'p.author_id, p.author_name, p.post_date',
'from' => array( 'posts' => 'p' ),
'where' => 'p.pid=a.attach_rel_id',
'type' => 'left' ),
1 => array( 'select' => 't.tid, t.forum_id, t.title',
'from' => array( 'topics' => 't' ),
'where' => 'p.topic_id=t.tid',
'type' => 'left' ),
2 => array( 'select' => 'm.members_display_name',
'from' => array( 'members' => 'm' ),
'where' => 'm.member_id=a.attach_member_id',
'type' => 'left' )
),
'order' => "a.attach_" . $this->request['orderby'] . " " . $this->request['sort'],
'limit' => array( 0, $show ) ) );
$this->DB->execute();
while ( $r = $this->DB->fetch() )
{
$r['stitle'] = $r['title'] ? "<a href='{$this->settings['board_url']}/index.php?showtopic={$r['tid']}&view=findpost&p={$r['attach_rel_id']}' title='{$r['title']}'>" . IPSText::truncate( $r['title'], 30 ) . "</a>" : $this->lang->words['attach_not_topic'];
$r['attach_filesize'] = IPSLib::sizeFormat($r['attach_filesize']);
$r['attach_date'] = ipsRegistry::getClass( 'class_localization')->getDate( $r['attach_date'], 'SHORT', 1 );
$rows[] = $r;
}
$this->registry->output->html .= $this->html->attachmentSearchResults( $url, $rows );
}
/**
* Show attachment search form
*
* @return @e void [Outputs to screen]
*/
protected function _searchForm()
{
$gt_array = array( 0 => array( 'gt', $this->lang->words['se_morethan'] ), 1 => array( 'lt', $this->lang->words['se_lessthan'] ) );
//-----------------------------------------
// FORM
//-----------------------------------------
$form['extension'] = $this->registry->output->formSimpleInput( 'extension', isset($_POST['extension']) ? $_POST['extension'] : '', 10 );
$form['filesize_gt'] = $this->registry->output->formDropdown( 'filesize_gt', $gt_array, isset($_POST['filesize_gt']) ? $_POST['filesize_gt'] : '' );
$form['filesize'] = $this->registry->output->formSimpleInput( 'filesize', isset($_POST['filesize']) ? $_POST['filesize'] : '', 10 );
$form['days_gt'] = $this->registry->output->formDropdown( 'days_gt', $gt_array, isset($_POST['days_gt']) ? $_POST['days_gt'] : '' );
$form['days'] = $this->registry->output->formSimpleInput( 'days', isset($_POST['days']) ? $_POST['days'] : '', 10 );
$form['hits_gt'] = $this->registry->output->formDropdown( 'hits_gt', $gt_array, isset($_POST['hits_gt']) ? $_POST['hits_gt'] : '' );
$form['hits'] = $this->registry->output->formSimpleInput( 'hits', isset($_POST['hits']) ? $_POST['hits'] : '', 10 );
$form['filename'] = $this->registry->output->formInput( 'filename', isset($_POST['filename']) ? $_POST['filename'] : '' );
$form['authorname'] = $this->registry->output->formInput( 'authorname', isset($_POST['authorname']) ? $_POST['authorname'] : '' );
$form['onlyimage'] = $this->registry->output->formYesNo( 'onlyimage', isset($_POST['onlyimage']) ? $_POST['onlyimage'] : '' );
$form['orderby'] = $this->registry->output->formDropdown( 'orderby', array( 0 => array( 'date' , $this->lang->words['se_odate'] ),
1 => array( 'hits' , $this->lang->words['se_oviews'] ),
2 => array( 'filesize', $this->lang->words['se_osize'] ),
3 => array( 'file' , $this->lang->words['se_oname'] ),
), isset($_POST['orderby']) ? $_POST['orderby'] : '' );
$form['sort'] = $this->registry->output->formDropdown( 'sort' , array( 0 => array( 'desc' , $this->lang->words['se_odsc'] ),
1 => array( 'asc' , $this->lang->words['se_oasc'] ),
), isset($_POST['sort']) ? $_POST['sort'] : '' );
$form['show'] = $this->registry->output->formSimpleInput( 'show', isset($_POST['show']) ? $_POST['show'] : 25, 10 );
$this->registry->output->html .= $this->html->attachmentSearchForm( $form );
}
}
@@ -2,7 +2,7 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.4.5
* IP.Board v3.4.6
* Attachments: Stats
* Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
* </pre>
@@ -2,7 +2,7 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.4.5
* IP.Board v3.4.6
* Attachments: Manage
* Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
* </pre>
@@ -5,6 +5,6 @@
<hr>
You have reached this page in error, please use your back button to return to the forum.
<hr>
<a href="http://www.invisionpower.com">IP.Board</a>
IP.Board
</body>
</html>
@@ -2,10 +2,10 @@
<menu>
<tabitems>
<item>
<title>Типы Вложений</title>
<title>Attachment Types</title>
<subitems>
<subitem>
<subitemtitle>Типы Вложений</subitemtitle>
<subitemtitle>Attachment Types</subitemtitle>
<subitemlang>attachment_types</subitemlang>
<subsection>types</subsection>
<subitemurl>do=overview</subitemurl>
@@ -15,10 +15,10 @@
</subitems>
</item>
<item>
<title>Статистика Вложений</title>
<title>Attachment Stats</title>
<subitems>
<subitem>
<subitemtitle>Статистика Вложений</subitemtitle>
<subitemtitle>Attachment Stats</subitemtitle>
<subitemlang>attachment_stats</subitemlang>
<subsection>stats</subsection>
<subitemurl>do=overview</subitemurl>
@@ -28,10 +28,10 @@
</subitems>
</item>
<item>
<title>Поиск Вложений</title>
<title>Attachment Search</title>
<subitems>
<subitem>
<subitemtitle>Поиск Вложений</subitemtitle>
<subitemtitle>Attachment Search</subitemtitle>
<subitemlang>attachment_search</subitemlang>
<subsection>search</subsection>
<subitemurl>do=overview</subitemurl>
@@ -1,50 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<permissions>
<group>
<grouptitle>Управление прикрепленными файлами</grouptitle>
<grouptitle>Manage Attachments</grouptitle>
<grouplang>forums_attachments</grouplang>
<items>
<item>
<key>view_attachments</key>
<string>Может просматривать и искать файлы?</string>
<string>Can search and review attachments?</string>
</item>
<item>
<key>stats_attachments</key>
<string>Может просматривать статистику?</string>
<string>Can view attachment stats?</string>
</item>
<item>
<key>remove_attachments</key>
<string>Может удалять?</string>
<string>Can remove attachments?</string>
</item>
</items>
</group>
<group>
<grouptitle>Управление типами прикрепляемых файлов</grouptitle>
<grouptitle>Manage Attachments Mime-Types</grouptitle>
<grouplang>forums_mimes</grouplang>
<items>
<item>
<key>mime_view</key>
<string>Может просматривать?</string>
<string>Can view attachment types?</string>
</item>
<item>
<key>mime_add</key>
<string>Может добавлять?</string>
<string>Can add attachment types?</string>
</item>
<item>
<key>mime_edit</key>
<string>Может изменять?</string>
<string>Can edit attachment types?</string>
</item>
<item>
<key>mime_delete</key>
<string>Может удалять?</string>
<string>Can remove attachment types?</string>
</item>
<item>
<key>mime_import</key>
<string>Может импортировать типы?</string>
<string>Can import attachment types?</string>
</item>
<item>
<key>mime_export</key>
<string>Может экспортировать типы?</string>
<string>Can export attachment types?</string>
</item>
</items>
</group>
@@ -7,7 +7,7 @@
* $Author: ips_terabyte $
* @since Tuesday 17th August 2004
* $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $
* @version v3.4.5
* @version v3.4.6
* $Revision: 8655 $
*/
@@ -2,7 +2,7 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.4.5
* IP.Board v3.4.6
* Forum management
* Last Updated: $Date: 2013-03-21 11:03:13 -0400 (Thu, 21 Mar 2013) $
* </pre>
@@ -1196,7 +1196,7 @@ class admin_forums_forums_forums extends ipsCommand
if( $this->request['name'] == "" )
{
$this->registry->output->global_message = sprintf( $this->lang->words['for_entertitle'], mb_strtolower( $forum_cat_lang ) );
$this->registry->output->global_message = sprintf( $this->lang->words['for_entertitle'], strtolower( $forum_cat_lang ) );
$this->forumForm( $type );
return;
}
@@ -1325,7 +1325,7 @@ class admin_forums_forums_forums extends ipsCommand
/* Done */
$this->registry->output->global_message = $forum_cat_lang . $this->lang->words['for__created'];
$this->registry->adminFunctions->saveAdminLog( $forum_cat_lang . " '" . $this->request['name'] . "'" . mb_strtolower ( $this->lang->words['for__created'] ) );
$this->registry->adminFunctions->saveAdminLog( $forum_cat_lang . " '" . $this->request['name'] . "'" . strtolower ( $this->lang->words['for__created'] ) );
}
else
{
@@ -1392,7 +1392,7 @@ class admin_forums_forums_forums extends ipsCommand
$this->registry->output->global_message = $forum_cat_lang.$this->lang->words['for__edited'];
$this->registry->adminFunctions->saveAdminLog( $forum_cat_lang." '" . $this->request['name'] . "' " . mb_strtolower ( $this->lang->words['for__edited'] ) );
$this->registry->adminFunctions->saveAdminLog( $forum_cat_lang." '" . $this->request['name'] . "' " . strtolower ( $this->lang->words['for__edited'] ) );
}
$this->request['f'] = '';
@@ -5,6 +5,6 @@
<hr>
You have reached this page in error, please use your back button to return to the forum.
<hr>
<a href="http://www.invisionpower.com">IP.Board</a>
IP.Board
</body>
</html>
@@ -2,7 +2,7 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.4.5
* IP.Board v3.4.6
* Forum moderator management
* Last Updated: $Date: 2012-09-12 11:58:11 -0400 (Wed, 12 Sep 2012) $
* </pre>
@@ -2,7 +2,7 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.4.5
* IP.Board v3.4.6
* Topic Multi-Moderation
* Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
* </pre>
@@ -5,6 +5,6 @@
<hr>
You have reached this page in error, please use your back button to return to the forum.
<hr>
<a href="http://www.invisionpower.com">IP.Board</a>
IP.Board
</body>
</html>
@@ -2,10 +2,10 @@
<menu>
<tabitems>
<item>
<title>Управление Форумами</title>
<title>Manage Forums</title>
<subitems>
<subitem>
<subitemtitle>Управление Форумами</subitemtitle>
<subitemtitle>Manage Forums</subitemtitle>
<subitemlang>forums</subitemlang>
<subsection>forums</subsection>
<subitemurl>do=forums_overview</subitemurl>
@@ -15,10 +15,10 @@
</subitems>
</item>
<item>
<title>Мульти-модерация Тем</title>
<title>Topic Multi-Moderation</title>
<subitems>
<subitem>
<subitemtitle>Мульти-модерация Тем</subitemtitle>
<subitemtitle>Topic Multi-Moderation</subitemtitle>
<subitemlang>multimod</subitemlang>
<subsection>multimods</subsection>
<subitemurl>do=overview</subitemurl>
@@ -1,84 +1,84 @@
<?xml version="1.0" encoding="UTF-8"?>
<permissions>
<group>
<grouptitle>Управление форумами</grouptitle>
<grouptitle>Manage Forums</grouptitle>
<grouplang>forums_forums</grouplang>
<items>
<item>
<key>forums_add</key>
<string>Может добавлять форумы?</string>
<string>Can add new forums?</string>
</item>
<item>
<key>forums_edit</key>
<string>Может изменять форумы?</string>
<string>Can edit forums?</string>
</item>
<item>
<key>forums_delete</key>
<string>Может удалять форумы?</string>
<string>Can delete forums?</string>
</item>
<item>
<key>forums_reorder</key>
<string>Может изменять порядок вывода форумов?</string>
<string>Can reorder forums?</string>
</item>
<item>
<key>forums_permissions</key>
<string>Может редактировать права доступа к форумам?</string>
<string>Can edit permissions for forums?</string>
</item>
<item>
<key>forums_empty</key>
<string>Может очищать форумы?</string>
<string>Can empty forums?</string>
</item>
<item>
<key>forums_rules</key>
<string>Может редактировать правила форумов?</string>
<string>Can edit forum rules?</string>
</item>
<item>
<key>forums_skins</key>
<string>Может изменять стиль конкретного форума?</string>
<string>Can assign/unassign skins to forums?</string>
</item>
</items>
</group>
<group>
<grouptitle>Управление модераторами</grouptitle>
<grouptitle>Manage Forum Moderators</grouptitle>
<grouplang>forums_moderators</grouplang>
<items>
<item>
<key>mods_add</key>
<string>Может добавлять модераторов?</string>
<string>Can add new moderators?</string>
</item>
<item>
<key>mods_edit</key>
<string>Может редактировать модераторов?</string>
<string>Can edit moderators?</string>
</item>
<item>
<key>mods_delete</key>
<string>Может удалять модераторов?</string>
<string>Can delete moderators?</string>
</item>
<item>
<key>mods_view</key>
<string>Может просматривать модераторов?</string>
<string>Can list forum moderators?</string>
</item>
</items>
</group>
<group>
<grouptitle>Управление мульти-модерацией</grouptitle>
<grouptitle>Manage Multi-Moderation</grouptitle>
<grouplang>forums_multimods</grouplang>
<items>
<item>
<key>mmod_add</key>
<string>Может добавлять новые мульти-модерации?</string>
<string>Can add new multi-moderation routines?</string>
</item>
<item>
<key>mmod_edit</key>
<string>Может изменять существующие мульти-модерации?</string>
<string>Can edit multi-moderation routines?</string>
</item>
<item>
<key>mmod_delete</key>
<string>Может удалять мульти-модерации?</string>
<string>Can delete multi-moderation routines?</string>
</item>
<item>
<key>mmod_view</key>
<string>Может просматривать мульти-модерации?</string>
<string>Can view multi-moderation routines?</string>
</item>
</items>
</group>
@@ -5,6 +5,6 @@
<hr>
You have reached this page in error, please use your back button to return to the forum.
<hr>
<a href="http://www.invisionpower.com">IP.Board</a>
IP.Board
</body>
</html>
@@ -7,7 +7,7 @@
* $Author: ips_terabyte $
* @since 14th May 2003
* $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $
* @version v3.4.5
* @version v3.4.6
* $Revision: 8655 $
*/
@@ -2,7 +2,7 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.4.5
* IP.Board v3.4.6
* Forum RSS Export
* Last Updated: $Date: 2013-02-21 08:36:30 -0500 (Thu, 21 Feb 2013) $
* </pre>
File diff suppressed because it is too large. Load diff
@@ -5,6 +5,6 @@
<hr>
You have reached this page in error, please use your back button to return to the forum.
<hr>
<a href="http://www.invisionpower.com">IP.Board</a>
IP.Board
</body>
</html>
@@ -5,6 +5,6 @@
<hr>
You have reached this page in error, please use your back button to return to the forum.
<hr>
<a href="http://www.invisionpower.com">IP.Board</a>
IP.Board
</body>
</html>
@@ -2,10 +2,10 @@
<menu>
<tabitems>
<item>
<title>RSS Импорт</title>
<title>RSS Import</title>
<subitems>
<subitem>
<subitemtitle>RSS Импорт</subitemtitle>
<subitemtitle>RSS Import</subitemtitle>
<subitemlang>rssimports</subitemlang>
<subsection>import</subsection>
<subitemurl>do=overview</subitemurl>
@@ -15,10 +15,10 @@
</subitems>
</item>
<item>
<title>RSS Экспорт</title>
<title>RSS Export</title>
<subitems>
<subitem>
<subitemtitle>RSS Экспорт</subitemtitle>
<subitemtitle>RSS Export</subitemtitle>
<subitemlang>rssexports</subitemlang>
<subsection>export</subsection>
<subitemurl>do=overview</subitemurl>
@@ -1,28 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<permissions>
<group>
<grouptitle>Управление RSS</grouptitle>
<grouptitle>RSS Management</grouptitle>
<grouplang>forums_rss</grouplang>
<items>
<item>
<key>export_manage</key>
<string>Может изменять/добавлять RSS экспорт?</string>
<string>Can manage forum RSS exports?</string>
</item>
<item>
<key>export_delete</key>
<string>Может удалять RSS экспорт?</string>
<string>Can delete forum RSS exports?</string>
</item>
<item>
<key>import_manage</key>
<string>Может изменять/добавлять RSS импорт?</string>
<string>Can manage forum RSS imports?</string>
</item>
<item>
<key>import_delete</key>
<string>Может удалять RSS импорт?</string>
<string>Can delete forum RSS imports?</string>
</item>
<item>
<key>import_remove</key>
<string>Может удалять темы импортированные через RSS?</string>
<string>Can remove topics previously imported via RSS?</string>
</item>
</items>
</group>
@@ -7,7 +7,7 @@
* $Author: ips_terabyte $
* @since 14th May 2003
* $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $
* @version v3.4.5
* @version v3.4.6
* $Revision: 8655 $
*/
@@ -5,6 +5,6 @@
<hr>
You have reached this page in error, please use your back button to return to the forum.
<hr>
<a href="http://www.invisionpower.com">IP.Board</a>
IP.Board
</body>
</html>
@@ -2,7 +2,7 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.4.5
* IP.Board v3.4.6
* Forum Statistics
* Last Updated: $Date: 2013-04-19 19:48:56 -0400 (Fri, 19 Apr 2013) $
* </pre>
@@ -5,6 +5,6 @@
<hr>
You have reached this page in error, please use your back button to return to the forum.
<hr>
<a href="http://www.invisionpower.com">IP.Board</a>
IP.Board
</body>
</html>
@@ -2,10 +2,10 @@
<menu>
<tabitems>
<item>
<title>Статистика Регистраций</title>
<title>Registration Stats</title>
<subitems>
<subitem>
<subitemtitle>Статистика Регистраций</subitemtitle>
<subitemtitle>Registration Stats</subitemtitle>
<subitemlang>stats_reg</subitemlang>
<subsection>stats</subsection>
<subitemurl>do=reg</subitemurl>
@@ -15,10 +15,10 @@
</subitems>
</item>
<item>
<title>Статистика Новых Тем</title>
<title>New Topic Stats</title>
<subitems>
<subitem>
<subitemtitle>Статистика Новых Тем</subitemtitle>
<subitemtitle>New Topic Stats</subitemtitle>
<subitemlang>stats_topics</subitemlang>
<subsection>stats</subsection>
<subitemurl>do=topic</subitemurl>
@@ -28,10 +28,10 @@
</subitems>
</item>
<item>
<title>Статистика Сообщений</title>
<title>Post Stats</title>
<subitems>
<subitem>
<subitemtitle>Статистика Сообщений</subitemtitle>
<subitemtitle>Post Stats</subitemtitle>
<subitemlang>stats_posts</subitemlang>
<subsection>stats</subsection>
<subitemurl>do=post</subitemurl>
@@ -41,10 +41,10 @@
</subitems>
</item>
<item>
<title>Личные Сообщения</title>
<title>Personal Message</title>
<subitems>
<subitem>
<subitemtitle>Личные Сообщения</subitemtitle>
<subitemtitle>Personal Message</subitemtitle>
<subitemlang>stats_pms</subitemlang>
<subsection>stats</subsection>
<subitemurl>do=msg</subitemurl>
@@ -54,10 +54,10 @@
</subitems>
</item>
<item>
<title>Просмотры Тем</title>
<title>Topic Views</title>
<subitems>
<subitem>
<subitemtitle>Просмотры Тем</subitemtitle>
<subitemtitle>Topic Views</subitemtitle>
<subitemlang>stats_tviews</subitemlang>
<subsection>stats</subsection>
<subitemurl>do=views</subitemurl>
@@ -67,10 +67,10 @@
</subitems>
</item>
<item>
<title>Служба Антиспам</title>
<title>Spam Service</title>
<subitems>
<subitem>
<subitemtitle>Служба Антиспам</subitemtitle>
<subitemtitle>Spam Service</subitemtitle>
<subitemlang>stats_spam</subitemlang>
<subsection>stats</subsection>
<subitemurl>do=spam</subitemurl>
@@ -1,29 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<permissions>
<group>
<grouptitle>Управление статистикой</grouptitle>
<grouplang>forums_stats</grouplang>
<items>
<item>
<key>stats_topics</key>
<string>Может просматривать отчет о новых темах?</string>
</item>
<item>
<key>stats_registration</key>
<string>Может просматривать отчет о новых регистрациях?</string>
</item>
<item>
<key>stats_posts</key>
<string>Может просматривать отчет о новых сообщениях?</string>
</item>
<item>
<key>stats_msg</key>
<string>Может просматривать отчет о новых личных сообщениях?</string>
</item>
<item>
<key>stats_views</key>
<string>Может просматривать отчет о просмотрах тем?</string>
</item>
</items>
</group>
<?xml version="1.0" encoding="UTF-8"?>
<permissions>
<group>
<grouptitle>Manage Statistics</grouptitle>
<grouplang>forums_stats</grouplang>
<items>
<item>
<key>stats_topics</key>
<string>Can run reports on new topics?</string>
</item>
<item>
<key>stats_registration</key>
<string>Can run reports on new registrations?</string>
</item>
<item>
<key>stats_posts</key>
<string>Can run reports on new posts?</string>
</item>
<item>
<key>stats_msg</key>
<string>Can run reports on new messages?</string>
</item>
<item>
<key>stats_views</key>
<string>Can run reports on topic views?</string>
</item>
</items>
</group>
</permissions>
@@ -7,7 +7,7 @@
* $Author: ips_terabyte $
* @since 14th May 2003
* $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $
* @version v3.4.5
* @version v3.4.6
* $Revision: 8655 $
*/
@@ -5,6 +5,6 @@
<hr>
You have reached this page in error, please use your back button to return to the forum.
<hr>
<a href="http://www.invisionpower.com">IP.Board</a>
IP.Board
</body>
</html>
@@ -3,7 +3,7 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.4.5
* IP.Board v3.4.6
* Member management
* Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
* </pre>
@@ -5,6 +5,6 @@
<hr>
You have reached this page in error, please use your back button to return to the forum.
<hr>
<a href="http://www.invisionpower.com">IP.Board</a>
IP.Board
</body>
</html>
@@ -1,20 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<permissions>
<group>
<grouptitle>Инструменты</grouptitle>
<grouptitle>Forum Tools</grouptitle>
<grouplang>forums_tools</grouplang>
<items>
<item>
<key>ftools_deleteposts</key>
<string>Может удалять все сообщения пользователя?</string>
<string>Can delete all posts by a member?</string>
</item>
<item>
<key>ftools_deletesubscriptions</key>
<string>Может отменить все подписки пользователя на темы?</string>
<string>Can delete all of a member's email notification requests?</string>
</item>
<item>
<key>ftools_clearforumsubs</key>
<string>Может отменить все подписки пользователя на форумы?</string>
<string>Can clear all of a forum's email notification requests?</string>
</item>
</items>
</group>