You are here

function sharedblocks_add_block_form_submit in Shared Blocks 7.2

Form validation handler for sharedblocks_add_block_form().

See also

sharedblocks_add_block_form()

block_add_block_form_submit()

1 string reference to 'sharedblocks_add_block_form_submit'
sharedblocks_add_block_form in ./sharedblocks.admin.inc
From constructor for the add new block subscription form.

File

./sharedblocks.admin.inc, line 37
Administration page callbacks for the sharedblocks module.

Code

function sharedblocks_add_block_form_submit($form, &$form_state) {
  form_state_values_clean($form_state);

  // Set the delta of the block.
  $delta = $form_state['values']['delta'] = $form_state['values']['name'];
  $transaction = db_transaction();
  try {

    // Run the normal new block submission (borrowed from block_add_block_form_submit).
    $query = db_insert('block')
      ->fields(array(
      'visibility',
      'pages',
      'custom',
      'title',
      'module',
      'theme',
      'region',
      'status',
      'weight',
      'delta',
      'cache',
    ));
    foreach (list_themes() as $key => $theme) {
      if ($theme->status) {
        $region = !empty($form_state['values']['regions'][$theme->name]) ? $form_state['values']['regions'][$theme->name] : BLOCK_REGION_NONE;
        $query
          ->values(array(
          'visibility' => (int) $form_state['values']['visibility'],
          'pages' => trim($form_state['values']['pages']),
          'custom' => (int) $form_state['values']['custom'],
          'title' => $form_state['values']['title'],
          'module' => $form_state['values']['module'],
          'theme' => $theme->name,
          'region' => $region == BLOCK_REGION_NONE ? '' : $region,
          'status' => 0,
          'status' => (int) ($region != BLOCK_REGION_NONE),
          'weight' => 0,
          'delta' => $delta,
          'cache' => DRUPAL_NO_CACHE,
        ));
      }
    }
    $query
      ->execute();
    $query = db_insert('block_role')
      ->fields(array(
      'rid',
      'module',
      'delta',
    ));
    foreach (array_filter($form_state['values']['roles']) as $rid) {
      $query
        ->values(array(
        'rid' => $rid,
        'module' => $form_state['values']['module'],
        'delta' => $delta,
      ));
    }
    $query
      ->execute();

    // Run hook_block_save().
    module_invoke($form_state['values']['module'], 'block_save', $form_state['values']['delta'], $form_state['values']);
  } catch (Exception $e) {
    $transaction
      ->rollback();
    watchdog_exception('block', $e);
    throw $e;
  }
  drupal_set_message(t('The block has been created.'));
  cache_clear_all();
  $form_state['redirect'] = 'admin/structure/block';
}