Version 4.6.0

This commit is contained in:
Neo committed 2025-12-19 05:55:31 -08:00
1 parent f79dcf067a
commit 517a5e1f70
2036 files changed
+110041 -26162

No files matched your search

@@ -64,18 +64,6 @@ class _notifications extends \IPS\Dispatcher\Controller
)
);
};
$methodTable = new \IPS\Helpers\Table\Custom( array( 'inline' => array( 'method' => \IPS\Member::loggedIn()->language()->addToStack('member_notifications_inline') ) ), \IPS\Http\Url::internal( 'app=core&module=membersettings&controller=notifications', 'admin' ) );
$methodTable->langPrefix = 'notificationsettings_';
$methodTable->rowButtons = function( $row, $k ) {
return array(
'edit' => array(
'title' => 'edit',
'link' => \IPS\Http\Url::internal( 'app=core&module=membersettings&controller=notifications&do=method', 'admin' )->setQueryString( 'id', $k ),
'icon' => 'pencil'
)
);
};
if( !\IPS\CIC )
{
@@ -100,7 +88,13 @@ class _notifications extends \IPS\Dispatcher\Controller
}
\IPS\Output::i()->title = \IPS\Member::loggedIn()->language()->addToStack('notifications');
\IPS\Output::i()->output = $typeTable . $methodTable;
if ( ! \IPS\Notification::canUseWebPush() )
{
\IPS\Output::i()->output = \IPS\Theme::i()->getTemplate('global')->message( 'acp_notifications_cannot_use_web_push', 'general' );
}
\IPS\Output::i()->output .= $typeTable;
}
/**
@@ -136,7 +130,8 @@ class _notifications extends \IPS\Dispatcher\Controller
{
\IPS\Task::queue( 'core', 'PruneLargeTable', array(
'table' => 'core_follow',
'where' => array( 'follow_member_id IN(?)', \IPS\Db::i()->select( 'member_id', 'core_members', array( 'last_activity < ?', \IPS\DateTime::create()->sub( new \DateInterval( 'P' . $values['prune_follows'] . 'D' ) )->getTimestamp() ) ) ),
'where' => array( 'follow_app!=? AND follow_area!=? AND follow_member_id IN(?)', 'core', 'member', \IPS\Db::i()->select( 'member_id', 'core_members', array( 'last_activity < ?', \IPS\DateTime::create()->sub( new \DateInterval( 'P' . $values['prune_follows'] . 'D' ) )->getTimestamp() ) ) ),
'setting' => 'prune_follows',
'deleteJoin' => array(
'column' => 'member_id',
'table' => 'core_members',
@@ -187,7 +182,7 @@ class _notifications extends \IPS\Dispatcher\Controller
$form->addMessage( $option['description'] );
}
if ( !\in_array( 'inline', $option['disabled'] ) or ( \IPS\Settings::i()->mobile_app_id and !\in_array( 'push', $option['disabled'] ) ) or !\in_array( 'email', $option['disabled'] ) )
if ( !\in_array( 'inline', $option['disabled'] ) or ( ( \IPS\Settings::i()->mobile_app_id || \IPS\Notification::webPushEnabled() ) and !\in_array( 'push', $option['disabled'] ) ) or !\in_array( 'email', $option['disabled'] ) )
{
$canEditField = new \IPS\Helpers\Form\YesNo( 'notificationsettings_editable_' . $key, $defaultConfiguration[ $key ]['editable'], FALSE, array(
'togglesOn' => array( "member_notifications_{$key}_inline_editable", "member_notifications_{$key}_push", "member_notifications_{$key}_email_editable" ),
@@ -212,8 +207,16 @@ class _notifications extends \IPS\Dispatcher\Controller
}
}
}
foreach ( array( 'inline', 'push', 'email' ) as $k )
if ( \IPS\Notification::canUseWebPush() )
{
$types = array( 'inline', 'push', 'email' );
}
else
{
$types = array( 'inline', 'email' );
}
foreach ( $types as $k )
{
if ( !\in_array( $k, $option['disabled'] ) )
{
@@ -278,7 +281,7 @@ class _notifications extends \IPS\Dispatcher\Controller
}
}
if ( !\in_array( 'inline', $option['disabled'] ) or ( \IPS\Settings::i()->mobile_app_id and !\in_array( 'push', $option['disabled'] ) ) or !\in_array( 'email', $option['disabled'] ) )
if ( !\in_array( 'inline', $option['disabled'] ) or ( ( \IPS\Settings::i()->mobile_app_id || \IPS\Notification::webPushEnabled() ) and !\in_array( 'push', $option['disabled'] ) ) or !\in_array( 'email', $option['disabled'] ) )
{
$row = array(
'notification_key' => $key,
@@ -293,7 +296,7 @@ class _notifications extends \IPS\Dispatcher\Controller
{
if ( $k === 'push' )
{
if ( !\IPS\Settings::i()->mobile_app_id )
if ( !\IPS\Settings::i()->mobile_app_id && !\IPS\Notification::webPushEnabled() )
{
continue;
}
@@ -349,36 +352,6 @@ class _notifications extends \IPS\Dispatcher\Controller
\IPS\Output::i()->output = $form;
}
/**
* Notification List Settings
*
* @return void
*/
protected function method()
{
$form = new \IPS\Helpers\Form;
$form->addHeader('notification_preferences');
$form->add( new \IPS\Helpers\Form\Radio( 'notification_prefs_sound', \IPS\Settings::i()->notification_prefs_sound ? 'default' : 'optional', FALSE, array( 'options' => array(
'default' => 'admin_notification_pref_default',
'optional' => 'admin_notification_pref_optional',
) ), NULL, NULL, NULL, 'notification_prefs_sound' ) );
if ( $values = $form->values() )
{
$values['notification_prefs_sound'] = ( $values['notification_prefs_sound'] === 'default' );
$form->saveAsSettings( $values );
\IPS\Session::i()->log( 'acplog__notification_settings' );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=membersettings&controller=notifications' ), 'saved' );
}
\IPS\Output::i()->breadcrumb[] = array( \IPS\Http\Url::internal( 'app=core&module=membersettings&controller=notifications' ), \IPS\Member::loggedIn()->language()->addToStack( 'menu__core_membersettings_notifications' ) );
\IPS\Output::i()->title = \IPS\Member::loggedIn()->language()->addToStack('notificationsettings');
\IPS\Output::i()->output = \IPS\Theme::i()->getTemplate('global')->block( 'notificationsettings', $form, FALSE );
}
/**
* Member Auto Follow Preferences
*