User login

Saving message entities programmatically

Our use case, re-saving existing messages, is a bit more complex than it should be, but not bad. This code will work for new or existing messages.

Where $exports is an array of long text strings that is each the JSON dump received form exporting a message type through the UI:

<?php
 
foreach ($exports as $export) {
   
$entity = entity_import('message_type', $export);
   
$query = new EntityFieldQuery();
   
$result = $query->entityCondition('entity_type', 'message_type')->propertyCondition('name', $entity->name)->execute();
    if (
$result) {
     
$entity->is_new = FALSE;
     
$entity->id = array_shift(array_keys($result['message_type']));
    }
   
entity_save('message_type', $entity);
   
$label = entity_label('message_type', $entity);
   
watchdog('message_type', 'Imported message_type %label.', array('%label' => $label));
  }
?>
Searched words: 
drupal 7 message type in code drupal 7 message type programmatically import from export

Comments

And deleting them...

<?php
  $names
= array(
   
'message_name_here',
   
'another_message_name',
  );
 
$result = $query->entityCondition('entity_type', 'message_type')->propertyCondition('name', $names)->execute();

 

// Delete message types that are no longer used.
 
entity_delete_multiple('message_type', array_keys($result));
?>

Note that if the message is provided in code, deleting just has the effect of setting it to default. (Note: Pretty sure it didn't work when deleting by name directly, rather than looking up the ID first, but i might have been looking at the wrong environment...)

Post new comment

The content of this field is kept private and will not be shown publicly.
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.
  • You can use Markdown syntax to format and style the text. Also see Markdown Extra for tables, footnotes, and more.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <blockquote> <small> <h2> <h3> <h4> <h5> <h6> <sub> <sup> <p> <br> <strike> <table> <tr> <td> <thead> <th> <tbody> <tt> <output>
  • Syntax highlight code surrounded by the {syntaxhighlighter SPEC}...{/syntaxhighlighter} tags, where SPEC is a Syntaxhighlighter options string or "class="OPTIONS" title="the title".
  • Lines and paragraphs break automatically.

More information about formatting options

By submitting this form, you accept the Mollom privacy policy.