Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Массовое изменение сообщений

Вопросы без привязки к версии. Установлена авточистка (2 года).
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
dex15
phpBB 1.2.0
Сообщения: 16
Стаж: 4 года
Благодарил (а): 1 раз
Поблагодарили: 2 раза

Массовое изменение сообщений

Сообщение dex15 »

Друзья, добрый день

Возникла проблема на форуме - пользователи размещали изображения на бесплатном хостинге изображений и теперь поступают жалобы: при использовании мобильного интернета эти картинки перенаправляют на оформление платных подписок мобильных операторов.

В ручную перебирать 100 тыс сообщений и выискивать эти зловредные ссылки - сил не хватит. Единственное решение, как я понимаю, это массово изменить все сообщения на форуме, которые содержат ссылки на этот дурацкий fastpic. Я думаю можно сделать какой-нибудь запрос к базе данных на автоматическое изменение сообщений.

МНе нужно чтобы в сообщениях ссылки на хостинг fastpic такого типа:

Код: Выделить всё

[url=http://i47.fastpic.ru/big/2013/0725/c2/f5d149a97b153d68eea44a3a12d190c2.jpg][img]http://i47.fastpic.ru/big/2013/0725/42/0d5b455bc77177471f0715f6ca795a42.jpg[/img][/url]

Стали просто изображениями с обычном кодом:

Код: Выделить всё

[img]http://i47.fastpic.ru/big/2013/0725/42/0d5b455bc77177471f0715f6ca795a42.jpg[/img]

Помогите, пожалуйста, какой именно запрос к базе данных мне нужен?
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3336
Стаж: 15 лет 1 месяц
Благодарил (а): 25 раз
Поблагодарили: 590 раз

Re: Массовое изменение сообщений

Сообщение Nekstati »

dex15, можно джаваскриптом, вставить например это куда-нибудь в styles/prosilver/template/viewtopic_body.html (перед последней строкой).
 

Код: Выделить всё

<script>
document.addEventListener('DOMContentLoaded', () => {
	let fastpics = document.querySelectorAll('img.postimage[src*="fastpic"]');
	for (let p of fastpics)
		if (p.parentNode.nodeName == 'A' && p.parentNode.hasAttribute('href') && p.parentNode.href.search('fastpic') > -1)
			p.parentNode.removeAttribute('href');
});
</script>
Аватара пользователя
southklad
phpBB 3.1.0 RC2
Сообщения: 3232
Стаж: 12 лет 3 месяца
Благодарил (а): 704 раза
Поблагодарили: 152 раза

Re: Массовое изменение сообщений

Сообщение southklad »

тоже самое еще бы и для савепик сделать, потому как он тоже умер, и иногда при переходе по нему переход идет на очень интересные сайты
Изображение
TrekRed
phpBB 2.0.5
Сообщения: 483
Стаж: 5 лет 8 месяцев
Благодарил (а): 68 раз
Поблагодарили: 16 раз

Re: Массовое изменение сообщений

Сообщение TrekRed »

Есть хорошее, но платное расширение, читайте: https://www.ppkbb3cker.ru/viewtopic.php?f=69&t=4599
dex15
phpBB 1.2.0
Сообщения: 16
Стаж: 4 года
Благодарил (а): 1 раз
Поблагодарили: 2 раза

Re: Массовое изменение сообщений

Сообщение dex15 »

Nekstati писал(а): 04.04.2020 14:05 dex15, можно джаваскриптом, вставить например это куда-нибудь в styles/prosilver/template/viewtopic_body.html (перед последней строкой).
сделал как написали, обновил шаблоны стиля, но результата почему-то нет - не работает
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16367
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1744 раза

Re: Массовое изменение сообщений

Сообщение rxu »

Кэш чистили? И конференции, и браузера (Ctrl+F5).
Изображение
dex15
phpBB 1.2.0
Сообщения: 16
Стаж: 4 года
Благодарил (а): 1 раз
Поблагодарили: 2 раза

Re: Массовое изменение сообщений

Сообщение dex15 »

rxu, да очистил все кэши шаблонов на форуме, очистил кэш в браузере, но ссылки на fastpic почему-то все равно работают
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3336
Стаж: 15 лет 1 месяц
Благодарил (а): 25 раз
Поблагодарили: 590 раз

Re: Массовое изменение сообщений

Сообщение Nekstati »

dex15, стиль не Prosilver? Смотрите какой там в вашем стиле реальный HTML-код у изображений и изменяйте этот CSS-селектор соответственно: img.postimage[src*="fastpic"]

Ну или дайте ссылку.
dex15
phpBB 1.2.0
Сообщения: 16
Стаж: 4 года
Благодарил (а): 1 раз
Поблагодарили: 2 раза

Re: Массовое изменение сообщений

Сообщение dex15 »

Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3336
Стаж: 15 лет 1 месяц
Благодарил (а): 25 раз
Поблагодарили: 590 раз

Re: Массовое изменение сообщений

Сообщение Nekstati »

dex15, скрипт не сработал потому, что не предназначался для phpBB 3.0, тем более модифицированного. ;)

Если я верно понимаю, речь идёт о миниатюрах под спойлером (по вашей ссылке).

Попробуйте вот так, картинки должны открываться в Highslide:

Код: Выделить всё

<script>
document.addEventListener('DOMContentLoaded', () => {
	let fastpics = document.querySelectorAll('.postlink img[src*="fastpic"]');
	for (let p of fastpics) {
		let a = p.parentNode.parentNode;
		if (a.nodeName == 'A' && a.hasAttribute('href') && a.href.search('fastpic') > -1) {
			a.setAttribute('onclick', 'return hs.expand(this)');
			a.classList.add('highslide');
		}
	}
});
</script>
 
Или вот так - миниатюры заменятся на картинки большего размера, как если бы они были вставлены через простой ББкод [img], и будут открываться на полный размер в Highslide:

Код: Выделить всё

<script>
document.addEventListener('DOMContentLoaded', () => {
	let fastpics = document.querySelectorAll('.postlink img[src*="fastpic"]');
	for (let p of fastpics) {
		let a = p.parentNode.parentNode;
		if (a.nodeName == 'A' && a.hasAttribute('href') && a.href.search('fastpic') > -1) {
			a.setAttribute('onclick', 'return hs.expand(this)');
			a.classList.add('highslide');
			p.src = a.href;
			p.style.maxWidth = '650px';
		}
	}
});
</script>
 
Или так - тоже замена на картинки большего размера, но некликабельные:

Код: Выделить всё

<script>
document.addEventListener('DOMContentLoaded', () => {
	let fastpics = document.querySelectorAll('.postlink img[src*="fastpic"]');
	for (let p of fastpics) {
		let a = p.parentNode.parentNode;
		if (a.nodeName == 'A' && a.hasAttribute('href') && a.href.search('fastpic') > -1) {
			p.src = a.href;
			p.style.maxWidth = '650px';
			a.removeAttribute('href');
			a.removeAttribute('onclick');
		}
	}
});
</script>
dex15
phpBB 1.2.0
Сообщения: 16
Стаж: 4 года
Благодарил (а): 1 раз
Поблагодарили: 2 раза

Re: Массовое изменение сообщений

Сообщение dex15 »

Nekstati, спасибо, сейчас все заработало как надо :)

Вернуться в «phpBB-пространство»