/** * Triggers an event for handling undefined operators. Event listeners may * capture this event and provide operator handling logic, such listeners should * alter the provided Query object and then return it back. * * The triggered event follows the pattern: * * ``` * Search.operator<CamelCaseOperatorName> * ``` * * For example, `Search.operatorAuthorName` will be triggered for * handling an operator named either `author-name` or `author_name`. * * @param \Cake\ORM\Query $query The query that is expected to be scoped * @param \Search\TokenInterface $token Token describing an operator. e.g * `-op_name:op_value` * @return mixed Scoped query object expected or null if event was not captured * by any listener */ protected function _triggerOperator(Query $query, TokenInterface $token) { $eventName = 'Search.' . (string) Inflector::variable('operator_' . $token->name()); $event = new Event($eventName, $this->_table, compact('query', 'token')); return EventManager::instance()->dispatch($event)->result; }