rendered paste body# # 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'],