public function delete($query, array $options = array())
{
$this->_checkConnection();
$_config = $this->_config;
$defaults = array('justOne' => false, 'w' => $_config['w'], 'wTimeoutMS' => $_config['wTimeoutMS'], 'fsync' => false);
$options = array_intersect_key($options + $defaults, $defaults);
$params = compact('query', 'options');
return $this->_filter(__METHOD__, $params, function ($self, $params) use($_config) {
$query = $params['query'];
$options = $params['options'];
$args = $query->export($self, array('keys' => array('source', 'conditions')));
$source = $args['source'];
$conditions = $args['conditions'];
if ($source === "{$_config['gridPrefix']}.files") {
$result = $self->invokeMethod('_deleteFile', array($conditions));
} else {
$result = $self->connection->{$args['source']}->remove($conditions, $options);
$result = $self->invokeMethod('_ok', array($result));
}
if ($result && $query->entity()) {
$query->entity()->sync(null, array(), array('dematerialize' => true));
}
return $result;
});
}