Version 5.0.0 beta 4

This commit is contained in:
Neo committed 2025-12-19 16:57:00 -08:00
1 parent e86153356a
commit 2f24f9de48
276 files changed
+8614 -6044

No files matched your search

@@ -18,6 +18,7 @@ use Exception;
use IPS\Application;
use IPS\convert\App;
use IPS\Db;
use IPS\Extensions\QueueAbstract;
use IPS\forums\Topic\ArchivedPost;
use IPS\Member;
use IPS\Patterns\ActiveRecordIterator;
@@ -35,7 +36,7 @@ if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
/**
* Background Task
*/
class DeleteEmptyTopics
class DeleteEmptyTopics extends QueueAbstract
{
/**
* Parse data before queuing
@@ -69,7 +70,7 @@ class DeleteEmptyTopics
*
* @param mixed $data Data as it was passed to \IPS\Task::queue()
* @param int $offset Offset
* @return int|null New offset or NULL if complete
* @return int New offset or NULL if complete
* @throws OutOfRangeException Indicates offset doesn't exist and thus task is complete
*/
public function run( mixed &$data, int $offset ): int
@@ -109,7 +110,7 @@ class DeleteEmptyTopics
}
/* If the topic isn't archived, we can delete it */
if ( $topic->isArchived() == FALSE )
if ( !$topic->isArchived() )
{
$topic->delete();
}
@@ -17,11 +17,13 @@ use DOMElement;
use Exception;
use IPS\Application;
use IPS\convert\App;
use IPS\Extensions\QueueAbstract;
use IPS\Http\Url;
use IPS\Log;
use IPS\Member;
use IPS\Patterns\ActiveRecordIterator;
use IPS\Settings;
use IPS\Task\Queue\OutOfRangeException as QueueOutOfRangeException;
use IPS\Text\DOMParser;
use IPS\Xml\DOMDocument;
use OutOfRangeException;
@@ -39,12 +41,17 @@ if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
/**
* Background Task
*/
class InvisionCommunityRebuildContent
class InvisionCommunityRebuildContent extends QueueAbstract
{
/**
* @brief Number of content items to rebuild per cycle
*/
public $rebuild = REBUILD_SLOW;
public int $rebuild = REBUILD_SLOW;
/**
* @var App|null
*/
protected ?App $app = null;
/**
* Parse data before queuing
@@ -88,8 +95,8 @@ class InvisionCommunityRebuildContent
*
* @param mixed $data Data as it was passed to \IPS\Task::queue()
* @param int $offset Offset
* @return int|null New offset or NULL if complete
* @throws \IPS\Task\Queue\OutOfRangeException Indicates offset doesn't exist and thus task is complete
* @return int New offset or NULL if complete
* @throws QueueOutOfRangeException Indicates offset doesn't exist and thus task is complete
*/
public function run( mixed &$data, int $offset ): int
{
@@ -97,13 +104,13 @@ class InvisionCommunityRebuildContent
$exploded = explode( '\\', $classname );
if ( !class_exists( $classname ) or !Application::appIsEnabled( $exploded[1] ) )
{
throw new \IPS\Task\Queue\OutOfRangeException;
throw new QueueOutOfRangeException;
}
/* Make sure there's even content to parse */
if( !isset( $classname::$databaseColumnMap['content'] ) )
{
throw new \IPS\Task\Queue\OutOfRangeException;
throw new QueueOutOfRangeException;
}
/* Intentionally no try/catch as it means app doesn't exist */
@@ -114,12 +121,12 @@ class InvisionCommunityRebuildContent
/* This extension is ONLY for InvisionCommunity conversions */
if( $this->app->app_key != 'invisioncommunity' )
{
throw new \IPS\Task\Queue\OutOfRangeException;
throw new QueueOutOfRangeException;
}
}
catch( OutOfRangeException $e )
{
throw new \IPS\Task\Queue\OutOfRangeException;
throw new QueueOutOfRangeException;
}
$softwareClass = $this->app->getSource( FALSE, FALSE );
@@ -218,7 +225,7 @@ class InvisionCommunityRebuildContent
if( $last === NULL )
{
throw new \IPS\Task\Queue\OutOfRangeException;
throw new QueueOutOfRangeException;
}
/* Return the number rebuilt so far, so that the rebuild progress bar text makes sense */
@@ -251,7 +258,7 @@ class InvisionCommunityRebuildContent
* @param DOMElement $element DOM element
* @return void
*/
public function updateMention( DOMElement $element )
public function updateMention( DOMElement $element ) : void
{
try
{
@@ -272,7 +279,7 @@ class InvisionCommunityRebuildContent
/**
* @brief Mapping of content types to converter lookups - Add more for other apps when we support them
*/
protected $embedLocations = array( 'forums' => array( 'content' => 'forums_topics', 'comment' => 'forums_posts' ) );
protected array $embedLocations = array( 'forums' => array( 'content' => 'forums_topics', 'comment' => 'forums_posts' ) );
/**
* Update local embeds for new names, IDs
@@ -280,7 +287,7 @@ class InvisionCommunityRebuildContent
* @param DOMElement $element DOM element
* @return void
*/
public function updateEmbed( DOMElement $element )
public function updateEmbed( DOMElement $element ) : void
{
try
{
@@ -328,7 +335,7 @@ class InvisionCommunityRebuildContent
* @param DOMElement $element DOM element
* @return void
*/
public function updateQuote( DOMElement $element )
public function updateQuote( DOMElement $element ) : void
{
try
{
@@ -18,10 +18,12 @@ use InvalidArgumentException;
use IPS\Application;
use IPS\convert\App;
use IPS\Data\Store;
use IPS\Extensions\QueueAbstract;
use IPS\IPS;
use IPS\Log;
use IPS\Member;
use IPS\Patterns\ActiveRecordIterator;
use IPS\Task\Queue\OutOfRangeException as QueueOutOfRangeException;
use IPS\Text\LegacyParser;
use OutOfRangeException;
use function defined;
@@ -38,12 +40,12 @@ if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
/**
* Background Task
*/
class RebuildContent
class RebuildContent extends QueueAbstract
{
/**
* @brief Number of content items to rebuild per cycle
*/
public $rebuild = REBUILD_SLOW;
public int $rebuild = REBUILD_SLOW;
/**
* Parse data before queuing
@@ -87,8 +89,8 @@ class RebuildContent
*
* @param mixed $data Data as it was passed to \IPS\Task::queue()
* @param int $offset Offset
* @return int|null New offset or NULL if complete
* @throws \IPS\Task\Queue\OutOfRangeException Indicates offset doesn't exist and thus task is complete
* @return int New offset or NULL if complete
* @throws QueueOutOfRangeException Indicates offset doesn't exist and thus task is complete
*/
public function run( mixed &$data, int $offset ): int
{
@@ -96,13 +98,13 @@ class RebuildContent
$exploded = explode( '\\', $classname );
if ( !class_exists( $classname ) or !Application::appIsEnabled( $exploded[1] ) )
{
throw new \IPS\Task\Queue\OutOfRangeException;
throw new QueueOutOfRangeException;
}
/* Make sure there's even content to parse */
if( !isset( $classname::$databaseColumnMap['content'] ) )
{
throw new \IPS\Task\Queue\OutOfRangeException;
throw new QueueOutOfRangeException;
}
/* Intentionally no try/catch as it means app doesn't exist */
@@ -112,7 +114,7 @@ class RebuildContent
}
catch( OutOfRangeException $e )
{
throw new \IPS\Task\Queue\OutOfRangeException;
throw new QueueOutOfRangeException;
}
$softwareClass = $app->getSource( FALSE, FALSE );
@@ -213,7 +215,7 @@ class RebuildContent
}
/* Then pass off to legacy parser to bring up to 4.x */
$item->$contentColumn = LegacyParser::parseStatic( $item->$contentColumn, $member, false, $classname::$application . '_' . IPS::mb_ucfirst( $module ), $id1, $id2, NULL, isset( $classname::$itemClass ) ? $classname::$itemClass : get_class( $item ) );
$item->$contentColumn = LegacyParser::parseStatic( $item->$contentColumn, $member, false, $classname::$application . '_' . IPS::mb_ucfirst( $module ), $id1, $id2, NULL, $classname::$itemClass ?? get_class( $item ) );
}
catch( InvalidArgumentException $e )
{
@@ -242,7 +244,7 @@ class RebuildContent
if( $last === NULL )
{
throw new \IPS\Task\Queue\OutOfRangeException;
throw new QueueOutOfRangeException;
}
/* Return the number rebuilt so far, so that the rebuild progress bar text makes sense */
@@ -15,6 +15,7 @@ namespace IPS\convert\extensions\core\Queue;
use Exception;
use IPS\Db;
use IPS\Extensions\QueueAbstract;
use IPS\Member;
use IPS\Patterns\ActiveRecordIterator;
use IPS\Task\Queue\OutOfRangeException;
@@ -32,7 +33,7 @@ if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
/**
* Background Task
*/
class RebuildConversationFirstIds
class RebuildConversationFirstIds extends QueueAbstract
{
/**
* Parse data before queuing
@@ -16,6 +16,7 @@ namespace IPS\convert\extensions\core\Queue;
use Exception;
use IPS\Application;
use IPS\Db;
use IPS\Extensions\QueueAbstract;
use IPS\forums\Topic\ArchivedPost;
use IPS\Member;
use IPS\Patterns\ActiveRecordIterator;
@@ -34,7 +35,7 @@ if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
/**
* Background Task
*/
class RebuildFirstPostIds
class RebuildFirstPostIds extends QueueAbstract
{
/**
* Parse data before queuing
@@ -87,7 +88,7 @@ class RebuildFirstPostIds
foreach( new ActiveRecordIterator( Db::i()->select( '*', 'forums_topics', array( "tid>?", $offset ), "tid ASC", array( 0, REBUILD_SLOW ) ), 'IPS\forums\Topic' ) AS $topic )
{
if ( $topic->isArchived() == FALSE )
if ( !$topic->isArchived() )
{
try
{
@@ -19,6 +19,7 @@ use InvalidArgumentException;
use IPS\Application;
use IPS\convert\App;
use IPS\Db;
use IPS\Extensions\QueueAbstract;
use IPS\Member;
use IPS\Patterns\ActiveRecordIterator;
use IPS\Task\Queue\OutOfRangeException;
@@ -34,7 +35,7 @@ if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
/**
* Background Task
*/
class RebuildGalleryImages
class RebuildGalleryImages extends QueueAbstract
{
/**
* Parse data before queuing
@@ -68,7 +69,7 @@ class RebuildGalleryImages
*
* @param mixed $data Data as it was passed to \IPS\Task::queue()
* @param int $offset Offset
* @return int|null New offset or NULL if complete
* @return int New offset or NULL if complete
* @throws OutOfRangeException Indicates offset doesn't exist and thus task is complete
*/
public function run( mixed &$data, int $offset ): int
@@ -111,12 +112,7 @@ class RebuildGalleryImages
$image->buildThumbnails();
$image->save();
}
catch( DomainException $e )
{
$image->delete();
}
/* File fails the image type test */
catch( InvalidArgumentException $e )
catch( DomainException | InvalidArgumentException $e )
{
$image->delete();
}
@@ -15,6 +15,7 @@ namespace IPS\convert\extensions\core\Queue;
use IPS\Application;
use IPS\convert\App;
use IPS\Extensions\QueueAbstract;
use IPS\Member;
use IPS\Task\Queue\OutOfRangeException;
use function defined;
@@ -29,12 +30,12 @@ if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
/**
* Background Task
*/
class RebuildNonContent
class RebuildNonContent extends QueueAbstract
{
/**
* @brief Number of content items to rebuild per cycle
*/
public $rebuild = REBUILD_SLOW;
public int $rebuild = REBUILD_SLOW;
/**
* Parse data before queuing
@@ -70,12 +71,13 @@ class RebuildNonContent
*
* @param mixed $data Data as it was passed to \IPS\Task::queue()
* @param int $offset Offset
* @return int|null New offset or NULL if complete
* @return int New offset or NULL if complete
* @throws OutOfRangeException Indicates offset doesn't exist and thus task is complete
*/
public function run( array &$data, int $offset ): int
{
foreach( Application::allExtensions( 'core', 'EditorLocations', FALSE, NULL, NULL, TRUE ) as $_key => $extension )
$did = 0;
foreach( Application::allExtensions( 'core', 'EditorLocations', FALSE ) as $_key => $extension )
{
if( $_key != $data['extension'] )
{
@@ -16,6 +16,7 @@ namespace IPS\convert\extensions\core\Queue;
use Exception;
use IPS\convert\App;
use IPS\Db;
use IPS\Extensions\QueueAbstract;
use IPS\File;
use IPS\Member;
use IPS\Task\Queue\OutOfRangeException;
@@ -33,7 +34,7 @@ if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
/**
* Background Task
*/
class RebuildProfilePhotos
class RebuildProfilePhotos extends QueueAbstract
{
/**
* Parse data before queuing
@@ -67,7 +68,7 @@ class RebuildProfilePhotos
*
* @param mixed $data Data as it was passed to \IPS\Task::queue()
* @param int $offset Offset
* @return int|null New offset or NULL if complete
* @return int New offset or NULL if complete
* @throws OutOfRangeException Indicates offset doesn't exist and thus task is complete
*/
public function run( mixed &$data, int $offset ): int
@@ -17,9 +17,11 @@ use Exception;
use IPS\Application;
use IPS\convert\App;
use IPS\Db;
use IPS\Extensions\QueueAbstract;
use IPS\IPS;
use IPS\Log;
use IPS\Member;
use IPS\Task\Queue\OutOfRangeException as QueueOutOfRangeException;
use OutOfRangeException;
use function defined;
use function in_array;
@@ -34,7 +36,7 @@ if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
/**
* Background Task
*/
class RebuildTagCache
class RebuildTagCache extends QueueAbstract
{
/**
* Parse data before queuing
@@ -75,8 +77,8 @@ class RebuildTagCache
*
* @param mixed $data Data as it was passed to \IPS\Task::queue()
* @param int $offset Offset
* @return int|null New offset or NULL if complete
* @throws \IPS\Task\Queue\OutOfRangeException Indicates offset doesn't exist and thus task is complete
* @return int New offset or NULL if complete
* @throws QueueOutOfRangeException Indicates offset doesn't exist and thus task is complete
*/
public function run( mixed &$data, int $offset ): int
{
@@ -84,7 +86,7 @@ class RebuildTagCache
$exploded = explode( '\\', $classname );
if ( !class_exists( $classname ) or !Application::appIsEnabled( $exploded[1] ) OR !in_array( 'IPS\Content\Taggable', class_implements( $classname ) ) )
{
throw new \IPS\Task\Queue\OutOfRangeException;
throw new QueueOutOfRangeException;
}
/* Intentionally no try/catch as it means app doesn't exist */
@@ -94,7 +96,7 @@ class RebuildTagCache
}
catch( OutOfRangeException $e )
{
throw new \IPS\Task\Queue\OutOfRangeException;
throw new QueueOutOfRangeException;
}
Log::debug( "Running " . $classname . ", with an offset of " . $offset, 'rebuildTagCache' );
@@ -178,7 +180,7 @@ class RebuildTagCache
if( $last === NULL )
{
throw new \IPS\Task\Queue\OutOfRangeException;
throw new QueueOutOfRangeException;
}
/* Return the number rebuilt so far, so that the rebuild progress bar text makes sense */
@@ -16,6 +16,7 @@ namespace IPS\convert\extensions\core\Queue;
use IPS\Application;
use IPS\convert\App;
use IPS\Db;
use IPS\Extensions\QueueAbstract;
use IPS\Member;
use IPS\Task\Queue\OutOfRangeException;
use function defined;
@@ -30,7 +31,7 @@ if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
/**
* Background Task
*/
class RecountAnswerRatings
class RecountAnswerRatings extends QueueAbstract
{
/**
* Parse data before queuing
@@ -14,6 +14,7 @@ namespace IPS\convert\extensions\core\Queue;
/* To prevent PHP errors (extending class does not exist) revealing path */
use IPS\Db;
use IPS\Extensions\QueueAbstract;
use IPS\Member;
use IPS\Patterns\ActiveRecordIterator;
use IPS\Task\Queue\OutOfRangeException;
@@ -29,7 +30,7 @@ if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
/**
* Background Task
*/
class RecountClubMembers
class RecountClubMembers extends QueueAbstract
{
/**
* Parse data before queuing
@@ -16,6 +16,7 @@ namespace IPS\convert\extensions\core\Queue;
use IPS\Application;
use IPS\convert\App;
use IPS\Db;
use IPS\Extensions\QueueAbstract;
use IPS\Member;
use IPS\Task\Queue\OutOfRangeException;
use function defined;
@@ -30,7 +31,7 @@ if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
/**
* Background Task
*/
class RecountQuestionRatings
class RecountQuestionRatings extends QueueAbstract
{
/**
* Parse data before queuing