Créer une requête SQL qui ne doit pas passer par JoomFish

f_1213193574Joomfish, est la solution la plus populaire sous Joomla pour gérer l’internationalisation d’un site.

Pour récupérer des données localisés, JoomFish va modifier les reqûetes SQL qui sont envoyés à la base de données.

Néanmoins, il peut arriver, par exemple pour une question de performance, mais éventuellement pour des raisons fonctionnelles, que l’on ne veuille pas que JoomFish modifie une requête SQL et donc les données retournées.

C’est tout à fait possible sous Joomfish si on observe les méthodes de la classe JFDatabase. Voici par exemple la méthode load Object (le fonctionnement est le même pour LoadObjectList, LoadResult) :

/**
* This global function loads the first row of a query into
* an object
*
* If an object is passed to this function, the returned row is
* bound to the existing elements of <var>object</var>.
* If <var>object</var> has a value of null, then all of the
* returned query fields returned in the object.
* @param string The SQL query
* @param object The address of variable
*/

function loadObject( $translate=true, $language=null ) {
global $mosConfig_lang, $_JOOMFISH_MANAGER;
if( $language===null) $language = $mosConfig_lang;

$object  = $this-&gt;_db-&gt;loadObject( );
if( $translate &amp;&amp; isset($_JOOMFISH_MANAGER)) {
$doTranslate=false;
$tables =$this-&gt;_getRefTables();
foreach ($tables["fieldTablePairs"] as $i=&gt;$table) {
if ($this-&gt;translatedContentAvailable($table)) {
$doTranslate=true;
break;
}
}
if ( $doTranslate) {
JoomFish::translate( $object,
$this-&gt;_getTableName(),
$language,
$this-&gt;_getRefTables());
}
}
return $object;
}

Comme vous pouvez le voir, passez la valeur « false » à la variable « translate » suffit à ne pas passer par JoomFish.