diff --git a/message.info.inc b/message.info.inc index 52d5d17..9b10eaa 100644 --- a/message.info.inc +++ b/message.info.inc @@ -51,6 +51,16 @@ class MessageMetadataController extends EntityDefaultMetadataController { 'sanitize' => TRUE, ); + // Add a property listing all text values. + $properties['text_list'] = array( + 'type' => 'list', + 'label' => t('Partial message text'), + 'getter callback' => 'message_property_get_text_list', + 'description' => t('A list of partial message text values with all replacement arguments applied.'), + 'computed' => TRUE, + 'sanitized' => TRUE, + ); + // Bypass entity_load() as we cannot use it here. $message_types = db_select('message_type', 'mt') ->fields('mt') diff --git a/message.module b/message.module index 2bcf0c1..d331eca 100644 --- a/message.module +++ b/message.module @@ -937,6 +937,28 @@ function message_property_get_text($message, array $options) { return $message->getText($langcode); } +/** + * Entity property info getter callback for getting a list of message texts. + */ +function message_property_get_text_list($message, array $options) { + $langcode = isset($options['language']) ? $options['language']->language : LANGUAGE_NONE; + $message_type = $message->getType(); + $message_type_wrapper = entity_metadata_wrapper('message_type', $message_type); + $property = $message_type_wrapper->language($langcode)->{MESSAGE_FIELD_MESSAGE_TEXT}; + + $text_list = array(); + $text_options = array( + 'partials' => TRUE, + ); + if ($property instanceof EntityListWrapper) { + foreach (array_keys($property->value($options)) as $delta) { + $text_options['partial delta'] = $delta; + $text_list[$delta] = $message->getText($langcode, $text_options); + } + } + return $text_list; +} + /** * Get the values of a message property. *