187 lines
7.8 KiB
Plaintext
187 lines
7.8 KiB
Plaintext
TRANSFORMATION USAGE (Garvin Hicking, <me@supergarv.de>)
|
|
====================
|
|
|
|
1. What are transformations?
|
|
----------------------------
|
|
|
|
You can apply different transformations to the contents of each field. The transformation will take the content
|
|
of each field and transform it with certain rules defined in the selected transformation.
|
|
|
|
Say you have a field 'filename' which contains a filename. Normale you would see in phpMyAdmin only this filename.
|
|
Using transformations you can transform that filename into a html link, so you can click inside of the phpMyAdmin
|
|
structure on the field's link and will see the file displayed in a new browser window. Using transformation
|
|
options you can also specify strings to append/prepend to a string or the format you want the output stored in.
|
|
|
|
For a general overview of all available transformations and their options, you can consult your
|
|
|
|
http://<your phpMyAdmin installation>/libraries/transformations/overview.php
|
|
|
|
|
|
2. How to use transformations
|
|
-----------------------------
|
|
|
|
Go to your tbl_properties.inc.php3 page (like reached through clicking on the 'properties' link for a table).
|
|
There you will see three new fields at the end of the line. They are called 'MIME-type', 'Browser transformation'
|
|
and 'Transformation options'.
|
|
|
|
|
|
* The field 'MIME-type' is a dropdown field. You have the options to leave that field empty or to use
|
|
'auto' [this feature is not yet available]. Please note that transformations are inactive as long as no
|
|
mimetype is selected.
|
|
|
|
|
|
* The field 'Browser transformation' is a dropdown field. You can choose from a hopefully growing amount
|
|
of pre-defined transformations. See below for information how to build your own transformation.
|
|
|
|
There are global transformations and mimetype-bound transformations. Global transformations can be used
|
|
for any mimetype. They will take the mimetype, if neccessary, into regard. Mimetype-bound transformations
|
|
usually only operate on a certain mimetype. There are transformations which operate on the main mimetype
|
|
(like 'image'), which will most likely take the subtype into regard, and those who only operate on a
|
|
specific subtype (like 'image/jpeg').
|
|
|
|
You can use transformations on mimetypes for which the function was not defined for. There is no security
|
|
check for you selected the right transformation, so take care of what the output will be like.
|
|
|
|
* The field 'Transformation options' is a free-type textfield. You have to enter transform-function specific
|
|
options here. Usually the transforms can operate with default options, but it is generally a good idea
|
|
to look up the overview to see which options are neccessary.
|
|
|
|
Much like the ENUM/SET-Fields, you have to split up several options using the format 'a','b','c',...
|
|
(NOTE THE MISSING BLANKS). This is because internally the options will be parsed as an array, leaving
|
|
the first value the first element in the array, and so forth.
|
|
|
|
If you want to specify a MIME charset you can define it in the transformation_options. You have to
|
|
put that outside of the pre-defined options of the specific mime-transform, as the last value of
|
|
the set. Use the format "'; charset=XXX'". If you use a transform, for which you can specify 2
|
|
options and you want to append a charset, enter "'first parameter','second parameter','charset=us-ascii'".
|
|
You can, however use the defaults for the parameters: "'','','charset=us-ascii'".
|
|
|
|
3. Basic file structure
|
|
------------------------
|
|
|
|
All mimetypes and their transformations are defined through single files in the directory
|
|
'libraries/transformations/'.
|
|
|
|
They are stored in files to ease up customization and easy adding of new transformations.
|
|
|
|
Because the user cannot enter own mimetypes, it is kept sure that transformations always work. It makes
|
|
no sense to apply a transformation to a mimetype, the transform-function doesn't know to handle.
|
|
|
|
One can, however, use empty mime-types and global transformations which should work for many mimetypes.
|
|
You can also use transforms on a different mimetype they where built for, but pay attention to option
|
|
usage as well as what the transformation does to your field.
|
|
|
|
All transformation functions are kept in the directory 'libraries/transformations'.
|
|
|
|
There is a basic file called 'global.inc.php3'. This function can be included by any other transform
|
|
function and provides some basic functions.
|
|
|
|
There are X possible file names:
|
|
|
|
3.1
|
|
A mimetype+subtype transform:
|
|
|
|
<mimetype>_<subtype>__<transform>.inc.php3
|
|
|
|
Please not that mimetype and subtype are seperated via '_', which shall not be contained in their names.
|
|
The transform function/filename may contain only characters which cause no problems in the file system as well
|
|
as the PHP function naming convention.
|
|
|
|
The transform function will the be called 'PMA_transform_<mimetype>_<subtype>__<transform>()'.
|
|
|
|
Example:
|
|
|
|
text_html__formatted.inc.php3
|
|
PMA_transform_text_html__formatted()
|
|
|
|
3.2
|
|
A mimetype (w/o subtype) transform:
|
|
|
|
<mimetype>__<transform>.inc.php3
|
|
|
|
Please note that there are no single '_' characters.
|
|
The transform function/filename may contain only characters which cause no problems in the file system as well
|
|
as the PHP function naming convention.
|
|
|
|
The transform function will the be called 'PMA_transform_<mimetype>__<transform>()'.
|
|
|
|
Example:
|
|
|
|
text__formatted.inc.php3
|
|
PMA_transform_text__formatted()
|
|
|
|
3.3
|
|
A mimetype+subtype without specific transform function
|
|
|
|
<mimetype>_<subtype>.inc.php3
|
|
|
|
Please note that there are no '__' characters in the filename. Do not use special characters in the filename
|
|
causing problems with the file system.
|
|
|
|
No transformation function is defined in the file itself.
|
|
|
|
Example:
|
|
|
|
text_plain.inc.php3
|
|
(No function)
|
|
|
|
3.4
|
|
A mimetype (w/o subtype) without specific transform function
|
|
|
|
<mimetype>.inc.php3
|
|
|
|
Please note that there are no '_' characters in the filename. Do not use special characters in the filename
|
|
causing problems with the file system.
|
|
|
|
No transformation function is defined in the file itself.
|
|
|
|
Example:
|
|
|
|
text.inc.php3
|
|
(No function)
|
|
|
|
3.5
|
|
A global transform function with no specific mimetype
|
|
|
|
global__<transform>.inc.php3
|
|
|
|
The transform function will the be called 'PMA_transform_global__<transform>()'.
|
|
|
|
Example:
|
|
|
|
global__formatted
|
|
PMA_transform_global__formatted()
|
|
|
|
|
|
So generally use '_' to split up mimetype and subtype, and '__' to provide a transform function.
|
|
|
|
All filenames containing no '__' in themselves are not shown as valid transform functions in the dropdown.
|
|
|
|
Please see the TEMPLATE file for adding your own transform function. See the TEMPLATE_MIMETYPE for adding
|
|
a mimetype without a transform function. Also note the introduction of a function description in the language
|
|
files. For each function a $strTransformation_<filename without .inc.php3> has to exist.
|
|
|
|
You can use the template generator (see 5) to generate new functions and entries in the language file.
|
|
|
|
|
|
4. FAQ
|
|
-------
|
|
|
|
4.1
|
|
Q: I can't enter my own mimetype! WTF is this feature then useful for?
|
|
|
|
A: Slow down :). Defining mimetypes is of no use, if you can't put transformations on them.
|
|
Otherwise you could just put a comment on the field. Because entering your own mimetype will
|
|
cause serious syntax checking issues and validation, this introduces a high-risk false-user-input
|
|
situation. Instead you have to initialize mimetypes using functions or empty mimetype definitions.
|
|
|
|
Plus, you have a whole overview of available mimetypes. Who knows all those mimetypes by heart so
|
|
he/she can enter it at will?
|
|
|
|
|
|
5. Template Generator
|
|
----------------------
|
|
|
|
To create a new transform function please see template_generator.sh.
|
|
|
|
To create a new, empty mimetype please see template_generator_mimetype.sh. |