source: sipei/modules/cck/includes/content.devel.inc @ fc0b1f8

drupal-6.x
Last change on this file since fc0b1f8 was ffa4103, checked in by Luis Peña <lpena@…>, 12 años ago

Cambiando el nombre de modulos a modules

  • Propiedad mode establecida a 100755
File size: 7.0 KB
Línea 
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 **/
21function 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 */
72function 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
93if (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
128if (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
174if (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
196if (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}
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.