Api
Version
mediamosa-30Class
mediamosa_rest_call_set_still_watermarkCode
File: /sites/all/modules/mediamosa/modules/asset/mediafile/still/mediamosa_asset_mediafile_still.rest.class.inc
<?php
/**
* URI: /still/$still_id/watermark
* Method: POST
*/
class mediamosa_rest_call_set_still_watermark extends mediamosa_rest_call {
// ------------------------------------------------------------------ Consts.
// Rest vars;
const STILL_ID = 'still_id';
const USER_ID = 'user_id';
// Watermark.
const WATERMARK_ID = 'watermark_id';
const WATERMARK_DST_X = 'watermark_dst_x';
const WATERMARK_DST_Y = 'watermark_dst_y';
const WATERMARK_PCT = 'watermark_pct';
const WATERMARK_V_ALIGN = 'watermark_v_align';
const WATERMARK_H_ALIGN = 'watermark_h_align';
const TAG = 'tag';
const ORDER = 'order';
const DEFAULT_ = 'default';
// ------------------------------------------------------------------ Public functions.
public function get_var_setup() {
$a_var_setup = array(
self::VARS => array(
self::USER_ID => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_USER_ID,
self::VAR_DESCRIPTION => 'The owner ID to match.',
self::VAR_IS_REQUIRED => self::VAR_IS_REQUIRED_YES,
),
self::STILL_ID => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_MEDIAFILE_ID,
self::VAR_DESCRIPTION => 'The still ID.',
self::VAR_IS_REQUIRED => self::VAR_IS_REQUIRED_YES,
),
// Watermark.
self::WATERMARK_ID => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_MEDIAFILE_ID,
self::VAR_DESCRIPTION => 'The watermark ID.',
self::VAR_IS_REQUIRED => self::VAR_IS_REQUIRED_YES,
),
self::WATERMARK_DST_X => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_INT,
self::VAR_DESCRIPTION => 'X-coordinate of destination point of watermark.',
self::VAR_DEFAULT_VALUE => mediamosa_asset_mediafile_still::WATERMARK_DEFAULT_DST_X,
),
self::WATERMARK_DST_Y => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_INT,
self::VAR_DESCRIPTION => 'Y-coordinate of destination point of watermark.',
self::VAR_DEFAULT_VALUE => mediamosa_asset_mediafile_still::WATERMARK_DEFAULT_DST_Y,
),
self::WATERMARK_PCT => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_INT,
self::VAR_DESCRIPTION => 'Alpha transparency of watermark (watermark visibility in percentage [0 - 100%]).',
self::VAR_DEFAULT_VALUE => mediamosa_asset_mediafile_still::WATERMARK_DEFAULT_PCT,
self::VAR_RANGE_START => 0,
self::VAR_RANGE_END => 100,
),
self::WATERMARK_V_ALIGN => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_STRING,
self::VAR_DESCRIPTION => 'Vertical align of watermark.',
self::VAR_ALLOWED_VALUES => array(
mediamosa_asset_mediafile_still::WATERMARK_VALUE_LEFT,
mediamosa_asset_mediafile_still::WATERMARK_VALUE_RIGHT,
),
self::VAR_DEFAULT_VALUE => mediamosa_asset_mediafile_still::WATERMARK_DEFAULT_V_ALIGN,
),
self::WATERMARK_H_ALIGN => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_STRING,
self::VAR_DESCRIPTION => 'Horizontal align of watermark.',
self::VAR_ALLOWED_VALUES => array(
mediamosa_asset_mediafile_still::WATERMARK_VALUE_TOP,
mediamosa_asset_mediafile_still::WATERMARK_VALUE_BOTTOM,
),
self::VAR_DEFAULT_VALUE => mediamosa_asset_mediafile_still::WATERMARK_DEFAULT_H_ALIGN,
),
self::ORDER => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_INT,
self::VAR_DESCRIPTION => 'Still order number. Only used when still_upload = true.',
self::VAR_DEFAULT_VALUE => 0,
),
self::DEFAULT_ => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_BOOL,
self::VAR_DESCRIPTION => 'Is default still? Only used when still_upload = true.',
self::VAR_DEFAULT_VALUE => 'FALSE',
),
self::TAG => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_STRING,
self::VAR_DESCRIPTION => 'Mediafile tag to set. An empty tag will clear possible set mediafile tag.',
),
),
);
return self::get_var_setup_default($a_var_setup);
}
public function do_call() {
$mediamosa = mediamosa::get();
$app_ids = $this->get_param_value_app();
// Get the 1st app.
$app_id = reset($app_ids);
$user_id = $this->get_param_value(self::USER_ID);
$still_id = $this->get_param_value(self::STILL_ID);
$watermark_id = $this->get_param_value(self::WATERMARK_ID);
$tag = $this->get_param_value(self::TAG);
$order = $this->get_param_value(self::ORDER);
$default = $this->get_param_value(self::DEFAULT_);
// Get the still using.
$still = mediamosa_asset_mediafile::must_exists($still_id, $app_id);
// Check the watermark id.
$watermark = mediamosa_asset_mediafile::must_exists($watermark_id, $app_id);
$asset_id = $still[mediamosa_asset_mediafile_db::ASSET_ID];
$owner_id = $still[mediamosa_asset_mediafile_db::OWNER_ID];
$group_id = $still[mediamosa_asset_mediafile_db::GROUP_ID];
// TODO: Needs later decision.
if (FALSE) {
// The new, watermarked still is inherit the basic values.
$tag = $still[mediamosa_asset_mediafile_db::TAG];
$order = mediamosa_asset_mediafile_metadata::get_mediafile_metadata_int($still_id, mediamosa_asset_mediafile_metadata::STILL_ORDER);
$default = mediamosa_asset_mediafile_metadata::get_mediafile_metadata_char($still_id, mediamosa_asset_mediafile_metadata::STILL_DEFAULT);
}
// Check user quota.
mediamosa_user::must_have_user_quota($app_id, $owner_id, $group_id);
// Must be on.
mediamosa_webservice_app::webservice_must_be_active(mediamosa_webservice_app::HANDLE_MEDIA_UPLOAD, array($app_id));
// Does the user has access?
mediamosa_acl::owner_check(
$app_id,
$user_id,
$still[mediamosa_asset_mediafile_db::APP_ID],
$still[mediamosa_asset_mediafile_db::OWNER_ID]
);
$still_parameters = array(
// Watermark.
self::WATERMARK_ID => $watermark_id,
self::WATERMARK_DST_X => $this->get_param_value(self::WATERMARK_DST_X),
self::WATERMARK_DST_Y => $this->get_param_value(self::WATERMARK_DST_Y),
self::WATERMARK_PCT => $this->get_param_value(self::WATERMARK_PCT),
self::WATERMARK_V_ALIGN => $this->get_param_value(self::WATERMARK_V_ALIGN),
self::WATERMARK_H_ALIGN => $this->get_param_value(self::WATERMARK_H_ALIGN),
);
$create_new_still = TRUE;
$still_id_new = mediamosa_asset_mediafile_still::create_watermark($still_id, $app_id, $still_parameters, $create_new_still);
if (!$still_id_new) {
// TODO: Better error code?
throw new mediamosa_exception_error(mediamosa_error::ERRORCODE_STILL_NOT_FOUND, array('@asset_id' => $asset_id));
}
$still_parameters = array(
// TODO: New type?
'still_type' => mediamosa_asset_mediafile_metadata::STILL_TYPE_PICTURE,
);
// Create still.
mediamosa_asset_mediafile_still::create(
$asset_id,
$still_id_new,
$app_id,
$owner_id,
$group_id,
$order,
$default,
$still_parameters,
NULL,
$still[mediamosa_asset_mediafile_db::MEDIAFILE_ID_SOURCE],
$tag
);
// Add still_id to output.
$mediamosa->add_item(array('still_id' => $still_id_new));
// Set ok.
$mediamosa->set_result_okay();
}
}