# # old_revision [52cc8b76f8fbcc16ced5ad79217a3bb0c3c0c7f9] # # patch "xarblocks/keywordsarticles.php" # from [3d204e7eee7780b8176befbd5d8c9197dbcbf8ec] # to [729e1bc08eaf13437fdd77cfe5115afc19e7a7a3] # ============================================================ --- xarblocks/keywordsarticles.php 3d204e7eee7780b8176befbd5d8c9197dbcbf8ec +++ xarblocks/keywordsarticles.php 729e1bc08eaf13437fdd77cfe5115afc19e7a7a3 @@ -94,25 +94,47 @@ function keywords_keywordsarticlesblock_ //for each keyword in keywords[] $items = array(); $data['items'] = array(); + + $keyword=array(); foreach ($keywords as $id => $word) { - //$item['id'] = $id; - //$item['keyword'] = xarVarPrepForDisplay($word); - // get the list of items to which this keyword is assigned - //TODO Make itemtype / modid dependant - $items = $items + xarModAPIFunc('keywords','user','getitems', - array('keyword' => $word, - 'itemtype' => $vars['ptid'])); + $keyword[] = 'xar_keyword =\'' .$word . '\''; } - //make itemid unique (worst ever code) - $tmp = array(); - $itemsB = array(); - foreach ($items as $id => $item) { - if (!in_array($item['itemid'], $tmp) ) { - $tmp[] = $item['itemid']; - $itemsB[] = $item; - } - } - foreach ($itemsB as $id => $item) { + $dbconn =& xarDBGetConn(); + $xartable =& xarDBGetTables(); + $keywordstable = $xartable['keywords']; + $wheres=implode(' OR ',$keyword); + $query='SELECT xar_itemid, xar_moduleid, xar_itemtype, COUNT(xar_id) FROM '. $keywordstable.' WHERE ' . $wheres . 'GROUP BY xar_itemid ORDER BY COUNT(xar_id) DESC, xar_itemid DESC'; + $result =& $dbconn->SelectLimit($query, 10,-1, array()); + $items=array(); + while (!$result->EOF) { + $item=array(); + list($item['itemid'], + $item['moduleid'], + $item['itemtype']) = $result->fields; + $result->MoveNext(); + $items[$item['itemid']] = $item; + } + $itemsB = $items; + $result->close(); +// foreach ($keywords as $id => $word) { +// //$item['id'] = $id; +// //$item['keyword'] = xarVarPrepForDisplay($word); +// // get the list of items to which this keyword is assigned +// //TODO Make itemtype / modid dependant +// $items = $items + xarModAPIFunc('keywords','user','getitems', +// array('keyword' => $word, +// 'itemtype' => $vars['ptid'])); +// } +// //make itemid unique (worst ever code) +// $tmp = array(); +// $itemsB = array(); +// foreach ($items as $id => $item) { +// if (!in_array($item['itemid'], $tmp) ) { +// $tmp[] = $item['itemid']; +// $itemsB[] = $item; +// } +// } + foreach ($itemsB as $itemid => $item) { if ($data['itemid'] != $item['itemid'] || $data['modid'] != $item['moduleid'] || $data['itemtype'] != $item['itemtype']) { if ( $articles = xarModAPIFunc('articles','user','get', @@ -122,7 +144,6 @@ function keywords_keywordsarticlesblock_ //if the related article already exist do not add it if (stristr($vars['status'], $articles['status'])) { $data['items'][] = array( - 'keyword' => $item['keyword'], 'modid' => $item['moduleid'], 'itemtype' => $item['itemtype'], 'itemid' => $item['itemid'],