group $group = $this->handle->getGroup(); // This was added later, so not all classes have it. In addition // the message group class hierarche doesn't lend itself easily // to the user of interfaces for this purpose. if ( !method_exists( $group, 'getInsertablesSuggester' ) ) { throw new TranslationHelperException( 'Group does not have a suggester' ); } $suggester = $group->getInsertablesSuggester(); // It is okay to return null suggester if ( !$suggester ) { throw new TranslationHelperException( 'Group does not have a suggester' ); } $insertables = $suggester->getInsertables( $this->dataProvider->getDefinition() ); $blob = []; foreach ( $insertables as $insertable ) { $displayText = $insertable->getDisplayText(); // The keys are used for de-duplication $blob[$displayText] = [ 'display' => $displayText, 'pre' => $insertable->getPreText(), 'post' => $insertable->getPostText(), ]; } $blob = array_values( $blob ); $blob['**'] = 'insertable'; return $blob; } }