Skip to content
Snippets Groups Projects
Select Git revision
  • afae841ae492f71e18f377e30d52cdce1f72a025
  • 3.9 default
  • develop
  • 6.0
  • 5.0
  • 4.0
  • scrutinizer-patch-4
  • scrutinizer-patch-3
  • scrutinizer-patch-2
  • scrutinizer-patch-1
  • 3.7
  • 3.8
  • 3.6
  • 3.9_backported
  • 3.8_backported
  • 3.7_backported
  • 3.5
  • 3.6_backported
  • 3.5_backported
  • 3.4
  • 3.3_backported
  • 6.0.4
  • 6.0.3
  • 5.0.7
  • 6.0.2
  • 6.0.1
  • 5.0.6
  • 6.0.0
  • 5.0.5
  • 6.0.0-rc
  • 5.0.4
  • 6.0.0-beta
  • 5.0.3
  • 4.0.6
  • 5.0.2
  • 5.0.1
  • 4.0.5
  • 5.0.0
  • 4.0.4
  • 5.0.0-rc2
  • 5.0.0-rc1
41 results

public.php

Blame
  • index.php 5.40 KiB
    <?php
    
    $search_engine_id = '015236299699564929946:nk1siew10ie';
    
    $config_file = __DIR__ . '/../config.sample.php';
    if (file_exists(__DIR__ . '/../config.inc.php')) {
        $config_file = __DIR__ . '/../config.inc.php';
    }
    
    require_once $config_file;
    
    use UNL\Templates\Templates;
    
    function renderTemplate($file, $params = array())
    {
        ob_start();
        extract($params);
        include $file;
        return ob_get_clean();
    }
    
    function loadDefaultSections($page)
    {
        $page->titlegraphic = '<a class="dcf-txt-h5" href="/">Search</a>';
        $page->contactinfo = renderTemplate('templates/local-footer.tpl.php');
        $page->affiliation = '';
    }
    
    $localScriptUrl = './js/search.min.js?v=20190116';
    
    if (UNL_Search::$mode === 'debug') {
        $pageTemplate = 'Local';
        $localScriptUrl = './js/search.js';
    }
    
    $isEmbed = isset($_GET['embed']) && $_GET['embed'];
    
    // While the site proper is skinned with a specific version, the templates used
    // used in embed search need to be supported in legacy sites.
    // ?embed=1 : 4.1
    // ?embed=5.0 : 5.0
    if ($isEmbed && $_GET['embed'] === '1') {
        $pageTemplate = 'Fixed';
        $page = Templates::factory($pageTemplate, Templates::VERSION_4_1);
        $templatePath = 'templates/4.1/';
        $page->addStyleSheet('css/search.css?v=20180901');
    
    } else {
        $pageTemplate = 'App';
        $page = Templates::factory($pageTemplate, Templates::VERSION_5);
        $templatePath = 'templates/5.0/';
    
        if (!$isEmbed) {
            if (file_exists(__DIR__ . '/wdn/templates_5.0')) {
                $page->setLocalIncludePath(__DIR__);
            }
    
            $page->doctitle = '<title>Search | University of Nebraska&ndash;Lincoln</title>';
            $page->head .= '<link rel="home" href="./" />';
    
            // no menu items, so hide mobile menu
            $page->addStyleDeclaration("#dcf-mobile-toggle-menu {display: none!important}");
    
            // in search, so hide search
            $page->addStyleDeclaration("#dcf-mobile-toggle-search, #dcf-search {display: none!important}");
        }
    
        $page->addStyleSheet('css/search-5.0.css?v=20180901');
    }
    
    $localResults = '';
    $context = '';
    
    //u is referring site
    if (isset($_GET['u']) && $scanned = UNL_Search::getScannedPage($_GET['u'])) {
        // Add local site search results
        // we're scrapping the navigation and other content from the originatting site.
        if (!$isEmbed) {
            if (isset($scanned->titlegraphic)) {
                //require_once 'HTMLPurifier.auto.php';
                $config = HTMLPurifier_Config::createDefault();
                $config->set('Cache.SerializerPath', '/tmp');
    
                //Trick the purifier into accepting HTML5 elements/attributes
                $config->set('HTML.DefinitionID', 'html5-definitions'); // unqiue id
                $config->set('HTML.DefinitionRev', 1);
                if ($def = $config->maybeGetRawHTMLDefinition()) {
                    //Allow everything to have a role
                    $def->addAttribute('*', 'role', 'Text');
                }
    
                $purifier = new HTMLPurifier($config);
    
                $page->head .= '<link rel="home" href="'.htmlentities($_GET['u'], ENT_QUOTES).'" />';
                $page->titlegraphic = $purifier->purify(str_replace(array('<h1>', '</h1>'), '', $scanned->titlegraphic));
                $page->affiliation = '';
    
                foreach (array('contactinfo', 'affiliation') as $region) {
                    if (isset($scanned->{$region}) && !empty($scanned->{$region})) {
                        $scannedContent = $scanned->{$region};
                        switch ($region) {
                            case 'contactinfo':
                                $scannedContent = preg_replace('#<h3>.*</h3>#', '', $scannedContent);
                                break;
                        }
    
                        $page->{$region} = $purifier->purify($scannedContent);
                    }
                }
            } else {
                loadDefaultSections($page);
            }
        }
    
        if (isset($_GET['cx'])) {
            // Use their custom search engine instead of the linked one.
            $search_engine_id = $_GET['cx'];
        } else {
            // send the site value as the context to search on
            $context = $_GET['u'];
        }
    
        $localResults = renderTemplate($templatePath . 'google-results.tpl.php', array(
            'title' => $page->titlegraphic,
            'id' => 'local_results',
        ));
    } elseif (!$isEmbed) {
        // Default search for no referring site.
        loadDefaultSections($page);
    }
    
    $initialQuery = json_encode(isset($_GET['q']) ? $_GET['q'] : '');
    $context = json_encode($context);
    
    $maincontent = '';
    if (!$isEmbed) {
        $maincontent .= renderTemplate('templates/search-form.tpl.php', array('local_results' => $localResults));
    }
    
    if ($isEmbed || !empty($_GET['q'])) {
        $maincontent .= renderTemplate($templatePath . 'search-results.tpl.php', array(
            'isEmbed' => $isEmbed,
            'local_results' => $localResults
        ));
    }
    
    $endScript = renderTemplate($templatePath . 'end-scripts.tpl.php', array(
        'localScriptUrl' => $localScriptUrl,
        'googleLoaderUrl' => 'https://cse.google.com/cse.js?cx=' . $search_engine_id,
        'initialQuery' => $initialQuery,
        'localContext' => $context
    ));
    
    if ($isEmbed) {
        $maincontent .= $endScript;
    } else {
        $page->jsbody .= $endScript;
    }
    
    if (!$isEmbed) {
        $page->maincontentarea = $maincontent;
        echo $page;
        exit;
    }
    
    $template = $templatePath . 'embed.tpl.php';
    
    if (UNL_Search::$mode === 'debug') {
        $template = $templatePath . 'embed-debug.tpl.php';
    }
    
    echo renderTemplate($template, array(
        'head' => $page->head,
        'maincontent' => $maincontent
    ));