Version 4.7.13

This commit is contained in:
Neo committed 2025-12-19 16:14:56 -08:00
1 parent fd22d99e69
commit 7124a02564
954 files changed
+29277 -59308

No files matched your search

+40 -7
View File
@@ -411,6 +411,9 @@ abstract class _Content extends \IPS\Patterns\ActiveRecord
}
catch( \OutOfRangeException $e ) { }
/* Remove from Hive */
\IPS\core\Hive::i()->removeContent( $this );
parent::delete();
$this->expireWidgetCaches();
@@ -1210,10 +1213,13 @@ abstract class _Content extends \IPS\Patterns\ActiveRecord
}
}
\IPS\core\Approval::loadFromContent( \get_called_class(), $this->$idColumn )->delete();
\IPS\core\Approval::loadFromContent( \get_called_class(), $this->$idColumn )->delete();
}
catch( \BadMethodCallException $e ) {}
catch( \OutOfRangeException $e ) {}
/* Remove from Hive */
\IPS\core\Hive::i()->removeContent( $this );
}
/**
@@ -1387,6 +1393,9 @@ abstract class _Content extends \IPS\Patterns\ActiveRecord
\IPS\core\Approval::loadFromContent( \get_called_class(), $this->$idColumn )->delete();
}
catch( \OutOfRangeException $e ) { }
/* Remove from Hive */
\IPS\core\Hive::i()->removeContent( $this );
}
/**
@@ -1876,7 +1885,22 @@ abstract class _Content extends \IPS\Patterns\ActiveRecord
foreach ( \IPS\Db::i()->select( '*', 'core_members', ( \count( $moderators['m'] ) ? \IPS\Db::i()->in( 'member_id', $moderators['m'] ) . ' OR ' : '' ) . \IPS\Db::i()->in( 'member_group_id', $moderators['g'] ) . ' OR ' . \IPS\Db::i()->findInSet( 'mgroup_others', $moderators['g'] ) ) as $mem )
{
$memberObj = \IPS\Member::constructFromData( $mem );
if( $this->canView( $memberObj ) )
/* Members may have individual member level mod permissions, but are also in a group that has moderator permissions. In this case, the member level restrictions always win so we need to recheck those now that we have a member object. See \IPS\Member::modPermissions(). */
$perms = $memberObj->modPermissions();
$canView = $this->canView( $memberObj );
if ( $canView === TRUE and $container = $item->containerWrapper() and isset( $container::$modPerm ) )
{
if ( isset( $perms[ $container::$modPerm ] ) and $perms[ $container::$modPerm ] != '*' and $perms[ $container::$modPerm ] != -1 )
{
if ( empty( $perms[ $container::$modPerm ] ) or ! in_array( $item->mapped('container'), $perms[ $container::$modPerm ] ) )
{
$canView = FALSE;
}
}
}
if( $canView === TRUE )
{
$notification->recipients->attach( $memberObj );
}
@@ -2465,7 +2489,7 @@ abstract class _Content extends \IPS\Patterns\ActiveRecord
}
/* Queue if there's lots, or just send them */
if ( $count > static::NOTIFICATIONS_PER_BATCH )
if ( $count > \IPS\NOTIFICATION_BACKGROUND_THRESHOLD )
{
$idColumn = $this::$databaseColumnId;
\IPS\Task::queue( 'core', 'Follow', array( 'class' => \get_class( $this ), 'item' => $this->$idColumn, 'sentTo' => $sentTo, 'followerCount' => $count ), 2 );
@@ -3030,11 +3054,12 @@ abstract class _Content extends \IPS\Patterns\ActiveRecord
/**
* Log keyword usage, if any
*
* @param string $content Content/text of submission
* @param string|NULL $title Title of submission
* @param string $content Content/text of submission
* @param string|NULL $title Title of submission
* @param int|NULL $date Date of submission
* @return void
*/
public function checkKeywords( $content, $title=NULL )
public function checkKeywords( $content, $title=NULL, ?int $date = NULL )
{
/* Do we have any keywords to track? */
if( !\IPS\Settings::i()->stats_keywords )
@@ -3078,7 +3103,8 @@ abstract class _Content extends \IPS\Patterns\ActiveRecord
{
if( \in_array( $keyword, $words ) )
{
\IPS\Db::i()->insert( 'core_statistics', array( 'time' => time(), 'type' => 'keyword', 'value_4' => $keyword, 'extra_data' => $extraData ) );
$date = $date ?: \IPS\DateTime::create()->getTimestamp();
\IPS\Db::i()->insert( 'core_statistics', array( 'time' => $date, 'type' => 'keyword', 'value_4' => $keyword, 'extra_data' => $extraData ) );
}
}
}
@@ -3149,6 +3175,12 @@ abstract class _Content extends \IPS\Patterns\ActiveRecord
{
if ( $this instanceof \IPS\Content\EditHistory and $this->mapped('edit_time') and ( $this->mapped('edit_show') or \IPS\Member::loggedIn()->modPermission('can_view_editlog') ) and \IPS\Settings::i()->edit_log )
{
/* If anonymous and we can't see, it's a no. */
if ( $this->isAnonymous() AND !\IPS\Member::loggedIn()->modPermission('can_view_anonymous_posters') )
{
return NULL;
}
$template = static::$editLineTemplate[1];
return \IPS\Theme::i()->getTemplate( static::$editLineTemplate[0][0], static::$editLineTemplate[0][1], ( isset( static::$editLineTemplate[0][2] ) ) ? static::$editLineTemplate[0][2] : NULL )->$template( $this, ( isset( static::$databaseColumnMap['edit_reason'] ) and $this->mapped('edit_reason') ) );
}
@@ -3287,4 +3319,5 @@ abstract class _Content extends \IPS\Patterns\ActiveRecord
{
return [];
}
}