? privatemsg.devel_generate.patch
? privatemsg.module.new
? privatemsg.no-author.patch
? views
Index: privatemsg.devel_generate.inc
===================================================================
RCS file: privatemsg.devel_generate.inc
diff -N privatemsg.devel_generate.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ privatemsg.devel_generate.inc	26 Jun 2009 04:44:16 -0000
@@ -0,0 +1,151 @@
+<?php
+
+function privatemsg_devel_generate_form() {
+  $form['kill_content'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('<strong>Delete all messages</strong> before generating new messages.'),
+    '#default_value' => FALSE,
+  );
+  $form['num_messages'] = array(
+    '#type' => 'textfield',
+    '#title' => t('How many messages would you like to generate?'),
+    '#default_value' => 50,
+    '#size' => 10,
+  );
+  $form['max_thread'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Max thread length?'),
+    '#default_value' => 10,
+    '#size' => 10,
+  );
+  
+  $options = array(1 => t('Now'));
+  foreach (array(3600, 86400, 604800, 2592000, 31536000) as $interval) {
+    $options[$interval] = format_interval($interval, 1) . ' ' . t('ago');
+  }
+  $form['time_range'] = array(
+    '#type' => 'select',
+    '#title' => t('How far back in time should the messages be dated?'),
+    '#description' => t('Message creation dates will be distributed randomly from the current time, back to the selected time.'),
+    '#options' => $options,
+    '#default_value' => 604800,
+  );
+  
+  $form['subject_length'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Max word length of subjects'),
+    '#default_value' => 8,
+    '#size' => 10,
+  );
+
+  $form['submit'] = array(
+    '#type' => 'submit',
+    '#value' => t('Do it!'),
+  );
+  $form['#redirect'] = FALSE;
+
+  return $form;
+}
+
+function privatemsg_devel_generate_form_submit($form_id, &$form_state) {
+  if (!$form_state['values']['kill_content'] && $form_state['values']['num_messages'] <= 50 && $form_state['values']['max_thread'] <= 10) {
+    privatemsg_devel_generate_messages($form_state);
+  }
+  else {
+    privatemsg_devel_batch_generate_messages($form_state);
+  }
+}
+
+function privatemsg_devel_generate_messages($form_state) {
+  if ($form_state['values']['kill_content']) {
+    privatemsg_devel_generate_kill_messages();
+  }
+
+  // Generate messages.
+  for ($i = 1; $i <= $form_state['values']['num_messages']; $i ++) {
+    privatemsg_devel_generate_send_message($form_state['values']);
+  }
+
+  drupal_set_message(format_plural($form_state['values']['num_messages'], '1 message created.', '@count messages created'));
+}
+
+function privatemsg_devel_generate_send_message($values) {
+  module_load_include('inc', 'devel_generate');
+
+  $users = devel_get_users();  
+  $author = user_load(array('uid' => $users[array_rand($users)]));
+  $recipient = user_load(array('uid' => $users[array_rand($users)]));
+
+  $form_state = array(
+    'values' => array(
+      'recipient' => $recipient->name,
+    ),
+    'validate_built_message' => array(
+      'author' => $author,
+      'recipients' => array($recipient),
+      'subject' => devel_create_greeking(rand(1, $values['subject_length']), TRUE),
+      'body' => devel_create_content(),
+      'timestamp' => time() - rand(0, $values['time_range']),
+      'op' => t('Send message'),
+    ),
+  );
+  pm_send($form, $form_state);
+}
+
+/**
+ * Handle the privatemsg_devel_generate_form request to kill all of the messages.
+ * This is used by both the batch and non-batch branches of the code.
+ *
+ * @param $num
+ *   array of options obtained from privatemsg_devel_generate_form.
+ */
+function privatemsg_devel_generate_kill_messages() {
+  db_query('DELETE FROM {pm_index}');
+  db_query('DELETE FROM {pm_message}');
+  $i = db_affected_rows();
+
+  drupal_set_message(format_plural($i, 'Deleted one message', 'Deleted @count messages'));
+}
+
+function privatemsg_devel_batch_generate_messages($form_state) {
+  $operations = array();
+
+  // add the kill operation
+  if ($form_state['values']['kill_content']) {
+    $operations[] = array('privatemsg_devel_generate_batch_kill_messages', array());
+  }
+
+  // add the operations to create the nodes
+  for ($num = 0; $num < $form_state['values']['num_messages']; $num ++) {
+    $operations[] = array('privatemsg_devel_generate_batch_send_message', array($form_state['values']));
+  }
+
+  // start the batch
+  $batch = array(
+    'title' => t('Generating private messages'),
+    'operations' => $operations,
+    'finished' => 'privatemsg_devel_generate_batch_finished',
+    'file' => drupal_get_path('module', 'privatemsg') . '/privatemsg.devel_generate.inc',
+  );
+  batch_set($batch);
+}
+
+function privatemsg_devel_generate_batch_kill_messages(&$context) {
+  privatemsg_devel_generate_kill_messages();
+}
+
+function privatemsg_devel_generate_batch_send_message($values, &$context) {
+  privatemsg_devel_generate_send_message($values);
+  $context['results']['num_mids'] ++;
+}
+
+function privatemsg_devel_generate_batch_finished($success, $results, $operations) {
+  if ($success) {
+    $message = t('Finished @num_mids messages created successfully.', array('@num_mids' => $results['num_mids']));
+  }
+  else {
+    $message = t('Finished with an error.');
+  }
+  drupal_set_message($message);
+}
+
Index: privatemsg.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/privatemsg/privatemsg.module,v
retrieving revision 1.105
diff -u -p -r1.105 privatemsg.module
--- privatemsg.module	18 Dec 2008 16:26:33 -0000	1.105
+++ privatemsg.module	26 Jun 2009 04:44:16 -0000
@@ -105,6 +105,16 @@ function privatemsg_menu() {
     'access arguments' => array('administer privatemsg settings'),
     'type'             => MENU_NORMAL_ITEM,
   );
+  if (module_exists('devel_generate')) {
+    $items['admin/generate/privatemsg'] = array(
+      'title' => 'Generate private messages',
+      'description' => 'Generate a given number of private messages. Optionally delete current private messages.',
+      'page callback' => 'drupal_get_form',
+      'page arguments' => array('privatemsg_devel_generate_form'),
+      'access arguments' => array('administer privatemsg settings'),
+      'file' => 'privatemsg.devel_generate.inc',
+    );
+  }
   return $items;
 }
 
