function block_form_user_profile_form_alter

Implements hook_form_FORM_ID_alter() for user_profile_form().

File

modules/block/block.module, line 576

Code

function block_form_user_profile_form_alter(&$form, &$form_state) {
    if ($form['#user_category'] == 'account') {
        $account = $form['#user'];
        $rids = array_keys($account->roles);
        $result = db_query("SELECT DISTINCT b.* FROM {block} b LEFT JOIN {block_role} r ON b.module = r.module AND b.delta = r.delta WHERE b.status = 1 AND b.custom <> 0 AND (r.rid IN (:rids) OR r.rid IS NULL) ORDER BY b.weight, b.module", array(
            ':rids' => $rids,
        ));
        $blocks = array();
        foreach ($result as $block) {
            $data = module_invoke($block->module, 'block_info');
            if ($data[$block->delta]['info']) {
                $blocks[$block->module][$block->delta] = array(
                    '#type' => 'checkbox',
                    '#title' => check_plain($data[$block->delta]['info']),
                    '#default_value' => isset($account->data['block'][$block->module][$block->delta]) ? $account->data['block'][$block->module][$block->delta] : $block->custom == 1,
                );
            }
        }
        // Only display the fieldset if there are any personalizable blocks.
        if ($blocks) {
            $form['block'] = array(
                '#type' => 'fieldset',
                '#title' => t('Personalize blocks'),
                '#description' => t('Blocks consist of content or information that complements the main content of the page. Enable or disable optional blocks using the checkboxes below.'),
                '#weight' => 3,
                '#collapsible' => TRUE,
                '#tree' => TRUE,
            );
            $form['block'] += $blocks;
        }
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.