You are here

function imageeditor_save in Image Editor 6

Same name and namespace in other branches
  1. 7 imageeditor.pages.inc \imageeditor_save()
1 string reference to 'imageeditor_save'
imageeditor_menu in ./imageeditor.module
Implementation of hook_menu().

File

./imageeditor.module, line 130
Allows online editing of images using different image editing services.

Code

function imageeditor_save($service = '', $field_name = '', $delta = '', $new = '', $replace = '', $first_run = '') {
  if ($service == 'pixlr' || $service == 'aviary' || $service == 'picnik' || $service == 'fotoflexer' || $service == 'sumopaint' || $service == 'paintweb') {
    if ($service == 'pixlr' || $service == 'aviary' || $service == 'fotoflexer' || $service == 'sumopaint' || $service == 'paintweb') {
      $image_param = 'image';
    }
    elseif ($service == 'picnik') {
      $image_param = 'file';
    }
    if ($service == 'pixlr' || $service == 'picnik' || $service == 'fotoflexer') {
      if (isset($_GET[$image_param])) {
        $image = rawurldecode($_GET[$image_param]);
      }
    }
    elseif ($service == 'aviary') {
      if (isset($_POST['imageurl'])) {
        $image = rawurldecode($_POST['imageurl']);
      }
      elseif (isset($_GET[$image_param])) {
        $image = rawurldecode($_GET[$image_param]);
      }
    }
    elseif ($service == 'sumopaint') {
      if (isset($_POST['data'])) {
        if ($_POST['url']) {
          $filename = file_save_data(base64_decode($_POST["data"]), file_directory_path() . '/' . basename($_POST['url']));
        }
        else {
          $filename = file_save_data(base64_decode($_POST["data"]), file_directory_path() . '/' . md5($_POST["data"]) . '.png');
        }
        $image = file_create_url($filename);
        $sumo_first_run = 1;
      }
      elseif (isset($_GET[$image_param])) {
        $image = rawurldecode($_GET[$image_param]);
        $sumo_first_run = 0;
      }
    }
    elseif ($service == 'paintweb') {
      if (isset($_POST['data'])) {
        if ($_POST['url'] && $_POST['url'] != 'undefined') {
          $filename = file_save_data(base64_decode($_POST["data"]), file_directory_path() . '/' . basename($_POST['url']));
        }
        else {
          $filename = file_save_data(base64_decode($_POST["data"]), file_directory_path() . '/' . md5($_POST["data"]) . '.png');
        }
        print file_create_url($filename);
        $paintweb_first_run = 1;
        exit;
      }
      elseif (isset($_GET[$image_param])) {
        $image = rawurldecode($_GET[$image_param]);
        $paintweb_first_run = 0;
      }
    }
    $js_code = '';

    //Find Remote URL Filefield source input element, set the value and submit
    if ($service == 'pixlr' || $service == 'picnik' || $service == 'paintweb') {
      $parent_type = 'parent';
    }
    elseif ($service == 'aviary') {
      $parent_type = 'parent.parent';
    }
    elseif ($service == 'fotoflexer' || $service == 'sumopaint') {
      $parent_type = 'opener';
    }
    $js_code .= 'if(' . $parent_type . '){';
    $id = 'edit-' . str_replace('_', '-', $field_name) . '-' . $delta;
    if ($service == 'picnik' && isset($_GET['_imageid'])) {
      $replace = 1;
    }
    elseif ($service == 'picnik' && !isset($_GET['_imageid'])) {
      $replace = 0;
    }

    // remove
    if (!$new && $replace && $first_run) {
      $js_code .= $parent_type . '.$(\'input[name="' . $field_name . '_' . $delta . '_filefield_remove"]\').mousedown();';
      if ($service == 'pixlr' || $service == 'aviary' || $service == 'picnik' || $service == 'fotoflexer') {
        $js_code .= 'window.location = "' . url('imageeditor/save/' . $service . '/' . $field_name . '/' . $delta . '/' . $new . '/' . $replace . '/0', array(
          'absolute' => TRUE,
          'query' => array(
            $image_param => $image,
          ),
        )) . '";';
      }
      elseif ($service == 'sumopaint') {
        $js_code .= 'window.location = "' . url('imageeditor/save/' . $service . '/' . $field_name . '/' . $delta . '/' . $new . '/' . $replace . '/' . $sumo_first_run, array(
          'absolute' => TRUE,
          'query' => array(
            $image_param => $image,
          ),
        )) . '";';
      }
      elseif ($service == 'paintweb') {
        $js_code .= 'window.location = "' . url('imageeditor/save/' . $service . '/' . $field_name . '/' . $delta . '/' . $new . '/' . $replace . '/' . $paintweb_first_run, array(
          'absolute' => TRUE,
          'query' => array(
            $image_param => $image,
          ),
        )) . '";';
      }
    }
    elseif (!$new && !$replace && $first_run) {
      $js_code .= $parent_type . '.$(\'input[name="' . $field_name . '_add_more"]\').mousedown();';
      $js_code .= 'window.location = "' . url('imageeditor/save/' . $service . '/' . $field_name . '/' . $delta . '/' . $new . '/' . $replace . '/0', array(
        'absolute' => TRUE,
        'query' => array(
          $image_param => $image,
        ),
      )) . '";';
    }
    elseif ($new || !$new && $replace && !$first_run) {
      $js_code .= $parent_type . '.$(\'a[id="' . $id . '-remote-source"]\').click();';
      $js_code .= $parent_type . '.$(\'input[id="' . $id . '-filefield-remote-url"]\').val(\'' . $image . '\');';
      $js_code .= $parent_type . '.$(\'input[id="' . $id . '-filefield-remote-transfer"]\').mousedown();';
      if ($service == 'pixlr' || $service == 'aviary' || $service == 'picnik' || $service == 'paintweb') {
        $js_code .= $parent_type . '.Drupal.imageeditor.overlay.hide();';
      }
      elseif ($service == 'fotoflexer' || $service == 'sumopaint') {
        $js_code .= 'self.close();';
      }
    }
    elseif (!$new && !$replace && !$first_run) {
      $pos = strrpos($id, '-');
      $starts_with = substr($id, 0, $pos);
      $js_code .= $parent_type . '.$(\'a[id^="' . $starts_with . '-"][id$="-remote-source"]:first\').click();';
      $js_code .= $parent_type . '.$(\'input[id^="' . $starts_with . '-"][id$="-filefield-remote-url"]:first\').val(\'' . $image . '\');';
      $js_code .= $parent_type . '.$(\'input[id^="' . $starts_with . '-"][id$="-filefield-remote-transfer"]:first\').mousedown();';
      if ($service == 'pixlr' || $service == 'aviary' || $service == 'picnik' || $service == 'paintweb') {
        $js_code .= $parent_type . '.Drupal.imageeditor.overlay.hide();';
      }
      elseif ($service == 'fotoflexer' || $service == 'sumopaint') {
        $js_code .= 'self.close();';
      }
    }
    $js_code .= '}';
  }
  drupal_add_js($js_code, 'inline');
  return '';
}