<?php namespace Grav\Plugin\TNTSearch; use Grav\Common\Config\Config; use Grav\Common\Grav; use Grav\Common\Yaml; use Grav\Common\Page\Page; use Grav\Plugin\TNTSearchPlugin; use PDO; class GravConnector extends PDO { public function __construct() { } /** * @param int $attribute * @return bool */ public function getAttribute($attribute): bool { return false; } /*** * @param string $statement * @param int|null $fetch_style * @param mixed ...$extra * @return GravResultObject */ public function query(string $statement, ?int $fetch_style = null, ...$extra): GravResultObject { $counter = 0; $results = []; /** @var Config $config */ $config = Grav::instance()['config']; $filter = $config->get('plugins.tntsearch.filter'); $default_process = $config->get('plugins.tntsearch.index_page_by_default'); $gtnt = TNTSearchPlugin::getSearchObjectType(); if ($filter && array_key_exists('items', $filter)) { if (is_string($filter['items'])) { $filter['items'] = Yaml::parse($filter['items']); } $page = new Page; $collection = $page->collection($filter, false); } else { $collection = Grav::instance()['pages']->all(); $collection->published()->routable(); } foreach ($collection as $page) { $counter++; $process = $default_process; $header = $page->header(); $url = $page->url(); if (isset($header->tntsearch['process'])) { $process = $header->tntsearch['process']; } // Only process what's configured if (!$process) { echo("Skipped {$counter} {$url}\n"); continue; } try { $fields = $gtnt->indexPageData($page); $results[] = (array) $fields; echo("Added {$counter} {$url}\n"); } catch (\Exception $e) { echo("Skipped {$counter} {$url} - {$e->getMessage()}\n"); continue; } } return new GravResultObject($results); } }