You are here

function menu_icons_form_submit in Menu Icons 7.3

Same name and namespace in other branches
  1. 8 menu_icons.module \menu_icons_form_submit()
  2. 6.2 menu_icons.module \menu_icons_form_submit()

Process the submitted form

1 string reference to 'menu_icons_form_submit'
menu_icons_form_alter in ./menu_icons.module
Implements hook_form_alter().

File

./menu_icons.module, line 189
Module to associate icons with menu items

Code

function menu_icons_form_submit($form, &$form_state) {

  // Check the destination folder, attempt to create it if it does't exist
  $directory_path = menu_icons_directory_path();
  file_prepare_directory($directory_path, FILE_CREATE_DIRECTORY);

  // Store the current icon path
  $path = $form_state['values']['icon_path'];

  // Define the validation settings
  $validate = array(
    'file_validate_is_image' => array(),
  );

  // Check for a new uploaded icon, and use that instead.
  if ($file = file_save_upload('icon_upload', $validate)) {
    $parts = pathinfo($file->filename);
    $filename = $directory_path . '/menu_icon_' . $form_state['values']['mlid'] . '.' . $parts['extension'];
    file_unmanaged_copy($file->uri, $filename, FILE_EXISTS_REPLACE);

    // Flush image style generated images
    image_path_flush($filename);
    $path = $filename;
  }
  $options = unserialize(db_query('SELECT options FROM {menu_links} WHERE mlid = :mlid', array(
    ':mlid' => $form_state['values']['mlid'],
  ))
    ->fetchField());
  $options['menu_icon'] = array(
    'enable' => $form_state['values']['use_icon_logo'],
    'path' => $path,
    'image_style' => $form_state['values']['image_style'],
  );

  // Use default image style if not explicitly set.
  if (empty($options['menu_icon']['image_style'])) {
    $options['menu_icon']['image_style'] = variable_get('menu_icons_image_style_default', 'menu_icon');
  }
  if (!isset($options['attributes'])) {
    $options['attributes'] = array();
  }
  if (!isset($options['attributes']['class'])) {
    $options['attributes']['class'] = array();
  }
  $classes = array();
  $classes[] = "menu_icon";
  $classes[] = "menu-" . $form_state['values']['mlid'];
  if ($options['menu_icon']['enable'] && !empty($options['menu_icon']['path']) && file_exists($options['menu_icon']['path'])) {
    foreach ($classes as $class) {
      if (!in_array($class, $options['attributes']['class'])) {
        $options['attributes']['class'][] = $class;
      }
    }
  }
  if (empty($options['attributes']['class'])) {
    unset($options['attributes']['class']);
  }
  db_update('menu_links')
    ->fields(array(
    'options' => serialize($options),
  ))
    ->condition('mlid', $form_state['values']['mlid'])
    ->execute();

  // Regenerate the css file
  menu_icons_css_generate();
}