Api
Version
mediamosa-30Class
mediamosa_rest_call_asset_getCode
File: /sites/all/modules/mediamosa/modules/asset/mediamosa_asset.rest.class.inc
<?php
/**
* URI: /asset/$asset_id
* Method: GET
*
* Get a asset.
*
* 1.x: media_management_get_asset
*/
class mediamosa_rest_call_asset_get extends mediamosa_rest_call {
// ------------------------------------------------------------------ Consts.
// Rest vars;
const ASSET_ID = 'asset_id';
const USER_ID = 'user_id';
const ACL_USER_ID = 'acl_user_id'; // Alias for user_id.
const ACL_GROUP_ID = 'acl_group_id';
const ACL_DOMAIN = 'acl_domain';
const ACL_REALM = 'acl_realm';
const SHOW_STILLS = 'show_stills';
const SHOW_COLLECTIONS = 'show_collections';
const TAG = 'tag';
const IS_OAI = 'is_oai';
const VIEW_HIDDEN_METADATA = 'view_hidden_metadata';
// Aliases, do NOT use in code(!).
const ALIAS_AUT_USER_ID = 'aut_user_id';
const ALIAS_AUT_GROUP_ID = 'aut_group_id';
const ALIAS_AUT_DOMAIN = 'aut_domain';
const ALIAS_AUT_REALM = 'aut_realm';
// ------------------------------------------------------------------ Get Var Setup.
public function get_var_setup() {
$a_var_setup = array();
$a_var_setup = array(
self::VARS => array(
self::ASSET_ID => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_ASSET_ID,
self::VAR_DESCRIPTION => 'The ID of the asset to retrieve.',
self::VAR_IS_REQUIRED => self::VAR_IS_REQUIRED_YES,
),
self::TAG => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_STRING,
self::VAR_DESCRIPTION => 'Include tag to search on mediafiles of the specified asset.',
self::VAR_RANGE_END => mediamosa_asset_mediafile_db::TAG_LENGTH,
),
self::USER_ID => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_USER_ID,
self::VAR_DESCRIPTION => 'Alias for acl_user_id parameter. Warning: is chosen above acl_user_id when both are used.',
),
self::ACL_USER_ID => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_USER_ID,
self::VAR_DESCRIPTION => 'The current user is used for authorization. The acl_* fields affect the [granted] field in the output, and the parameter "granted" was given the number of records.',
self::VAR_ALIAS_FOR => array(self::ALIAS_AUT_USER_ID),
),
self::ACL_GROUP_ID => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_GROUP_ID,
self::VAR_DESCRIPTION => 'The group(s), where the current user is in, is used for authorization.',
self::VAR_IS_ARRAY => self::VAR_IS_ARRAY_YES,
self::VAR_DEFAULT_VALUE => array(), // NULL is bad when not provided.
self::VAR_ALIAS_FOR => array(self::ALIAS_AUT_GROUP_ID),
),
self::ACL_DOMAIN => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_DOMAIN,
self::VAR_DESCRIPTION => 'The domain of the user for autohorisation.',
self::VAR_ALIAS_FOR => array(self::ALIAS_AUT_DOMAIN),
),
self::ACL_REALM => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_REALM,
self::VAR_DESCRIPTION => 'The realm of the user for autohorisation.',
self::VAR_ALIAS_FOR => array(self::ALIAS_AUT_REALM),
),
self::SHOW_STILLS => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_BOOL,
self::VAR_DESCRIPTION => 'If true, then include all of the still information.',
self::VAR_DEFAULT_VALUE => 'TRUE',
),
self::SHOW_COLLECTIONS => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_BOOL,
self::VAR_DESCRIPTION => 'If true, then include all of the collection information.',
self::VAR_DEFAULT_VALUE => 'FALSE',
),
self::IS_OAI => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_BOOL,
self::VAR_DESCRIPTION => 'Generate additonal asset data for OAI output.',
self::VAR_DEFAULT_VALUE => 'FALSE',
),
self::VIEW_HIDDEN_METADATA => array(
self::VAR_TYPE => mediamosa_sdk::TYPE_BOOL,
self::VAR_DESCRIPTION => "View hidden metadata.",
self::VAR_DEFAULT_VALUE => 'FALSE',
),
)
);
// Include default.
return self::get_var_setup_default($a_var_setup);
}
// ------------------------------------------------------------------ Do Call.
public function do_call() {
$mediamosa = mediamosa::get();
$app_ids = $this->get_param_value_app();
$app_id = reset($app_ids);
$is_app_admin = $this->get_param_value(self::IS_APP_ADMIN);
$asset_id = $this->get_param_value(self::ASSET_ID);
if ($this->isset_given_param(self::USER_ID)) {
$this->set_param_value(self::ACL_USER_ID, $this->get_param_value(self::USER_ID));
}
// View hidden metadata.
$view_hidden_metadata = $this->get_param_value(self::VIEW_HIDDEN_METADATA);
$acl_user_id = $this->get_param_value(self::ACL_USER_ID);
$a_acl_group_id = $this->get_param_value(self::ACL_GROUP_ID);
$acl_domain = $this->get_param_value(self::ACL_DOMAIN);
$acl_realm = $this->get_param_value(self::ACL_REALM);
$tag = $this->get_param_value(self::TAG);
$is_oai = $this->get_param_value(self::IS_OAI);
$show_stills = $this->get_param_value(self::SHOW_STILLS);
$show_collections = $this->get_param_value(self::SHOW_COLLECTIONS);
// Hotfix, we dont provide this, we always return the asset, so always supply the granted flag
$granted = TRUE;
// Asset must exits.
$asset = mediamosa_db::db_must_exists(mediamosa_asset_db::TABLE_NAME, array(mediamosa_asset_db::ID => $asset_id), NULL, array(), FALSE);
// Fix app_id.
if (in_array($asset['app_id'], $app_ids)) {
$app_id = $asset['app_id'];
}
// ACL check.
mediamosa_acl::read_single_object(mediamosa_acl::ACL_TYPE_ASSET, $asset_id, $app_ids);
// Check un/inappropriate flag.
mediamosa_asset::is_unappropriate($asset_id, $app_ids, $acl_user_id, $is_app_admin);
// Collect.
$add_has_streamable_mediafiles = FALSE;
$items = mediamosa_asset::asset_collect(
array($asset_id),
$app_ids,
$acl_user_id,
$granted,
$a_acl_group_id,
$acl_domain,
$acl_realm,
$is_app_admin,
$show_stills,
$show_collections,
$add_has_streamable_mediafiles,
$view_hidden_metadata
);
// Add mediafiles.
$mediafile_ids = mediamosa_asset_mediafile::mediafiles_search($asset_id, $tag, FALSE, ($asset['app_id'] == $app_id ? array() : $app_ids));
// Is app client at 1.6 ?
$env_active_version = mediamosa::get_environment_setting(mediamosa::ENV_MEDIAMOSA_VERSION);
// Show in old format? Yes, if the app client < 1.6.
$old_output = $env_active_version !== FALSE && ($env_active_version[mediamosa_version::MAJOR] == 1 && $env_active_version[mediamosa_version::MINOR] < 6);
// Now enrich the output with mediafiles.
$items[0]['mediafiles'] = mediamosa_asset_mediafile::enrich_response_mediafile($mediafile_ids, $app_ids, $is_oai, $show_stills, $old_output);
// Add streamable setting on asset.
$items[0]['has_streamable_mediafiles'] = mediamosa_asset::enrich_response_has_streamable_mediafiles($items[0]['mediafiles']) ? 'TRUE' : 'FALSE';
// Add to response.
foreach ($items as $item) {
$mediamosa->add_item($item);
}
// Increase viewed.
mediamosa_asset::asset_viewed($asset_id);
}
}