? content_generate.info
? content_generate.module
? mw.patch
Index: text.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/text.module,v
retrieving revision 1.76
diff -u -F^f -r1.76 text.module
--- text.module	15 Nov 2007 21:44:42 -0000	1.76
+++ text.module	22 Nov 2007 04:42:46 -0000
@@ -132,6 +132,36 @@ function text_field_settings($op, $field
  */
 function text_field($op, &$node, $field, &$items, $teaser, $page) {
   switch ($op) {
+    // return an arbitrary value which respects allowed values, maximum length, etc.
+    case 'generate':
+      // currenty multiple is handled within the field op. we can simplify this but increase code complexity elsewhere.
+      switch ($field['multiple']) {
+        case 0:
+          $max = 0;
+          break;
+        case 1:
+          $max = 2; //just an arbitrary number for 'unlimited'
+          break;
+        default:
+          $max = $field['multiple'];
+          break;
+      }
+      
+      $allowed_values = content_allowed_values($field);
+      for ($i=0; $i <= $max; $i++) {
+        if (!empty($allowed_values)) {
+          // Just pick one of the specified allowed values.
+          $return[$field['field_name']][$i]['value'] = $allowed_values[array_rand($allowed_values)];
+        }
+        else {
+          // Generate a value that respects max_length.
+          if (empty($field['max_length'])) {
+            $field['max_length'] = 12;
+          }
+          $return[$field['field_name']][$i]['value'] = user_password($field['max_length']);
+        }
+      }
+      return $return;
     case 'validate':
       $allowed_values = content_allowed_values($field);
       if (is_array($items)) {
