Source of file SolrAdminController.php
Size: 3,004 Bytes - Last Modified: 2021-12-23T10:34:35+00:00
/var/www/docs.ssmods.com/process/src/code/controllers/SolrAdminController.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 | <?php /** * Controller for backend management of solr search configs * * @author marcus@silverstripe.com.au * @license BSD License http://silverstripe.org/bsd-license/ */ class SolrAdminController extends ModelAdmin { public static $menu_title = 'Solr'; public static $url_segment = 'solr'; private static $menu_icon = 'solr/images/solr-icon.png'; public static $managed_models = array( 'SolrTypeConfiguration' ); public static $allowed_actions = array( 'ReindexForm', 'EditForm', ); public static $dependencies = array( 'searchService' => '%$SolrSearchService', ); public function init() { parent::init(); Requirements::javascript('solr/javascript/solr.js'); } /** * * @param SS_Request $request * @return Form */ public function getEditForm($id = null, $fields = null) { $form = parent::getEditForm($id, $fields); if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { // return $form; } if (!Permission::check('ADMIN')) { return $form; } $fields = $form->Fields(); $config = $this->searchService->localEngineConfig(); $allow = $config ? $config->RunLocal : null; $fields->push(new CheckboxField('RunLocal', _t('SolrAdmin.RUN_LOCAL', 'Run local Jetty instance of Solr?'), $allow)); if ($allow) { $status = $this->searchService->localEngineStatus(); if (!$status) { $fields->push(new CheckboxField('Start', _t('SolrAdmin.START', 'Start Solr'))); } else { $fields->push(new CheckboxField('Kill', _t('SolrAdmin.Kill', 'Kill Solr process (' . $status . ')'))); } $log = $this->searchService->getLogData(100); $log = array_reverse($log); $fields->push($logtxt = new TextareaField('Log', _t('SolrAdmin.LOG', 'Log'))); $logtxt->setColumns(20)->setRows(15)->setValue(implode($log)); } $form->Actions()->push(new FormAction('saveconfig', _t('SolrAdmin.SAVE', 'Save'))); $form->Actions()->push(new FormAction('reindex', _t('SolrAdmin.REINDEX', 'Reindex'))); // $actions = new FieldSet(); // $form = new Form($this, 'EditForm', $fields, $actions); return $form; } public function saveconfig($data, $form, $request) { if (!Permission::check('ADMIN')) { return false; } $config = $this->searchService->localEngineConfig(); $config->RunLocal = $data['RunLocal']; $this->searchService->saveEngineConfig($config); if (isset($data['Start']) && $data['Start']) { $this->searchService->startSolr(); sleep(2); } else if (isset($data['Kill']) && $data['Kill']) { $this->searchService->stopSolr(); sleep(2); } if (Director::is_ajax()) { return $this->getResponseNegotiator()->respond($this->request); } else { $this->redirectBack(); } } public function reindex($data, Form $form) { $task = singleton('SolrReindexTask'); if ($task) { $task->run($this->request); } if (Director::is_ajax()) { return $this->getResponseNegotiator()->respond($this->request); } else { $this->redirectBack(); } } } |