warning: Invalid argument supplied for foreach() in /home/vhosts/domainname.com/httpdocs/modules/i18n/translation/translation.module on line 858.

On translated pages this error occurs, i have had a look at the mentioned file but I'm not a coder so i have no clue what the problem might be, who can be of assistance?

Thanks in advance!!

Comments

mcload’s picture

Title: warning: Invalid argument supplied for foreach() in /home/vhosts/merelvanderknoop.com/httpdocs/modules/i18n/translation/translat » warning: Invalid argument supplied for foreach()
danon1981’s picture

This is the piece of code from the mentioned file by the way.

 /**
	*	Get translations
  *
	* @param $params
  *   array of parameters
	* @param $getall
  *   TRUE to get the also node itself
	*/
function translation_node_get_translations($params, $getall = TRUE) {
  foreach($params as $field => $value) {
    $conds[] = "b.$field = '%s'";
    $values[] = $value;
  }

I think I solved the error by putting:

$params = array();

In front of the first mentioned $params in the file

But now I'm getting the same error for line 895

This is the code from around line 895:

/**
 * Returns node type for nid
 */
function translation_get_node_type($nid) {
  return db_result(db_query('SELECT type FROM {node} WHERE nid=%d', $nid));
}

Help needed !!

danon1981’s picture

When I use the default Garland theme it seems it doesn't produce an error.

anyone???

danon1981’s picture

Ok found out that the problem must have to do with the different way of displaying the translation links in my self made template

This is de code from page.tpl.php

<?php foreach(civicspace_language_links($node->nid,$language) as $lang => $link): ?>
    <li <?php print ($lang == $language) ? 'self' : $lang; ?>"> <span><?php print $link; ?></span></li>
    <?php endforeach; ?>

This is the code form my template.php


/* Language display */
function civicspace_language_links($nid,$language) {
  $q = $_GET['q'];
  $links = array();
  if (function_exists('i18n_supported_languages')) {
    $languages = i18n_supported_languages();
    if (preg_match('#^node/\d+$#',$q)) {
      $translations = translation_node_get_translations($nid);
      foreach ($languages as $lang => $longname) {
          if ($trnode = $translations[$lang]) {
            $links[$lang]= l($longname, $lang.'/node/'.$trnode->nid, NULL, NULL, NULL, FALSE, TRUE);
          }
          else {
            $links[$lang]= $longname;
          }
       }
    }
    else {
      foreach ($languages as $lang => $longname) {
        if ($lang != $language) {
          $links[$lang]= l($longname, $lang.'/'.$q, NULL, NULL, NULL, FALSE, TRUE);
        }
        else $links[$lang] = $longname;
      }
    }
  }
  return $links;
}

I gonna keep searching and trying!!
Really hope someone can help me out :)

danon1981’s picture

Status: Active » Closed (fixed)
danon1981’s picture

Issue summary: View changes

took ou the domainname to clean up google profile