Version 4.7.0

This commit is contained in:
Neo committed 2025-12-19 16:00:35 -08:00
1 parent 517a5e1f70
commit 8ba7d43898
1933 files changed
+65613 -11332

No files matched your search

+155 -3
View File
@@ -239,13 +239,13 @@ class _CommentController extends \IPS\Api\Controller
$class = $this->class;
if ( \in_array( 'IPS\Content\Review', class_parents( $class ) ) )
{
$comment = $class::create( $item, $content, FALSE, \intval( \IPS\Request::i()->rating ), $author->member_id ? NULL : $author->real_name, $author, $date, ( !$this->member and \IPS\Request::i()->ip_address ) ? \IPS\Request::i()->ip_address : \IPS\Request::i()->ipAddress(), $hidden );
$comment = $class::create( $item, $content, FALSE, \intval( \IPS\Request::i()->rating ), $author->member_id ? NULL : $author->real_name, $author, $date, ( !$this->member and \IPS\Request::i()->ip_address ) ? \IPS\Request::i()->ip_address : \IPS\Request::i()->ipAddress(), $hidden, ( isset( \IPS\Request::i()->anonymous ) ? (bool) \IPS\Request::i()->anonymous : NULL ) );
}
else
{
$comment = $class::create( $item, $content, FALSE, $author->member_id ? NULL : $author->real_name, NULL, $author, $date, ( !$this->member and \IPS\Request::i()->ip_address ) ? \IPS\Request::i()->ip_address : \IPS\Request::i()->ipAddress(), $hidden );
$comment = $class::create( $item, $content, FALSE, $author->member_id ? NULL : $author->real_name, NULL, $author, $date, ( !$this->member and \IPS\Request::i()->ip_address ) ? \IPS\Request::i()->ip_address : \IPS\Request::i()->ipAddress(), $hidden, ( isset( \IPS\Request::i()->anonymous ) ? (bool) \IPS\Request::i()->anonymous : NULL ) );
}
/* Index */
if ( $item instanceof \IPS\Content\Searchable )
{
@@ -369,6 +369,158 @@ class _CommentController extends \IPS\Api\Controller
/* Return */
return new \IPS\Api\Response( 200, $comment->apiOutput( $this->member ) );
}
/**
* Delete a reaction to a comment
*
* @param $id
* @return \IPS\Api\Response
* @throws \IPS\Api\Exception
*/
public function _reactRemove( $id ): \IPS\Api\Response
{
try
{
$member = \IPS\Member::load( \IPS\Request::i()->author );
}
catch( \OutOfRangeException $e )
{
throw new \IPS\Api\Exception( 'NO_AUTHOR', '1S425/6', 404 );
}
try
{
$class = $this->class;
if ( $this->member )
{
$object = $class::loadAndCheckPerms( $id, $this->member );
}
else
{
$object = $class::load( $id );
}
$object->removeReaction( $member );
return new \IPS\Api\Response( 200, $object->apiOutput( $this->member ) );
}
catch ( \DomainException $e )
{
throw new \IPS\Api\Exception( $e->getMessage(), '1S425/7', 403 );
}
catch ( \OutOfRangeException $e )
{
throw new \IPS\Api\Exception( 'INVALID_ID', '1S425/8', 404 );
}
}
/**
* React to a comment
*
* @param $id
* @return \IPS\Api\Response
* @throws \IPS\Api\Exception
*/
public function _reactAdd( $id ): \IPS\Api\Response
{
try
{
$reaction = \IPS\Content\Reaction::load( \IPS\Request::i()->id );
}
catch( \OutOfRangeException $e )
{
throw new \IPS\Api\Exception( 'NO_REACTION', '1S425/2', 404 );
}
try
{
$member = \IPS\Member::load( \IPS\Request::i()->author );
}
catch( \OutOfRangeException $e )
{
throw new \IPS\Api\Exception( 'NO_AUTHOR', '1S425/3', 404 );
}
try
{
$class = $this->class;
if ( $this->member )
{
$object = $class::loadAndCheckPerms( $id, $this->member );
}
else
{
$object = $class::load( $id );
}
$object->react( $reaction, $member );
return new \IPS\Api\Response( 200, $object->apiOutput( $this->member ) );
}
catch ( \DomainException $e )
{
throw new \IPS\Api\Exception( 'REACT_ERROR_' . $e->getMessage(), '1S425/4', 403 );
}
catch ( \OutOfRangeException $e )
{
throw new \IPS\Api\Exception( 'INVALID_ID', '1S425/5', 404 );
}
}
/**
* Report a comment
*
* @param $id
* @return \IPS\Api\Response
* @throws \IPS\Api\Exception
*/
public function _report( $id ): \IPS\Api\Response
{
try
{
$member = \IPS\Member::load( \IPS\Request::i()->author );
}
catch( \OutOfRangeException $e )
{
throw new \IPS\Api\Exception( 'NO_AUTHOR', '1S425/B', 404 );
}
$class = $this->class;
$idColumn = $class::$databaseColumnId;
if ( $this->member )
{
$object = $class::loadAndCheckPerms( $id, $this->member );
}
else
{
$object = $class::load( $id );
}
/* Has this member already reported this in the past 24 hours */
try
{
$index = \IPS\core\Reports\Report::loadByClassAndId( \get_class( $object ), $object->$idColumn );
$report = \IPS\Db::i()->select( '*', 'core_rc_reports', array( 'rid=? and report_by=? and date_reported > ?', $index->id, $member, time() - ( \IPS\Settings::i()->automoderation_report_again_mins * 60 ) ) )->first();
/* They have aleady reported, so do nothing */
throw new \IPS\Api\Exception( 'REPORTED_ALREADY', '1S425/C', 404 );
}
catch( \Exception $e )
{
/* No issues here */
}
try
{
$object->report( ( isset( \IPS\Request::i()->message ) ? \IPS\Request::i()->message : '' ), ( isset(\IPS\Request::i()->report_type) ? \IPS\Request::i()->report_type : 0 ), $member );
}
catch( \UnexpectedValueException $e )
{
throw new \IPS\Api\Exception( 'REPORT_ERROR_' . $e->getMessage(), '1S425/B', 403 );
}
return new \IPS\Api\Response( 200, $object->apiOutput( $this->member ) );
}
}