| [ Index ] |
PHP Cross Reference of Drupal 6 (yi-drupal) |
[Summary view] [Print] [Text view]
1 <?php 2 // $Id: content.devel.inc,v 1.4.2.6 2009/01/20 07:31:30 karens Exp $ 3 4 /** 5 * @file 6 * Functions needed for Devel module integration. 7 * 8 * TODO 9 * This is not really working correctly yet. It is getting called once 10 * for every field and then generating every field each time. But if 11 * you only process one field at a time the earlier ones lose their values. 12 * The current method works to create values, but is overly processor- 13 * intensive and needs to be reworked in a way that each field is 14 * only processed once and all values are retained. 15 */ 16 17 /** 18 * Enrich the $node that is about to be saved with arbitrary 19 * information in each of its CCK fields. 20 **/ 21 function content_generate_fields(&$node, $field) { 22 $type_name = $node->type; 23 $type = content_types($type_name); 24 $field_types = _content_field_types(); 25 26 if (!empty($type['fields'])) { 27 foreach ($type['fields'] as $field) { 28 $node_field = array(); 29 // If module handles own multiples, then only call its hook once. 30 if (content_handle('widget', 'multiple values', $field) == CONTENT_HANDLE_MODULE) { 31 $max = 0; 32 } 33 else { 34 switch ($field['multiple']) { 35 case 0: 36 $max = 0; 37 break; 38 case 1: 39 $max = rand(0, 3); //just an arbitrary number for 'unlimited' 40 break; 41 default: 42 $max = $field['multiple']; 43 break; 44 } 45 } 46 for ($i = 0; $i <= $max; $i++) { 47 $module = $field_types[$field['type']]['module']; 48 $function = $module .'_content_generate'; 49 if (function_exists($function)) { 50 $result = $function($node, $field); // $items, $teaser, $page 51 if (content_handle('widget', 'multiple values', $field) == CONTENT_HANDLE_MODULE) { 52 // Fields that handle their own multiples will add their own deltas. 53 $node_field = $result; 54 } 55 else { 56 // When multiples are handled by the content module, add a delta for each result. 57 $node_field[$i] = $result; 58 } 59 } 60 } 61 $node->{$field['field_name']} = $node_field; 62 } 63 } 64 } 65 66 /** 67 * A simple function to return multiple values for fields that use 68 * custom multiple value widgets but don't need any other special multiple 69 * values handling. This will call the field generation function 70 * a random number of times and compile the results into a node array. 71 */ 72 function content_devel_multiple($function, $node, $field) { 73 $node_field = array(); 74 if (function_exists($function)) { 75 switch ($field['multiple']) { 76 case 0: 77 $max = 0; 78 break; 79 case 1: 80 $max = rand(0, 3); //just an arbitrary number for 'unlimited' 81 break; 82 default: 83 $max = $field['multiple']; 84 break; 85 } 86 for ($i = 0; $i <= $max; $i++) { 87 $node_field[$i] = $function($node, $field); 88 } 89 } 90 return $node_field; 91 } 92 93 if (module_exists('text')) { 94 function text_content_generate($node, $field) { 95 if (content_handle('widget', 'multiple values', $field) == CONTENT_HANDLE_MODULE) { 96 return content_devel_multiple('_text_content_generate', $node, $field); 97 } 98 else { 99 return _text_content_generate($node, $field); 100 } 101 } 102 103 function _text_content_generate($node, $field) { 104 $node_field = array(); 105 if ($field['widget']['type'] == 'text_textarea') { 106 $format = $field['text_processing'] ? rand(0, 3) : 0; 107 $node_field['value'] = devel_create_content($format); 108 $node_field['format'] = $format; 109 } 110 else { 111 $allowed_values = content_allowed_values($field); 112 if (!empty($allowed_values)) { 113 // Just pick one of the specified allowed values. 114 $node_field['value'] = array_rand($allowed_values); 115 } 116 else { 117 // Generate a value that respects max_length. 118 if (empty($field['max_length'])) { 119 $field['max_length'] = 12; 120 } 121 $node_field['value'] = user_password($field['max_length']); 122 } 123 } 124 return $node_field; 125 } 126 } 127 128 if (module_exists('number')) { 129 function number_content_generate($node, $field) { 130 if (content_handle('widget', 'multiple values', $field) == CONTENT_HANDLE_MODULE) { 131 return content_devel_multiple('_number_content_generate', $node, $field); 132 } 133 else { 134 return _number_content_generate($node, $field); 135 } 136 } 137 138 function _number_content_generate($node, $field) { 139 $node_field = array(); 140 $allowed_values = content_allowed_values($field); 141 if (!empty($allowed_values)) { 142 // Just pick one of the specified allowed values. 143 $node_field['value'] = array_rand($allowed_values); 144 } 145 else { 146 $min = is_numeric($field['min']) ? $field['min'] : 0; 147 switch ($field['type']) { 148 case 'number_integer': 149 $max = is_numeric($field['max']) ? $field['max'] : 10000; 150 $decimal = 0; 151 $scale = 0; 152 break; 153 154 case 'number_decimal': 155 $precision = is_numeric($field['precision']) ? $field['precision'] : 10; 156 $scale = is_numeric($field['scale']) ? $field['scale'] : 2; 157 $max = is_numeric($field['max']) ? $field['max'] : pow(10, ($precision - $scale)); 158 $decimal = rand(0, (10 * $scale)) / 100; 159 break; 160 161 case 'number_float': 162 $precision = rand(10, 32); 163 $scale = rand(0, 2); 164 $decimal = rand(0, (10 * $scale)) / 100; 165 $max = is_numeric($field['max']) ? $field['max'] : pow(10, ($precision - $scale)); 166 break; 167 } 168 $node_field['value'] = round((rand($min, $max) + $decimal), $scale); 169 } 170 return $node_field; 171 } 172 } 173 174 if (module_exists('nodereference')) { 175 function nodereference_content_generate($node, $field) { 176 if (content_handle('widget', 'multiple values', $field) == CONTENT_HANDLE_MODULE) { 177 return content_devel_multiple('_nodereference_content_generate', $node, $field); 178 } 179 else { 180 return _nodereference_content_generate($node, $field); 181 } 182 } 183 184 function _nodereference_content_generate($node, $field) { 185 $node_field = array(); 186 $allowed_values = nodereference_allowed_values($field); 187 unset($allowed_values[0]); 188 if (!empty($allowed_values)) { 189 // Just pick one of the specified allowed values. 190 $node_field['nid'] = array_rand($allowed_values); 191 } 192 return $node_field; 193 } 194 } 195 196 if (module_exists('userreference')) { 197 function userreference_content_generate($node, $field) { 198 if (content_handle('widget', 'multiple values', $field) == CONTENT_HANDLE_MODULE) { 199 return content_devel_multiple('_userreference_content_generate', $node, $field); 200 } 201 else { 202 return _userreference_content_generate($node, $field); 203 } 204 } 205 206 function _userreference_content_generate($node, $field) { 207 $node_field = array(); 208 $allowed_values = userreference_allowed_values($field); 209 if (isset($allowed_values['none'])) { 210 unset($allowed_values['none']); 211 } 212 if (!empty($allowed_values)) { 213 // Just pick one of the specified allowed values. 214 $node_field['uid'] = array_rand($allowed_values); 215 } 216 return $node_field; 217 } 218 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Mon Jul 9 18:01:44 2012 | Cross-referenced by PHPXref 0.7 |