Преобразования в phpMyAdmin

[1] Введение


Чтобы разрешить преобразования, необходимо установить и настроить таблицу `column_info` и характерные директивы. Ознакомьтесь с разделом "Конфигурирование" чтобы разобраться как это сделать.
Вы можете применять различные преобразования к содержимому каждого поля. Преобразование затронет содержимое каждой области и преобразует его в соответствии с правилами, определенными для выбранного преобразования.
Скажем, к примеру, что имеется поле 'filename', которое содержит названия файлов. В обычном случае Вы увидели бы только имя файла. Но, используя преобразования можно преобразовать простое имя файла в гиперссылку, которая при щелчке будет открывать этот файл в новом окне браузера. Используя опции преобразования Вы можете также определить строки, добавляемые (перед или после) к строке или формат в котором будут сохранены результаты. Для общего краткого обзора всех доступных преобразований и их вариантов, можете обратиться к файлу <www.your-host.com>/<your-install-dir>/libraries/transformations/overview.php.


[2] Использование


Перейдите на страницу tbl_properties.inc.php. Затем кликните на "Change" (или иконке "Изменить") - после этого увидите три новых поля в конце линии. Они называются 'MIME-type', 'Browser transformation' и 'Transformation options'.

  • Поле 'MIME-type' это выпадающее поле. Вы имеете возможность оставить это поле пустым либо использовать 'auto' [эта опция пока не доступна]. Помните, что трансформации неактивны до тех пор, пока не задан MIME-type.
  • Поле 'Browser transformation' это тоже выпадающее поле. Вы можете выбрать необходимое общего количества предопределенных трансформаций. См. ниже как настроить собственное преобразование.
    Существуют глобальные (global transformations) и mimetype-ограниченные (mimetype-bound transformations) трансформации. Глобальные преобразования могут использоваться для разных типов данных. Mimetype-bound трансформации обычно оперируют определенным mime типом. Есть преобразования, которые оперируют основным mime-типом (например 'image'), который, скорее всего, имеет подтип, и есть также преобразования, которые оперируют определенным подтипом (например 'image/jpeg').
    Вы можете использовать преобразования на mimetypes, для которых функция не была определена. Нет никакой проверки на безопасность выбираемых данных, поэтому стоит отдельно позаботиться о проверке выводимых данных.
  • Поле 'Transformation options' представляет собой текстовое поле для ввода. Здесь Вы можете ввести функцию преобразования. Обычно преобразование работает с вариантами по умолчанию, но вообще неплохо просмотреть обзор, для того чтобы определиться какой вариант больше подходит.


При использовании ENUM/SET-Fields, необходимо разбить опции, используя формат 'a','b','c',...(NOTE THE MISSING BLANKS). В результате внутренние опции будут разобраны как массив, выбирая первое значение первого элемента в массиве, и т.д.
Если Вы хотите задать MIME кодировку, можно задать её в transformation_options. Используйте формат "'; charset=XXX'". Если вы используете трансформацию, для которой Вы можете задать 2 опции и Вы хотите добавить в конец кодировку, введите "'first parameter','second parameter','charset=us-ascii'". Вы можете, тем не менее, использовать значение по умолчанию для параметров: "'','','charset=us-ascii'".


[3] Файловая структура


Все mime-типы и их преобразования определяются через отдельные файлы, размещенные в директории 'libraries/transformations/'. Сделано это для того чтобы облегчить настройку и добавление новых преобразований.
Так как пользователь не может ввести собственные mime-типы, это гарантирует, что преобразования всегда сработают. Поэтому не имеет смысла преобразование к mime-типу, т.к. функция-преобразователь не знает, как оперировать.
Однако можно использовать пустые mime-типы и глобальные преобразования (global transformations), которые должны работать со многими mime-типами. Вы можете также использовать преобразования для различных mime-типов где они заданы, но при этом следует уделять внимание выбору преобразования вашего поля. Это осуществляется с помощью файла 'global.inc.php', который может быть включен любой другой функцией преобразования, и обеспечивает некоторые основные функции.

Всего 5 возможных имен файлов:
1. mime-тип+подтип преобразования:
[mimetype]_[subtype]__[transform].inc.php
Обратите внимание, что mime-тип и подтип разделены нижним подчеркиванием '_', которое не должно содержаться в их именах. Требования к имени функции/файла, точно такие же как в PHP.
Функция преобразования вызывается следующим образом: 'PMA_transform_[mimetype]_[subtype]__[transform]()'.
Пример:
text_html__formatted.inc.php PMA_transform_text_html__formatted()

2. mime-тип+подтип без задания функции преобразования
[mimetype]_[subtype].inc.php
Помните, что нельзя использовать символ нижнего подчеркивания '__' в имени файла. Не используйте спецсимволы в именах файлов, которые могут вызвать проблемы с файловой системой.
Никакой функции преобразования непосредственно в файле не определяется.
Пример:
text_plain.inc.php
(Нет функции)


3. mime-тип (без подтипа) без определенной функции преобразования
[mimetype].inc.php
Помните, что нельзя использовать символ нижнего подчеркивания '__' в имени файла. Не используйте спецсимволы в именах файлов, которые могут вызвать проблемы с файловой системой.
Никакая функция преобразования не определена непосредственно в файле.
Пример:
text.inc.php
(Нет функции)


4. глобальная функция преобразования (global transform function) без определенного mime-типа
global__[transform].inc.php
Функция преобразования будет вызываться: 'PMA_transform_global__[transform]()'.
Пример:
global__formatted
PMA_transform_global__formatted()


Возьмите за правило: используйте '_', чтобы разделить mime-тип и подтип, и '__', чтобы указать функцию преобразования. Все имена файлов, не содержащие '__' не отображаются в выпадающем списке функция преобразований.
Ознакомьтесь с файлом libraries/transformations/TEMPLATE для добавления ваших собственных функций преобразования.
Смотрите libraries/transformations/TEMPLATE_MIMETYPE для добавления mime-типа без функции преобразования. Также пишите описание функций в файлах локализации. Для каждой функции создается переменная $strTransformation_[filename without .inc.php]. С этой целью Вы можете использовать генератор шаблона (template generator), чтобы сгенерировать новые функции и соответствующие записи в файле локализации.

Чтобы создать новую функцию преобразования, см. libraries/transformations/template_generator.sh. Чтобы создать новый, пустой mime-тип см. libraries/transformations/template_generator_mimetype.sh
Функции преобразования всегда передаются три переменные:
1. $buffer - Содержит текст в столбце. Это - текст, который необходимо преобразовать.
2. $options - Содержит любые переданные пользователем опции функции преобразования как массив.
3. $meta - Содержит объект с полем информации о вашем столбце. Данные извлекаются с помощью функции mysql_fetch_field (). Это означает, что все свойства объекта, описанные на странице мануала доступны через данную переменную и могут использоваться, чтобы преобразовать область соответственно к unsigned/zerofill/not_null/... свойства. $meta->mimetype переменная содержит оригинальный MIME-тип поля (к примеру, 'text/plain', 'image/jpeg' и т.д.)