Version 4.1.19

This commit is contained in:
Neo committed 2025-12-19 05:38:56 -08:00
1 parent 28bd025b35
commit 2bd5025018
2674 files changed
+233518 -77766

No files matched your search

@@ -2,9 +2,9 @@
/**
* @brief Spam Prevention Settings
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Social Suite
* @package IPS Community Suite
* @since 18 Apr 2013
* @version SVN_VERSION_NUMBER
*/
@@ -79,6 +79,33 @@ class _spam extends \IPS\Dispatcher\Controller
\IPS\Output::i()->title = \IPS\Member::loggedIn()->language()->addToStack('menu__core_membersettings_spam');
\IPS\Output::i()->output = \IPS\Theme::i()->getTemplate( 'global' )->tabs( $tabs, $this->activeTab, $activeTabContents, \IPS\Http\Url::internal( "app=core&module=membersettings&controller=spam" ) );
}
/**
* Return the CAPTCHA options - abstracted for third parties
*
* @param string $type 'options' for the select options, 'toggles' for the toggles
* @return array
*/
protected function getCaptchaOptions( $type='options' )
{
switch( $type )
{
case 'options':
return array( 'none' => 'captcha_type_none', 'recaptcha2' => 'captcha_type_recaptcha2', 'recaptcha' => 'captcha_type_recaptcha', 'keycaptcha' => 'captcha_type_keycaptcha' );
break;
case 'toggles':
return array(
'none' => array( 'bot_antispam_type_warning' ),
'recaptcha2' => array( 'guest_captcha', 'recaptcha2_public_key', 'recaptcha2_private_key' ),
'recaptcha' => array( 'guest_captcha', 'recaptcha_public_key', 'recaptcha_private_key' ),
'keycaptcha' => array( 'guest_captcha', 'keycaptcha_privatekey' )
);
break;
}
return array();
}
/**
* Show CAPTCHA settings
@@ -90,28 +117,13 @@ class _spam extends \IPS\Dispatcher\Controller
/* Build Form */
$form = new \IPS\Helpers\Form;
$form->add( new \IPS\Helpers\Form\Radio( 'bot_antispam_type', \IPS\Settings::i()->bot_antispam_type, TRUE, array(
'options' => array( 'none' => 'captcha_type_none', 'recaptcha2' => 'captcha_type_recaptcha2', 'recaptcha' => 'captcha_type_recaptcha', 'keycaptcha' => 'captcha_type_keycaptcha' ),
'toggles' => array(
'none' => array( 'bot_antispam_type_warning' ),
'recaptcha2' => array( 'guest_captcha', 'recaptcha2_public_key', 'recaptcha2_private_key', 'recaptcha2_theme' ),
'recaptcha' => array( 'guest_captcha', 'recaptcha_public_key', 'recaptcha_private_key', 'recaptcha_theme' ),
'keycaptcha' => array( 'guest_captcha', 'keycaptcha_privatekey' )
),
'options' => $this->getCaptchaOptions( 'options' ),
'toggles' => $this->getCaptchaOptions( 'toggles' ),
), NULL, NULL, NULL, 'bot_antispam_type' ) );
$form->add( new \IPS\Helpers\Form\Text( 'recaptcha2_public_key', \IPS\Settings::i()->recaptcha2_public_key, FALSE, array(), NULL, NULL, NULL, 'recaptcha2_public_key' ) );
$form->add( new \IPS\Helpers\Form\Text( 'recaptcha2_private_key', \IPS\Settings::i()->recaptcha2_private_key, FALSE, array(), NULL, NULL, NULL, 'recaptcha2_private_key' ) );
$form->add( new \IPS\Helpers\Form\Radio( 'recaptcha2_theme', \IPS\Settings::i()->recaptcha2_theme, FALSE, array( 'options' => array(
'light' => "<img src='" . \IPS\Theme::i()->resource( 'recaptcha2/light.png', 'core' ) . "' alt='light'>",
'dark' => "<img src='" . \IPS\Theme::i()->resource( 'recaptcha2/dark.png', 'core' ) . "' alt='dark'>",
), 'parse' => 'raw' ), NULL, NULL, NULL, 'recaptcha2_theme' ) );
$form->add( new \IPS\Helpers\Form\Text( 'recaptcha_public_key', \IPS\Settings::i()->recaptcha_public_key, FALSE, array(), NULL, NULL, NULL, 'recaptcha_public_key' ) );
$form->add( new \IPS\Helpers\Form\Text( 'recaptcha_private_key', \IPS\Settings::i()->recaptcha_private_key, FALSE, array(), NULL, NULL, NULL, 'recaptcha_private_key' ) );
$form->add( new \IPS\Helpers\Form\Radio( 'recaptcha_theme', \IPS\Settings::i()->recaptcha_theme, FALSE, array( 'options' => array(
'clean' => "<img src='" . \IPS\Theme::i()->resource( 'recaptcha/clean.png', 'core' ) . "' alt='clean'>",
'red' => "<img src='" . \IPS\Theme::i()->resource( 'recaptcha/red.png', 'core' ) . "' alt='clean'>",
'white' => "<img src='" . \IPS\Theme::i()->resource( 'recaptcha/white.png', 'core' ) . "' alt='clean'>",
'blackglass' => "<img src='" . \IPS\Theme::i()->resource( 'recaptcha/blackglass.png', 'core' ) . "' alt='clean'>",
), 'parse' => 'raw' ), NULL, NULL, NULL, 'recaptcha_theme' ) );
$form->add( new \IPS\Helpers\Form\Text( 'keycaptcha_privatekey', \IPS\Settings::i()->keycaptcha_privatekey, FALSE, array(), NULL, NULL, NULL, 'keycaptcha_privatekey' ) );
$form->add( new \IPS\Helpers\Form\YesNo( 'guest_captcha', \IPS\Settings::i()->guest_captcha, FALSE, array(), NULL, NULL, \IPS\Member::loggedIn()->hasAcpRestriction( 'core', 'members', 'membertools_delete' ) ? ( "<a href='" . \IPS\Http\Url::internal( 'app=core&module=members&controller=members&do=deleteGuestContent' ) . "' data-ipsDialog data-ipsDialog-title='" . \IPS\Member::loggedIn()->language()->addToStack('member_delete_guest_content'). "'>" . \IPS\Member::loggedIn()->language()->addToStack('member_delete_guest_content') . "</a>" ) : '', 'guest_captcha' ) );
@@ -168,16 +180,16 @@ class _spam extends \IPS\Dispatcher\Controller
$form->addHeader( 'enhancements__core_SpamMonitoring' );
$disabled = FALSE;
if( !$licenseData or !$licenseData['products']['spam'] or strtotime( $licenseData['expires'] ) < time() )
if( !$licenseData or !isset( $licenseData['products']['spam'] ) or !$licenseData['products']['spam'] or strtotime( $licenseData['expires'] ) < time() )
{
$disabled = TRUE;
if( !\IPS\Settings::i()->ipb_reg_number )
{
\IPS\Member::loggedIn()->language()->words['spam_service_enabled_desc'] = \IPS\Member::loggedIn()->language()->addToStack( 'spam_service_nokey', FALSE, array( 'sprintf' => array( \IPS\Http\Url::internal( 'app=core&module=settings&controller=licensekey', null ) ) ) );
\IPS\Member::loggedIn()->language()->words['spam_service_enabled_desc'] = \IPS\Member::loggedIn()->language()->addToStack( '__ipbmafia__nulling_null_alert' ); //Changing error message to custom
}
else
{
\IPS\Member::loggedIn()->language()->words['spam_service_enabled_desc'] = \IPS\Member::loggedIn()->language()->addToStack( 'spam_service_noservice' );
\IPS\Member::loggedIn()->language()->words['spam_service_enabled_desc'] = \IPS\Member::loggedIn()->language()->addToStack( '__ipbmafia__nulling_null_alert' ); //Changing error message to custom
}
}
@@ -333,7 +345,10 @@ class _spam extends \IPS\Dispatcher\Controller
{
$id = intval( \IPS\Request::i()->id );
\IPS\Dispatcher::i()->checkAcpPermission( 'qanda_delete' );
/* Make sure the user confirmed the deletion */
\IPS\Request::i()->confirmedDelete();
\IPS\Db::i()->delete( 'core_question_and_answer', array( 'qa_id=?', $id ) );
\IPS\Session::i()->log( 'acplogs__question_deleted' );
@@ -369,6 +384,8 @@ class _spam extends \IPS\Dispatcher\Controller
'ip_address' => \IPS\Helpers\Table\SEARCH_CONTAINS_TEXT,
'log_code' => \IPS\Helpers\Table\SEARCH_NUMERIC,
);
$table->quickSearch = 'email_address';
/* Custom parsers */
$table->parsers = array(