/**
  * 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();
 }