function wysiwyg_search($func_vars)
{
    extract($func_vars, EXTR_PREFIX_ALL, 'func');
    static $search_sql = FALSE;
    if (function_exists('search_make_sql_part')) {
        if ($search_sql === FALSE) {
            $search_sql = search_make_sql_part($func_search_url_array, $func_search_match, array('`content`'));
        }
    } else {
        $search_sql = '1=1';
    }
    // how many lines of excerpt we want to have at most
    $max_excerpt_num = $func_default_max_excerpt;
    $divider = ".";
    $result = false;
    // we have to get 'content' instead of 'text', because strip_tags() dosen't remove scripting well.
    // scripting will be removed later on automatically
    $table = TABLE_PREFIX . "mod_wysiwyg";
    $query = $func_database->query("\n\t\tSELECT content\n\t\tFROM {$table}\n\t\tWHERE section_id='{$func_section_id}'\n\t");
    if ($query->numRows() > 0) {
        if ($res = $query->fetchRow()) {
            $mod_vars = array('page_link' => $func_page_link, 'page_link_target' => "#wb_section_{$func_section_id}", 'page_title' => $func_page_title, 'page_description' => $func_page_description, 'page_modified_when' => $func_page_modified_when, 'page_modified_by' => $func_page_modified_by, 'text' => $res['content'] . $divider, 'max_excerpt_num' => $max_excerpt_num);
            if (print_excerpt2($mod_vars, $func_vars)) {
                $result = true;
            }
        }
    }
    return $result;
}
Example #2
0
function news_search($func_vars)
{
    extract($func_vars, EXTR_PREFIX_ALL, 'func');
    static $search_sql1 = FALSE;
    static $search_sql2 = FALSE;
    static $search_sql3 = FALSE;
    if (function_exists('search_make_sql_part')) {
        if ($search_sql1 === FALSE) {
            $search_sql1 = search_make_sql_part($func_search_url_array, $func_search_match, array('`title`', '`content_short`', '`content_long`'));
        }
        if ($search_sql2 === FALSE) {
            $search_sql2 = search_make_sql_part($func_search_url_array, $func_search_match, array('`title`', '`comment`'));
        }
        if ($search_sql3 === FALSE) {
            $search_sql3 = search_make_sql_part($func_search_url_array, $func_search_match, array('g.`title`'));
        }
    } else {
        $search_sql1 = $search_sql2 = $search_sql3 = '1=1';
    }
    // how many lines of excerpt we want to have at most
    $max_excerpt_num = $func_default_max_excerpt;
    // do we want excerpt from comments?
    $excerpt_from_comments = true;
    // TODO: make this configurable
    $divider = ".";
    $result = false;
    if ($func_time_limit > 0) {
        $stop_time = time() + $func_time_limit;
    }
    // fetch all active news-posts (from active groups) in this section.
    $t = time();
    $table_posts = TABLE_PREFIX . "mod_news_posts";
    $table_groups = TABLE_PREFIX . "mod_news_groups";
    $query = $func_database->query("\r\n\t\tSELECT p.post_id, p.title, p.content_short, p.content_long, p.link, p.posted_when, p.posted_by\r\n\t\tFROM {$table_posts} AS p LEFT OUTER JOIN {$table_groups} AS g ON p.group_id = g.group_id\r\n\t\tWHERE p.section_id='{$func_section_id}' AND p.active = '1' AND ( g.active IS NULL OR g.active = '1' )\r\n\t\tAND (published_when = '0' OR published_when <= {$t}) AND (published_until = 0 OR published_until >= {$t})\r\n\t\tORDER BY p.post_id DESC\r\n\t");
    // now call print_excerpt() for every single post
    if ($query->numRows() > 0) {
        while ($res = $query->fetchRow()) {
            $text = '';
            // break out if stop-time is reached
            if (isset($stop_time) && time() > $stop_time) {
                return $result;
            }
            // fetch content
            $postquery = $func_database->query("\r\n\t\t\t\tSELECT title, content_short, content_long\r\n\t\t\t\tFROM {$table_posts}\r\n\t\t\t\tWHERE post_id='{$res['post_id']}' AND {$search_sql1}\r\n\t\t\t");
            if ($postquery->numRows() > 0) {
                if ($p_res = $postquery->fetchRow()) {
                    $text = $p_res['title'] . $divider . $p_res['content_short'] . $divider . $p_res['content_long'] . $divider;
                }
            }
            // fetch comments and add to $text
            if ($excerpt_from_comments) {
                $table = TABLE_PREFIX . "mod_news_comments";
                $commentquery = $func_database->query("\r\n\t\t\t\t\tSELECT title, comment\r\n\t\t\t\t\tFROM {$table}\r\n\t\t\t\t\tWHERE post_id='{$res['post_id']}' AND {$search_sql2}\r\n\t\t\t\t\tORDER BY commented_when ASC\r\n\t\t\t\t");
                if ($commentquery->numRows() > 0) {
                    while ($c_res = $commentquery->fetchRow()) {
                        // break out if stop-time is reached
                        if (isset($stop_time) && time() > $stop_time) {
                            return $result;
                        }
                        $text .= $c_res['title'] . $divider . $c_res['comment'] . $divider;
                    }
                }
            }
            if ($text) {
                $mod_vars = array('page_link' => $res['link'], 'page_link_target' => "", 'page_title' => $func_page_title, 'page_description' => $res['title'], 'page_modified_when' => $res['posted_when'], 'page_modified_by' => $res['posted_by'], 'text' => $text, 'max_excerpt_num' => $max_excerpt_num);
                if (print_excerpt2($mod_vars, $func_vars)) {
                    $result = true;
                }
            }
        }
    }
    // now fetch group-titles - ignore those without (active) postings
    $table_groups = TABLE_PREFIX . "mod_news_groups";
    $table_posts = TABLE_PREFIX . "mod_news_posts";
    $query = $func_database->query("\r\n\t\tSELECT DISTINCT g.title, g.group_id\r\n\t\tFROM {$table_groups} AS g INNER JOIN {$table_posts} AS p ON g.group_id = p.group_id\r\n\t\tWHERE g.section_id='{$func_section_id}' AND g.active = '1' AND p.active = '1' AND {$search_sql3}\r\n\t");
    // now call print_excerpt() for every single group, too
    if ($query->numRows() > 0) {
        while ($res = $query->fetchRow()) {
            // break out if stop-time is reached
            if (isset($stop_time) && time() > $stop_time) {
                return $result;
            }
            $mod_vars = array('page_link' => $func_page_link, 'page_link_target' => "&g=" . $res['group_id'], 'page_title' => $func_page_title, 'page_description' => $func_page_description, 'page_modified_when' => $func_page_modified_when, 'page_modified_by' => $func_page_modified_by, 'text' => $res['title'] . $divider, 'max_excerpt_num' => $max_excerpt_num);
            if (print_excerpt2($mod_vars, $func_vars)) {
                $result = true;
            }
        }
    }
    return $result;
}