Skip to content
Snippets Groups Projects
faq-categories.inc.php 4.36 KiB
Newer Older
  • Learn to ignore specific revisions
  • Jared Hancock's avatar
    Jared Hancock committed
    <?php
    if(!defined('OSTSTAFFINC') || !$thisstaff) die('Access Denied');
    
    ?>
    
    <h2><?php echo __('Frequently Asked Questions');?></h2>
    
    <form id="kbSearch" action="kb.php" method="get">
    
    Jared Hancock's avatar
    Jared Hancock committed
        <input type="hidden" name="a" value="search">
    
        <div>
            <input id="query" type="text" size="20" name="q" value="<?php echo Format::htmlchars($_REQUEST['q']); ?>">
            <select name="cid" id="cid">
    
                <option value="">&mdash; <?php echo __('All Categories');?> &mdash;</option>
    
                $categories = Category::objects()
    
                    ->annotate(array('faq_count'=>SqlAggregate::COUNT('faqs')))
    
                    ->filter(array('faq_count__gt'=>0))
                    ->order_by('name');
    print $categories;
                foreach ($categories as $C) {
                    echo sprintf('<option value="%d" %s>%s (%d)</option>',
                        $C->getId(),
                        ($_REQUEST['cid'] && $C->getId()==$_REQUEST['cid']?'selected="selected"':''),
                        $C->getLocalName(),
                        $C->faq_count
                    );
                } ?>
    
            <input id="searchSubmit" type="submit" value="<?php echo __('Search');?>">
    
        </div>
        <div>
            <select name="topicId" style="width:350px;" id="topic-id">
    
                <option value="">&mdash; <?php echo __('All Help Topics');?> &mdash;</option>
    
                $topics = Topic::objects()
    
                    ->annotate(array('faq_count'=>SqlAggregate::COUNT('faqs')))
    
                    ->filter(array('faq_count__gt'=>0))
                    ->all();
                usort($topics, function($a, $b) {
                    return strcmp($a->getFullName(), $b->getFullName());
                });
                foreach ($topics as $T) {
                    echo sprintf('<option value="%d" %s>%s (%d)</option>',
                        $T->getId(),
                        ($_REQUEST['topicId'] && $T->getId()==$_REQUEST['topicId']?'selected="selected"':''),
                        $T->getFullName(), $T->faq_count);
    
    Jared Hancock's avatar
    Jared Hancock committed
    </form>
    <hr>
    <div>
    <?php
    if($_REQUEST['q'] || $_REQUEST['cid'] || $_REQUEST['topicId']) { //Search.
    
        $faqs = FAQ::objects()
            ->annotate(array(
    
                'attachment_count'=>SqlAggregate::COUNT('attachments'),
                'topic_count'=>SqlAggregate::COUNT('topics')
    
            ))
            ->order_by('question');
    
        if ($_REQUEST['cid'])
            $faqs->filter(array('category_id'=>$_REQUEST['cid']));
    
        if ($_REQUEST['topicId'])
            $faqs->filter(array('topic_id'=>$_REQUEST['topicId']));
    
        if ($_REQUEST['q'])
            $faqs->filter(Q::ANY(array(
                'question__contains'=>$_REQUEST['q'],
                'answer__contains'=>$_REQUEST['q'],
                'keywords__contains'=>$_REQUEST['q'],
                'category__name__contains'=>$_REQUEST['q'],
                'category__description__contains'=>$_REQUEST['q'],
            )));
    
        echo "<div><strong>".__('Search Results')."</strong></div><div class='clear'></div>";
    
        if ($faqs->exists(true)) {
    
    Jared Hancock's avatar
    Jared Hancock committed
            echo '<div id="faq">
                    <ol>';
    
            foreach ($faqs as $F) {
                echo sprintf(
                    '<li><a href="faq.php?id=%d" class="previewfaq">%s</a> - <span>%s</span></li>',
                    $F->getId(), $F->getLocalQuestion(), $F->getVisibilityDescription());
    
    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()
    
            ->annotate(array('faq_count'=>SqlAggregate::COUNT('faqs')))
    
            ->all();
    
        if (count($categories)) {
            usort($categories, function($a, $b) {
                return strcmp($a->getLocalName(), $b->getLocalName());
            });
    
            echo '<div>'.__('Click on the category to browse FAQs or manage its existing FAQs.').'</div>
    
    Jared Hancock's avatar
    Jared Hancock committed
                    <ul id="kb">';
    
            foreach ($categories as $C) {
    
    Jared Hancock's avatar
    Jared Hancock committed
                echo sprintf('
                    <li>
    
                        <h4><a class="truncate" style="max-width:600px" href="kb.php?cid=%d">%s (%d)</a> - <span>%s</span></h4>
    
                    </li>',$C->getId(),$C->getLocalName(),$C->faq_count,
                    $C->getVisibilityDescription(),
                    Format::safe_html($C->getLocalDescriptionWithImages())
                );
    
    Jared Hancock's avatar
    Jared Hancock committed
            }
            echo '</ul>';
        } else {
    
            echo __('NO FAQs found');