Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
dmitry07

Uploads почистить

Recommended Posts

Здравствуйте

Прошу помочь мне с таким вопросом...

Поиском не нашел...

IPB 4, официальная.

Помнится в старых версия можно было удалить вложения, которые не прикреплены к сообщениям. В админке была такая функция.. В 4 версии этого нету.

В связи с тем, что пришлось восстанавливать uploads, там сейчас находится много лишних файлов.

Как бы их по удалять ....

Share this post


Link to post
Share on other sites

Файлы где находятся, в корне?

Share this post


Link to post
Share on other sites

В uploads и затем папки по месяцам... думаю в uploads/ тоже есть лишнего

Share this post


Link to post
Share on other sites

Насколько я понял удаления бессвязных аттачей проводится фоновой задачи которая запускается то ли автоматически то ли вручную.

Share this post


Link to post
Share on other sites

Функция запускается кнопкой в System -> Files -> Remove Orphaned Files, но она временно отключена в связи с необходимостью ее доработки.

 

Для удаления бессвязных аттачей выполнить в корне форума следующий скрипт:

 

require_once 'init.php';
\IPS\Dispatcher\Front::i();

$engine = \IPS\Application::allExtensions( 'core', 'FileStorage', FALSE )['core_Attachment'];
$dir    = 'uploads';

if ( is_dir( $dir ) )
{
$iterator = new \RecursiveIteratorIterator( new \RecursiveDirectoryIterator( $dir, \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::UNIX_PATHS ) );

foreach( $iterator as $f )
{
	/* We aren't checking directories */
	if( $f->isDir() OR $f->getFilename() == 'index.html' OR mb_substr( $f->getFilename(), 0, 1 ) === '.' OR mb_substr( $iterator->getSubPathname(), 0, 5 ) === 'logs/' )
	{
		continue;
	}

	if( ! preg_match( '/^monthly_(\d+)_(\d+)\//', $iterator->getSubPathname() ) )
	{
		continue;
	}

	try
	{
		if( $engine->isValidFile( $iterator->getSubPathname() ) )
		{
			continue;
		}
	}
	catch( \InvalidArgumentException $e )
	{
		continue;
	}

	@unlink( $f->getPathName() );
	echo "Deleted {$f->getPathName()}<br>\n";
}
}

  • Upvote 2

Share this post


Link to post
Share on other sites

Создал файл php в корне с содержимым, но не запускает (вылазит в браузере код), и через ссш аналогично.

Как правильно запустить скрипт? и есть ли возможность сделать перерасчет уже существующих вложений, то есть 3 папки по 4 гига, которые освободить нужно)

Share this post


Link to post
Share on other sites
но она временно отключена в связи с необходимостью ее доработки.
Она уже 2 года отключена, все никак не доработают
Создал файл php в корне с содержимым

 

А тег <?php не забыл?

  • Upvote 1

Share this post


Link to post
Share on other sites

\IPS\Dispatcher\Front::i();

заменить на

\IPS\Dispatcher\External::i();

  • Upvote 1

Share this post


Link to post
Share on other sites

Спасибо! Отлично обработало, но зацепило аватарки многим, удалило все вложения с галереи.

Подняли бэкап

Edited by Атаман

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...