/[drupal]/contributions/modules/randomizer/randomizer.module
ViewVC logotype

Diff of /contributions/modules/randomizer/randomizer.module

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.4, Mon Nov 6 22:01:03 2006 UTC revision 1.5, Tue Mar 6 21:20:21 2007 UTC
# Line 1  Line 1 
1  <?php  <?php
2  // $Id: randomizer.module,v 1.3 2006/06/21 20:44:08 deekayen Exp $  // $Id: randomizer.module,v 1.4 2006/11/06 22:01:03 deekayen Exp $
3    
4  /**  /**
5   * @file   * @file
# Line 7  Line 7 
7   *   *
8   * @author David Kent Norman   * @author David Kent Norman
9   * @link http://deekayen.net/   * @link http://deekayen.net/
10   * @link http://drupal.org/node/66575   * @link http://drupal.org/project/randomizer
11   * @todo markers, alternate rand generators (rand vs mt_rand), seeding, excel export, randomize form input   * @todo markers, alternate rand generators (rand vs mt_rand), seeding, excel export, randomize form input
12   */   */
13    
# Line 40  function randomizer_help($section = 'adm Line 40  function randomizer_help($section = 'adm
40   * Implementation of hook_block().   * Implementation of hook_block().
41   */   */
42  function randomizer_block($op = 'list', $delta = 0, $edit = array()) {  function randomizer_block($op = 'list', $delta = 0, $edit = array()) {
   $edit = $_POST['edit'];  
43    switch($op) {    switch($op) {
44    case 'list':    case 'list':
45      $blocks[0]['info'] = 'Random number';      $blocks[0]['info'] = 'Random number';
# Line 92  function randomizer_menu($may_cache) { Line 91  function randomizer_menu($may_cache) {
91      $items[] = array('path' => 'randomizer',      $items[] = array('path' => 'randomizer',
92        'title' => t('randomizer'),        'title' => t('randomizer'),
93        'callback' => 'randomizer_page',        'callback' => 'randomizer_page',
94          'callback_arguments' => array($_POST),
95        'access' => user_access('access randomizer'),        'access' => user_access('access randomizer'),
96        'type' => MENU_SUGGESTED_ITEM);        'type' => MENU_SUGGESTED_ITEM);
97      $items[] = array(      $items[] = array(
# Line 116  function randomizer_menu($may_cache) { Line 116  function randomizer_menu($may_cache) {
116   * @return string   * @return string
117   */   */
118  function randomizer_page() {  function randomizer_page() {
119    if(isset($_POST['edit'])) {    $form = array();
120      $edit = $_POST['edit'];  
121      if (!is_numeric($edit['randomizer_sets'])) {    if(isset($_POST['op'])) {
122        if (!is_numeric($_POST['randomizer_sets'])) {
123        $error = true;        $error = true;
124        form_set_error('randomizer_sets', t('The entered sets of numbers must be numeric.'));        form_set_error('randomizer_sets', t('The entered sets of numbers must be numeric.'));
125      }      }
126      if ($edit['randomizer_sets'] > variable_get('randomizer_max_sets', RANDOMIZER_MAX_SETS)) {      if ($_POST['randomizer_sets'] > variable_get('randomizer_max_sets', RANDOMIZER_MAX_SETS)) {
127        $error = true;        $error = true;
128        form_set_error('randomizer_sets', t('The entered number of sets exceeds the maximum number of allowed sets allowed by the administrator.'));        form_set_error('randomizer_sets', t('The entered number of sets exceeds the maximum number of allowed sets allowed by the administrator.'));
129      }      }
130      if (!is_numeric($edit['randomizer_per_set'])) {      if (!is_numeric($_POST['randomizer_per_set'])) {
131        $error = true;        $error = true;
132        form_set_error('randomizer_per_set', t('The entered numbers per set must be numeric.'));        form_set_error('randomizer_per_set', t('The entered numbers per set must be numeric.'));
133      }      }
134      if ($edit['randomizer_per_set'] > variable_get('randomizer_max_per_set', RANDOMIZER_MAX_PER_SET)) {      if ($_POST['randomizer_per_set'] > variable_get('randomizer_max_per_set', RANDOMIZER_MAX_PER_SET)) {
135        $error = true;        $error = true;
136        form_set_error('randomizer_per_set', t('The entered amount of numbers per set exceeds the maximum number allowed allowed by the administrator.'));        form_set_error('randomizer_per_set', t('The entered amount of numbers per set exceeds the maximum number allowed allowed by the administrator.'));
137      }      }
138      if (!is_numeric($edit['randomizer_range_from'])) {      if (!is_numeric($_POST['randomizer_range_from'])) {
139        $error = true;        $error = true;
140        form_set_error('randomizer_range_from', t('The From value must be numeric.'));        form_set_error('randomizer_range_from', t('The From value must be numeric.'));
141      }      }
142      if (!is_numeric($edit['randomizer_range_to'])) {      if (!is_numeric($_POST['randomizer_range_to'])) {
143        $error = true;        $error = true;
144        form_set_error('randomizer_range_to', t('The To value must be numeric.'));        form_set_error('randomizer_range_to', t('The To value must be numeric.'));
145      }      }
146      if ($edit['randomizer_range_from'] == $edit['randomizer_range_to']) {      if ($_POST['randomizer_range_from'] == $_POST['randomizer_range_to']) {
147        $error = true;        $error = true;
148        form_set_error('randomizer_range_to', t('The range may not have equal From and To values.'));        form_set_error('randomizer_range_to', t('The range may not have equal From and To values.'));
149      }      }
150      $max = mt_getrandmax();      $max = mt_getrandmax();
151      if ($edit['randomizer_range_from'] > $max) {      if ($_POST['randomizer_range_from'] > $max) {
152        $error = true;        $error = true;
153        form_set_error('randomizer_range_from', t("The From value may not exceed $max."));        form_set_error('randomizer_range_from', t("The From value may not exceed $max."));
154      }      }
155      if ($edit['randomizer_range_to'] > $max) {      if ($_POST['randomizer_range_to'] > $max) {
156        $error = true;        $error = true;
157        form_set_error('randomizer_range_to', t("The To value may not exceed $max."));        form_set_error('randomizer_range_to', t("The To value may not exceed $max."));
158      }      }
159      unset($max);      unset($max);
160    
161      if (!$error) {      if (!$error) {
162        if (strcmp($edit['randomizer_range_from'], $edit['randomizer_range_to']) > 0) {        if (strcmp($_POST['randomizer_range_from'], $_POST['randomizer_range_to']) > 0) {
163          // reverse values so the smaller one is first when sent to the rand generator          // reverse values so the smaller one is first when sent to the rand generator
164          $tmp = $edit['randomizer_range_from'];          $tmp = $_POST['randomizer_range_from'];
165          $edit['randomizer_range_from'] = $edit['randomizer_range_to'];          $_POST['randomizer_range_from'] = $_POST['randomizer_range_to'];
166          $edit['randomizer_range_to'] = tmp;          $_POST['randomizer_range_to'] = tmp;
167          unset($tmp);          unset($tmp);
168        }        }
169    
170        $form = array();        $form = array();
171    
172        $edit['randomizer_range_from'] = (int)$edit['randomizer_range_from'];        $_POST['randomizer_range_from'] = (int)$_POST['randomizer_range_from'];
173        $edit['randomizer_range_to']   = (int)$edit['randomizer_range_to'];        $_POST['randomizer_range_to']   = (int)$_POST['randomizer_range_to'];
174    
175        for ($i=0; $i<$edit['randomizer_sets']; $i++) {        for ($i=0; $i<$_POST['randomizer_sets']; $i++) {
176          $list = array();          $list = array();
177          for ($j=0; $j < $edit['randomizer_per_set']; ) {          for ($j=0; $j < $_POST['randomizer_per_set']; ) {
178            $number = mt_rand($edit['randomizer_range_from'], $edit['randomizer_range_to']);            $number = mt_rand($_POST['randomizer_range_from'], $_POST['randomizer_range_to']);
179            if (!$edit['randomizer_unique'] || ($edit['randomizer_unique'] && !in_array($number, $list))) {            if (!$_POST['randomizer_unique'] || ($_POST['randomizer_unique'] && !in_array($number, $list))) {
180              $list[] = $number;              $list[] = $number;
181              $j++;              $j++;
182            }            }
183          }          }
184          if ($edit['randomizer_sort'] == '1') {          if ($_POST['randomizer_sort'] == '1') {
185            sort($list);            sort($list);
186          }          }
187          elseif ($edit['randomizer_sort'] == '2') {          elseif ($_POST['randomizer_sort'] == '2') {
188            rsort($list);            rsort($list);
189          }          }
190          $form['randomizer_result-'. $i] = array(          $form['randomizer_result-'. $i] = array(
191            '#type' => 'textarea',            '#type' => 'textarea',
192            '#default_value' => check_plain(implode($edit['randomizer_delimiter'], $list)),            '#default_value' => check_plain(implode($_POST['randomizer_delimiter'], $list)),
193            '#rows' => 10, '#cols' => 45,            '#rows' => 10, '#cols' => 45,
194            '#prefix' => t('Set #%i', array('%i' => $i+1)),            '#prefix' => t('Set #%i', array('%i' => $i+1)),
195            '#attributes' => array('onclick' => 'this.focus();this.select()'),            '#attributes' => array('onclick' => 'this.focus();this.select()'),
196            '#suffix' => '<hr />'            '#suffix' => '<hr />'
197          );          );
198        }        }
       return drupal_get_form('randomizer_output', $form);  
199      }      }
200    }    }
201    
202    if ($error || !isset($edit)) {    return drupal_get_form('randomizer_form', $form);
     $form = randomizer_form();  
   
     $form['randomizer_submit'] = array(  
       '#type' => 'submit',  
       '#value' => t('Randomize')  
     );  
     return drupal_get_form('randomizer', $form);  
   }  
203  }  }
204    
205  /**  /**
# Line 238  function randomizer_admin_settings() { Line 230  function randomizer_admin_settings() {
230  /**  /**
231   * Default form for the public and settings output   * Default form for the public and settings output
232   *   *
233     * @param array $append form fields to prepend to the default form
234   * @return array   * @return array
235   */   */
236  function randomizer_form() {  function randomizer_form($form = array()) {
237    $form = array();    $form['#redirect'] = FALSE;
238    $form['randomizer_sets'] = array(    $form['randomizer_sets'] = array(
239      '#type' => 'textfield',      '#type' => 'textfield',
240      '#size' => 5,      '#size' => 5,
# Line 316  function randomizer_form() { Line 309  function randomizer_form() {
309      '#title' => t('How do you want to delimit the output?'),      '#title' => t('How do you want to delimit the output?'),
310      '#description' => t('Characters to insert between output numbers')      '#description' => t('Characters to insert between output numbers')
311    );    );
312      $form['randomizer_submit'] = array(
313        '#type' => 'submit',
314        '#value' => t('Randomize')
315      );
316    
317    return $form;    return $form;
318  }  }

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

  ViewVC Help
Powered by ViewVC 1.1.2