Хочу порассуждать вслух об управлении загруженными файлами в блоголёте. Сейчас это можно делать, но вот существующий интерфейс является бедным. А хочется примерно следующего.

Отделять бинарные файлы и мультимедийные, для которых необходимо иметь скриншот (в том числе для аудио и видео). Иметь встроенные средства проигрывания/просмотра для мультимедиа (для картинок галерея, и более понятная, чем сейчас с плагином). Для мультимедиа еще желателен отдельный рсс - получается еще третий рсс, кроме постов и комментов.

Для мультимедиа более чем желательно иметь сводку о файле, например для картинок размеры, для видео разрешение, для звука битрейт. Все это желательно получать на стороне сервера без участия пользователя.

Необходимо связать файлы и посты, чтобы можно было в обе стороны делать необходимые выборки: для поста получить список файлов, для файла получить список постов. В версии с бд это будет отдельная таблица. Для анонсов постов ставить давать скриншоты, или по другому - в анонсе поста получать скриншоты, и желательно аяксовые скриншоты, по кликам на которые загружалась бы целая картинка, но это под вопросом.

С бинарниками тоже не все просто - если например дистрибутив блоголёта, то нужна версия дистрибутива, вне зависимости от имени файла, дата релиза, которая может не совпадать с датой файла на диске.

Для всех файлов желательна статистика скачиваний, и на ее основе рейтинг популярности. В админке в редакторе поста желательно иметь списочек файлов, по кликам на которые вставлялся бы линк в редактор.

Как же уместить столь разнородные данные и как ими управлять? На каждый вид мультимедиа файла делать свой класс? Обойтись Одним универсальным, в котором поместить абсолютно все возможные свойства для одного файла? Типа битрейт у zip и размер кадра для звука? С другой стороны типов файлов не так уж и много: аудио, видео, картинки. Всего 3 штуки, что не столь фатально.

Сделать базовый, как сейчас, класс, а от него сделать потомков для этих 3 типов. Скорее всего так и сделаю. В базовом классе указать тип файла, для управления которым должен будет создаваться/вызываться соответствующий класс. Тогда получится не потомки, а отдельные классы с общим интерфейсом доступа из базового класса, который осуществляет файловые операции, а вот статистика и со скриншотами отдается на откуп этим 3 классам.

Одна из проблем, такая, что в каждой узкой области (звук, видео,, картинки) я не являюсь специалистом, чтобы квалифицировано разбираться в форматах. С другой стороны это плюс, так как не смогу сделать наворотов, которые нужны узким специалистам и затруднят понимание рядового пользователя, коим я себя считаю.

Со скриншотами не все просто - на стороне сервера необходимо иметь соответствующие для этого библиотеки, которые не являются включенными по умолчанию в ядро php. Необходим внешний сервис для конвертации.

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