From: <sy...@us...> - 2008-02-05 21:32:29
|
Update of /cvsroot/tikiwiki/tiki/lib/categories In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv5493/lib/categories Modified Files: Tag: BRANCH-1-10 categlib.php Log Message: [MOD]categ: API can do a OR or and AND between categories Index: categlib.php =================================================================== RCS file: /cvsroot/tikiwiki/tiki/lib/categories/categlib.php,v retrieving revision 1.113.2.15 retrieving revision 1.113.2.16 diff -u -d -r1.113.2.15 -r1.113.2.16 --- categlib.php 24 Jan 2008 15:26:17 -0000 1.113.2.15 +++ categlib.php 5 Feb 2008 21:32:15 -0000 1.113.2.16 @@ -1180,18 +1180,31 @@ $this->query($query, array('article', (int)$articleId, "tiki-read_article.php?articleId=$articleId", (int)$subId, 'submission')); } /* build the portion of list join if filter by category + * categId can be a simple value, a list of values=>or between categ, array('AND'=>list values) for an AND */ function getSqlJoin($categId, $objType, $sqlObj, &$fromSql, &$whereSql, &$bindVars) { - $fromSql .= ",`tiki_objects` co, `tiki_category_objects` cat "; + $fromSql .= ",`tiki_objects` co"; $whereSql .= " AND co.`type`=? AND co.`itemId`= $sqlObj "; - $whereSql .= " AND co.`objectId`=cat.`catObjectId` "; - if (is_array($categId)) { - $whereSql .= 'AND cat.`categId` IN ('.implode(',',array_fill(0,count($categId),'?')).')'; - $bind = array($objType); + $bind = array($objType); + if (is_array($categId['AND'])) { + $i = 0; + foreach ($categId['AND'] as $c) { + $fromSql .= ", `tiki_category_objects` tco$i "; + $whereSql .= " AND tco$i.`categId`= ? AND co.`objectId`=tco$i.`catObjectId` "; + ++$i; + } + $bind = array_merge($bind, $categId['AND']); + } elseif (is_array($categId)) { + $fromSql .= ", `tiki_category_objects` tco "; + $whereSql .= " AND co.`objectId`=tco.`catObjectId` "; + $whereSql .= 'AND tco.`categId` IN ('.implode(',',array_fill(0,count($categId),'?')).')'; $bind = array_merge($bind, $categId); } else { - $whereSql .= " AND cat.`categId`= ? "; - $bind = array( $objType, $categId); + echo "DDDD"; + $fromSql .= ", `tiki_category_objects` tco "; + $whereSql .= " AND co.`objectId`=tco.`catObjectId` "; + $whereSql .= " AND tco.`categId`= ? "; + $bind[] = $categId; } if (is_array($bindVars)) $bindVars = array_merge($bindVars, $bind); |