joomfish 2 soucis joomfish 2 class.php on line 136

Réduire
X
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • joomfish 2 soucis joomfish 2 class.php on line 136

    Bonjour,

    J'ai recherché un peu sur tous les forums : en vain. Mon serveur est compatible, mais ce message d'erreur s'affiche sur le site après activation et installation de toutes les extensions de joomfish :
    Warning: Invalid argument supplied for foreach() in /opt/lampp/htdocs/web/versol/components/com_joomfish/helpers/joomfish.class.php on line 136

    Après plusieurs essais et de nouvelles intallations, je bloque...

    Si qqun a eu ce soucis et l'a résolu...

    Merci...

  • #2
    autre version

    Bon j'ai fini par réussir une installation stable avec la release de la version de joomfish beta 2 P, la migration de joomla 1.5.3 vers 1.5.4 (impeccable ça) et après modification du plugin jfrouteur (lang-xx par xx) ça fonctionne... Juste un message d'erreur mais non bloquant.

    Sauf que pour info, il faut après réinstallation de joomfish systématiquement supprimer les fichiers manuellement, les tables etc... sous peine de retrouver un message d'erreur systèmatique.

    Donc Joomfish toujours en version beta : mais reste l'extension la plus complète à mon sens pour la gestion multilingue...

    Commentaire


    • #3
      Urgent erreur:

      Notice: Undefined index: in c:\program files\easyphp1-8\www\site\components\com_joomfish\helpers\joomfis h.class.php on line 201

      Notice: Undefined index: in c:\program files\easyphp1-8\www\site\components\com_joomfish\helpers\joomfis h.class.php on line 217

      <?php
      defined( 'JPATH_BASE' ) or die( 'Direct Access to this location is not allowed.' );

      global $mambelfishWarnedAdmin;
      $mambelfishWarnedAdmin=false;
      class MambelFish{
      function warnAdmin(){
      global $adminEmail,$mambelfishWarnedAdmin;
      $privateWarning=false;
      if (!$mambelfishWarnedAdmin) {
      $bt = debug_backtrace();
      if (count($bt)>=2){
      $subject = "Deprecated use of Mambelfish Translation";
      $content = "Deprecated use of Mambelfish. Request URL : ".$_SERVER['REQUEST_URI']."\n\n";
      $content .= "Please contact the author of this component/module/mambot with the details in this message.\n\n";
      $content .= "In the meantime the following function reference can be commented out and translation should not be affected.\n";
      $content .= "File : ".basename(dirname($bt[1]["file"]))."\\".basename($bt[1]["file"])."\n";
      $content .= "Line : ".$bt[1]["line"]."\n";
      $content .= "Function : ".$bt[1]["function"]."\n\n";
      if ( $privateWarning) {
      global $my ;
      $db =& JFactory::getDBO();

      require_once( mosMainFrame::getBasePath() .'/components/com_messages/messages.class.php' );

      $query = "SELECT id"
      . "\n FROM #__users"
      . "\n WHERE sendEmail = 1"
      ;
      $db->setQuery( $query );
      $users = $db->loadResultArray(false);
      foreach ($users as $user_id) {
      $msg = new mosMessage( $db );
      // send message from admin
      $msg->send( $user_id, $user_id, $subject, $content);
      }
      }

      else {
      $content = str_replace("\n","<br/>",$content);
      echo "$content";
      }
      }
      }
      $mambelfishWarnedAdmin=true;
      }
      function translate( $content, $reference_table, $language, $tableArray=array()) { MambelFish::warnAdmin(); return $content;}
      function translateList( $rows, $reference_table, $language , $tableArray) { MambelFish::warnAdmin(); return $rows;}
      }


      class JoomFish {

      function translateListCached ($rows, $language , $tableArray) {
      JoomFish::translateList($rows, $language , $tableArray);
      return $rows;
      }

      /**
      * Translate a list
      **/
      function translateList( &$rows, $language , $tableArray) {
      if (!isset($rows) || !is_array($rows)) return $rows;

      global $_JOOMFISH_MANAGER;

      $registry =& JFactory::getConfig();
      $defaultLang = $registry->getValue("config.defaultlang");


      $db =& JFactory::getDBO();
      $querySQL = $db->_sql;

      // do not try to translate if I have no fields!!!
      if (!isset($tableArray) || count($tableArray)==0) {
      //echo "$tableArray $querySQL<br>";
      return;
      }
      // If I write content in non-default language then this skips the translation!
      //if($language == $defaultLang) return $rows;
      $rowsLanguage = $language;
      if (count($rows)>0){
      foreach ($tableArray["fieldTablePairs"] as $key=>$value){
      $reftable = $tableArray["fieldTablePairs"][$key];
      $alias = $tableArray["tableAliases"][$reftable];

      // If there is not translated content for this table then skip it!
      if (!$db->translatedContentAvailable($reftable)) continue;

      // get primary key for tablename
      $idkey = $_JOOMFISH_MANAGER->getPrimaryKey( trim($reftable) );

      // I actually need to check the primary key against the alias list!

      for ($i=0;$i<$tableArray["fieldCount"];$i++){
      if (!array_key_exists($i,$tableArray["fieldTableAliasData"])) continue;
      // look for fields from the correct table with the correct name
      if (($tableArray["fieldTableAliasData"][$i]["tableName"]==$reftable) &&
      ($tableArray["fieldTableAliasData"][$i]["fieldName"]==$idkey)
      && ($tableArray["fieldTableAliasData"][$i]["tableNameAlias"]==$alias)){
      $idkey=$tableArray["fieldTableAliasData"][$i]["fieldNameAlias"];
      break;
      }
      }


      // NASTY KLUDGE TO DEAL WITH SQL CONSTRUCTION IN contact.php, weblinks.php where multiple tables to be translated all use "id" which gets dropped! etc.
      if ($reftable=='categories' && isset($content->catid) && $content->catid>0) {
      $idkey = "catid";
      }
      if ($reftable=='sections' && count($rows)>0 && isset($content->sectionid) && $content->sectionid>0) {
      $idkey = "sectionid";
      }
      $idstring = "";
      $idlist = array(); // temp variable to make sure all ids in idstring are unique (for neatness more than performance)
      foreach( array_keys( $rows) as $key ) {
      $content =& $rows[$key];


      if (isset($content->$idkey) && !in_array($content->$idkey,$idlist)) {
      //print ($idkey ." ".$content->$idkey." list<br>");
      $idstring .= (strlen( $idstring)>0?",":""). $content->$idkey;
      $idlist[] = $content->$idkey;
      }
      }
      if (strlen( $idstring)==0) continue;

      JoomFish::translateListWithIDs( $rows, $idstring, $reftable, $language ,$idkey, $tableArray, $querySQL);
      }
      }
      }

      /**
      * Function to translate a section object
      */
      function translateListWithIDs( &$rows, $ids, $reference_table, $language, $refTablePrimaryKey="id", & $tableArray, $querySQL, $allowfallback=true )
      {
      //print " translateListWithIDs for ids=$ids refTablePrimaryKey=$refTablePrimaryKey<br>" ;
      $config =& JFactory::getConfig();
      $debug = $config->get("dbprefix");

      global $_JOOMFISH_MANAGER;
      $registry =& JFactory::getConfig();
      $defaultLang = $registry->getValue("config.defaultlang");
      $db =& JFactory::getDBO();

      // setup Joomfish pluginds
      $dispatcher =& JDispatcher::getInstance();
      JPluginHelper::importPlugin('joomfish');

      if ($reference_table == "languages" || $reference_table == "jf_content" ) {
      return; // I can't translate myself ;-)

      }

      $results = $dispatcher->trigger('onBeforeTranslation', array (&$rows, &$ids, $reference_table, $language, $refTablePrimaryKey, & $tableArray, $querySQL, $allowfallback));

      // find reference table alias
      $reftableAlias = $reference_table;
      for ($i=0;$i<$tableArray["fieldCount"];$i++){
      if (!array_key_exists($i,$tableArray["fieldTableAliasData"])) continue;
      if ($tableArray["fieldTableAliasData"][$i]["tableName"]==$reference_table &&
      $tableArray["fieldTableAliasData"][$i]["fieldNameAlias"]==$refTablePrimaryKey ){
      $reftableAlias = $tableArray["fieldTableAliasData"][$i]["tableNameAlias"];
      break;
      }
      }

      // NASTY KLUDGE TO DEAL WITH SQL CONSTRUCTION IN contact.php, weblinks.php where multiple tables to be translated all use "id" which gets dropped! etc.
      $currentRow = current($rows);
      // must not check on catid>0 since this would be uncategorised items
      if ($reference_table=='categories' && count($rows)>0 && isset($currentRow->catid) ) {
      $reftableAlias = $tableArray["tableAliases"]["categories"];
      }
      if ($reference_table=='sections' && count($rows)>0 && isset($currentRow->sectionid)) {
      $reftableAlias = $tableArray["tableAliases"]["sections"];
      }

      //print " translateListWithIDs( ".count($rows). ", ids=$ids, reftab=$reference_table, $language, primkey = $refTablePrimaryKey )<br>";
      if ($debug) {
      echo "<p><strong>JoomFish debug (new):</strong><br>"
      . "reference_table=$reference_table<br>"
      . "$refTablePrimaryKey IN($ids)<br>"
      . "language=$language<br>"
      .(count($rows)>0? "class=" .get_class(current($rows)):"")
      . "</p>";
      }

      static $languages;
      if (!isset($languages)){
      $jfm = JoomFishManager::getInstance();
      $languages = $jfm->getLanguagesIndexedByCode();
      }

      // process fallback language
      $fallbackrows=array();
      $idarray = explode(",",$ids);
      $fallbackids=array();
      if ($languages[$language]->fallback_code==""){
      $allowfallback=false;
      }
      else {
      $fallbacklanguage = $languages[$language]->fallback_code;
      if (!array_key_exists($fallbacklanguage, $languages)){
      $allowfallback=false;
      }
      }

      if (isset($ids) && $reference_table!='') {
      $user =& JFactory::getUser();
      $published = ($user->gid<21)?"\n AND jf_content.published=1":"";
      //$published = "\n AND jf_content.published=1";
      $sql = "SELECT jf_content.reference_field, jf_content.value, jf_content.reference_id, jf_content.original_value "
      . "\nFROM #__jf_content AS jf_content"
      . "\nWHERE jf_content.language_id=".$languages[$language]->id
      . $published
      . "\n AND jf_content.reference_id IN($ids)"
      . "\n AND jf_content.reference_table='$reference_table'"
      ;
      $db->setQuery( $sql );
      $translations = $db->loadObjectList('',false);
      if (count($translations)>0){
      $fieldmap = null;
      foreach( array_keys( $rows) as $key ) {
      $row_to_translate =& $rows[$key];
      $rowTranslationExists=false;
      //print_r ($row_to_translate); print"<br>";
      if( isset( $row_to_translate->$refTablePrimaryKey ) ) {
      foreach ($translations as $row){
      if ($row->reference_id!=$row_to_translate->$refTablePrimaryKey) continue;
      // TODO - consider building array for refFields. Some queries may have multiple aliases e.g. SELECT a.*, a.field as fieldalias
      $refField = $row->reference_field;


      $fieldmatch=false; // This is used to confirm the field is from the correct table
      for ($i=0;$i<$tableArray["fieldCount"];$i++){
      if (!array_key_exists($i,$tableArray["fieldTableAliasData"])) continue;
      // look for fields from the correct table with the correct name

      Commentaire

      Annonce

      Réduire
      1 sur 2 < >

      C'est [Réglé] et on n'en parle plus ?

      A quoi ça sert ?
      La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

      Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

      Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
      Comment ajouter la mention [Réglé] à votre discussion ?
      1 - Aller sur votre discussion et éditer votre premier message :


      2 - Cliquer sur la liste déroulante Préfixe.

      3 - Choisir le préfixe [Réglé].


      4 - Et voilà… votre discussion est désormais identifiée comme réglée.

      2 sur 2 < >

      Assistance au forum - Outil de publication d'infos de votre site

      Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

      Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

      Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

      UTILISER À VOS PROPRES RISQUES :
      L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

      Problèmes connus :
      FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

      Installation :

      1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

      Archive zip : https://github.com/AFUJ/FPA/zipball/master

      2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

      3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

      4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

      5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

      6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
      et remplacer www. votresite .com par votre nom de domaine


      Exemples:
      Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
      Télécharger le script fpa-fr.php dans: /public_html/
      Pour executer le script: http://www..com/fpa-fr.php

      Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
      Télécharger le script fpa-fr.php dans: /public_html/cms/
      Pour executer le script: http://www..com/cms/fpa-fr.php

      En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

      Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
      Voir plus
      Voir moins
      Travaille ...
      X