Beste bezoeker,

Wij werken met een klein groepje.
Het kan zijn dat u na het plaatsen van een bericht even moet wachten op hulp of op een antwoord,
blijf daarom gerust posten we zullen z.s.m. en wanneer het kan reageren.

Voor dringende zaken die echt niet kunnen wachten kunt u het contactformulier gebruiken.

-------------------------------------

Wanneer u ons forum bezoekt voor hulp bij installatie, vragen wij u een account aan te maken en geen gebruik te maken van het contactformulier.

Wij kunnen u beter helpen wanneer u een account aanmaakt en u in het volgende onderwerp phpBB en Extensie installatie en aanpassingen laten uitvoeren een nieuw onderwerp start.

Ook wanneer u ergens niet uitkomt of vragen heeft, vragen wij u gebruik te maken van 1 van de bestaande "support onderwerpen" en aldaar uw onderwerp te starten.

Waneer u een account aanmaakt kan het zijn dat de activatie email terecht komt in de spamfolder.
  • Verplaats deze terug naar uw postvak-in en klik op de activatie link, hierna is uw account geactiveerd en kunt u inloggen op het forum.

Met vriendelijke groet,

Team phpBBservice.nl
(steeds tot uw dienst)

Er is 1 resultaat gevonden



door davyg
21 jan 2021 01:07
Forum: Extensie support
Onderwerp: Script: Externe avatars omzetten naar lokale uploads
Reacties: 1
Weergaves: 8148

Script: Externe avatars omzetten naar lokale uploads

Hallo :)

Ik vond pas dit script om alle externe avatars op mijn forum om te zetten naar lokale uploads:
https://gist.github.com/tierra/0024360d130d26660fa5

(mijn forum draait op https en externe http avatars geven vervelende mixed content waarschuwingen in recente browsers)

Dit 3.1 script gebruikt de functies in includes/functions_upload.php, maar die zijn verwijderd in phpbb3.3

De phpbb documentatie heeft het over deze veranderingen: https://area51.phpbb.com/docs/dev/3.3.x ... rview.html
Maar jammer genoeg lukt het me niet om hiermee het script aan te passen :( Mijn kennis van phpbb scripting is vrij beperkt.

Iemand suggesties om dit op te lossen? Of voorbeelden van recente 3.3 scripts die dezelfde logica gebruiken om me op weg te helpen?

Alvast bedankt voor jullie hulp :)

Script:

Code: Selecteer alles

if (php_sapi_name() != 'cli')
{
	echo 'This program must be run from the command line.' . PHP_EOL;
	exit(1);
}

define('IN_PHPBB', true);
$phpbb_root_path = __DIR__ . '/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
require($phpbb_root_path . 'includes/startup.' . $phpEx);
require($phpbb_root_path . 'phpbb/class_loader.' . $phpEx);

$phpbb_class_loader = new \phpbb\class_loader('phpbb\\', "{$phpbb_root_path}phpbb/", $phpEx);
$phpbb_class_loader->register();

$phpbb_config_php_file = new \phpbb\config_php_file($phpbb_root_path, $phpEx);
extract($phpbb_config_php_file->get_all());

require($phpbb_root_path . 'includes/constants.' . $phpEx);
require($phpbb_root_path . 'includes/functions.' . $phpEx);
require($phpbb_root_path . 'includes/functions_admin.' . $phpEx);
require($phpbb_root_path . 'includes/functions_upload.' . $phpEx);
require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);

$phpbb_container_builder = new \phpbb\di\container_builder($phpbb_config_php_file, $phpbb_root_path, $phpEx);
$phpbb_container_builder->set_dump_container(false);
$phpbb_container_builder->set_use_extensions(false);

$phpbb_container = $phpbb_container_builder->get_container();
$phpbb_container->get('request')->enable_super_globals();
require($phpbb_root_path . 'includes/compatibility_globals.' . $phpEx);

/** @var \phpbb\config\config $config */
$config = $phpbb_container->get('config');

/** @var \phpbb\db\driver\factory $db */
$db = $phpbb_container->get('dbal.conn');

/** @var \phpbb\path_helper $path_helper */
$path_helper = $phpbb_container->get('path_helper');

/** @var \phpbb\mimetype\guesser $mimetype_guesser */
$mimetype_guesser = $phpbb_container->get('mimetype.guesser');

$db->sql_query("
	SELECT `user_id`, `user_avatar` FROM " . USERS_TABLE . "
	WHERE `user_avatar_type` = 'avatar.driver.remote'
");
$remote_avatars = $db->sql_fetchrowset();

foreach ($remote_avatars as $avatar)
{
	echo sprintf("ID: %7d URL: %s\n", $avatar['user_id'], $avatar['user_avatar']);

$upload = new \fileupload('AVATAR_',
		array('gif', 'jpg', 'jpeg', 'png'), $config['avatar_filesize'],
		$config['avatar_min_width'], $config['avatar_min_height'],
		$config['avatar_max_width'], $config['avatar_max_height'],
		(isset($config['mime_triggers']) ? explode('|', $config['mime_triggers']) : false)
);

	/** @var \filespec $file */
	$file = $upload->remote_upload($avatar['user_avatar'], $mimetype_guesser);
	$prefix = $config['avatar_salt'] . '_';
	$file->clean_filename('avatar', $prefix, $avatar['user_id']);

	$destination = $config['avatar_path'];

	// Adjust destination path (no trailing slash)
	if (substr($destination, -1, 1) == '/' || substr($destination, -1, 1) == '\\')
	{
		$destination = substr($destination, 0, -1);
	}

	$destination = str_replace(array('../', '..\\', './', '.\\'), '', $destination);
	if ($destination && ($destination[0] == '/' || $destination[0] == "\\"))
	{
		$destination = '';
	}

	// Move file and overwrite any existing image
	$file->move_file($destination, true);

	if (!empty($file->error))
	{
		$file->remove();
		echo sprintf("Error (skipped): %s\n\n", $file->error[0]);
		continue;
	}

	$update_data = array(
		'user_avatar' => $avatar['user_id'] . '_' . time() . '.' . $file->get('extension'),
		'user_avatar_type' => 'avatar.driver.upload',
		'user_avatar_width' => $file->get('width'),
		'user_avatar_height' => $file->get('height'),
	);
	$db->sql_query("
		UPDATE " . USERS_TABLE . "
		SET " . $db->sql_build_array('UPDATE', $update_data) . "
		WHERE `user_id` = " . (int) $avatar['user_id']
	);
	if ($db->get_sql_error_triggered())
	{
		$file->remove();
		print_r($db->get_sql_error_returned());
		die();
	}
}
Upload snippets:

Code: Selecteer alles

require($phpbb_root_path . 'includes/functions_upload.' . $phpEx);

Code: Selecteer alles

$upload = new \fileupload('AVATAR_',
		array('gif', 'jpg', 'jpeg', 'png'), $config['avatar_filesize'],
		$config['avatar_min_width'], $config['avatar_min_height'],
		$config['avatar_max_width'], $config['avatar_max_height'],
		(isset($config['mime_triggers']) ? explode('|', $config['mime_triggers']) : false)
);