Напомните

Форум для авторов расширений для phpBB. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Ответить
Vlad__
phpBB 2.0.3
Сообщения: 370
Зарегистрирован: 10.12.2016 11:06
Благодарил (а): 229 раз
Поблагодарили: 19 раз

Напомните

Сообщение Vlad__ » 06.05.2018 20:11

В function_download.php есть переменная $filename
Также в ней есть событие @event core.send_file_to_browser_before
Как мне из функции расширения по событию изменить переменную в вызывающей функции?
Т.е. чтобы @event core.send_file_to_browser_before отработал и изменил $filename в function_download.php
Ставил global $filename в расширении - не помогло.

Аватара пользователя
LavIgor
Поддержка
Поддержка
Сообщения: 3395
Зарегистрирован: 28.04.2014 8:16
Благодарил (а): 34 раза
Поблагодарили: 879 раз

Re: Напомните

Сообщение LavIgor » 06.05.2018 20:24

Vlad__, путём изменения $event['filename'].
Образец изменения переменных событий ищите в других расширениях.

Аватара пользователя
Татьяна5
Former team member
Сообщения: 8043
Зарегистрирован: 08.08.2011 2:02
Благодарил (а): 152 раза
Поблагодарили: 2306 раз

Re: Напомните

Сообщение Татьяна5 » 06.05.2018 20:28

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

$filename = $event['filename'];
...
$event['filename'] = $filename;

Vlad__
phpBB 2.0.3
Сообщения: 370
Зарегистрирован: 10.12.2016 11:06
Благодарил (а): 229 раз
Поблагодарили: 19 раз

Re: Напомните

Сообщение Vlad__ » 06.05.2018 20:39

LavIgor, спасибо!

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

$event['filename'] = $filename;
но нарисовалась другая проблема. Выше события есть код:

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

filename = $phpbb_root_path . $upload_dir . '/' . $attachment['physical_filename'];
if (!@file_exists($filename))
{
	send_status_line(404, 'Not Found');
	trigger_error('ERROR_NO_ATTACHMENT');
}
Т.е. ниже после события все ок, но вот эта проверка if не дает отображать вложение по новому пути. Если ее закоментировать - все нормально. Жаль. Не хочется лезть в код. По-другому никак?

Чтобы было понятно, я пробую написать расширение, которое раскидывает вложения по подпапкам.

Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 13879
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 323 раза
Поблагодарили: 1385 раз
Контактная информация:

Re: Напомните

Сообщение rxu » 06.05.2018 20:54

Вы лучше разберитесь, почему file_exists() возвращает false, возможно, с путями что-то не так.
Изображение

Аватара пользователя
Татьяна5
Former team member
Сообщения: 8043
Зарегистрирован: 08.08.2011 2:02
Благодарил (а): 152 раза
Поблагодарили: 2306 раз

Re: Напомните

Сообщение Татьяна5 » 06.05.2018 20:57

rxu, он написал, что путь по факту другой, вложение в подпапке

Vlad__
phpBB 2.0.3
Сообщения: 370
Зарегистрирован: 10.12.2016 11:06
Благодарил (а): 229 раз
Поблагодарили: 19 раз

Re: Напомните

Сообщение Vlad__ » 06.05.2018 21:23

rxu писал(а):
06.05.2018 20:54
Вы лучше разберитесь, почему file_exists() возвращает false, возможно, с путями что-то не так.
Так правильно. Файл переносится в подпапку. Короче, мне кажется расширением это не оформишь. Правкой в коде - элементарно. Жаль.

Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 13879
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 323 раза
Поблагодарили: 1385 раз
Контактная информация:

Re: Напомните

Сообщение rxu » 06.05.2018 21:24

Если оно есть в подпапке, то и результат проверки должен быть положительный.

Отправлено спустя 30 секунд:
Vlad__ писал(а):
06.05.2018 21:23
Файл переносится в подпапку.
Ну так вы и значение пути меняете тут, или что?

Отправлено спустя 1 минуту 55 секунд:
А, там события нет. Теперь понятно.

Отправлено спустя 2 минуты 48 секунд:
В download/file.php через событие core.download_file_send_to_browser_before меняйте значение $config['upload_path'] на нужное, которое ниже передается в вызов функции send_file_to_browser($attachment, $config['upload_path'], $display_cat);.

Отправлено спустя 58 секунд:
Предыдущий кусок сообщения прочитайте.
Изображение

Ответить

Вернуться в «Для авторов»