Опубликовано: 18 ноября 201411 г Всем добрый день.Подскажите пожалуйста в чем проблема: не создаются папки по месяцам в uploads, файлы загружаются прямо в папку! Права установлены на запись. В чем проблема может быть? Версия форума 3.1.2.
Опубликовано: 18 ноября 201411 г Не знаю, как в 3.1.2, но в близкой к ней версии 3.1.4 есть такой код $this->attach_settings['allow_monthly_upload_dirs'] = @ini_get("safe_mode") ? 0 : ( $this->settings['safe_mode_skins'] ? 0 : 1 );Т.е., если safe mode (безопасный режим) активирован, то аттачи будут загружаться прямо в папку uploads.
Опубликовано: 18 ноября 201411 г Автор Т.е., если safe mode (безопасный режим) активирован, то аттачи будут загружаться прямо в папку uploads. Точно, выключил безопасный режим и папки начали создаваться. Огромное спасибо за подсказку!Теперь бы еще найти способ уже загруженные фото отсортировать по папкам!Есть такая возможность, может сталкивался кто?
Опубликовано: 18 ноября 201411 г Нету. Нужно написать небольшой скрипт, который пробежится по записям в бд и переместит аттачи постов которые находится в корне, одновременно обновив данные в бд.
Опубликовано: 18 ноября 201411 г Автор Нету. нужно написать небольшой скрипт, который пробежится по записям в бд и переместит аттачи постов которые находится в корне, одновременно обновив данные в бд.Это уже трудно очень, никогда таким не занимался! А по средствам самого движка такое не предусмотрено, пересчет или еще что?
Опубликовано: 18 ноября 201411 г Пересчет предусмотрен, перемещение - нет. Если очень сильно хочется, перестроение аттачей происходит в /admin/applications/core/modules_admin/tools/rebuild.php, метод rebuildAttachdata(). Там можете дописать код, чтобы переместить файл если его путь не начинается с monthly_ и находится в корне uploads (т.е. адрес не содержит слешей). Если и это сложно очень - просто забейте. Думаю, у вас не миллион аттачей в одной папке.
Опубликовано: 18 ноября 201411 г Автор Миллиона конечно нет :) но 62000 тоже многовато!Кинте ссылку пожалуйста где можно посмотреть пример как писать этот скрипт, если знаете?
Опубликовано: 18 ноября 201411 г Документация по php - http://php.net/manual/ru/Ну и соответственно там справочник по функциям которые вам понадобятся strpos, rename и тд.
Опубликовано: 18 ноября 201411 г Что-то я сегодня добрый... так уж и быть.Открыть /admin/applications/core/modules_admin/tools/rebuild.phpНайти if( $r['attach_is_image'] ) { $dims = @getimagesize( $this->settings['upload_dir'].'/'.$r['attach_location'] ); if( $dims[0] AND $dims[1] ) { $update['attach_img_width'] = $dims[0]; $update['attach_img_height'] = $dims[1]; } } Ниже добавить if( strpos( $r['attach_location'], '/' ) === false ) { $directory = 'monthly_'.date( 'm_Y', $r['attach_date'] ); $uploadDir = $this->settings['upload_dir'].'/'.$directory; if( ! is_dir( $uploadDir ) ) { if( mkdir( $uploadDir ) ) { @chmod( $uploadDir, 0777 ); } } $sourceFile = $this->settings['upload_dir'].'/'.$r['attach_location']; $renameFile = $uploadDir.'/'.$r['attach_location']; if( rename( $sourceFile, $renameFile ) ) { $update['attach_location'] = $directory.'/'.$r['attach_location']; } if( $r['attach_thumb_location'] AND ! strpos( $r['attach_thumb_location'], '/' ) ) { $sourceThumbFile = $this->settings['upload_dir'].'/'.$r['attach_thumb_location']; $renameThumbFile = $uploadDir.'/'.$r['attach_thumb_location']; if( file_exists( $sourceThumbFile ) ) { if( rename( $sourceThumbFile, $renameThumbFile ) ) { $update['attach_thumb_location'] = $directory.'/'.$r['attach_thumb_location']; } } } } Перейти в АЦ -> Пересчет и обновление. Запустить инструмент "Обновить информацию о прикрепленных файлах".
Опубликовано: 18 ноября 201411 г Автор Спасибо огромное, а то у меня уже голова лопается. Там нужно начинать с азов чтоб написать скрипт.
Опубликовано: 18 ноября 201411 г Автор код вставил, пересчет запустил. Обработало около 30000 файлов (их там больше 60000), но ничего не перенесло никуда! В чем проблема может быть? Папки по месяцам должны были создаться автоматически или их нужно предварительно создавать? Сори просто закрылась страница с процесом, все отфильтровало и переместило :D Остались только фото аватарок, их почему то не переместило! Если их переместить вручную подгружаться будут они или нет?Еще раз огромное спасибо за помощь! Изменено 18 ноября 201411 г пользователем alekp
Опубликовано: 18 ноября 201411 г Все создается автоматически. Папка /uploads/ обязательно должна иметь права на запись. Если при загрузке обычных файлов создаются подпапки, то и тут они тоже должны были создаться. Вы уверены что ничего не перенеслось? Вы точно запустили правильный инструмент пересчета? Если во время пересчета возникли какие-то ошибки, нужно их скопировать и остановить процесс (закрыть вкладку). Аватарки - не аттачи. Вручную переносить нельзя, данные о них хранятся в базе данных.
Опубликовано: 18 ноября 201411 г Автор Все перенеслось и отфильтровалось, теперь все красиво по папкам!Тогда просто закрылась страница с процесом, вот я и подумал что сбой! Через некоторое время проверил а вложения все перенеслись(видимо процес закончился).
Опубликовано: 18 ноября 201411 г Хотя опять же, если очень хочется, можно перенести и аватарки, но только в одну конкретную папку, а потом sql запросом обновить путь к ним.
Опубликовано: 19 ноября 201411 г Автор Хотя опять же, если очень хочется, можно перенести и аватарки, но только в одну конкретную папку, а потом sql запросом обновить путь к ним.Ну вы меня прям искушаете :)Думаю пока не нужно, не так много их там!Сейчас еще нужно разобраться с архивацией тем, не могу что то найти ее вообще в админке! Но это в другой теме...Огромное спасибо вам за помощь!
Опубликовано: 19 ноября 201411 г Автор А этот код после сортировки нужно удалять из rebuild.php?Не повлияет он если например запустить пересчет удаление потерянных файлов и т.д.?
Всем добрый день.
Подскажите пожалуйста в чем проблема: не создаются папки по месяцам в uploads, файлы загружаются прямо в папку! Права установлены на запись. В чем проблема может быть? Версия форума 3.1.2.