Invision Power Services, Inc. * @copyright (c) Invision Power Services, Inc. * @license https://www.invisioncommunity.com/legal/standards/ * @package Invision Community * @subpackage * @since 11/17/2023 */ namespace IPS\Extensions; /* To prevent PHP errors (extending class does not exist) revealing path */ use IPS\File; use UnderflowException; if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) ) { header( ( $_SERVER['SERVER_PROTOCOL'] ?? 'HTTP/1.0' ) . ' 403 Forbidden' ); exit; } abstract class FileStorageAbstract { /** * Count stored files * * @return int */ abstract public function count(): int; /** * Move stored files * * @param int $offset This will be sent starting with 0, increasing to get all files stored by this extension * @param int $storageConfiguration New storage configuration ID * @param int|NULL $oldConfiguration Old storage configuration ID * @throws UnderflowException When file record doesn't exist. Indicating there are no more files to move * @return void */ abstract public function move( int $offset, int $storageConfiguration, int $oldConfiguration=NULL ) : void; /** * Check if a file is valid * * @param File|string $file The file path to check * @return bool */ abstract public function isValidFile( File|string $file ): bool; /** * Delete all stored files * * @return void */ abstract public function delete() : void; }