Version 4.7.6
This commit is contained in:
1 parent
8ba7d43898
commit
7b7404e741
1085 files changed
+30590
-7837
No files matched your search
@@ -109,7 +109,7 @@ class _Alert extends \IPS\Content\Item
|
||||
$form = new \IPS\Helpers\Form( NULL, 'save' );
|
||||
$form->class = 'ipsForm_vertical';
|
||||
|
||||
if ( \IPS\Member::loggedIn()->members_disable_pm == 2 )
|
||||
if ( ! \IPS\Member::loggedIn()->canUseMessenger() )
|
||||
{
|
||||
$form->addMessage( 'alert_you_cannot_receive_messages', 'ipsMessage ipsMessage_info' );
|
||||
}
|
||||
@@ -157,11 +157,38 @@ class _Alert extends \IPS\Content\Item
|
||||
{
|
||||
throw new \InvalidArgumentException( 'alert_no_recipient_selected' );
|
||||
}
|
||||
|
||||
if ( ! $member->canUseMessenger() and \IPS\Request::i()->alert_reply == 2 )
|
||||
{
|
||||
throw new \InvalidArgumentException( \IPS\Member::loggedIn()->language()->addToStack( 'alert_member_pm_disabled', NULL, [ 'sprintf' => $member->name ] ) );
|
||||
}
|
||||
}
|
||||
},
|
||||
NULL, NULL, 'alert_recipient_user' ) );
|
||||
|
||||
$form->add( new \IPS\Helpers\Form\CheckboxSet( 'alert_recipient_group', ( $alert and $alert->recipient_group ) ? explode( ',', $alert->recipient_group ) : array(), FALSE, array( 'options' => $groups, 'multiple' => TRUE ), NULL, NULL, NULL, 'alert_recipient_group' ) );
|
||||
$form->add( new \IPS\Helpers\Form\CheckboxSet( 'alert_recipient_group', ( $alert and $alert->recipient_group ) ? explode( ',', $alert->recipient_group ) : array(), FALSE, array( 'options' => $groups, 'multiple' => TRUE ), function( $groups )
|
||||
{
|
||||
if ( \IPS\Request::i()->alert_reply == 2 )
|
||||
{
|
||||
$module = \IPS\Application\Module::get( 'core', 'messaging' );
|
||||
$names = [];
|
||||
foreach( $groups as $group )
|
||||
{
|
||||
$group = \IPS\Member\Group::load( $group );
|
||||
if ( ! ( \IPS\Application::load( $module->application )->canAccess( $group ) and ( $module->protected or $module->can( 'view', $group ) ) ) )
|
||||
{
|
||||
$names[] = $group->name;
|
||||
}
|
||||
}
|
||||
|
||||
if ( \count( $names ) )
|
||||
{
|
||||
throw new \InvalidArgumentException( \IPS\Member::loggedIn()->language()->addToStack( 'alert_member_group_pm_disabled', NULL, [ 'htmlsprintf' => \IPS\Member::loggedIn()->language()->formatList( $names ) ] ) );
|
||||
}
|
||||
}
|
||||
},
|
||||
NULL, NULL, 'alert_recipient_group' ) );
|
||||
|
||||
$form->add( new \IPS\Helpers\Form\Radio( 'alert_show_to', ( $alert and $alert->show_to ) ? $alert->show_to : 'all', FALSE, [
|
||||
'options' => [
|
||||
'all' => 'alert_show_to_all',
|
||||
@@ -170,10 +197,11 @@ class _Alert extends \IPS\Content\Item
|
||||
], NULL, NULL, NULL, 'alert_show_to' ) );
|
||||
|
||||
$form->add( new \IPS\Helpers\Form\YesNo( 'alert_anonymous', ( $alert and $alert->anonymous ) ? TRUE : FALSE, TRUE, array( 'togglesOff' => array( 'alert_reply') ) ) );
|
||||
$form->add( new \IPS\Helpers\Form\Radio( 'alert_reply', $alert ? $alert->reply : 0, TRUE, array( 'disabled' => (bool) \IPS\Member::loggedIn()->members_disable_pm, 'options' => array( '0' => 'alert_no_reply', '1' => 'alert_can_reply', '2' => 'alert_must_reply' ) ), NULL, NULL, NULL, 'alert_reply' ) );
|
||||
|
||||
if ( \IPS\Member::loggedIn()->members_disable_pm != 2 )
|
||||
if ( \IPS\Member::loggedIn()->members_disable_pm )
|
||||
{
|
||||
$form->add( new \IPS\Helpers\Form\Radio( 'alert_reply', $alert ? $alert->reply : 0, TRUE, array( 'options' => array( '0' => 'alert_no_reply', '1' => 'alert_can_reply', '2' => 'alert_must_reply' ) ), NULL, NULL, NULL, 'alert_reply' ) );
|
||||
\IPS\Member::loggedIn()->language()->words['alert_reply_desc'] = \IPS\Member::loggedIn()->language()->get('alert_reply__nopm_desc');
|
||||
}
|
||||
|
||||
return $form;
|
||||
@@ -191,7 +219,7 @@ class _Alert extends \IPS\Content\Item
|
||||
\IPS\Data\Store::i()->alerts = iterator_to_array( \IPS\Db::i()->select( '*', static::$databaseTable, [
|
||||
[ 'alert_enabled=?', 1 ],
|
||||
[ 'alert_start < ?', time() ],
|
||||
[ '( alert_end = 0 or alert_end < ? )', time() ]
|
||||
[ '( alert_end = 0 or alert_end > ? )', time() ]
|
||||
], "alert_start ASC" )->setKeyField( 'alert_id' ) );
|
||||
}
|
||||
|
||||
@@ -220,8 +248,8 @@ class _Alert extends \IPS\Content\Item
|
||||
$obj->title = $values['alert_title'];
|
||||
$obj->seo_title = \IPS\Http\Url\Friendly::seoTitle( $values['alert_title'] );
|
||||
$obj->content = $values['alert_content'];
|
||||
$obj->start = $values['alert_start'] ? ( $values['alert_start']->getTimestamp() < time() ) ? time() : $values['alert_start']->getTimestamp() : time();
|
||||
$obj->end = $values['alert_end'] ? $values['alert_end']->getTimestamp() : 0;
|
||||
$obj->start = !empty( $values['alert_start'] ) ? ( $values['alert_start']->getTimestamp() < time() ) ? time() : $values['alert_start']->getTimestamp() : time();
|
||||
$obj->end = !empty ($values['alert_end'] ) ? $values['alert_end']->getTimestamp() : 0;
|
||||
|
||||
$obj->recipient_type = $values['alert_recipient_type'];
|
||||
|
||||
@@ -242,7 +270,7 @@ class _Alert extends \IPS\Content\Item
|
||||
}
|
||||
|
||||
$obj->anonymous = $values['alert_anonymous'];
|
||||
$obj->reply = ( \IPS\Member::loggedIn()->members_disable_pm == 2 ) ? 0 : $values['alert_reply'];
|
||||
$obj->reply = ( ! \IPS\Member::loggedIn()->canUseMessenger() ) ? 0 : $values['alert_reply'];
|
||||
|
||||
$obj->save();
|
||||
|
||||
@@ -486,4 +514,65 @@ class _Alert extends \IPS\Content\Item
|
||||
|
||||
\IPS\Db::i()->delete( 'core_alerts_seen', [ 'seen_alert_id=?', $this->id ] );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the count of how many replies have been sent in via this alert
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function membersRepliedCount(): int
|
||||
{
|
||||
return (int) \IPS\Db::i()->select( 'COUNT(*)', 'core_message_topics', [ 'mt_alert=?', $this->id ] )->first();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the current alert that messenger is being filtered by
|
||||
*
|
||||
* @param \IPS\Member|null $member
|
||||
* @return Alert|null
|
||||
*/
|
||||
public static function getAlertCurrentlyFilteringMessages( ?\IPS\Member $member = NULL ): ?\IPS\core\Alerts\Alert
|
||||
{
|
||||
$member = $member ?: \IPS\Member::loggedIn();
|
||||
|
||||
if ( isset( $_SESSION['mt_alert'] ) )
|
||||
{
|
||||
try
|
||||
{
|
||||
$alert = static::load( $_SESSION['mt_alert'] );
|
||||
|
||||
/* Only show details about this alert to the alert owner */
|
||||
if ( $alert->author()->member_id != $member->member_id )
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return $alert;
|
||||
}
|
||||
catch( \Exception $e ) { }
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the alert to currently filter by
|
||||
*
|
||||
* @param Alert $alert
|
||||
* @return void
|
||||
*/
|
||||
public static function setAlertCurrentlyFilteringMessages( \IPS\core\Alerts\Alert $alert )
|
||||
{
|
||||
$_SESSION['mt_alert'] = $alert->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Unset any messenger filters
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function clearMessengerFilters()
|
||||
{
|
||||
unset( $_SESSION['mt_alert'] );
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user