Api

Version

mediamosa-30

Class

mediamosa_rest_call_acl_get_apps

Code

File: /sites/all/modules/mediamosa/modules/acl/mediamosa_acl.rest.class.inc
<?php

/**
 * URI:
 *    acl/app
 *    acl/get_foreign_apps (depricated)
 *
 * Method: GET
 */
class mediamosa_rest_call_acl_get_apps extends mediamosa_rest_call {

  
// ------------------------------------------------------------------- Consts.
  // Rest vars;
  
const IS_OAI 'is_oai';
  const 
NAME 'name';

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

    
$var_setup[self::VARS][self::IS_OAI] = array(
      
self::VAR_TYPE => mediamosa_sdk::TYPE_BOOL,
      
self::VAR_DESCRIPTION => 'The OAI is allowed to see all applications. However, the call must be made internally to work.',
      
self::VAR_IS_INTERNAL_ONLY => self::VAR_IS_INTERNAL_ONLY_YES,
      
self::VAR_DEFAULT_VALUE => 'FALSE',
    );

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

  public function 
do_call() {
    
$mediamosa mediamosa::get();

    
// Get the app id(s).
    
$app_ids $this->get_param_value_app();
    
$is_oai $this->get_param_value(self::IS_OAI);

    
// First is always the main app.
    
$app_id reset($app_ids);
    if (
$is_oai) {
      
$result mediamosa_db::db_query(
        
"SELECT #id AS app_id, #name, #play_proxy_url, #view_asset_url, #download_url
        FROM {#mediamosa_app}
        ORDER BY #name ASC"
, array(
          
'#id' => mediamosa_app_db::APP_ID,
          
'#name' => mediamosa_app_db::APP_NAME,
          
'#play_proxy_url' => mediamosa_app_db::PLAY_PROXY_URL,
          
'#view_asset_url' => mediamosa_app_db::VIEW_ASSET_URL,
          
'#download_url' => mediamosa_app_db::DOWNLOAD_URL,
          
'#mediamosa_app' => mediamosa_app_db::TABLE_NAME,
      ));

      foreach (
$result as $app) {
        
$mediamosa->add_item(array(
          
mediamosa_app_db::APP_ID => $app[mediamosa_app_db::APP_ID],
          
self::NAME => $app[mediamosa_app_db::APP_NAME],
          
mediamosa_app_db::PLAY_PROXY_URL => $app[mediamosa_app_db::PLAY_PROXY_URL],
          
mediamosa_app_db::VIEW_ASSET_URL => $app[mediamosa_app_db::VIEW_ASSET_URL],
          
mediamosa_app_db::DOWNLOAD_URL => $app[mediamosa_app_db::DOWNLOAD_URL],
        ));
      }
    }
    else {
      
// @todo: Fix serialize speed when there are many apps.

      // Restricted listing.
      
$result mediamosa_db::db_query(
        
"SELECT #id AS app_id, #name, #allow_masterslave_apps
        FROM {#mediamosa_app}
        ORDER BY #name ASC"
, array(
          
'#id' => mediamosa_app_db::APP_ID,
          
'#name' => mediamosa_app_db::APP_NAME,
          
'#allow_masterslave_apps' => mediamosa_app_db::ALLOW_MASTERSLAVE_APPS,
          
'#mediamosa_app' => mediamosa_app_db::TABLE_NAME,
      ));

      foreach (
$result as $app) {
        
$allowed_apps unserialize($app[mediamosa_app_db::ALLOW_MASTERSLAVE_APPS]);
        
$allowed_apps is_array($allowed_apps) ? $allowed_apps : array();

        
// Get
        
$app_ids array_keys($allowed_apps);

        
// Am I allowed?
        
if (in_array($app_id$app_ids)) {
          
$mediamosa->add_item(array(
            
mediamosa_app_db::APP_ID => $app[mediamosa_app_db::APP_ID],
            
self::NAME => $app[mediamosa_app_db::APP_NAME],
          ));
        }
      }
    }
  }
}