annotate sites/all/modules/prepopulate/prepopulate.module @ 11:b0ee71395280

deleted .DS_Store files
author danieleb <danielebarchiesi@me.com>
date Mon, 28 Oct 2013 16:12:13 +0000
parents ce11bbd8f642
children
rev   line source
danielebarchiesi@4 1 <?php
danielebarchiesi@4 2
danielebarchiesi@4 3 /**
danielebarchiesi@4 4 * @file
danielebarchiesi@4 5 * Fill form elements with data from GET or POST values.
danielebarchiesi@4 6 *
danielebarchiesi@4 7 * Originally written by ea. Farris <eafarris@gmail.com>
danielebarchiesi@4 8 * Based on an idea from chx, from the conversation at
danielebarchiesi@4 9 * http://www.drupal.org/node/27155.
danielebarchiesi@4 10 */
danielebarchiesi@4 11
danielebarchiesi@4 12 /**
danielebarchiesi@4 13 * Implementation of hook_help().
danielebarchiesi@4 14 */
danielebarchiesi@4 15 function prepopulate_help($path, $arg) {
danielebarchiesi@4 16 switch ($path) {
danielebarchiesi@4 17 case 'admin/modules#description':
danielebarchiesi@4 18 return t('Pre-populates forms with HTTP GET or POST data');
danielebarchiesi@4 19 break;
danielebarchiesi@4 20 }
danielebarchiesi@4 21 }
danielebarchiesi@4 22
danielebarchiesi@4 23 /**
danielebarchiesi@4 24 * Implementation of hook_form_alter().
danielebarchiesi@4 25 */
danielebarchiesi@4 26 function prepopulate_form_alter(&$form, $form_state, $form_id) {
danielebarchiesi@4 27 // Provide for accepting base64 encoded fields.
danielebarchiesi@4 28 if (isset($_REQUEST['pp'])) {
danielebarchiesi@4 29 parse_str(base64_decode($_REQUEST['pp']), $_REQUEST);
danielebarchiesi@4 30 }
danielebarchiesi@4 31 if (isset($_REQUEST['edit'])) {
danielebarchiesi@4 32 $form['#after_build'][] = 'prepopulate_after_build';
danielebarchiesi@4 33 }
danielebarchiesi@4 34 }
danielebarchiesi@4 35
danielebarchiesi@4 36 /**
danielebarchiesi@4 37 * An #after_build function to set the values prepopulated in the request.
danielebarchiesi@4 38 */
danielebarchiesi@4 39 function prepopulate_after_build($form, &$form_state) {
danielebarchiesi@4 40 if (isset($_REQUEST['pp'])) {
danielebarchiesi@4 41 parse_str(base64_decode($_REQUEST['pp']), $_REQUEST);
danielebarchiesi@4 42 }
danielebarchiesi@4 43 if (isset($_REQUEST['edit'])) {
danielebarchiesi@4 44 $request = (array)$_REQUEST['edit'];
danielebarchiesi@4 45 _prepopulate_request_walk($form, $request);
danielebarchiesi@4 46 }
danielebarchiesi@4 47 return $form;
danielebarchiesi@4 48 }
danielebarchiesi@4 49
danielebarchiesi@4 50 /**
danielebarchiesi@4 51 * Internal helper to set element values from the $_REQUEST variable.
danielebarchiesi@4 52 *
danielebarchiesi@4 53 * @param &$form
danielebarchiesi@4 54 * Array. A form element.
danielebarchiesi@4 55 * @param &$requestslice
danielebarchiesi@4 56 * String or array. Value(s) to be applied to the element.
danielebarchiesi@4 57 */
danielebarchiesi@4 58 function _prepopulate_request_walk(&$form, &$requestslice) {
danielebarchiesi@4 59 $limited_types = array('value', 'hidden', 'button', 'image_button');
danielebarchiesi@4 60 if (is_array($requestslice)) {
danielebarchiesi@4 61 foreach (array_keys($requestslice) as $requestvar) {
danielebarchiesi@4 62 if (element_child($requestvar) && !empty($form[$requestvar]) &&
danielebarchiesi@4 63 (!isset($form[$requestvar]['#type']) || !in_array($form[$requestvar]['#type'], $limited_types))) {
danielebarchiesi@4 64 if (!isset($form[$requestvar]['#access']) || $form[$requestvar]['#access'] != FALSE) {
danielebarchiesi@4 65 _prepopulate_request_walk($form[$requestvar], $requestslice[$requestvar]);
danielebarchiesi@4 66 }
danielebarchiesi@4 67 }
danielebarchiesi@4 68 }
danielebarchiesi@4 69 if (!empty($form['#default_value']) && is_array($form['#default_value'])) {
danielebarchiesi@4 70 $form['#default_value'] = array_merge($form['#default_value'], $requestslice);
danielebarchiesi@4 71 }
danielebarchiesi@4 72 }
danielebarchiesi@4 73 else {
danielebarchiesi@4 74 if ($form['#type'] == 'markup' || empty($form['#type']) ) {
danielebarchiesi@4 75 $form['#value'] = check_plain($requestslice);
danielebarchiesi@4 76 }
danielebarchiesi@4 77 else {
danielebarchiesi@4 78 $form['#value'] = $requestslice;
danielebarchiesi@4 79 }
danielebarchiesi@4 80 }
danielebarchiesi@4 81 }