Subversion Repositories web.active

Rev

Blame | Last modification | View Log | Download

<?php namespace ProcessWire;

// search.php template file
// See README.txt for more information. 

// look for a GET variable named 'q' and sanitize it
$q = $sanitizer->text($input->get->q); 

// did $q have anything in it?
if($q) { 
    // Send our sanitized query 'q' variable to the whitelist where it will be
    // picked up and echoed in the search box by _main.php file. Now we could just use
    // another variable initialized in _init.php for this, but it's a best practice
    // to use this whitelist since it can be read by other modules. That becomes 
    // valuable when it comes to things like pagination. 
    $input->whitelist('q', $q); 

    // Sanitize for placement within a selector string. This is important for any 
    // values that you plan to bundle in a selector string like we are doing here.
    $q = $sanitizer->selectorValue($q); 

    // Search the title and body fields for our query text.
    // Limit the results to 50 pages. 
    $selector = "title|body~=$q, limit=50"; 

    // If user has access to admin pages, lets exclude them from the search results.
    // Note that 2 is the ID of the admin page, so this excludes all results that have
    // that page as one of the parents/ancestors. This isn't necessary if the user 
    // doesn't have access to view admin pages. So it's not technically necessary to
    // have this here, but we thought it might be a good way to introduce has_parent.
    if($user->isLoggedin()) $selector .= ", has_parent!=2"; 

    // Find pages that match the selector
    $matches = $pages->find($selector); 

    // did we find any matches?
    if($matches->count) {
        // yes we did
        $content = "<h2>Found $matches->count pages matching your query:</h2>";
        // we'll use our renderNav function (in _func.php) to render the navigation
        $content .= renderNav($matches); 
    } else {
        // we didn't find any
        $content = "<h2>Sorry, no results were found.</h2>";
    }

} else {
    // no search terms provided
    $content = "<h2>Please enter a search term in the search box (upper right corner)</h2>";
}