Version 5.0.0 release

This commit is contained in:
Neo committed 2025-12-19 18:37:58 -08:00
1 parent 90e8c7e903
commit a3a4a9ccbd
651 files changed
+7275 -9481

No files matched your search

+106 -116
View File
@@ -5564,7 +5564,7 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'reg_change_email', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
' data-ipsDialog-modal='true' class='ipsButton ipsButton_light ipsButton_verySmall'>
' data-ipsDialog-modal='true' class='ipsButton ipsButton--inherit'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'reg_change_email', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -9906,33 +9906,34 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_settings_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h2>
</div>
<div class='i-padding_3'>
<p class='i-margin-bottom_4'>
<p class=''>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_ucp_blurb', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</p>
<div class='ipsBlockSpacer'>
</div>
<div class='ipsGrid ipsGrid--lines ipsGrid--auto-fit ipsGrid--settingsMfa i-basis_400'>
IPSCONTENT;
foreach ( $handlers as $key => $handler ):
$return .= <<<IPSCONTENT
<div class="i-padding_3 ipsColumns">
<div class='ipsColumns__primary i-basis_400'>
<h2 class="ipsTitle ipsTitle--h4 i-margin-bottom_1">
<div class="i-padding_4 i-flex i-flex-direction_column">
<div class='i-flex_11'>
<div class="i-margin-bottom_1 i-flex i-align-items_center i-gap_3 i-flex-wrap_wrap i-row-gap_0">
<h2 class="ipsTitle ipsTitle--h4">
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $handler->ucpTitle(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</h2>
IPSCONTENT;
if ( $handler->memberHasConfiguredHandler( \IPS\Member::loggedIn() ) ):
$return .= <<<IPSCONTENT
&nbsp;&nbsp;<span class='i-color_positive'><i class='fa-solid fa-check'></i>
<span class='i-color_positive i-font-weight_600'><i class='fa-solid fa-check'></i>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'enabled', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -9942,82 +9943,74 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</h2>
<p>
</div>
<p>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $handler->ucpDesc(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</p>
</div>
<div class='ipsColumns__secondary'>
<ul class="ipsButtons ipsButtons--start">
</div>
<ul class="ipsButtons ipsButtons--start i-margin-top_3">
IPSCONTENT;
if ( $handler->memberHasConfiguredHandler( \IPS\Member::loggedIn() ) ):
$return .= <<<IPSCONTENT
<li><a href="
<li><a href="
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=settings&area=mfa&act=enable&type={$key}&_new=1" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "settings_mfa", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= <<<IPSCONTENT
" class="ipsButton ipsButton--small ipsButton--primary">
" class="ipsButton ipsButton--inherit"><i class="fa-solid fa-gear"></i>
IPSCONTENT;
$val = "mfa_{$key}_reauth"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a></li>
<li>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'or', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</li>
<li><a href="
<li><a href="
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=settings&area=mfa&act=disable&type={$key}" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "settings_mfa", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= <<<IPSCONTENT
" class="i-color_negative" data-confirm>
" class="ipsButton ipsButton--inherit i-color_negative" data-confirm><i class="fa-regular fa-circle-xmark"></i>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_disable', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a></li>
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
<li><a href="
<li><a href="
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=settings&area=mfa&act=enable&type={$key}&_new=1" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "settings_mfa", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= <<<IPSCONTENT
" class="ipsButton ipsButton--small ipsButton--primary">
" class="ipsButton ipsButton--primary"><i class='fa-solid fa-check'></i>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'enable', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a></li>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</ul>
</div>
</div>
</ul>
</div>
IPSCONTENT;
endforeach;
$return .= <<<IPSCONTENT
</div>
</div>
IPSCONTENT;
@@ -10050,41 +10043,47 @@ $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 's
$return .= <<<IPSCONTENT
</h2>
</div>
<div class='ipsBlockSpacer i-padding_3'>
<div class="i-padding_3 ipsColumns">
<div class='ipsColumns__primary i-basis_400'>
<h2 class='ipsTitle ipsTitle--h4 i-margin-bottom_1'>
<div class='ipsGrid ipsGrid--lines ipsGrid--auto-fit ipsGrid--privacySettings i-basis_400'>
<div class="i-padding_4 i-flex i-flex-direction_column">
<div class='i-flex_11'>
<div class="i-margin-bottom_1 i-flex i-align-items_center i-gap_3 i-flex-wrap_wrap i-row-gap_0">
<h2 class='ipsTitle ipsTitle--h4'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'online_visibility', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h2>
<div class="i-font-size_2 i-font-weight_600 i-margin-bottom_1">
IPSCONTENT;
if ( \IPS\Member::loggedIn()->members_bitoptions['is_anon'] ):
$return .= <<<IPSCONTENT
<span class='i-color_negative'><i class='fa-solid fa-xmark'></i>
<span class='i-color_negative i-font-weight_600'><i class='fa-solid fa-xmark'></i>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'online_status_hidden', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span>
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
<span class='i-color_positive'><i class='fa-solid fa-check'></i>
<span class='i-color_positive i-font-weight_600'><i class='fa-solid fa-check'></i>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'online_status_visible', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</div>
</div>
<p>
IPSCONTENT;
@@ -10098,15 +10097,14 @@ IPSCONTENT;
if ( !\IPS\Member::loggedIn()->group['g_hide_online_list'] ):
$return .= <<<IPSCONTENT
<div class='ipsColumns__secondary'>
<div class='ipsButtons ipsButtons--start'>
<ul class="ipsButtons ipsButtons--start i-margin-top_3">
IPSCONTENT;
if ( \IPS\Member::loggedIn()->members_bitoptions['is_anon'] ):
$return .= <<<IPSCONTENT
<a href='
<li><a href='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=settings&do=updateAnon&value=0" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "settings", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
@@ -10116,14 +10114,14 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'show_online_status', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
</a></li>
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
<a href='
<li><a href='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=settings&do=updateAnon&value=1" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "settings", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
@@ -10133,15 +10131,14 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'hide_online_status', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
</a></li>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</div>
</div>
</ul>
IPSCONTENT;
@@ -10155,39 +10152,46 @@ IPSCONTENT;
if ( \IPS\Settings::i()->core_datalayer_enabled AND \IPS\Settings::i()->core_datalayer_include_pii AND \IPS\Settings::i()->core_datalayer_member_pii_choice ):
$return .= <<<IPSCONTENT
<div class="i-padding_3 ipsColumns">
<div class='ipsColumns__primary i-basis_400'>
<h2 class='ipsTitle ipsTitle--h4 i-margin-bottom_1'>
<div class="i-padding_4 i-flex i-flex-direction_column">
<div class='i-flex_11'>
<div class="i-margin-bottom_1 i-flex i-align-items_center i-gap_3 i-flex-wrap_wrap i-row-gap_0">
<h2 class='ipsTitle ipsTitle--h4'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'datalayer_pii_opt_out', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
&nbsp;&nbsp;
</h2>
IPSCONTENT;
if ( !\IPS\Member::loggedIn()->members_bitoptions['datalayer_pii_optout'] ):
$return .= <<<IPSCONTENT
<span class='i-color_negative'><i class='fa-solid fa-xmark'></i>
<span class='i-color_negative i-font-weight_600'><i class='fa-solid fa-xmark'></i>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'datalayer_omitted', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span>
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
<span class='i-color_positive'><i class='fa-solid fa-check'></i>
<span class='i-color_positive i-font-weight_600'><i class='fa-solid fa-check'></i>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'datalayer_collected', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</h2>
</div>
<p>
IPSCONTENT;
@@ -10195,15 +10199,14 @@ $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'd
$return .= <<<IPSCONTENT
</p>
</div>
<div class='ipsColumns__secondary'>
<div class='ipsButtons ipsButtons--start'>
<ul class="ipsButtons ipsButtons--start i-margin-top_3">
IPSCONTENT;
if ( \IPS\Member::loggedIn()->members_bitoptions['datalayer_pii_optout'] ):
$return .= <<<IPSCONTENT
<a href='
<li><a href='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=settings&do=togglePii" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "settings", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
@@ -10213,14 +10216,14 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'datalayer_omit', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
</a></li>
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
<a href='
<li><a href='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=settings&do=togglePii" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "settings", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
@@ -10230,15 +10233,14 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'datalayer_collect', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
</a></li>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</div>
</div>
</ul>
</div>
IPSCONTENT;
@@ -10656,38 +10658,36 @@ IPSCONTENT;
$return .= <<<IPSCONTENT
<div class='i-padding_3 ipsBlockSpacer'>
<div class='ipsGrid ipsGrid--lines ipsGrid--auto-fit ipsGrid--privacyDelete i-basis_400 i-border-top_3'>
IPSCONTENT;
if ( \IPS\Settings::i()->pii_type=='on' ):
$return .= <<<IPSCONTENT
<div class="i-padding_3">
<div class='ipsColumns'>
<div class='ipsColumns__primary i-basis_400'>
<h2 class='ipsTitle ipsTitle--h4 i-margin-bottom_1' id="piiDataRequest">
<div class="i-padding_4 i-flex i-flex-direction_column">
<div class='i-flex_11'>
<h2 class='ipsTitle ipsTitle--h4 i-margin-bottom_1' id="piiDataRequest">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'pii_data_request', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h2>
<p>
<p>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'pii_data_request_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</p>
</div>
<div class='ipsColumns__secondary'>
<div class='ipsButtons ipsButtons--start'>
</div>
<div class='ipsButtons ipsButtons--start i-margin-top_3'>
IPSCONTENT;
if ( \IPS\Member\PrivacyAction::canRequestPiiData() AND !\IPS\Member\PrivacyAction::hasPiiRequest(NULL, TRUE ) ):
$return .= <<<IPSCONTENT
<a href='
<a href='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=settings&do=requestPiiData" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "settings", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
@@ -10698,19 +10698,19 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'download_pii_data_request', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( \IPS\Member\PrivacyAction::hasPiiRequest(NULL, TRUE ) ):
$return .= <<<IPSCONTENT
<a href='
<a href='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=settings&do=downloadPiiData" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "settings", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
@@ -10721,14 +10721,12 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'download_pii_data', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</div>
</div>
</div>
IPSCONTENT;
@@ -10755,8 +10753,8 @@ IPSCONTENT;
elseif ( \IPS\Settings::i()->pii_type=='redirect' ):
$return .= <<<IPSCONTENT
<div class="i-padding_3 ipsColumns">
<div class='ipsColumns__primary i-basis_400'>
<div class="i-padding_4 i-flex i-flex-direction_column">
<div class='i-flex_11'>
<h2 class='ipsTitle ipsTitle--h4 i-margin-bottom_1' id="piiDataRequest">
IPSCONTENT;
@@ -10770,9 +10768,8 @@ $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'p
$return .= <<<IPSCONTENT
</p>
</div>
<div class='ipsColumns__secondary'>
<div class='ipsButtons ipsButtons--start'>
<a href='
<div class='ipsButtons ipsButtons--start i-margin-top_3'>
<a href='
IPSCONTENT;
$return .= \IPS\Settings::i()->pii_link;
@@ -10783,7 +10780,6 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'download_pii_data_request', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
</div>
</div>
</div>
@@ -10798,31 +10794,29 @@ IPSCONTENT;
if ( \IPS\Member::loggedIn()->canUseAccountDeletion() ):
$return .= <<<IPSCONTENT
<div class="i-padding_3">
<div class='ipsColumns'>
<div class='ipsColumns__primary i-basis_400'>
<h2 class='ipsTitle ipsTitle--h4 i-margin-bottom_1' id="requestAccountDeletion">
<div class="i-padding_4 i-flex i-flex-direction_column">
<div class='i-flex_11'>
<h2 class='ipsTitle ipsTitle--h4 i-margin-bottom_1' id="requestAccountDeletion">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'account_deletion', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h2>
<p>
<p>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'account_deletion_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</p>
</div>
</div>
IPSCONTENT;
if ( \IPS\Member\PrivacyAction::canDeleteAccount() ):
$return .= <<<IPSCONTENT
<div class='ipsColumns__secondary'>
<div class='ipsButtons ipsButtons--start'>
<a href='
<div class='ipsButtons ipsButtons--start i-margin-top_3'>
<a href='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=settings&do=requestAccountDeletion" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "settings", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
@@ -10833,15 +10827,13 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'request_account_deletion', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
</div>
</div>
</div>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</div>
IPSCONTENT;
@@ -10892,8 +10884,8 @@ IPSCONTENT;
elseif ( \IPS\Settings::i()->right_to_be_forgotten_type=='redirect' ):
$return .= <<<IPSCONTENT
<div class="i-padding_3 ipsColumns">
<div class='ipsColumns__primary i-basis_400'>
<div class="i-padding_4 i-flex i-flex-direction_column">
<div class='i-flex_11'>
<h2 class='ipsTitle ipsTitle--h4 i-margin-bottom_1' id="requestAccountDeletion">
IPSCONTENT;
@@ -10907,9 +10899,8 @@ $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'a
$return .= <<<IPSCONTENT
</p>
</div>
<div class='ipsColumns__secondary'>
<div class='ipsButtons ipsButtons--start'>
<a href='
<div class='ipsButtons ipsButtons--start i-margin-top_3'>
<a href='
IPSCONTENT;
$return .= \IPS\Settings::i()->right_to_be_forgotten_link;
@@ -10920,7 +10911,6 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'request_account_deletion', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
</div>
</div>
</div>