You are here

function media_crop_create_instance in Media crop 7

Page callback, for creating a (or retrieving an existing) cropped media instance.

1 string reference to 'media_crop_create_instance'
media_crop_menu in ./media_crop.module
Implements hook_menu().

File

./media_crop.module, line 524
Media crop primary module file.

Code

function media_crop_create_instance($style_name, $file, $token) {
  if (!drupal_valid_token($token, MEDIA_CROP_TOKEN_VALUE)) {
    watchdog('media_crop', 'Invalid token. ( %token )', array(
      '%token' => $token,
    ));
    drupal_access_denied();
  }
  if (!is_array($_POST['media_crop'])) {
    watchdog('media_crop', 'Missing necessary _POST data.');
    drupal_access_denied();
  }
  $angle = (int) $_POST['media_crop']['angle'];
  $crop_x_coordinate = (int) $_POST['media_crop']['x'];
  $crop_y_coordinate = (int) $_POST['media_crop']['y'];
  $crop_width = (int) $_POST['media_crop']['w'];
  $crop_height = (int) $_POST['media_crop']['h'];
  $scale_width = _is_positive_integer($_POST['media_crop']['scale_w']) ? (int) $_POST['media_crop']['scale_w'] : 0;
  $scale_height = _is_positive_integer($_POST['media_crop']['scale_h']) ? (int) $_POST['media_crop']['scale_h'] : 0;
  $mciid = db_query("\n      SELECT mciid FROM {media_crop_instance} WHERE\n      fid = :fid AND\n      image_style_name = :style AND\n      angle = :angle AND\n      crop_x = :x AND\n      crop_y = :y AND\n      crop_w = :w AND\n      crop_h = :h AND\n      crop_scale_w = :scale_w AND\n      crop_scale_h = :scale_h\n    ", array(
    ':fid' => $file->fid,
    ':style' => $style_name,
    ':angle' => $angle,
    ':x' => $crop_x_coordinate,
    ':y' => $crop_y_coordinate,
    ':w' => $crop_width,
    ':h' => $crop_height,
    ':scale_w' => $scale_width,
    ':scale_h' => $scale_height,
  ))
    ->fetchField();
  if (!$mciid) {
    $instance = (object) array(
      'fid' => $file->fid,
      'image_style_name' => $style_name,
      'angle' => $angle,
      'crop_x' => $crop_x_coordinate,
      'crop_y' => $crop_y_coordinate,
      'crop_w' => $crop_width,
      'crop_h' => $crop_height,
      'crop_scale_w' => $scale_width,
      'crop_scale_h' => $scale_height,
    );
    drupal_write_record('media_crop_instance', $instance);
    $mciid = $instance->mciid;
  }
  drupal_json_output($mciid);
  return NULL;
}