Api

Version

mediamosa-21

Class

mediamosa_rest_call_asset_supplement_update

Code

File: /sites/all/modules/mediamosa/modules/asset/supplement/mediamosa_asset_supplement.rest.inc
<?php

/**
 * URI: /asset/$asset_id/supplement/$supplement_id/update
 *      /supplement/update (FIXME: this (internal) URL should never would have worked under 1.x?)
 *      /supplement/$supplement_id/update (deprecated)
 * Method: POST
 *
 * Update the asset supplement.
 *
 * 1.x media_management_update_asset_supplement
 */
class mediamosa_rest_call_asset_supplement_update extends mediamosa_rest_call {
  
// ------------------------------------------------------------------ Consts.
  // Rest vars;
  
const ASSET_ID 'asset_id';
  const 
SUPPLEMENT_ID 'supplement_id';
  const 
USER_ID 'user_id';
  const 
OAI_PREFIX 'oai_prefix';
  const 
OAI_NAMESPACEURI 'oai_namespaceuri';
  const 
OAI_SCHEMALOCATION 'oai_schemalocation';
  const 
SUPPLEMENT 'supplement';

  
// ------------------------------------------------------------------ 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_type::TYPE_ASSET_ID,
          
self::VAR_DESCRIPTION => 'The asset ID.',
          
self::VAR_IS_REQUIRED => self::VAR_IS_REQUIRED_YES,
        ),
        
self::SUPPLEMENT_ID => array(
          
self::VAR_TYPE => mediamosa_type::TYPE_SUPPLEMENT_ID,
          
self::VAR_DESCRIPTION => 'The supplement ID.',
          
self::VAR_IS_REQUIRED => self::VAR_IS_REQUIRED_YES,
        ),
        
self::SUPPLEMENT => array(
          
self::VAR_TYPE => mediamosa_type::TYPE_STRING,
          
self::VAR_DESCRIPTION => 'The supplement.',
          
self::VAR_RANGE_END => 64 1024// 64k max length.
          
self::VAR_IS_REQUIRED => self::VAR_IS_REQUIRED_YES,
        ),
        
self::USER_ID => array(
          
self::VAR_TYPE => mediamosa_type::TYPE_USER_ID,
          
self::VAR_DESCRIPTION => 'The user ID.',
          
self::VAR_IS_REQUIRED => self::VAR_IS_REQUIRED_YES,
        ),
        
self::OAI_PREFIX => array(
          
self::VAR_TYPE => mediamosa_type::TYPE_STRING,
          
self::VAR_DESCRIPTION => 'The OAI prefix.',
          
self::VAR_RANGE_END => mediamosa_asset_supplement_db::OAI_PREFIX_LENGTH
        
),
        
self::OAI_NAMESPACEURI => array(
          
self::VAR_TYPE => mediamosa_type::TYPE_STRING,
          
self::VAR_DESCRIPTION => 'The OAI namespace URI.',
          
self::VAR_RANGE_END => mediamosa_asset_supplement_db::OAI_NAMESPACEURI_LENGTH
        
),
        
self::OAI_SCHEMALOCATION => array(
          
self::VAR_TYPE => mediamosa_type::TYPE_STRING,
          
self::VAR_DESCRIPTION => 'The OAI schema location.',
          
self::VAR_RANGE_END => mediamosa_asset_supplement_db::OAI_SCHEMALOCATION_LENGTH
        
),
      )
    );

    
// Enrich with required REST vars.
    
return self::get_var_setup_default($a_var_setup);
  }

  
// ------------------------------------------------------------------ Override Process Rest Args.
  
protected function process_rest_args(array $a_var_setup) {

    
// Run parent so we can get the values.
    
parent::process_rest_args($a_var_setup);

    
// Either all are not set or all are set.
    
$a_combined = array(self::OAI_NAMESPACEURIself::OAI_PREFIXself::OAI_SCHEMALOCATION);

    
// If one of these are set, then make them all required.
    
$oai_set FALSE;
    foreach (
$a_combined as $param) {
      if (
$this->isset_given_param($param)) {
        
$oai_set TRUE;
        break;
      }
    }

    
// One or more set? Then all required; make them all required.
    
if ($oai_set) {
      foreach (
$a_combined as $param) {
        
$a_var_setup[self::VARS][$param][self::VAR_IS_REQUIRED] = self::VAR_IS_REQUIRED_YES;
      }

      
// When providing OAI stuff, then the supplement is a XML.
      
$a_var_setup[self::VARS][self::SUPPLEMENT][self::VAR_TYPE] = mediamosa_type::TYPE_XML_OAI;
    }
    else {
      
// No OAI set? Then Supplement is required.
      
$a_var_setup[self::VARS][self::SUPPLEMENT][self::VAR_IS_REQUIRED] = self::VAR_IS_REQUIRED_YES;
    }

    
// Run parent again.
    
return parent::process_rest_args($a_var_setup);
  }
  
// ------------------------------------------------------------------ Do Call.
  
public function do_call() {
    
$o_mediamosa mediamosa::get();

    
$a_app_ids $this->get_param_value_app();
    
$app_id reset($a_app_ids);

    
// Test webservice.
    
mediamosa_webservice_app::webservice_must_be_active(mediamosa_webservice_app::HANDLE_MEDIA_MANAGEMENT$a_app_ids);

    
// Get args.
    
$asset_id $this->get_param_value(self::ASSET_ID);
    
$supplement_id $this->get_param_value(self::SUPPLEMENT_ID);
    
$user_id $this->get_param_value(self::USER_ID);
    
$oai_prefix $this->get_param_value(self::OAI_PREFIX);
    
$oai_namespaceuri $this->get_param_value(self::OAI_NAMESPACEURI);
    
$oai_schemalocation $this->get_param_value(self::OAI_SCHEMALOCATION);
    
$supplement $this->get_param_value(self::SUPPLEMENT);

    
// Must exists.
    
$asset mediamosa_asset::must_exists($asset_id);

    
// Update the supplement.
    
mediamosa_asset_supplement::update($app_id$user_id$supplement_id$oai_prefix$oai_namespaceuri$oai_schemalocation$supplement);

    
// Set ok.
    
$o_mediamosa->set_result_okay();
  }
}