[drupal-devel] [bug] possible logic error in taxonomy_node_save
killes
drupal-devel at drupal.org
Mon Mar 14 19:35:40 UTC 2005
Issue status update for http://drupal.org/node/18861
Project: Drupal
Version: cvs
Component: taxonomy.module
Category: bug reports
Priority: normal
Assigned to: Anonymous
Reported by: nkurz
Updated by: killes at www.drop.org
-Status: active
+Status: patch
Well, spotted. I don't think that the current code will corrupt the
database, but it should get fixed nevertheless.
killes at www.drop.org
Previous comments:
------------------------------------------------------------------------
March 14, 2005 - 03:34 : nkurz
I'm brand new to Drupal and really rusty with PHP, but I just did a CVS
checkout and was looking through taxonomy.module wondering how I could
go about adding weights to taxonomy terms
(http://drupal.org/node/18824) and think I've found a small logic error
in taxonomy_node_save(). Or else I'm misunderstanding some really
simple PHP. In any case, it seemed worth reporting so that someone
familiar with the module could at least take a quick look.
function taxonomy_node_save($nid, $terms) {
taxonomy_node_delete($nid);
if (is_array($terms)) {
foreach ($terms as $term) {
if (is_array($term)) {
foreach ($term as $tid) {
if ($tid) {
db_query('INSERT INTO {term_node} (nid, tid) VALUES (%d,
%d)', $nid, $tid);
}
}
}
if ($term) {
db_query('INSERT INTO {term_node} (nid, tid) VALUES (%d, %d)',
$nid, $term);
}
}
}
}
Walkthrough: taxonomy_node_save is passed an integer $nid and an array
$terms. Each array element in $terms is either an array of tid's or a
single integer tid. If the element is an array of tid's, we insert each
(nid, tid) pair into {term_node}. But then after doing this, it looks
like we also try to insert (nid,ARRAY) into {term_node} after we finish
the foreach loop.
Is this perhaps supposed to be 'else if ($term)'? Or is 'if(ARRAY)'
false in PHP? Apologies for making a bad first impression if I'm just
dead wrong here.
------------------------------------------------------------------------
March 14, 2005 - 03:47 : nkurz
Attachment: http://drupal.org/files/issues/taxonomy_node_save.patch (504 bytes)
Here's the trivial untested patch in case that makes anything clearer.
More information about the drupal-devel
mailing list