В function_download.php есть переменная $filename
Также в ней есть событие @event core.send_file_to_browser_before
Как мне из функции расширения по событию изменить переменную в вызывающей функции?
Т.е. чтобы @event core.send_file_to_browser_before отработал и изменил $filename в function_download.php
Ставил global $filename в расширении - не помогло.
Напомните
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
-
LavIgor
- Former team member
- Сообщения: 3468
- Стаж: 11 лет 5 месяцев
- Благодарил (а): 39 раз
- Поблагодарили: 792 раза
Re: Напомните
Vlad__, путём изменения
Образец изменения переменных событий ищите в других расширениях.
$event['filename'].Образец изменения переменных событий ищите в других расширениях.
-
Татьяна5
- Поддержка

- Сообщения: 12855
- Стаж: 14 лет 2 месяца
- Благодарил (а): 160 раз
- Поблагодарили: 2328 раз
-
Vlad__
- phpBB 2.0.7
- Сообщения: 569
- Стаж: 8 лет 10 месяцев
- Благодарил (а): 242 раза
- Поблагодарили: 52 раза
Re: Напомните
LavIgor, спасибо!
но нарисовалась другая проблема. Выше события есть код:
Т.е. ниже после события все ок, но вот эта проверка if не дает отображать вложение по новому пути. Если ее закоментировать - все нормально. Жаль. Не хочется лезть в код. По-другому никак?
Чтобы было понятно, я пробую написать расширение, которое раскидывает вложения по подпапкам.
Код: Выделить всё
$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');
}Чтобы было понятно, я пробую написать расширение, которое раскидывает вложения по подпапкам.
-
rxu
- phpBB Guru

- Сообщения: 17058
- Стаж: 19 лет 5 месяцев
- Откуда: Красноярск
- Благодарил (а): 565 раз
- Поблагодарили: 1742 раза
Re: Напомните
Вы лучше разберитесь, почему
file_exists() возвращает false, возможно, с путями что-то не так.-
Татьяна5
- Поддержка

- Сообщения: 12855
- Стаж: 14 лет 2 месяца
- Благодарил (а): 160 раз
- Поблагодарили: 2328 раз
-
Vlad__
- phpBB 2.0.7
- Сообщения: 569
- Стаж: 8 лет 10 месяцев
- Благодарил (а): 242 раза
- Поблагодарили: 52 раза
Re: Напомните
Так правильно. Файл переносится в подпапку. Короче, мне кажется расширением это не оформишь. Правкой в коде - элементарно. Жаль.rxu писал(а): 06.05.2018 20:54 Вы лучше разберитесь, почемуfile_exists()возвращаетfalse, возможно, с путями что-то не так.
-
rxu
- phpBB Guru

- Сообщения: 17058
- Стаж: 19 лет 5 месяцев
- Откуда: Красноярск
- Благодарил (а): 565 раз
- Поблагодарили: 1742 раза
Re: Напомните
Если оно есть в подпапке, то и результат проверки должен быть положительный.
Отправлено спустя 30 секунд:
Отправлено спустя 1 минуту 55 секунд:
А, там события нет. Теперь понятно.
Отправлено спустя 2 минуты 48 секунд:
В
Отправлено спустя 58 секунд:
Предыдущий кусок сообщения прочитайте.
Отправлено спустя 30 секунд:
Ну так вы и значение пути меняете тут, или что?
Отправлено спустя 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 секунд:
Предыдущий кусок сообщения прочитайте.

