Skip to content
Snippets Groups Projects
knowledgebase.inc.php 3.67 KiB
Newer Older
  • Learn to ignore specific revisions
  • Jared Hancock's avatar
    Jared Hancock committed
    <?php
    if(!defined('OSTCLIENTINC')) die('Access Denied');
    
    Jared Hancock's avatar
    Jared Hancock committed
    ?>
    
    <h1><?php echo __('Frequently Asked Questions');?></h1>
    
    <form action="index.php" method="get" id="kb-search">
    
    Jared Hancock's avatar
    Jared Hancock committed
        <input type="hidden" name="a" value="search">
    
        <input id="query" type="text" size="20" name="q" value="<?php echo Format::htmlchars($_REQUEST['q']); ?>">
    
            <input id="searchSubmit" type="submit" value="<?php echo __('Search');?>">
    
        <div class="sidebar">
    
            <select name="topicId" id="topic-id">
    
                <option value="">&mdash; <?php echo __('All Help Topics');?> &mdash;</option>
    
    foreach (Topic::objects()
            ->annotate(array('faqs_count'=>Aggregate::count('faqs')))
            ->filter(array('faqs_count__gt'=>0))
        as $t) {
                    echo sprintf('<option value="%d" %s>%s</option>',
                        $t->getId(),
                        ($_REQUEST['topicId'] && $t->getId() == $_REQUEST['topicId']?'selected="selected"':''),
                        $t->getFullName());
    
    Jared Hancock's avatar
    Jared Hancock committed
    </form>
    <hr>
    <div>
    <?php
    if($_REQUEST['q'] || $_REQUEST['cid'] || $_REQUEST['topicId']) { //Search.
        $sql='SELECT faq.faq_id, question '
            .' FROM '.FAQ_TABLE.' faq '
    
            .' LEFT JOIN '.FAQ_CATEGORY_TABLE.' cat ON(cat.category_id=faq.category_id) '
            .' LEFT JOIN '.FAQ_TOPIC_TABLE.' ft ON(ft.faq_id=faq.faq_id) '
    
    Jared Hancock's avatar
    Jared Hancock committed
            .' WHERE faq.ispublished=1 AND cat.ispublic=1';
    
    Jared Hancock's avatar
    Jared Hancock committed
        if($_REQUEST['cid'])
            $sql.=' AND faq.category_id='.db_input($_REQUEST['cid']);
    
        if($_REQUEST['topicId'])
            $sql.=' AND ft.topic_id='.db_input($_REQUEST['topicId']);
    
            $sql.=" AND (question LIKE ('%".db_input($_REQUEST['q'],false)."%')
                     OR answer LIKE ('%".db_input($_REQUEST['q'],false)."%')
    
                     OR keywords LIKE ('%".db_input($_REQUEST['q'],false)."%')
                     OR cat.name LIKE ('%".db_input($_REQUEST['q'],false)."%')
                     OR cat.description LIKE ('%".db_input($_REQUEST['q'],false)."%')
                     )";
    
    Peter Rotich's avatar
    Peter Rotich committed
        $sql.=' GROUP BY faq.faq_id ORDER BY question';
    
        echo "<div><strong>".__('Search Results').'</strong></div><div class="clear"></div>';
    
    Jared Hancock's avatar
    Jared Hancock committed
        if(($res=db_query($sql)) && ($num=db_num_rows($res))) {
    
            echo '<div id="faq">'.sprintf(__('%d FAQs matched your search criteria.'),$num).'
    
    Jared Hancock's avatar
    Jared Hancock committed
                    <ol>';
            while($row=db_fetch_array($res)) {
                echo sprintf('
                    <li><a href="faq.php?id=%d" class="previewfaq">%s</a></li>',
    
                    $row['faq_id'],$row['question'],$row['ispublished']?__('Published'):__('Internal'));
    
    Jared Hancock's avatar
    Jared Hancock committed
            }
            echo '  </ol>
                 </div>';
        } else {
    
            echo '<strong class="faded">'.__('The search did not match any FAQs.').'</strong>';
    
    Jared Hancock's avatar
    Jared Hancock committed
        }
    } else { //Category Listing.
    
        $categories = Category::objects()
            ->filter(array('ispublic'=>true, 'faqs__ispublished'=>true))
            ->annotate(array('faq_count'=>Aggregate::count('faqs')))
            ->filter(array('faq_count__gt'=>0));
        if ($categories->all()) {
    
            echo '<div>'.__('Click on the category to browse FAQs.').'</div>
    
    Jared Hancock's avatar
    Jared Hancock committed
                    <ul id="kb">';
    
            foreach ($categories as $C) { ?>
                <li><i></i>
                <h4><?php echo sprintf('<a href="faq.php?cid=%d">%s (%d)</a>',
                    $C->getId(), Format::htmlchars($C->name), $C->faq_count); ?></h4>
                    <?php echo Format::safe_html($C->description); ?>
    <?php       foreach ($C->faqs->order_by('-view')->limit(5) as $F) { ?>
                    <div class="popular-faq"><?php echo $F->question; ?></div>
    <?php       } ?>
                </li>
    <?php   } ?>
           </ul>
    <?php
    
    Jared Hancock's avatar
    Jared Hancock committed
        } else {
    
            echo __('NO FAQs found');
    
    Jared Hancock's avatar
    Jared Hancock committed
        }
    }
    ?>
    </div>