/** * Index a Resource. * * @param array $fields * @return boolean */ public function index(array $fields = array()) { if (isset($fields['searchable']) && empty($fields['searchable'])) { return false; } if (isset($fields['published']) && empty($fields['published'])) { return false; } if (isset($fields['deleted']) && !empty($fields['deleted'])) { return false; } $type = $this->index->getType($fields['context_key']); $document = new \Elastica\Document(); $dateFields = array('createdon', 'editedon', 'deletedon', 'publishedon'); foreach ($fields as $fieldName => $value) { if (is_string($fieldName) && !is_array($value) && !is_object($value)) { if (in_array($fieldName, $dateFields)) { $value = '' . strftime('%Y-%m-%dT%H:%M:%SZ', strtotime($value)); $fields[$fieldName] = $value; } if ($fieldName == 'id') { $document->setId($value); } $document->set($fieldName, $value); } } $this->modx->log(modX::LOG_LEVEL_DEBUG, '[SimpleSearch] Indexing Resource: ' . print_r($fields, true)); $response = $type->addDocument($document); $type->getIndex()->refresh(); return $response->isOk(); }