Version 4.7.23

This commit is contained in:
Neo committed 2025-12-19 16:21:27 -08:00
1 parent 7124a02564
commit 25ddeb65d6
1791 files changed
+76990 -44452

No files matched your search

+54 -24
View File
@@ -11,6 +11,9 @@
namespace IPS;
/* To prevent PHP errors (extending class does not exist) revealing path */
use IPS\Content\Searchable;
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
@@ -411,9 +414,6 @@ abstract class _Content extends \IPS\Patterns\ActiveRecord
}
catch( \OutOfRangeException $e ) { }
/* Remove from Hive */
\IPS\core\Hive::i()->removeContent( $this );
parent::delete();
$this->expireWidgetCaches();
@@ -879,7 +879,7 @@ abstract class _Content extends \IPS\Patterns\ActiveRecord
*/
public static function canSeeMultiModTools( \IPS\Member $member = NULL, \IPS\Node\Model $container = NULL )
{
return static::modPermission( 'pin', $member, $container ) or static::modPermission( 'unpin', $member, $container ) or static::modPermission( 'feature', $member, $container ) or static::modPermission( 'unfeature', $member, $container ) or static::modPermission( 'edit', $member, $container ) or static::modPermission( 'hide', $member, $container ) or static::modPermission( 'unhide', $member, $container ) or static::modPermission( 'delete', $member, $container );
return static::modPermission( 'pin', $member, $container ) or static::modPermission( 'unpin', $member, $container ) or static::modPermission( 'feature', $member, $container ) or static::modPermission( 'unfeature', $member, $container ) or static::modPermission( 'edit', $member, $container ) or static::modPermission( 'hide', $member, $container ) or static::modPermission( 'unhide', $member, $container ) or static::modPermission( 'delete', $member, $container ) or static::modPermission( 'move', $member, $container );
}
/**
@@ -1145,6 +1145,8 @@ abstract class _Content extends \IPS\Patterns\ActiveRecord
{
$member = \IPS\Member::loggedIn();
}
$originalState = $this->hidden();
/* Log it! */
$log = new \IPS\core\DeletionLog;
@@ -1181,6 +1183,23 @@ abstract class _Content extends \IPS\Patterns\ActiveRecord
/* Save*/
$item->save();
/* Now the container */
try
{
$containerColumn = ( $originalState === 1 ) ? '_unapprovedComments' : '_comments';
if ( \in_array( 'IPS\Content\Review', class_parents( \get_called_class() ) ) )
{
$containerColumn = ( $originalState === 1 ) ? '_unapprovedReviews' : '_reviews';
}
if( $item->container()->$containerColumn !== null )
{
$item->container()->$containerColumn = ( $item->container()->$containerColumn > 0 ) ? ( $item->container()->$containerColumn - 1 ) : 0;
$item->container()->save();
}
}
catch( \BadMethodCallException ){}
}
if ( $this instanceof \IPS\Content\Tags )
@@ -1217,9 +1236,6 @@ abstract class _Content extends \IPS\Patterns\ActiveRecord
}
catch( \BadMethodCallException $e ) {}
catch( \OutOfRangeException $e ) {}
/* Remove from Hive */
\IPS\core\Hive::i()->removeContent( $this );
}
/**
@@ -1276,18 +1292,19 @@ abstract class _Content extends \IPS\Patterns\ActiveRecord
/* Save the changes */
$this->save();
/* Reindex the now hidden content - if this is a content item with comments or reviews, then make sure to do those too. */
if ( $this instanceof \IPS\Content\Item AND ( isset( static::$commentClass ) OR isset( static::$reviewClass ) ) )
{
\IPS\Content\Search\Index::i()->index( ( static::$firstCommentRequired ) ? $this->firstComment() : $this );
\IPS\Content\Search\Index::i()->indexSingleItem( $this );
if( $this instanceof Searchable )
{ /* Reindex the now hidden content - if this is a content item with comments or reviews, then make sure to do those too. */
if( $this instanceof \IPS\Content\Item and ( isset( static::$commentClass ) or isset( static::$reviewClass ) ) )
{
\IPS\Content\Search\Index::i()->index( ( static::$firstCommentRequired ) ? $this->firstComment() : $this );
\IPS\Content\Search\Index::i()->indexSingleItem( $this );
}else
{
/* Either this is a comment / review, or the item doesn't support comments or reviews, so we can just reindex it now. */
\IPS\Content\Search\Index::i()->index( $this );
}
}
else
{
/* Either this is a comment / review, or the item doesn't support comments or reviews, so we can just reindex it now. */
\IPS\Content\Search\Index::i()->index( $this );
}
/* Delete the log */
if ( isset( $log ) )
{
@@ -1393,9 +1410,6 @@ 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 );
}
/**
@@ -1780,10 +1794,11 @@ abstract class _Content extends \IPS\Patterns\ActiveRecord
* @param string $reportContent Report content message from member
* @param int $reportType Report type (see constants in \IPS\core\Reports\Report)
* @param \IPS\Member|NULL $member Member making the report (or NULL for loggedIn())
* @param array $guestDetails Details for a guest report
* @return \IPS\core\Reports\Report
* @throws \UnexpectedValueException If there is a permission error - you should only call this method after checking canReport
*/
public function report( $reportContent, $reportType=1, $member=NULL )
public function report( $reportContent, $reportType=1, $member=NULL, $guestDetails=array() )
{
$member = ( $member ) ? $member : \IPS\Member::loggedIn();
@@ -1836,8 +1851,15 @@ abstract class _Content extends \IPS\Patterns\ActiveRecord
'report_by' => (int) $member->member_id,
'date_reported' => time(),
'ip_address' => \IPS\Request::i()->ipAddress(),
'report_type' => $member->member_id ? $reportType : 0
'report_type' => ( ! $member->member_id and \IPS\Settings::i()->automoderation_enabled ) ? 0 : $reportType
);
if ( count( $guestDetails ) and isset( $guestDetails['email'] ) )
{
/* Guest name can be optional */
$reportInsert['guest_name'] = isset( $guestDetails['name'] ) ? $guestDetails['name'] : '';
$reportInsert['guest_email'] = $guestDetails['email'];
}
$insertID = \IPS\Db::i()->insert( 'core_rc_reports', $reportInsert );
$reportInsert['id'] = $insertID;
@@ -2632,6 +2654,8 @@ abstract class _Content extends \IPS\Patterns\ActiveRecord
)
)
and
isset( $perms["{$modPermKey}{$title}"] )
and
$perms["{$modPermKey}{$title}"]
)
{
@@ -3099,14 +3123,20 @@ abstract class _Content extends \IPS\Patterns\ActiveRecord
$extraData = json_encode( array( 'class' => \get_class( $this ), 'id' => $this->$idColumn ) );
$insert = [];
foreach( $keywords as $keyword )
{
if( \in_array( $keyword, $words ) )
{
$date = $date ?: \IPS\DateTime::create()->getTimestamp();
\IPS\Db::i()->insert( 'core_statistics', array( 'time' => $date, 'type' => 'keyword', 'value_4' => $keyword, 'extra_data' => $extraData ) );
$insert[] = array( 'time' => $date, 'type' => 'keyword', 'value_4' => $keyword, 'extra_data' => $extraData );
}
}
if( \count( $insert ) )
{
\IPS\Db::i()->insert( 'core_statistics', $insert );
}
}
/* !Search */