Exemplo n.º 1
0
/**
* Notes about the spotlight :
* If you have restricted topics on index page (in fact if the program must completly respect the permissions) and if
* the news you have selected to be viewed in the spotlight can't be viewed by someone then the spotlight is not visible !
* This is available in the classical and in the tabbed view.
* But if you have uncheck the option "Restrict topics on index page", then the news will be visible but users without
* permissions will be rejected when they will try to read news content.
*
* Also, if you have selected a tabbed view and wanted to use the Spotlight but did not choosed a story, then the block
* will switch to the "most recent news" mode (the visible news will be searched according to the permissions)
*/
function b_news_top_show($options)
{
    global $xoopsConfig;
    include_once XOOPS_ROOT_PATH . '/modules/news/include/functions.php';
    $myts =& MyTextSanitizer::getInstance();
    $block = array();
    $displayname = getmoduleoption('displayname');
    $tabskin = getmoduleoption('tabskin');
    if (file_exists(XOOPS_ROOT_PATH . '/modules/news/language/' . $xoopsConfig['language'] . '/main.php')) {
        include_once XOOPS_ROOT_PATH . '/modules/news/language/' . $xoopsConfig['language'] . '/main.php';
    } else {
        include_once XOOPS_ROOT_PATH . '/modules/news/language/english/main.php';
    }
    $block['displayview'] = $options[8];
    $block['tabskin'] = $tabskin;
    $block['imagesurl'] = XOOPS_URL . '/modules/news/images/';
    $restricted = getmoduleoption('restrictindex');
    $dateformat = getmoduleoption('dateformat');
    $infotips = getmoduleoption('infotips');
    $newsrating = getmoduleoption('ratenews');
    if ($dateformat == '') {
        $dateformat = 's';
    }
    // Is the spotlight visible ?
    if ($options[4] == 1 && $restricted && $options[5] == 0) {
        $permittedtopics = MygetItemIds();
        $permstory = new NewsStory($options[6]);
        if (!in_array($permstory->topicid(), $permittedtopics)) {
            $usespotlight = false;
            $topicstitles = array();
        }
        unset($permstory);
        $options[4] == 0;
    }
    // Try to see what tabs are visibles (if we are in restricted view of course)
    if ($options[8] == 2 && $restricted && $options[14] != 0) {
        $topics2 = array();
        $permittedtopics = MygetItemIds();
        $topics = array_slice($options, 14);
        foreach ($topics as $onetopic) {
            if (in_array($onetopic, $permittedtopics)) {
                $topics2[] = $onetopic;
            }
        }
        $before = array_slice($options, 0, 14);
        $options = array_merge($before, $topics2);
    }
    if ($options[8] == 2) {
        $defcolors[1] = array('#F90', '#FFFFFF', '#F90', '#C60', '#999');
        // Bar Style
        $defcolors[2] = array('#F90', '#FFFFFF', '#F90', '#AAA', '#666');
        // Beveled
        $defcolors[3] = array('#F90', '#FFFFFF', '', '#789', '#789');
        // Classic
        $defcolors[4] = array('#F90', '#FFFFFF', '', '', '');
        // Folders
        $defcolors[5] = array('#F90', '#FFFFFF', '#CCC', 'inherit', '#999');
        // MacOs
        $defcolors[6] = array('#F90', '#FFFFFF', '#FFF', '#DDD', '#999');
        // Plain
        $defcolors[7] = array('#F90', '#FFFFFF', '', '', '');
        // Rounded
        $defcolors[8] = array('#F90', '#FFFFFF', '#F90', '#930', '#C60');
        // ZDnet
        $myurl = $_SERVER["PHP_SELF"];
        if (substr($myurl, strlen($myurl) - 1, 1) == '/') {
            $myurl .= "index.php";
        }
        $myurl .= '?';
        foreach ($_GET as $key => $value) {
            if ($key != 'NewsTab') {
                $myurl .= $key . '=' . $value . '&';
            }
        }
        $block['url'] = $myurl;
        $tabscount = 0;
        $usespotlight = false;
        if (isset($_GET['NewsTab'])) {
            $_SESSION['NewsTab'] = intval($_GET['NewsTab']);
            $currenttab = intval($_GET['NewsTab']);
        } elseif (isset($_SESSION['NewsTab'])) {
            $currenttab = intval($_SESSION['NewsTab']);
        } else {
            $currenttab = 0;
        }
        $tmpstory = new NewsStory();
        $topic = new NewsTopic();
        $topicstitles = array();
        if ($options[4] == 1) {
            // Spotlight enabled
            $topicstitles[0] = _MB_NEWS_SPOTLIGHT_TITLE;
            $tabscount++;
            $usespotlight = true;
        }
        if ($options[5] == 0 && $restricted) {
            // Use a specific news and we are in restricted mode
            $permittedtopics = MygetItemIds();
            $permstory = new NewsStory($options[6]);
            if (!in_array($permstory->topicid(), $permittedtopics)) {
                $usespotlight = false;
                $topicstitles = array();
            }
            unset($permstory);
        }
        $block['use_spotlight'] = $usespotlight;
        if (isset($options[14]) && $options[14] != 0) {
            // Topic to use
            $topics = array_slice($options, 14);
            $tabscount += count($topics);
            $topicstitles = $topic->getTopicTitleFromId($topics, $topicstitles);
        }
        $tabs = array();
        if ($usespotlight) {
            $tabs[] = array('id' => 0, 'title' => _MB_NEWS_SPOTLIGHT_TITLE);
        }
        if (count($topics) > 0) {
            foreach ($topics as $onetopic) {
                if (isset($topicstitles[$onetopic])) {
                    $tabs[] = array('id' => $onetopic, 'title' => $topicstitles[$onetopic]['title'], 'picture' => $topicstitles[$onetopic]['picture']);
                }
            }
        }
        $block['tabs'] = $tabs;
        $block['current_is_spotlight'] = false;
        $block['current_tab'] = $currenttab;
        $block['use_rating'] = $newsrating;
        if ($currenttab == 0 && $usespotlight) {
            // Spotlight or not ?
            $block['current_is_spotlight'] = true;
            if ($options[5] == 0 && $options[6] == 0) {
                // If the story to use was no selected then we switch to the "recent news" mode.
                $options[5] = 1;
            }
            if ($options[5] == 0) {
                // Use a specific news
                $tmpstory->NewsStory(intval($options[6]));
            } else {
                // Use the most recent news
                $stories = array();
                $stories = $tmpstory->getAllPublished(1, 0, $restricted, 0, 1, true, $options[0]);
                if (count($stories) > 0) {
                    $firststory = $stories[0];
                    $tmpstory->NewsStory($firststory->storyid());
                } else {
                    $block['use_spotlight'] = false;
                }
            }
            $spotlight = array();
            $spotlight['title'] = $tmpstory->title();
            if ($options[7] != "") {
                $spotlight['image'] = sprintf("<a href='%s'>%s</a>", XOOPS_URL . '/modules/news/article.php?storyid=' . $tmpstory->storyid(), $myts->displayTarea($options[7], $tmpstory->nohtml));
            }
            $spotlight['text'] = $tmpstory->hometext();
            $spotlight['id'] = $tmpstory->storyid();
            $spotlight['date'] = formatTimestamp($tmpstory->published(), $dateformat);
            $spotlight['hits'] = $tmpstory->counter();
            $spotlight['rating'] = number_format($tmpstory->rating(), 2);
            $spotlight['votes'] = $tmpstory->votes();
            if (strlen(xoops_trim($tmpstory->bodytext())) > 0) {
                $spotlight['read_more'] = true;
            } else {
                $spotlight['read_more'] = false;
            }
            $spotlight['readmore'] = sprintf("<a href='%s'>%s</a>", XOOPS_URL . '/modules/news/article.php?storyid=' . $tmpstory->storyid(), _MB_READMORE);
            $spotlight['title_with_link'] = sprintf("<a href='%s'>%s</a>", XOOPS_URL . '/modules/news/article.php?storyid=' . $tmpstory->storyid(), $tmpstory->title());
            if ($tmpstory->votes() == 1) {
                $spotlight['number_votes'] = _NW_ONEVOTE;
            } else {
                $spotlight['number_votes'] = sprintf(_NW_NUMVOTES, $tmpstory->votes());
            }
            $spotlight['votes_with_text'] = sprintf(_NW_NUMVOTES, $tmpstory->votes());
            $spotlight['topicid'] = $tmpstory->topicid();
            $spotlight['topic_title'] = $tmpstory->topic_title();
            // Added, topic's image and description
            $spotlight['topic_image'] = XOOPS_URL . '/modules/news/images/topics/' . $tmpstory->topic_imgurl();
            $spotlight['topic_description'] = $myts->displayTarea($tmpstory->topic_description, 1);
            if ($displayname != 3) {
                $spotlight['author'] = sprintf("%s %s", _POSTEDBY, $tmpstory->uname());
                $spotlight['author_with_link'] = sprintf("%s <a href='%s'>%s</a>", _POSTEDBY, XOOPS_URL . '/userinfo.php?uid=' . $tmpstory->uid(), $tmpstory->uname());
            } else {
                $spotlight['author'] = '';
                $spotlight['author_with_link'] = '';
            }
            $spotlight['author_id'] = $tmpstory->uid();
            // Create the summary table under the spotlight text
            if (isset($options[14]) && $options[14] == 0) {
                // Use all topics
                $stories = $tmpstory->getAllPublished($options[1], 0, $restricted, 0, 1, true, $options[0]);
            } else {
                // Use some topics
                $topics = array_slice($options, 14);
                $stories = $tmpstory->getAllPublished($options[1], 0, $restricted, $topics, 1, true, $options[0]);
            }
            if (count($stories) > 0) {
                foreach ($stories as $key => $story) {
                    $news = array();
                    $title = $story->title();
                    if (strlen($title) > $options[2]) {
                        $title = xoops_substr($title, 0, $options[2] + 3);
                    }
                    $news['title'] = $title;
                    $news['id'] = $story->storyid();
                    $news['date'] = formatTimestamp($story->published(), $dateformat);
                    $news['hits'] = $story->counter();
                    $news['rating'] = number_format($story->rating(), 2);
                    $news['votes'] = $story->votes();
                    $news['topicid'] = $story->topicid();
                    $news['topic_title'] = $story->topic_title();
                    $news['topic_color'] = '#' . $myts->displayTarea($story->topic_color);
                    if ($displayname != 3) {
                        $news['author'] = sprintf("%s %s", _POSTEDBY, $story->uname());
                    } else {
                        $news['author'] = '';
                    }
                    if ($options[3] > 0) {
                        $news['teaser'] = xoops_substr(strip_tags($story->hometext()), 0, $options[3] + 3);
                    } else {
                        $news['teaser'] = "";
                    }
                    if ($infotips > 0) {
                        $news['infotips'] = ' title="' . xoops_substr(strip_tags($story->hometext()), 0, $infotips) . '"';
                    } else {
                        $news['infotips'] = '';
                    }
                    $news['title_with_link'] = sprintf("<a href='%s'%s>%s</a>", XOOPS_URL . '/modules/news/article.php?storyid=' . $story->storyid(), $news['infotips'], $title);
                    $spotlight['news'][] = $news;
                }
            }
            $block['spotlight'] = $spotlight;
        } else {
            if ($tabscount > 0) {
                $topics = array_slice($options, 14);
                $thetopic = $currenttab;
                $stories = $tmpstory->getAllPublished($options[1], 0, $restricted, $thetopic, 1, true, $options[0]);
                $topic->getTopic($thetopic);
                // Added, topic's image and description
                $block['topic_image'] = XOOPS_URL . '/modules/news/images/topics/' . $topic->topic_imgurl();
                $block['topic_description'] = $topic->topic_description();
                $smallheader = array();
                $stats = $topic->getTopicMiniStats($thetopic);
                $smallheader[] = sprintf("<a href='%s'>%s</a>", XOOPS_URL . '/modules/news/index.php?storytopic=' . $thetopic, _MB_READMORE);
                $smallheader[] = sprintf("%u %s", $stats['count'], _NW_ARTICLES);
                $smallheader[] = sprintf("%u %s", $stats['reads'], _READS);
                if (count($stories) > 0) {
                    foreach ($stories as $key => $story) {
                        $news = array();
                        $title = $story->title();
                        if (strlen($title) > $options[2]) {
                            $title = xoops_substr(strip_tags($title), 0, $options[2] + 3);
                        }
                        if ($options[7] != "") {
                            $news['image'] = sprintf("<a href='%s'>%s</a>", XOOPS_URL . '/modules/news/article.php?storyid=' . $story->storyid(), $myts->displayTarea($options[7], $story->nohtml));
                        }
                        if ($options[3] > 0) {
                            $news['text'] = xoops_substr(strip_tags($story->hometext()), 0, $options[3] + 3);
                        } else {
                            $news['text'] = '';
                        }
                        if ($story->votes() == 1) {
                            $news['number_votes'] = _NW_ONEVOTE;
                        } else {
                            $news['number_votes'] = sprintf(_NW_NUMVOTES, $story->votes());
                        }
                        $topic->getTopic($story->topicid());
                        if ($infotips > 0) {
                            $news['infotips'] = ' title="' . xoops_substr(strip_tags($story->hometext()), 0, $infotips) . '"';
                        } else {
                            $news['infotips'] = '';
                        }
                        $news['title'] = sprintf("<a href='%s' %s>%s</a>", XOOPS_URL . '/modules/news/article.php?storyid=' . $story->storyid(), $news['infotips'], $title);
                        $news['id'] = $story->storyid();
                        $news['date'] = formatTimestamp($story->published(), $dateformat);
                        $news['hits'] = $story->counter();
                        $news['rating'] = number_format($story->rating(), 2);
                        $news['votes'] = $story->votes();
                        $news['topicid'] = $story->topicid();
                        $news['topic_title'] = $story->topic_title();
                        $news['topic_color'] = '#' . $topic->topic_color();
                        if ($displayname != 3) {
                            $news['author'] = sprintf("%s %s", _POSTEDBY, $story->uname());
                        } else {
                            $news['author'] = '';
                        }
                        $news['title_with_link'] = sprintf("<a href='%s'%s>%s</a>", XOOPS_URL . '/modules/news/article.php?storyid=' . $story->storyid(), $news['infotips'], $title);
                        $block['news'][] = $news;
                    }
                    $block['smallheader'] = $smallheader;
                }
            }
        }
        $block['lang_on'] = _ON;
        // on
        $block['lang_reads'] = _READS;
        // reads
        // Default values
        $block['color1'] = $defcolors[$tabskin][0];
        $block['color2'] = $defcolors[$tabskin][1];
        $block['color3'] = $defcolors[$tabskin][2];
        $block['color4'] = $defcolors[$tabskin][3];
        $block['color5'] = $defcolors[$tabskin][4];
        if (xoops_trim($options[9]) != '') {
            $block['color1'] = $options[9];
        }
        if (xoops_trim($options[10]) != '') {
            $block['color2'] = $options[10];
        }
        if (xoops_trim($options[11]) != '') {
            $block['color3'] = $options[11];
        }
        if (xoops_trim($options[12]) != '') {
            $block['color4'] = $options[12];
        }
        if (xoops_trim($options[13]) != '') {
            $block['color5'] = $options[13];
        }
    } else {
        // ************************ Classical view **************************************************************************************************************
        $tmpstory = new NewsStory();
        if (isset($options[14]) && $options[14] == 0) {
            $stories = $tmpstory->getAllPublished($options[1], 0, $restricted, 0, 1, true, $options[0]);
        } else {
            $topics = array_slice($options, 14);
            $stories = $tmpstory->getAllPublished($options[1], 0, $restricted, $topics, 1, true, $options[0]);
        }
        if (!count($stories)) {
            return '';
        }
        $topic = new NewsTopic();
        foreach ($stories as $key => $story) {
            $news = array();
            $title = $story->title();
            if (strlen($title) > $options[2]) {
                $title = xoops_substr($title, 0, $options[2] + 3);
            }
            $topic->getTopic($story->topicid());
            //if spotlight is enabled and this is either the first article or the selected one
            if ($options[5] == 0 && $options[4] == 1 && ($options[6] > 0 && $options[6] == $story->storyid() || $options[6] == 0 && $key == 0)) {
                $spotlight = array();
                $visible = true;
                if ($restricted) {
                    $permittedtopics = MygetItemIds();
                    if (!in_array($story->topicid(), $permittedtopics)) {
                        $visible = false;
                    }
                }
                if ($visible) {
                    $spotlight['title'] = $title;
                    if ($options[7] != "") {
                        $spotlight['image'] = sprintf("<a href='%s'>%s</a>", XOOPS_URL . '/modules/news/article.php?storyid=' . $story->storyid(), $myts->displayTarea($options[7], $story->nohtml));
                    }
                    $spotlight['text'] = $story->hometext();
                    $spotlight['id'] = $story->storyid();
                    $spotlight['date'] = formatTimestamp($story->published(), $dateformat);
                    $spotlight['hits'] = $story->counter();
                    $spotlight['rating'] = $story->rating();
                    $spotlight['votes'] = $story->votes();
                    $spotlight['topicid'] = $story->topicid();
                    $spotlight['topic_title'] = $story->topic_title();
                    $spotlight['topic_color'] = '#' . $topic->topic_color();
                    // Added, topic's image and description
                    $spotlight['topic_image'] = XOOPS_URL . '/modules/news/images/topics/' . $story->topic_imgurl();
                    $spotlight['topic_description'] = $myts->displayTarea($story->topic_description, 1);
                    if (strlen(xoops_trim($story->bodytext())) > 0) {
                        $spotlight['read_more'] = true;
                    } else {
                        $spotlight['read_more'] = false;
                    }
                    if ($displayname != 3) {
                        $spotlight['author'] = sprintf("%s %s", _POSTEDBY, $story->uname());
                    } else {
                        $spotlight['author'] = '';
                    }
                }
                $block['spotlight'] = $spotlight;
            } else {
                $news['title'] = $title;
                $news['id'] = $story->storyid();
                $news['date'] = formatTimestamp($story->published(), $dateformat);
                $news['hits'] = $story->counter();
                $news['rating'] = $story->rating();
                $news['votes'] = $story->votes();
                $news['topicid'] = $story->topicid();
                $news['topic_title'] = $story->topic_title();
                $news['topic_color'] = '#' . $topic->topic_color();
                if ($displayname != 3) {
                    $news['author'] = sprintf("%s %s", _POSTEDBY, $story->uname());
                } else {
                    $news['author'] = '';
                }
                if ($options[3] > 0) {
                    $news['teaser'] = xoops_substr(strip_tags($story->hometext()), 0, $options[3] + 3);
                    $news['infotips'] = '';
                } else {
                    $news['teaser'] = "";
                    if ($infotips > 0) {
                        $news['infotips'] = ' title="' . xoops_substr(strip_tags($story->hometext()), 0, $infotips) . '"';
                    } else {
                        $news['infotips'] = '';
                    }
                }
                $block['stories'][] = $news;
            }
        }
        // If spotlight article was not in the fetched stories
        if (!isset($spotlight) && $options[4]) {
            $block['use_spotlight'] = true;
            $visible = true;
            if ($options[5] == 0 && $restricted) {
                // Use a specific news and we are in restricted mode
                $permittedtopics = MygetItemIds();
                $permstory = new NewsStory($options[6]);
                if (!in_array($permstory->topicid(), $permittedtopics)) {
                    $visible = false;
                }
                unset($permstory);
            }
            if ($options[5] == 0) {
                // Use a specific news
                if ($visible) {
                    $spotlightArticle = new NewsStory($options[6]);
                } else {
                    $block['use_spotlight'] = false;
                }
            } else {
                // Use the most recent news
                $stories = array();
                $stories = $tmpstory->getAllPublished(1, 0, $restricted, 0, 1, true, $options[0]);
                if (count($stories) > 0) {
                    $firststory = $stories[0];
                    $spotlightArticle = new NewsStory($firststory->storyid());
                } else {
                    $block['use_spotlight'] = false;
                }
            }
            if ($block['use_spotlight'] == true) {
                $spotlight = array();
                $topic->getTopic($spotlightArticle->storyid());
                $spotlight['title'] = xoops_substr($spotlightArticle->title(), 0, $options[2] - 1);
                if ($options[7] != "") {
                    $spotlight['image'] = sprintf("<a href='%s'>%s</a>", XOOPS_URL . '/modules/news/article.php?storyid=' . $spotlightArticle->storyid(), $myts->displayTarea($options[7], $spotlightArticle->nohtml));
                }
                $spotlight['topicid'] = $spotlightArticle->topicid();
                $spotlight['topic_title'] = $spotlightArticle->topic_title();
                $spotlight['topic_color'] = '#' . $topic->topic_color();
                $spotlight['text'] = $spotlightArticle->hometext();
                $spotlight['id'] = $spotlightArticle->storyid();
                $spotlight['date'] = formatTimestamp($spotlightArticle->published(), $dateformat);
                $spotlight['hits'] = $spotlightArticle->counter();
                $spotlight['rating'] = $spotlightArticle->rating();
                $spotlight['votes'] = $spotlightArticle->votes();
                // Added, topic's image and description
                $spotlight['topic_image'] = XOOPS_URL . '/modules/news/images/topics/' . $spotlightArticle->topic_imgurl();
                $spotlight['topic_description'] = $myts->displayTarea($spotlightArticle->topic_description, 1);
                if ($displayname != 3) {
                    $spotlight['author'] = sprintf("%s %s", _POSTEDBY, $spotlightArticle->uname());
                } else {
                    $spotlight['author'] = '';
                }
                if (strlen(xoops_trim($spotlightArticle->bodytext())) > 0) {
                    $spotlight['read_more'] = true;
                } else {
                    $spotlight['read_more'] = false;
                }
                $block['spotlight'] = $spotlight;
            }
        }
    }
    $block['lang_read_more'] = _MB_READMORE;
    // Read More...
    $block['lang_orderby'] = _MB_NEWS_ORDER;
    // "Order By"
    $block['lang_orderby_date'] = _MB_NEWS_DATE;
    // Published date
    $block['lang_orderby_hits'] = _MB_NEWS_HITS;
    // Number of Hits
    $block['lang_orderby_rating'] = _MB_NEWS_RATE;
    // Rating
    $block['sort'] = $options[0];
    // "published" or "counter" or "rating"
    return $block;
}
Exemplo n.º 2
0
 /**
  * Returns a random number of news
  */
 function getRandomNews($limit = 0, $start = 0, $checkRight = false, $topic = 0, $ihome = 0, $order = 'published', $topic_frontpage = false)
 {
     $db =& Database::getInstance();
     $ret = $rand_keys = $ret3 = array();
     $sql = "SELECT storyid FROM " . $db->prefix("stories") . " WHERE (published > 0 AND published <= " . time() . ") AND (expired = 0 OR expired > " . time() . ")";
     if ($topic != 0) {
         if (!is_array($topic)) {
             if ($checkRight) {
                 $topics = MygetItemIds('news_view');
                 if (!in_array($topic, $topics)) {
                     return null;
                 } else {
                     $sql .= " AND topicid=" . intval($topic) . " AND (ihome=1 OR ihome=0)";
                 }
             } else {
                 $sql .= " AND topicid=" . intval($topic) . " AND (ihome=1 OR ihome=0)";
             }
         } else {
             if (count($topic) > 0) {
                 $sql .= " AND topicid IN (" . implode(',', $topic) . ")";
             } else {
                 return null;
             }
         }
     } else {
         if ($checkRight) {
             $topics = MygetItemIds('news_view');
             if (count($topics) > 0) {
                 $topics = implode(',', $topics);
                 $sql .= " AND topicid IN (" . $topics . ")";
             } else {
                 return null;
             }
         }
         if (intval($ihome) == 0) {
             $sql .= " AND ihome=0";
         }
     }
     if ($topic_frontpage) {
         $sql .= " AND t.topic_frontpage=1";
     }
     $sql .= " ORDER BY {$order} DESC";
     $result = $db->query($sql);
     while ($myrow = $db->fetchArray($result)) {
         $ret[] = $myrow['storyid'];
     }
     if (count($ret)) {
         srand((double) microtime() * 10000000);
         $rand_keys = array_rand($ret, $limit);
         if ($limit > 1) {
             for ($i = 0; $i < $limit; $i++) {
                 $onestory = $ret[$rand_keys[$i]];
                 $ret3[] = new NewsStory($onestory);
             }
         } else {
             $ret3[] = new NewsStory($ret[$rand_keys]);
         }
     }
     return $ret3;
 }
Exemplo n.º 3
0
 function &getTopicsList($frontpage = false, $perms = false)
 {
     $sql = 'SELECT topic_id, topic_pid, topic_title, topic_color FROM ' . $this->table . " WHERE 1 ";
     if ($frontpage) {
         $sql .= " AND topic_frontpage=1";
     }
     if ($perms) {
         $topicsids = array();
         $topicsids = MygetItemIds();
         if (count($topicsids) == 0) {
             return '';
         }
         $topics = implode(',', $topicsids);
         $sql .= " AND topic_id IN (" . $topics . ")";
     }
     $result = $this->db->query($sql);
     $ret = array();
     $myts =& MyTextSanitizer::getInstance();
     while ($myrow = $this->db->fetchArray($result)) {
         $ret[$myrow['topic_id']] = array('title' => $myts->displayTarea($myrow['topic_title']), 'pid' => $myrow['topic_pid'], 'color' => $myrow['topic_color']);
     }
     return $ret;
 }