You are here

function menu_icons_form_submit in Menu Icons 8

Same name and namespace in other branches
  1. 6.2 menu_icons.module \menu_icons_form_submit()
  2. 7.3 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
Implementation of hook_form_alter().

File

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

Code

function menu_icons_form_submit($form, &$form_state) {

  // Get the global setings
  $file_validate_image_resolution = module_exists('imagecache') ? '0x0' : variable_get('menu_icons_file_validate_image_resolution', '45x45');

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

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

  // Define the validation settings
  if ($file_validate_image_resolution != '0x0') {
    $validate = array(
      'file_validate_is_image' => array(),
      'file_validate_image_resolution' => array(
        $file_validate_image_resolution,
      ),
    );
  }
  else {
    $validate = array(
      'file_validate_is_image' => array(),
    );
  }

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

    // The image was saved using file_save_upload() and was added to the
    // files table as a temporary file. We'll make a copy and let the garbage
    // collector delete the original upload.
    file_copy($file, $filename, FILE_EXISTS_REPLACE);
    $path = $filename;
  }
  $options = unserialize(db_result(db_query('SELECT options FROM {menu_links} WHERE mlid = %d', $form_state['values']['menu']['mlid'])));
  $options['menu_icon'] = array(
    'enable' => $form_state['values']['use_icon_logo'],
    'path' => $path,
  );
  if ($form_state['values']['imagecache_preset']) {
    $options['menu_icon']['imagecache_preset'] = $form_state['values']['imagecache_preset'];
  }
  $class = "menu_icon menu-" . $form_state['values']['menu']['mlid'];
  if ($options['menu_icon']['enable'] && !empty($options['menu_icon']['path']) && file_exists($options['menu_icon']['path'])) {
    if (!strstr($options['attributes']['class'], $class)) {
      $options['attributes']['class'] = empty($options['attributes']['class']) ? $class : $options['attributes']['class'] . " {$class}";
    }
  }
  else {
    $options['attributes']['class'] = str_replace($class, '', $options['attributes']['class']);
  }
  if (empty($options['attributes']['class'])) {
    unset($options['attributes']['class']);
  }
  db_query('UPDATE {menu_links} SET options = "%s" WHERE mlid = %d', serialize($options), $form_state['values']['menu']['mlid']);

  // Regenerate the css file
  menu_icons_css_generate();
}