prepare(" SELECT url, category, title, snippet(data, '', '', '[...]', 5, 24), mtime FROM data WHERE data MATCH :q ORDER BY category, mtime "); $sql->bindValue(':q', $q); $query = $sql->execute(); $results = array(); if($query) { while ($row = $query->fetchArray(SQLITE3_ASSOC)) { $item = array( "id" => $row['url'], "title" => $row['title'], "url" => $row['url'], "description" => $row["snippet(data, '', '', '[...]', 5, 24)"], "pubDate" => gmdate(DATE_RFC2822, $row['mtime']), ); array_push($results, $item); } } if (isset($_GET['xml'])) { header('Content-Type: text/xml; charset=utf-8', true); $xml = new DOMDocument("1.0", "UTF-8"); $xml->preserveWhiteSpace = false; $xml->formatOutput = true; $rss = $xml->createElement("rss"); $rss_node = $xml->appendChild($rss); $rss_node->setAttribute("version","2.0"); $rss_node->setAttribute("xmlns:dc","http://a9.com/-/spec/opensearch/1.1/"); $channel = $xml->createElement("channel"); $channel_node = $rss_node->appendChild($channel); $channel_node->appendChild($xml->createElement("title", "Search results for: {$_GET['q']}")); $channel_node->appendChild($xml->createElement("link", "{{ site.url }}")); $channel_node->appendChild($xml->createElement("description", "Search {{ site.name }} for {$_GET['q']}")); $channel_node->appendChild($xml->createElement("openSearch:totalResults", sizeof($results))); $channel_node->appendChild($xml->createElement("openSearch:startIndex", 1)); $channel_node->appendChild($xml->createElement("openSearch:itemsPerPage", sizeof($results))); $build_date = gmdate(DATE_RFC2822, time()); $channel_node->appendChild($xml->createElement("lastBuildDate", $build_date)); foreach ($results as $row) { $item_node = $channel_node->appendChild($xml->createElement("item")); $title_node = $item_node->appendChild($xml->createElement("title", $row['title'])); $link_node = $item_node->appendChild($xml->createElement("link", $row['url'])); $guid_link = $xml->createElement("guid", $row['url']); $guid_link->setAttribute("isPermaLink","false"); $guid_node = $item_node->appendChild($guid_link); $description_node = $item_node->appendChild($xml->createElement("description")); $description_contents = $xml->createCDATASection(htmlentities($row["description"])); $description_node->appendChild($description_contents); $pub_date = $xml->createElement("pubDate", $row['pubDate']); $pub_date_node = $item_node->appendChild($pub_date); } echo $xml->saveXML(); exit(0); } if (isset($_GET['json'])) { // WordPress JSON header('Content-Type: application/json; charset=utf-8', true); echo(json_encode($results)); exit(0); } ?> {% extends "base.j2.html" %} {% block lang %}{% endblock %} {% block title %}Search results for: {% endblock %} {% block content %}

Search results for:

%s
%s
', relurl(baseurl, $row['url']), $row['title'], $row["description"]); } ?>
{% endblock %}