diff --git a/src/Model/SearchDocument.php b/src/Model/SearchDocument.php
index 835e846..0250397 100644
--- a/src/Model/SearchDocument.php
+++ b/src/Model/SearchDocument.php
@@ -15,7 +15,7 @@
use SilverStripe\Control\Director;
use SilverStripe\ORM\DataList;
use SilverStripe\ORM\DataObject;
-use SilverStripe\Versioned\Versioned;
+use SilverStripe\Security\Member;
use SilverStripe\View\SSViewer;
class SearchDocument extends DataObject
@@ -95,7 +95,22 @@ public function makeSearchContent()
}
}
} else {
- $output[] = Director::test($searchLink);
+ try {
+ // Restore front-end themes from config
+ $themes = SSViewer::config()->get('themes') ?: $oldThemes;
+ SSViewer::set_themes($themes);
+
+ // Render page as non-member in live mode
+ $response = Member::actAs(null, function () use (&$searchLink) {
+ $response = Director::test(Director::makeRelative($searchLink));
+ return $response;
+ });
+
+ $output[] = $response->getBody();
+ } finally {
+ // Restore themes
+ SSViewer::set_themes($oldThemes);
+ }
}
// any fields mark to search
if ($origin->config()->get('full_text_fields')) {
diff --git a/src/Tasks/GenerateSearchDocument.php b/src/Tasks/GenerateSearchDocument.php
index d1ff5ea..8b02663 100644
--- a/src/Tasks/GenerateSearchDocument.php
+++ b/src/Tasks/GenerateSearchDocument.php
@@ -10,6 +10,7 @@
namespace SilverStripers\ElementalSearch\Tasks;
+use SilverStripe\Control\Director;
use SilverStripe\Control\HTTPRequest;
use SilverStripe\Core\ClassInfo;
use SilverStripe\Core\Config\Config;
@@ -27,7 +28,7 @@ class GenerateSearchDocument extends BuildTask
protected $description = 'Generate search documents for items.';
- private static $segment = 'make-search-docs';
+ private static $segment = 'make-search-docs';
/**
* Implement this method in the task subclass to
@@ -38,15 +39,20 @@ class GenerateSearchDocument extends BuildTask
*/
public function run($request)
{
+ $eol = Director::is_cli() ? PHP_EOL . PHP_EOL : '
';
set_time_limit(50000);
$classes = $this->getAllSearchDocClasses();
foreach ($classes as $class) {
foreach ($list = DataList::create($class) as $record) {
- echo sprintf(
+ $output = sprintf(
'Making record for %s type %s, link %s',
$record->getTitle(),
$record->ClassName,
- $record->getGenerateSearchLink()) . '
';
+ $record->getGenerateSearchLink());
+
+ $output .= $eol;
+
+ echo $output;
try {
SearchDocumentGenerator::make_document_for($record);
} catch (Exception $e) {