--- similarterms.module.old 2007-09-08 05:40:10.000000000 +0800 +++ similarterms.module 2007-10-25 23:35:54.000000000 +0800 @@ -77,18 +77,41 @@ function similarterms_list($vid = NULL, if (!empty($terms)) { //past events $pasts = array(); - $result = db_query( - 'SELECT n.nid, n.title, COUNT(n.nid) AS ncount - FROM {node} n - INNER JOIN {term_node} tn ON n.nid = tn.nid - WHERE tn.tid IN (%s) - AND n.nid != %d - AND n.status = 1 - AND n.moderate = 0 - GROUP BY n.nid, n.title, n.created - ORDER BY ncount DESC, n.created DESC - LIMIT %d' - , $terms, $nid, $count); + + if (function_exists('i18n_get_lang')) { + $lang = i18n_get_lang(); + $result = db_query( + 'SELECT n.nid, n.title, COUNT(n.nid) AS ncount FROM ( + SELECT n.nid, n.title, n.created, i18n.language + FROM {node} n + LEFT OUTER JOIN {i18n_node} i18n ON n.nid = i18n.nid + INNER JOIN {term_node} tn ON n.nid = tn.nid + WHERE tn.tid IN (%s) + AND n.nid != %d + AND n.status = 1 + AND n.moderate = 0 + )as n + WHERE n.language = \'%s\' or n.language IS NULL + GROUP BY n.nid, n.title, n.created + ORDER BY ncount DESC, n.created DESC + LIMIT %d' + , $terms, $nid, $lang, $count); + } + else { + $result = db_query( + 'SELECT n.nid, n.title, COUNT(n.nid) AS ncount + FROM {node} n + INNER JOIN {term_node} tn ON n.nid = tn.nid + WHERE tn.tid IN (%s) + AND n.nid != %d + AND n.status = 1 + AND n.moderate = 0 + GROUP BY n.nid, n.title, n.created + ORDER BY ncount DESC, n.created DESC + LIMIT %d' + , $terms, $nid, $count); + } + while ($r = db_fetch_object($result)) { $nodes[] = $r; }