Api

Version

mediamosa-30

Class

mediamosa_rest_call_collection_update

Code

File: /sites/all/modules/mediamosa/modules/collection/mediamosa_collection.rest.class.inc
<?php

/**
 * URI: /collection/$coll_id
 * Method: POST
 *
 * 1.x: media_management_update_collection
 */
class mediamosa_rest_call_collection_update extends mediamosa_rest_call {
  
// ------------------------------------------------------------------ Consts.
  // Rest vars;
  
const COLL_ID 'coll_id';
  const 
USER_ID 'user_id';
  const 
OWNER_ID 'owner_id';
  const 
GROUP_ID 'group_id';
  const 
PRIVATE_ 'private';
  const 
PUBLIC_ 'public';
  const 
CATEGORY 'category';
  const 
ISPRIVATE 'isprivate';
  const 
PUBLIC_ASSIGN 'public_assign';
  const 
IS_UNAPPROPRIATE 'is_unappropriate';
  const 
TITLE 'title';
  const 
DESCRIPTION 'description';

  
// ------------------------------------------------------- Functions (public).
  
public function get_var_setup() {
    
$var_setup = array();

    
// Do not set default values for update REST calls.
    
$var_setup = array(
      
self::VARS => array(
        
self::COLL_ID => array(
          
self::VAR_TYPE => mediamosa_sdk::TYPE_COLLECTION_ID,
          
self::VAR_DESCRIPTION => 'The collection ID.',
          
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 user ID, must match the owner of the collection, otherwise the update will fail.',
          
self::VAR_IS_REQUIRED => self::VAR_IS_REQUIRED_YES,
          
self::VAR_RANGE_END => mediamosa_user_db::NAME_LENGTH,
        ),
        
self::TITLE => array(
          
self::VAR_TYPE => mediamosa_sdk::TYPE_STRING,
          
self::VAR_DESCRIPTION => 'The title of the collection.',
        ),
        
self::DESCRIPTION => array(
          
self::VAR_TYPE => mediamosa_sdk::TYPE_STRING,
          
self::VAR_DESCRIPTION => 'Description of the collection.',
        ),
        
self::OWNER_ID => array(
          
self::VAR_TYPE => mediamosa_sdk::TYPE_USER_ID,
          
self::VAR_DESCRIPTION => 'An user who is the current owner can reassign a new owner; after changing the owner, the old owner has no rights to modify the collection.',
        ),
        
self::GROUP_ID => array(
          
self::VAR_TYPE => mediamosa_sdk::TYPE_GROUP_ID,
          
self::VAR_DESCRIPTION => 'The group ID.',
          
self::VAR_RANGE_END => mediamosa_user_group_db::GROUP_ID_LENGTH,
        ),
        
self::PRIVATE_ => array(
          
self::VAR_TYPE => mediamosa_sdk::TYPE_BOOL,
          
self::VAR_DESCRIPTION => 'Used to identify private collections, use [GET] /collection?private=true to get these collections.',
        ),
        
self::PUBLIC_ => array(
          
self::VAR_TYPE => mediamosa_sdk::TYPE_BOOL,
          
self::VAR_DESCRIPTION => 'Used to identify public collections, use [GET] /collection?public=true to get these collections.',
        ),
        
self::CATEGORY => array(
          
self::VAR_TYPE => mediamosa_sdk::TYPE_BOOL,
          
self::VAR_DESCRIPTION => 'Used to identify main category collections, use [GET] /collection?category=true to get these collections.',
        ),
        
self::ISPRIVATE => array(
          
self::VAR_TYPE => mediamosa_sdk::TYPE_BOOL,
          
self::VAR_DESCRIPTION => '',
        ),
        
self::PUBLIC_ASSIGN => array(
          
self::VAR_TYPE => mediamosa_sdk::TYPE_BOOL,
          
self::VAR_DESCRIPTION => '',
        ),
        
self::IS_UNAPPROPRIATE => array(
          
self::VAR_TYPE => mediamosa_sdk::TYPE_BOOL,
          
self::VAR_DESCRIPTION => 'A field to flag the collection as inappropriate. Only the is_app_admin is allowed to set this parameter. When set, the collection will not be shown except to the user and the is_app_admin. It does not affect assets belonging to the collection.',
        ),
      ),
    );

    
// Enrich with required REST vars.
    
return self::get_var_setup_app_admin($var_setup);
  }

  public function 
do_call() {
    
$o_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);

    
$coll_id $this->get_param_value(self::COLL_ID);
    
$user_id $this->get_param_value(self::USER_ID);

    
// Only when app admin.
    
if (!$is_app_admin) {
      
$this->unset_param(self::IS_UNAPPROPRIATE);
      
$this->unset_param(self::OWNER_ID);
      
$this->unset_param(self::GROUP_ID);
    }

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

    
// Collection must exist.
    
$collection mediamosa_collection::must_exists($coll_id);

    
// Must be owner / app_admin to update.
    
mediamosa_acl::owner_check($app_id$user_id$collection[mediamosa_collection_db::APP_ID], $collection[mediamosa_collection_db::OWNER_ID], $is_app_admin);

    
// Optionals.
    
$owner_id $this->get_param_value(self::OWNER_ID);
    
$title $this->get_param_value(self::TITLE);
    
$description $this->get_param_value(self::DESCRIPTION);
    
$group_id $this->get_param_value(self::GROUP_ID);
    
$private $this->get_param_value(self::PRIVATE_);
    
$public $this->get_param_value(self::PUBLIC_);
    
$category $this->get_param_value(self::CATEGORY);
    
$isprivate $this->get_param_value(self::ISPRIVATE);
    
$public_assign $this->get_param_value(self::PUBLIC_ASSIGN);
    
$is_unappropriate $this->get_param_value(self::IS_UNAPPROPRIATE);

    
// Now update the collection.
    
if (!mediamosa_collection::update($coll_id$owner_id$title$description$group_id$private$public$category$isprivate$public_assign$is_unappropriate)) {
      throw new 
mediamosa_exception_error(mediamosa_error::ERRORCODE_NO_CHANGES);
    }

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