/**
 * Prints the header and (if applicable) group selector.
 * @param object $ouwiki Wiki object
 * @param object $cm Course-modules object
 * @param object $subwiki Subwiki objecty
 * @param string $pagename Name of page
 * @param object $context Context object
 * @param string $afterpage If included, extra content for navigation string after page link
 * @param bool $hideindex If true, doesn't show the index/recent pages links
 * @param bool $notabs If true, prints the after-tabs div here
 * @param string $head Things to include inside html head
 */
function ouwiki_print_start($ouwiki, $cm, $course, $subwiki, $pagename, $context, $afterpage = null, $hideindex = false, $notabs = false, $head = '', $title = '')
{
    $wikiname = format_string(htmlspecialchars($ouwiki->name));
    // Print header
    $strwiki = get_string("modulename", "ouwiki");
    $strwikis = get_string("modulenameplural", "ouwiki");
    $buttontext = update_module_button($cm->id, $course->id, $strwiki);
    $extranavigation = array();
    if ($afterpage && $pagename) {
        $extranavigation[] = array('name' => htmlspecialchars($pagename), 'type' => 'ouwiki', 'link' => 'view.php?' . ouwiki_display_wiki_parameters($pagename, $subwiki, $cm));
    } else {
        if ($pagename) {
            $extranavigation[] = array('name' => htmlspecialchars($pagename), 'type' => 'ouwiki');
        } else {
            if ($afterpage) {
                $extranavigation[] = array('name' => get_string('startpage', 'ouwiki'), 'type' => 'ouwiki');
            } else {
            }
        }
    }
    if ($afterpage) {
        foreach ($afterpage as $element) {
            $extranavigation[] = $element;
        }
    }
    if (empty($title)) {
        $title = $wikiname;
    }
    $navigation = build_navigation($extranavigation, $cm);
    print_header_simple($title, "", $navigation, "", $head, true, $buttontext, navmenu($course, $cm));
    // Print group selector
    $selector = ouwiki_display_subwiki_selector($subwiki, $ouwiki, $cm, $context, $course);
    print $selector;
    // Print index link
    if (!$hideindex) {
        print '<div id="ouwiki_indexlinks">';
        print '<ul>';
        $isindex = basename($_SERVER['PHP_SELF']) == 'wikiindex.php';
        if ($isindex) {
            print '<li id="ouwiki_nav_index"><span>' . get_string('index', 'ouwiki') . '</span></li>';
        } else {
            print '<li id="ouwiki_nav_index"><a href="wikiindex.php?' . ouwiki_display_wiki_parameters(null, $subwiki, $cm) . '">' . get_string('index', 'ouwiki') . '</a></li>';
        }
        $ishistory = basename($_SERVER['PHP_SELF']) == 'wikihistory.php';
        if ($ishistory) {
            print '<li id="ouwiki_nav_history"><span>' . get_string('wikirecentchanges', 'ouwiki') . '</span></li>';
        } else {
            print '<li id="ouwiki_nav_history"><a href="wikihistory.php?' . ouwiki_display_wiki_parameters(null, $subwiki, $cm) . '">' . get_string('wikirecentchanges', 'ouwiki') . '</a></li>';
        }
        $isreports = basename($_SERVER['PHP_SELF']) == 'reportssummary.php';
        if ($isreports) {
            print '<li id="ouwiki_nav_report"><span>' . get_string('reports', 'ouwiki') . '</span></li>';
        } else {
            if (has_capability('mod/ouwiki:viewcontributions', $context)) {
                print '<li id="ouwiki_nav_report"><a href="reportssummary.php?' . ouwiki_display_wiki_parameters(null, $subwiki, $cm) . '">' . get_string('reports', 'ouwiki') . '</a></li>';
            }
        }
        print '</ul>';
        if (ouwiki_search_installed()) {
            print '<form action="search.php" method="get"><div>';
            print ouwiki_display_wiki_parameters(null, $subwiki, $cm, OUWIKI_PARAMS_FORM);
            print '<label for="ouw_searchbox" class="accesshide">' . get_string('search', 'ouwiki') . '</label>';
            $query = stripslashes(optional_param('query', '', PARAM_RAW));
            print '<input type="text" id="ouw_searchbox" name="query" ' . ($query ? 'value="' . htmlspecialchars($query) . '" ' : '') . '/>';
            print '<input type="submit" value="' . get_string('search', 'ouwiki') . '" /></div></form>';
        }
        print '</div>';
    } else {
        print '<div id="ouwiki_noindexlink"></div>';
    }
    //adding a link to the computing guide
    if (class_exists('ouflags')) {
        global $CFG;
        require_once $CFG->dirroot . '/local/utils_shared.php';
        $computingguidelink = get_link_to_computing_guide('ouwiki');
        print '<span class="computing-guide"> ' . $computingguidelink . '</span>';
    }
    print '<div class="clearer"></div>';
    if ($notabs) {
        $extraclass = $selector ? ' ouwiki_gotselector' : '';
        print '<div id="ouwiki_belowtabs" class="ouwiki_notabs' . $extraclass . '">';
    }
}
     blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT);
     print '</div>';
 }
 if ($hasright = !empty($CFG->showblocksonmodpages) && (blocks_have_content($pageblocks, BLOCK_POS_RIGHT) || $editing)) {
     print '<div id="right-column">';
     blocks_print_group($PAGE, $pageblocks, BLOCK_POS_RIGHT);
     print '</div>';
 }
 $classes = trim(($hasleft ? 'has-left-column ' : '') . ($hasright ? 'has-right-column' : ''));
 print "<div id='middle-column' class='{$classes}'>";
 //adding a link to the computing guide
 if (!@(include_once $CFG->dirroot . '/local/utils_shared.php')) {
     //Only used for forumng within Core Moodle (not OU Moodle)
     require_once 'local/utils_shared.php';
 }
 $computingguidelink = get_link_to_computing_guide('forumng');
 print '<span class="computing-guide"> ' . $computingguidelink . '</span>';
 // Display group selector if required
 groups_print_activity_menu($cm, $forum->get_url(forum::PARAM_HTML));
 print '<div class="forumng-main">';
 print $forum->get_type()->display_switch_link();
 print skip_main_destination();
 // Get forum type to display main part of page
 $forum->get_type()->print_view_page($forum, $groupid);
 // Show dashboard feature if enabled
 if (class_exists('ouflags')) {
     require_once $CFG->dirroot . '/local/externaldashboard/external_dashboard.php';
     external_dashboard::print_favourites_button($cm);
 }
 print '</div></div>';
 // Log request
    $classes .= 'has-right-column ';
}
$classes = trim($classes);
if ($classes) {
    print '<div id="middle-column" class="' . $classes . '">';
} else {
    print '<div id="middle-column">';
}
if (class_exists('ouflags') && ou_get_is_mobile()) {
    ou_print_mobile_navigation($id, $blogdets, null, $user);
}
print skip_main_destination();
//adding a link to the computing guide
if (class_exists('ouflags')) {
    require_once $CFG->dirroot . '/local/utils_shared.php';
    $computingguidelink = get_link_to_computing_guide('oublog');
    print '<span class="computing-guide"> ' . $computingguidelink . '</span>';
}
/// Print Groups and individual drop-down menu
echo '<div class="oublog-groups-individual-selectors">';
/// Print Groups
if ($showgroupselector) {
    groups_print_activity_menu($cm, $returnurl);
}
/// Print Individual
if ($oublog->individual) {
    if ($individualdetails) {
        echo $individualdetails->display;
        $individualmode = $individualdetails->mode;
        $currentindividual = $individualdetails->activeindividual;
    }