function imagefield_crop_widget_value in Imagefield Crop 7
Same name and namespace in other branches
- 6 imagefield_crop_widget.inc \imagefield_crop_widget_value()
value callback
Registered by imagefield_crop_field_widget_form()
1 string reference to 'imagefield_crop_widget_value'
- imagefield_crop_field_widget_form in ./imagefield_crop.module 
- Implements hook_field_widget_form().
File
- ./imagefield_crop.module, line 392 
- Provide a widget to crop uploaded image.
Code
function imagefield_crop_widget_value(&$element, &$input, $form_state) {
  // set $input['fid'] and that will be the value of the element
  if (!empty($input['fid']) && $input['cropinfo']['changed']) {
    // Get crop and scale info.
    $crop = $input['cropinfo'];
    $instance = field_widget_instance($element, $form_state);
    $scale = NULL;
    if ($instance['widget']['settings']['resolution']) {
      list($scale['width'], $scale['height']) = explode('x', $instance['widget']['settings']['resolution']);
    }
    $src = file_load($input['fid']);
    $file_to_crop = _imagefield_crop_file_to_crop($src->fid);
    // Copy the original aside, for future cropping.
    if ($file_to_crop->fid == $src->fid && ($orig_uri = file_unmanaged_copy($src->uri, $src->uri))) {
      $orig = clone $src;
      $orig->fid = 0;
      $orig->uri = $orig_uri;
      $orig->filename = drupal_basename($orig_uri);
      $orig->status = 1;
      $orig = file_save($orig);
      file_usage_add($orig, 'imagefield_crop', 'file', $src->fid);
    }
    // do the crop. @todo check for errors
    // This worked in D6, doesn't work in D7
    // // Save crop data to the database
    // $src->imagefield_crop = array('crop' => $crop);
    // file_save($src);
    if (_imagefield_crop_resize(drupal_realpath($file_to_crop->uri), $crop, $scale, drupal_realpath($src->uri))) {
      // Insert crop info for this image in imagefield_crop_info variable.
      $crop['fid'] = $src->fid;
      unset($crop['changed']);
      imagefield_crop_file_settings_save($crop);
      // Remove cached versions of the cropped image.
      image_path_flush($src->uri);
    }
  }
}