<p>Hi Alex,</p>
<p>Sorry for posting top post, but I'm just reading up on some mails on my phone while waiting for the intermission to end.</p>
<p>Just an idea, while reading your description of how to use the transformation classes : why don't you provide a factory pattern to instantiate/create the classes. Everything like checking if the include file exists, including it and preparing/instantiating can be done in the factory.</p>

<p>Also consider creating an interface for every type of class (auth, export/import, transformation, ...) and implement it in every derived class (f.e. ExportSql, ExportXml could implement a ExportInterface)</p>
<p>Kind regards,<br>
Dieter Adriaenssens.</p>
<div class="gmail_quote">Op 28 jun. 2012 18:08 schreef "Alex Marin" <<a href="mailto:alex.ukf@gmail.com">alex.ukf@gmail.com</a>> het volgende:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Chanaka,<br>
<br>
On Thu, Jun 28, 2012 at 5:04 AM, Chanaka Dharmarathna<br>
<<a href="mailto:pe.chanaka.ck@gmail.com">pe.chanaka.ck@gmail.com</a>> wrote:<br>
> I'm going to look into getting PMA_mimeDefaultFunction() function inside<br>
> PMA_DisplayResults class. (currently it is under core.lib.php)<br>
> I think it is possible to use this function inside that class, and call<br>
> directly ($this->_mimeDefaultFunction()) instead of using additional string<br>
> to store method name. (current way)<br>
><br>
> Then the default function for the mime transformation is inside a class.<br>
> But the other existing transformations functions are still global functions.<br>
> If that is not good (feels not good), those also should convert to classes.<br>
<br>
I've seen that the PMA_mimeDefaultFunction is only currently used in<br>
DisplayResults.class.php, so I think it's a good idea to move it there.<br>
<br>
> And if other transformations converted to classes, in which way I can create<br>
> objects of those classes.<br>
> Should I need to use string to store the class name and then use it as<br>
> belows.<br>
><br>
> $class_name = 'TestClass';<br>
> $ob = new $class_name($params);<br>
><br>
> It is very helpful for me if you can share your suggestions.<br>
<br>
As general info, to use a transformation plugin, you have to include it and<br>
then instantiate it. For example, if you want to use Text_Plain_Sql:<br>
  include_once 'libraries/plugins/transformations/Text_Plain_Sql.class.php';<br>
  $plugin_manager = null; // Still working on this, so you can use null for now<br>
  $sql_transf = new Text_Plain_Sql($plugin_manager);<br>
Then, you can use the actual transformation by calling:<br>
  $sql_transf->applyTransformation();<br>
<br>
In DisplayResults.class.php, inside _getTableBody(), there is an init:<br>
[2158] $default_function = 'PMA_mimeDefaultFunction'; // default_function<br>
Then, this variable is passed as an argument to several functions along<br>
the way:<br>
  _getDataCellForNumericColumns,<br>
  _getDataCellForBlobColumns,<br>
  _getDataCellForGeometryColumns,<br>
  _getDataCellForNonNumericAndNonBlobColumns,<br>
  _getRowData,<br>
  _addClass<br>
  _handleNonPrintableContents<br>
<br>
Some of the functions only pass it further, while others use actually use it.<br>
I replaced the use of the PMA_transformation_[FILENAME]() with the<br>
use of $transformation_plugin->applyTransformation() and kept the same<br>
arguments.<br>
So I had to pass an instance of the transformation class as an argument<br>
($transformation_plugin), but my problem was that in some cases I had to use<br>
the applyTransformations method, while in others, I had to use the default<br>
function ( PMA_mimeDefaultFunction() ). Therefore, where needed, I set the<br>
argument $transformation_plugin = $default_function, and, in the above<br>
mentioned methods I checked and used accordingly, something similar to:<br>
$result = ($transformation_plugin != $default_function<br>
    ? $transformation_plugin->applyTransformation(<br>
        $data,<br>
        $transform_options,<br>
        $meta<br>
    )<br>
    : $default_function($data)<br>
)<br>
<br>
Hope that helps. I will write some wikis for all of the plugins, but I thought<br>
I should first finish the whole system (the plugin managers).<br>
<br>
--<br>
Alex<br>
<br>
------------------------------------------------------------------------------<br>
Live Security Virtual Conference<br>
Exclusive live event will cover all the ways today's security and<br>
threat landscape has changed and how IT managers can respond. Discussions<br>
will include endpoint security, mobile security and the latest in malware<br>
threats. <a href="http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/" target="_blank">http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/</a><br>
_______________________________________________<br>
Phpmyadmin-devel mailing list<br>
<a href="mailto:Phpmyadmin-devel@lists.sourceforge.net">Phpmyadmin-devel@lists.sourceforge.net</a><br>
<a href="https://lists.sourceforge.net/lists/listinfo/phpmyadmin-devel" target="_blank">https://lists.sourceforge.net/lists/listinfo/phpmyadmin-devel</a><br>
</blockquote></div>