123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <title>Transformations — phpMyAdmin 4.9.10 documentation</title>
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
- <link rel="stylesheet" href="_static/classic.css" type="text/css" />
-
- <script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
- <script src="_static/jquery.js"></script>
- <script src="_static/underscore.js"></script>
- <script src="_static/doctools.js"></script>
-
- <link rel="index" title="Index" href="genindex.html" />
- <link rel="search" title="Search" href="search.html" />
- <link rel="copyright" title="Copyright" href="copyright.html" />
- <link rel="next" title="Bookmarks" href="bookmarks.html" />
- <link rel="prev" title="Two-factor authentication" href="two_factor.html" />
- </head><body>
- <div class="related" role="navigation" aria-label="related navigation">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="bookmarks.html" title="Bookmarks"
- accesskey="N">next</a> |</li>
- <li class="right" >
- <a href="two_factor.html" title="Two-factor authentication"
- accesskey="P">previous</a> |</li>
- <li class="nav-item nav-item-0"><a href="index.html">phpMyAdmin 4.9.10 documentation</a> »</li>
- <li class="nav-item nav-item-1"><a href="user.html" accesskey="U">User Guide</a> »</li>
- <li class="nav-item nav-item-this"><a href="">Transformations</a></li>
- </ul>
- </div>
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body" role="main">
-
- <div class="section" id="transformations">
- <span id="id1"></span><h1>Transformations<a class="headerlink" href="#transformations" title="Permalink to this headline">¶</a></h1>
- <div class="admonition note">
- <p class="admonition-title">Note</p>
- <p>You need to have configured the <a class="reference internal" href="setup.html#linked-tables"><span class="std std-ref">phpMyAdmin configuration storage</span></a> for using transformations
- feature.</p>
- </div>
- <div class="section" id="introduction">
- <span id="transformationsintro"></span><h2>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h2>
- <p>To enable transformations, you have to setup the <code class="docutils literal notranslate"><span class="pre">column_info</span></code>
- table and the proper directives. Please see the <a class="reference internal" href="config.html#config"><span class="std std-ref">Configuration</span></a> on how to do so.</p>
- <p>You can apply different transformations to the contents of each
- column. The transformation will take the content of each column and
- transform it with certain rules defined in the selected
- transformation.</p>
- <p>Say you have a column ‘filename’ which contains a filename. Normally
- 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 column’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.</p>
- <p>For a general overview of all available transformations and their
- options, you can consult your <em><www.your-host.com>/<your-install-
- dir>/transformation_overview.php</em> installation.</p>
- <p>For a tutorial on how to effectively use transformations, see our
- <a class="reference external" href="https://www.phpmyadmin.net/docs/">Link section</a> on the
- official phpMyAdmin homepage.</p>
- </div>
- <div class="section" id="usage">
- <span id="transformationshowto"></span><h2>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h2>
- <p>Go to your <em>tbl_structure.php</em> page (i.e. reached through clicking on
- the ‘Structure’ link for a table). There click on “Change” (or change
- icon) and there you will see three new fields at the end of the line.
- They are called ‘MIME-type’, ‘Browser transformation’ and
- ‘Transformation options’.</p>
- <ul class="simple">
- <li><p>The field ‘MIME-type’ is a drop-down field. Select the MIME-type that
- corresponds to the column’s contents. Please note that transformations
- are inactive as long as no MIME-type is selected.</p></li>
- <li><p>The field ‘Browser transformation’ is a drop-down field. You can
- choose from a hopefully growing amount of pre-defined transformations.
- See below for information on 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 necessary, 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.</p></li>
- <li><p>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 necessary.
- 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 character set 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 character
- set, enter “‘first parameter’,’second parameter’,’charset=us-ascii’”.
- You can, however use the defaults for the parameters: “’’,’’,’charset
- =us-ascii’”. The default options can be configured using
- <span class="target" id="index-0"></span><a class="reference internal" href="config.html#cfg_DefaultTransformations"><code class="xref config config-option docutils literal notranslate"><span class="pre">$cfg['DefaultTransformations']</span></code></a></p></li>
- </ul>
- </div>
- <div class="section" id="file-structure">
- <span id="transformationsfiles"></span><h2>File structure<a class="headerlink" href="#file-structure" title="Permalink to this headline">¶</a></h2>
- <p>All specific transformations for mimetypes are defined through class
- files in the directory ‘libraries/classes/Plugins/Transformations/’. Each of
- them extends a certain transformation abstract class declared in
- libraries/classes/Plugins/Transformations/Abs.</p>
- <p>They are stored in files to ease up customization and easy adding of
- new transformations.</p>
- <p>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.</p>
- <p>There is a file called ‘<em>transformations.lib.php</em>’ that provides some
- basic functions which can be included by any other transform function.</p>
- <p>The file name convention is <code class="docutils literal notranslate"><span class="pre">[Mimetype]_[Subtype]_[Transformation</span>
- <span class="pre">Name].class.php</span></code>, while the abtract class that it extends has the
- name <code class="docutils literal notranslate"><span class="pre">[Transformation</span> <span class="pre">Name]TransformationsPlugin</span></code>. All of the
- methods that have to be implemented by a transformations plug-in are:</p>
- <ol class="arabic simple">
- <li><p>getMIMEType() and getMIMESubtype() in the main class;</p></li>
- <li><p>getName(), getInfo() and applyTransformation() in the abstract class
- it extends.</p></li>
- </ol>
- <p>The getMIMEType(), getMIMESubtype() and getName() methods return the
- name of the MIME type, MIME Subtype and transformation accordingly.
- getInfo() returns the transformation’s description and possible
- options it may receive and applyTransformation() is the method that
- does the actual work of the transformation plug-in.</p>
- <p>Please see the libraries/classes/Plugins/Transformations/TEMPLATE and
- libraries/classes/Plugins/Transformations/TEMPLATE_ABSTRACT files for adding
- your own transformation plug-in. You can also generate a new
- transformation plug-in (with or without the abstract transformation
- class), by using
- <code class="file docutils literal notranslate"><span class="pre">scripts/transformations_generator_plugin.sh</span></code> or
- <code class="file docutils literal notranslate"><span class="pre">scripts/transformations_generator_main_class.sh</span></code>.</p>
- <p>The applyTransformation() method always gets passed three variables:</p>
- <ol class="arabic simple">
- <li><p><strong>$buffer</strong> - Contains the text inside of the column. This is the
- text, you want to transform.</p></li>
- <li><p><strong>$options</strong> - Contains any user-passed options to a transform
- function as an array.</p></li>
- <li><p><strong>$meta</strong> - Contains an object with information about your column. The
- data is drawn from the output of the <a class="reference external" href="https://www.php.net/mysql_fetch_field">mysql_fetch_field()</a> function. This means, all
- object properties described on the <a class="reference external" href="https://www.php.net/mysql_fetch_field">manual page</a> are available in this
- variable and can be used to transform a column accordingly to
- unsigned/zerofill/not_null/… properties. The $meta->mimetype
- variable contains the original MIME-type of the column (i.e.
- ‘text/plain’, ‘image/jpeg’ etc.)</p></li>
- </ol>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- </div>
- </div>
- <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
- <div class="sphinxsidebarwrapper">
- <h3><a href="index.html">Table of Contents</a></h3>
- <ul>
- <li><a class="reference internal" href="#">Transformations</a><ul>
- <li><a class="reference internal" href="#introduction">Introduction</a></li>
- <li><a class="reference internal" href="#usage">Usage</a></li>
- <li><a class="reference internal" href="#file-structure">File structure</a></li>
- </ul>
- </li>
- </ul>
- <h4>Previous topic</h4>
- <p class="topless"><a href="two_factor.html"
- title="previous chapter">Two-factor authentication</a></p>
- <h4>Next topic</h4>
- <p class="topless"><a href="bookmarks.html"
- title="next chapter">Bookmarks</a></p>
- <div role="note" aria-label="source link">
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="_sources/transformations.rst.txt"
- rel="nofollow">Show Source</a></li>
- </ul>
- </div>
- <div id="searchbox" style="display: none" role="search">
- <h3 id="searchlabel">Quick search</h3>
- <div class="searchformwrapper">
- <form class="search" action="search.html" method="get">
- <input type="text" name="q" aria-labelledby="searchlabel" />
- <input type="submit" value="Go" />
- </form>
- </div>
- </div>
- <script>$('#searchbox').show(0);</script>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- <div class="related" role="navigation" aria-label="related navigation">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="bookmarks.html" title="Bookmarks"
- >next</a> |</li>
- <li class="right" >
- <a href="two_factor.html" title="Two-factor authentication"
- >previous</a> |</li>
- <li class="nav-item nav-item-0"><a href="index.html">phpMyAdmin 4.9.10 documentation</a> »</li>
- <li class="nav-item nav-item-1"><a href="user.html" >User Guide</a> »</li>
- <li class="nav-item nav-item-this"><a href="">Transformations</a></li>
- </ul>
- </div>
- <div class="footer" role="contentinfo">
- © <a href="copyright.html">Copyright</a> 2012 - 2018, The phpMyAdmin devel team.
- Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.3.
- </div>
- </body>
- </html>
|