Api
Version
mediamosa-30Class
mediamosa_rest_call_delete_mediafilesCode
File: /sites/all/modules/mediamosa/modules/asset/mediafile/mediamosa_asset_mediafile.rest.class.inc
<?php
/**
* URI: /mediafile/$mediafile_id/delete
* Method: GET
*/
class mediamosa_rest_call_delete_mediafiles extends mediamosa_rest_call {
// ------------------------------------------------------------------ Consts.
// Rest vars;
const MEDIAFILE_ID = 'mediafile_id';
const USER_ID = 'user_id';
const DELETE = 'delete';
const NEW_ORIGINAL = 'new_original';
const DELETE_CASCADE = 'cascade';
// ------------------------------------------------------------------ Public Functions.
public function get_var_setup() {
$a_var_setup = array();
$a_var_setup = array(
self::VARS => array(
self::MEDIAFILE_ID => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_MEDIAFILE_ID,
self::VAR_DESCRIPTION => 'The ID of the mediafile to delete.',
self::VAR_IS_REQUIRED => self::VAR_IS_REQUIRED_YES,
),
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::DELETE => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_STRING,
self::VAR_DESCRIPTION => 'Put on cascade to delete its stills as well.',
self::VAR_ALLOWED_VALUES => array('cascade', '')
),
self::NEW_ORIGINAL => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_MEDIAFILE_ID,
self::VAR_DESCRIPTION => 'The ID of the new original mediafile.',
),
)
);
// Enrich with required REST vars.
return self::get_var_setup_default($a_var_setup);
}
public function do_call() {
$o_mediamosa = mediamosa::get();
$app_ids = $this->get_param_value_app();
$app_id = reset($app_ids);
$mediafile_id = $this->get_param_value(self::MEDIAFILE_ID);
$user_id = $this->get_param_value(self::USER_ID);
$is_app_admin = $this->get_param_value(self::IS_APP_ADMIN);
$delete = $this->get_param_value(self::DELETE);
$user_id = $this->get_param_value(self::USER_ID);
$new_original = $this->get_param_value(self::NEW_ORIGINAL);
// Test webservice.
mediamosa_webservice_app::webservice_must_be_active(mediamosa_webservice_app::HANDLE_MEDIA_MANAGEMENT, $app_ids);
// Must exists.
$mediafile = mediamosa_asset_mediafile::must_exists($mediafile_id);
// Does the user have access?
mediamosa_acl::owner_check(
$app_id,
$user_id,
$mediafile[mediamosa_asset_mediafile_db::APP_ID],
$mediafile[mediamosa_asset_mediafile_db::OWNER_ID]
);
// Check the new original.
if ($new_original) {
// Must exists.
$mediafile_new_original = mediamosa_asset_mediafile::must_exists($new_original);
// Does the user have access?
mediamosa_acl::owner_check(
$app_id,
$user_id,
$mediafile_new_original[mediamosa_asset_mediafile_db::APP_ID],
$mediafile_new_original[mediamosa_asset_mediafile_db::OWNER_ID]
);
// Check whether the mediafile is original..
if ($mediafile[mediamosa_asset_mediafile_db::IS_ORIGINAL_FILE] != mediamosa_asset_mediafile_db::IS_ORIGINAL_FILE_TRUE) {
throw new mediamosa_exception_error(mediamosa_error::ERRORCODE_MEDIAFILE_IS_NOT_ORIGINAL, array('@mediafile_id' => $mediafile_id));
}
// Check whether the mediafile is parent of new original mediafile.
if ($mediafile_new_original[mediamosa_asset_mediafile_db::MEDIAFILE_ID_SOURCE] != $mediafile_id) {
throw new mediamosa_exception_error(mediamosa_error::ERRORCODE_INVALID_MEDIAFILE_RELATION, array('@mediafile_id' => $mediafile_id, '@new_original' => $new_original));
}
}
// Check if this mediafile is the only one under a sub-asset.
$query = mediamosa_db::db_select(mediamosa_asset_db::TABLE_NAME, 'a');
$query->fields('a', array(mediamosa_asset_db::PARENT_ID, mediamosa_asset_db::ID));
$query->join(mediamosa_asset_mediafile_db::TABLE_NAME, 'mf', strtr('a.#asset_id = mf.#asset_id', array('#asset_id' => mediamosa_asset_db::ID)));
$query->condition('mf.' . mediamosa_asset_mediafile_db::ID, $mediafile_id);
$a_asset = $query->execute()->fetchAssoc();
// Count the number of mediafiles.
$query = mediamosa_db::db_select(mediamosa_asset_mediafile_db::TABLE_NAME, 'mf');
$query->fields('mf', array(mediamosa_asset_mediafile_db::ID));
$query->condition('mf.' . mediamosa_asset_mediafile_db::ASSET_ID, $a_asset[mediamosa_asset_db::ID]);
$query->condition('mf.' . mediamosa_asset_mediafile_db::IS_STILL, mediamosa_asset_mediafile_db::IS_STILL_FALSE);
$count = $query->countQuery()->execute()->fetchField();
// Moet een subasset zijn en alleen deze mediafile als kind.
$delete_asset = (!is_null($a_asset['parent_id']) && $count == 1);
if ($delete == self::DELETE_CASCADE) {
// Deletes the stills.
$query = mediamosa_db::db_select(mediamosa_asset_mediafile_db::TABLE_NAME, 'mf');
$query->fields('mf', array(mediamosa_asset_mediafile_db::ASSET_ID));
$query->condition('mf.' . mediamosa_asset_mediafile_db::ID, $mediafile_id);
$query->condition('mf.' . mediamosa_asset_mediafile_db::IS_STILL, mediamosa_asset_mediafile_db::IS_STILL_FALSE);
$asset_id = $query->execute()->fetchField();
mediamosa_asset_mediafile_still::delete($asset_id, $mediafile_id);
}
// Delete the mediafile.
mediamosa_asset_mediafile::delete($mediafile_id);
if ($delete_asset) {
mediamosa_asset::delete($a_asset[mediamosa_asset_db::ID]);
}
// Set the new original mediafile.
if ($new_original) {
mediamosa_asset_mediafile::set_new_original($mediafile_id, $new_original);
}
$o_mediamosa->set_result_okay();
// update de timestamps van de asset
mediamosa_asset::update_asset_timestamps($a_asset[mediamosa_asset_db::ID]);
}
}