You are here

kaltura.module in Kaltura 7.2

Same filename and directory in other branches
  1. 5 kaltura.module
  2. 6.2 kaltura.module
  3. 6 kaltura.module
  4. 7.3 kaltura.module

Kaltura integration module - core functions.

File

kaltura.module
View source
<?php

/**
 * @file
 * Kaltura integration module - core functions.
 */

/**
 * @todo Add docs for all constants.
 */
define('KALTURASETTINGS_SERVER_URL', "http://www.kaltura.com");
define('KALTURASETTINGS_UICONF_ID', 600);
define('KALTURASETTINGS_BASE_WIDGET_ID', 600);
define('KALTURASETTINGS_ANONYMOUS_USER_ID', "Anonymous");
define('KALTURASETTINGS_CW_UICONF_ID', 4396241);
define('KALTURASETTINGS_CW_UICONF_ID_AUDIO', 4396051);
define('KALTURASETTINGS_CW_UICONF_ID_IMAGE', 4396061);
define('KALTURASETTINGS_CW_UICONF_ID_VIDEO', 4396041);
define('KALTURASETTINGS_DEFAULT_VIEWPLAYLIST_UICONF', 1292302);
define('KALTURASETTINGS_CW_UICONF_ID_SIMPLE', 1103);
define('KALTURASETTINGS_DEFAULT_EDITOR', 'Simple_Editor');
define('KALTURASETTINGS_SE_UICONF_ID', 603);
define('KALTURASETTINGS_SE_URL', 'kaltura/simple_editor');
define('KALTURASETTINGS_SE_WIDTH', 890);
define('KALTURASETTINGS_SE_HEIGHT', 546);
define('KALTURASETTINGS_SE_CUSTOM', 1);
define('KALTURASETTINGS_AE_UICONF_ID', 1000865);
define('KALTURASETTINGS_AE_URL', 'kaltura/advanced_editor');
define('KALTURASETTINGS_AE_WIDTH', 830);
define('KALTURASETTINGS_AE_HEIGHT', 690);
define('KALTURASETTINGS_AE_CUSTOM', 2);
define('KALTURASETTINGS_CW_COMMENTS_UICONF_ID', 4396231);
define('KALTURASETTINGS_DRUPAL_STATS_URL', "http://corp.kaltura.com/stats/drupal/");
define('KALTURASETTINGS_DEFAULT_VIDEO_PLAYER_UICONF', 'dark');
define('KALTURASETTINGS_DEFAULT_AUDIO_PLAYER_UICONF', 'dark');
define('KALTURASETTINGS_DEFAULT_VIEWPLAYLIST_PLAYER_UICONF', 'dark');
define('KALTURASETTINGS_DEFAULT_RC_PLAYER_UICONF', 'dark');
define('KALTURASETTINGS_DEFAULT_COMMENT_PLAYER_UICONF', 'dark');

/**
 * Indicates the Video media type.
 */
define('KALTURA_MEDIA_TYPE_VIDEO', 1);

/**
 * Indicates the Image media type.
 */
define('KALTURA_MEDIA_TYPE_IMAGE', 2);

/**
 * Indicates the Audio media type.
 */
define('KALTURA_MEDIA_TYPE_AUDIO', 5);

/**
 * Indicates the Remix media type.
 */
define('KALTURA_MEDIA_TYPE_REMIX', 6);

/**
 * Returns a URL prefix for thumbnails.
 *
 * @return string
 *   URL prefix.
 */
function _kaltura_thumbnail_base_url() {
  if (variable_get('kaltura_partner_id', '') != '') {
    $server_url = variable_get('kaltura_server_url', '') != '' ? variable_get('kaltura_server_url', '') : KALTURASETTINGS_SERVER_URL;
    return $server_url . '/p/' . variable_get('kaltura_partner_id', '') . '/sp/' . variable_get('kaltura_subp_id', '') . '/thumbnail';
  }
}

/**
 * Implements hook_libraries_info().
 */
function kaltura_libraries_info() {

  // Kaltura client (PHP5) library.
  // Expected to be extracted into 'sites/all/libraries/KalturaClient'.
  $libraries['KalturaClient'] = array(
    'name' => 'Kaltura Client',
    'vendor url' => 'http://www.kaltura.com/',
    'download url' => 'http://www.kaltura.com/api_v3/testme/client-libs.php',
    'version arguments' => array(
      'file' => 'KalturaClient.php',
      'pattern' => '/\\$apiVersion = \'(.+)\';/',
      'lines' => -1,
    ),
    'files' => array(
      'php' => array(
        'KalturaClient.php',
      ),
    ),
  );
  return $libraries;
}

/**
 * Implements hook_permission().
 */
function kaltura_permission() {
  return array(
    'administer kaltura' => array(
      'title' => t('Administer Kaltura'),
    ),
    'access kaltura widgets' => array(
      'title' => t('Access Kaltura widgets'),
    ),
    'view Kaltura embed code' => array(
      'title' => t('View Kaltura embed code'),
    ),
    'edit kaltura metadata' => array(
      'title' => t('Edit Kaltura metadata'),
    ),
  );
}

/**
 * Implements hook_menu().
 */
function kaltura_menu() {
  $items['admin/config/media/kaltura'] = array(
    'title' => 'Kaltura module settings',
    'description' => 'Check on the server integration status with Kaltura, import entries from Kaltura, see existing media and edit metadata and additional configuration options.',
    'page callback' => 'drupal_get_form',
    'page arguments' => array(
      'kaltura_registration_form',
    ),
    'access arguments' => array(
      'administer site configuration',
    ),
    'file' => 'includes/kaltura.admin.inc',
    'type' => MENU_NORMAL_ITEM,
    'weight' => -10,
  );
  $items['admin/config/media/kaltura/general'] = array(
    'title' => 'General',
    'type' => MENU_DEFAULT_LOCAL_TASK,
    'weight' => 0,
  );
  $items['admin/config/media/kaltura/settings'] = array(
    'title' => 'Kaltura settings',
    'page callback' => 'drupal_get_form',
    'page arguments' => array(
      'kaltura_settings_form',
    ),
    'access arguments' => array(
      'administer kaltura',
    ),
    'file' => 'includes/kaltura.admin.inc',
    'type' => MENU_LOCAL_TASK,
    'weight' => 1,
  );
  $items['admin/config/media/kaltura/import'] = array(
    'title' => 'Importing Entries from Kaltura to Drupal',
    'description' => 'import your partner\'s entries from kaltura\'s server to drupal, as nodes',
    'page callback' => 'kaltura_import_entries_page',
    'access arguments' => array(
      'administer kaltura',
    ),
    'file' => 'includes/kaltura.admin.inc',
    'type' => MENU_LOCAL_TASK,
    'weight' => 2,
  );
  $items['admin/config/media/kaltura/entries'] = array(
    'title' => 'List of Kaltura Items',
    'page callback' => 'kaltura_list_entries',
    'access arguments' => array(
      'administer kaltura',
    ),
    'type' => MENU_LOCAL_TASK,
    'weight' => 3,
  );
  $items['kaltura/notification_handler'] = array(
    'title' => 'Drupal Notification Handler',
    'file' => 'includes/kaltura.notification.inc',
    'page callback' => 'kaltura_notification_handler',
    'access callback' => TRUE,
    'type' => MENU_CALLBACK,
  );
  $items['kaltura/%ctools_js/metadata_editor/%'] = array(
    'title' => 'Metadata Editor',
    'page callback' => 'kaltura_metadata_editor',
    'page arguments' => array(
      1,
      3,
    ),
    'access arguments' => array(
      'edit kaltura metadata',
    ),
    'type' => MENU_CALLBACK,
  );
  $items['kaltura/%ctools_js/kcw/%'] = array(
    'title' => 'Add Kaltura Media',
    'page callback' => 'kaltura_uploader',
    'page arguments' => array(
      1,
      3,
    ),
    'access arguments' => array(
      'access kaltura widgets',
    ),
    'type' => MENU_CALLBACK,
  );
  $items['kaltura/%ctools_js/existing/%'] = array(
    'title' => 'Add from existing entries',
    'page callback' => 'kaltura_existing',
    'page arguments' => array(
      1,
      3,
      4,
      5,
    ),
    'access arguments' => array(
      'access kaltura widgets',
    ),
    'type' => MENU_CALLBACK,
  );
  return $items;
}

/**
 * Implements hook_theme().
 */
function kaltura_theme() {
  $themes = array(
    'kaltura_contribution_wizard_field' => array(
      'variables' => array(
        'theme_params' => NULL,
        'field_id' => NULL,
        'no_collect_entries' => NULL,
        'kshow_id' => NULL,
        'add_filter' => 1,
      ),
      'file' => 'includes/kaltura.themeing.inc',
    ),
    'kaltura_maintenance_page' => array(
      'variables' => array(
        'text' => '',
      ),
      'file' => 'includes/kaltura.themeing.inc',
    ),
  );
  return $themes;
}

/**
 * Implements module_invoke().
 *
 * Used to call hooks exposed by kaltura which other module implements.
 */
function kaltura_invoke($hook, $data = NULL) {
  $hook = 'kaltura_' . $hook;
  $return = module_invoke_all($hook, $data);
  return $return;
}

/**
 * Implements hook_node_update_index().
 */
function kaltura_node_update_index($node) {

  // Add kaltura metadata to node search index.
  $text = '';
  $lang = $node->language;

  // Get all fields of field_kaltura_entryid type.
  $fields = field_read_fields(array(
    'type' => 'field_kaltura_entryid',
  ));
  foreach (array_keys($fields) as $field) {
    if (!empty($node->{$field}[$lang])) {
      foreach ($node->{$field}[$lang] as $item) {
        $qry = db_select('node_kaltura', 'k')
          ->fields('k', array(
          'kaltura_tags',
          'kaltura_title',
          'kaltura_description',
        ))
          ->condition('kaltura_entryid', $item['entryid'])
          ->execute()
          ->fetchAssoc();
        $text .= ($text ? ',' : '') . implode(',', $qry);
      }
    }
  }
  return $text;
}

/**
 * Kaltura uploader.
 *
 * Ctools ajax callback function for the KCW.
 *
 * @param mixed $js
 *   ctools var to see if js is enabled or not
 * @param mixed $jvars
 *   JSON encoded parameters
 *
 * @return string
 */
function kaltura_uploader($js, $jvars) {
  if (!$js) {
    return t('We need javascript make this work please check that you have javascript enabled');
  }
  ctools_include('modal');
  ctools_include('ajax');
  if (!variable_get('kaltura_partner_id')) {
    $error_message = t('You must configure partner\'s details first.') . ' ' . l(t('Click here'), 'admin/config/media/kaltura');
    ctools_modal_render(t('Error'), $error_message);
    exit;
  }
  try {
    $k_helpers = new KalturaHelpers();
    $kaltura_client = $k_helpers
      ->getKalturaClient();
  } catch (Exception $e) {
    watchdog_exception('kaltura', $e);
    drupal_set_message(t('Failed to start Kaltura session. Please check your settings.'), 'error');
    return NULL;
  }
  $vars = drupal_json_decode($jvars);
  drupal_add_js(drupal_get_path('module', 'kaltura') . '/js/swfobject.js');
  drupal_add_js(array(
    'entries-modal-style' => array(
      'modalSize' => array(
        'type' => 'scale',
        'width' => 0.8,
        'height' => 0.8,
      ),
    ),
  ), 'setting');

  // Should be configurable.
  $theme_params['width'] = 680;
  $theme_params['height'] = 360;
  $theme_params['swfurl'] = $k_helpers
    ->getContributionWizardUrl($vars['ui_conf']);
  $flash_vars = $k_helpers
    ->getContributionWizardFlashVars($kaltura_client
    ->getKs(), $vars['kshow_id'], $vars['partner_data'], $vars['type'], FALSE, FALSE, $vars['ui_conf']);
  $theme_params['flashVarsStr'] = $k_helpers
    ->flashVarsToString($flash_vars);
  $theme_vars = array(
    'theme_params' => $theme_params,
    'field_id' => $vars['field_id'],
    'no_collect_entries' => $vars['no_collect_entries'],
    'kshow_id' => $vars['kshow_id'],
    'filter' => $vars['wtype'],
  );
  $output = theme('kaltura_contribution_wizard_field', $theme_vars);
  $b_text = rawurldecode($vars['button_text']);
  ctools_modal_render(t($b_text), $output);
}

/**
 * Ctools callback function for adding existing media that is all ready in the drupal db.
 *
 * @param mixed $js
 *   is js enabled
 * @param mixed $field_name
 *   the name of the field that will be populated
 * @param mixed $widget
 *   the widget type so we can filter the media type
 * @param mixed $cw_vars
 *
 * @return string
 */
function kaltura_existing($js, $field_name, $widget, $cw_vars) {
  if (!$js) {
    return '<div>' . t('We really need javascript for this one') . '</div>';
  }
  drupal_add_css(drupal_get_path('module', 'kaltura') . '/style/kaltura_entries.css');
  ctools_include('modal');
  ctools_include('ajax');
  $mtype = kaltura_widget_to_media_type($widget);
  $args[] = $mtype ? $mtype : NULL;
  $widget_vars = drupal_json_decode($cw_vars);
  $out = '';
  if ($widget_vars['add_existing'] == 'both') {
    $out = '<div class="kcw-button">' . ctools_modal_text_button(t('Add New'), 'kaltura/nojs/kcw/' . $cw_vars, t('Add New Media'), 'ctools-modal-kcw-modal-style') . '</div>';
  }
  if (!empty($args[0])) {
    $view = views_get_view('kaltura_existing_one_type');
    $view
      ->set_arguments($args);
  }
  else {
    $view = views_get_view('kaltura_existing');
  }
  $out .= $view
    ->preview('default');
  $b_text = rawurldecode($widget_vars['button_text']);
  ctools_modal_render(t($b_text), $out);
}

/**
 * Implements hook_views_post_render().
 */
function kaltura_views_post_render(&$view, &$output, &$cache) {

  // TODO: Figure out why does he use so strange approach to check the view name.
  if (strpos($view->name, 'kaltura_existing') === 0) {
    $parms = explode('/', $_GET['q']);
    $fname = check_plain($parms[3]);
    $output = str_replace('FnAmE', $fname, $output);
  }
}

/**
 * Implements hook_pre_render().
 */
function kaltura_views_pre_render($view) {

  // TODO: Figure out why does he use so strange approach to check the view name.
  if (strpos($view->name, 'kaltura_existing') === 0) {
    $parms = explode('/', $_GET['q']);
    $widget = check_plain($parms[4]);
    $mtype = kaltura_widget_to_media_type($widget);
    $args[] = $mtype ? $mtype : NULL;
    if ($mtype != 0) {
      unset($view->display_handler->options['filters']['kaltura_media_type']);
      $view->args = $args;
    }
    else {
      unset($view->display['default']->display_options['arguments']['kaltura_media_type']);
    }
  }
}

/**
 * Helper function that converts the filed widget to kaltura media type.
 *
 * @param mixed $widget
 *   the filed widget
 */
function kaltura_widget_to_media_type($widget) {
  $filters = array(
    'field_kaltura_video' => KALTURA_MEDIA_TYPE_VIDEO,
    'field_kaltura_audio' => KALTURA_MEDIA_TYPE_AUDIO,
    'field_kaltura_image' => KALTURA_MEDIA_TYPE_IMAGE,
    'field_kaltura_web_cam' => 0,
    'field_kaltura_all_media' => 0,
  );
  return $filters[$widget];
}

/**
 * Ctools callback function for metadata editor modal.
 *
 * @param mixed $js
 *  is js enabled
 * @param mixed $entry_id
 *  the entry id of the entry metadata
 *
 * @return array|mixed
 */
function kaltura_metadata_editor($js, $entry_id) {
  if (!$js) {
    return drupal_get_form('kaltura_metadata_editor_form');
  }
  ctools_include('modal');
  ctools_include('ajax');
  drupal_add_css(drupal_get_path('module', 'kaltura') . '/style/kaltura_modal.css');
  $form_state = array(
    'title' => t('Kaltura metadata edit'),
    'ajax' => TRUE,
    'eid' => $entry_id,
  );
  $output = ctools_modal_form_wrapper('kaltura_metadata_editor_form', $form_state);
  if ($form_state['executed'] && $js) {
    $commands = array();
    $commands[] = ctools_modal_command_dismiss();
    print ajax_render($commands);
    exit;
  }
  if (isset($form_state['clicked_button']) && $form_state['clicked_button']['#value'] == 'cancel' && $js) {
    $commands = array();
    $commands[] = ctools_modal_command_dismiss();
    print ajax_render($commands);
    exit;
  }
  print ajax_render($output);
  exit;
}

/**
 * Implements hook_form().
 */
function kaltura_metadata_editor_form($form, $form_state) {

  // Get stuff from db.
  $qry = db_select('node_kaltura', 'k')
    ->fields('k', array(
    'kaltura_tags',
    'kaltura_title',
    'kaltura_description',
  ))
    ->condition('kaltura_entryid', $form_state['eid'], '=')
    ->execute()
    ->fetchAssoc();
  $form['name'] = array(
    '#type' => 'textfield',
    '#title' => t('Title'),
    '#default_value' => isset($qry['kaltura_title']) ? $qry['kaltura_title'] : '',
  );
  $form['desc'] = array(
    '#type' => 'textarea',
    '#title' => t('Description'),
    '#default_value' => isset($qry['kaltura_description']) ? $qry['kaltura_description'] : '',
    '#cols' => 20,
  );
  $form['tags'] = array(
    '#type' => 'textfield',
    '#title' => t('Tags'),
    '#size' => 25,
    '#default_value' => isset($qry['kaltura_tags']) ? $qry['kaltura_tags'] : '',
  );
  $form['actions'] = array(
    '#type' => 'container',
    '#attributes' => array(
      'class' => array(
        'buttons',
      ),
    ),
  );
  $form['actions']['submit'] = array(
    '#type' => 'submit',
    '#value' => t('submit'),
  );
  $form['actions']['cancel'] = array(
    '#type' => 'button',
    '#value' => t('cancel'),
  );
  return $form;
}

/**
 * Submit function for the metadata editing form.
 *
 * This function updates the kaltura metadata at the kaltura server and in the drupal db.
 *
 * @see kaltura_metadata_editor_form
 *
 * @param mixed $form
 * @param mixed $form_state
 */
function kaltura_metadata_editor_form_submit($form, $form_state) {
  try {
    $k_helpers = new KalturaHelpers();
    $kaltura_client = $k_helpers
      ->getKalturaClient(TRUE);
    $k_helpers
      ->getSessionUser();
    libraries_load('KalturaClient');
    $kme = new KalturaBaseEntry();
    $kme->name = $form_state['values']['name'];
    $kme->description = $form_state['values']['desc'];
    $kme->tags = $form_state['values']['tags'];

    // TODO: add error handling. do not update local db if the remote is not ok.
    $res = $kaltura_client->baseEntry
      ->update($form_state['eid'], $kme);
    $query = db_update('node_kaltura')
      ->fields(array(
      'kaltura_tags' => $form_state['values']['tags'],
      'kaltura_title' => $form_state['values']['name'],
      'kaltura_description' => $form_state['values']['desc'],
    ))
      ->condition('kaltura_entryid', $form_state['eid'], '=')
      ->execute();
    drupal_set_message(t('Metadata updated successfully'));
  } catch (Exception $e) {
    watchdog_exception('kaltura', $e);
  }
}

/**
 * Callback function for the kaltura/entries URL.
 *
 * @return string
 *  Rendered view or FALSE otherwise.
 */
function kaltura_list_entries() {
  drupal_add_css(drupal_get_path('module', 'kaltura') . '/style/kaltura_entries.css');
  return views_embed_view('kaltura_list_entries', 'default');
}

/**
 * Helper function to add the result from a notification or API call to the entry_data field.
 *
 * TODO: check this on.
 */
function kaltura_add_result_to_entry_data($eid, $result, $replace = TRUE) {
  if (!$replace) {

    // TODO: rewrite queries using db_select where possible.
    $get_current_data = 'SELECT kaltura_entry_data FROM {node_kaltura} WHERE kaltura_entryId = \'%s\'';
    $row = db_query($get_current_data, $eid);
    $data = db_fetch_object($row);
    $real_data = unserialize($data->kaltura_entry_data);
  }
  $real_data[] = $result;
  $set_new_data = 'UPDATE {node_kaltura} SET kaltura_entry_data = \'%s\' WHERE kaltura_entryId = \'%s\'';
  $row = db_query($set_new_data, serialize($real_data), $eid);
}

/**
 * Implements hook_cron().
 *
 * TODO: I saw multiple warnings occurring in the cron function right after module was installed.
 * TODO: This hook should be checked thoroughly.
 */
function kaltura_cron() {

  // Get all entries from node_kaltura table,
  // use the getEntries service to retrieve the data of entries.
  $lastcron = variable_get('kaltura_last_update', 0);
  $now = time();
  $diff = $now - $lastcron;
  $diffHours = round($diff / 60 / 60);

  // if ($diffHours >= variable_get('kaltura_update_frequency', 0) + 1) {
  try {
    $all_entries = db_select('node_kaltura', 'k')
      ->fields('k', array(
      'kaltura_entryid',
    ))
      ->execute()
      ->fetchCol();
    if (is_array($all_entries) && count($all_entries)) {
      $result = kaltura_get_entries($all_entries, TRUE);
    }
    else {
      $result = FALSE;
    }

    // If we got a good result, we update the entry data in the DB.
    if ($result[0] !== FALSE) {
      foreach ($result[0]->objects as $result_object) {
        $ent['kaltura_entryid'] = $result_object->id;
        $ent['kaltura_tags'] = $result_object->tags;
        $ent['kaltura_admin_tags'] = $result_object->adminTags;
        $ent['kstatus'] = $result_object->status;
        $ent['kaltura_media_type'] = $result_object->mediaType;
        $ent['kaltura_duration'] = $result_object->duration;
        $ent['kaltura_thumbnail_url'] = $result_object->thumbnailUrl;
        $ent['kaltura_partner_data'] = $result_object->partnerData;
        $ent['kaltura_source'] = $result_object->sourceType;
        $ent['kaltura_width'] = $result_object->width;
        $ent['kaltura_height'] = $result_object->height;
        $ent['kaltura_download_url'] = $result_object->downloadUrl;
        $ent['kaltura_views'] = $result_object->views;
        $ent['kaltura_plays'] = $result_object->plays;
        $ent['kaltura_votes'] = $result_object->votes;
        $ent['kaltura_rank'] = $result_object->rank;
        $ent['kaltura_total_rank'] = $result_object->totalRank;
        $ent['kaltura_title'] = $result_object->name;
        $ent['kaltura_description'] = $result_object->description;
        drupal_write_record('node_kaltura', $ent, 'kaltura_entryid');
      }
    }

    // If there is a successful run write timestamp.
    variable_set('kaltura_last_update', $now);
  } catch (Exception $ex) {

    // TODO: Error handling?
  }

  // }
}

/**
 * Helper function to call the getEntries service CMAC.
 *
 * Need to amalgamate mix and media entries.
 *
 * @param array $entries
 * @param bool $is_admin
 *
 * @return array
 *  returns array made up of Mix and media entries
 *
 * TODO: move to kaltura helpers.
 */
function kaltura_get_entries($entries, $is_admin = FALSE) {
  $chunks = array_chunk($entries, '100');
  try {
    foreach ($chunks as $chunk) {
      $entries_list = implode(',', $chunk);
      $k_helpers = new KalturaHelpers();
      $kaltura_client = $k_helpers
        ->getKalturaClient($is_admin);
      $session_user = $k_helpers
        ->getSessionUser();
      libraries_load('KalturaClient');
      $kmf = new KalturaBaseEntryFilter();
      $kmp = new KalturaFilterPager('100');
      $kmf->idIn = $entries_list;
      $results[] = $kaltura_client->baseEntry
        ->listAction($kmf, $kmp);
    }
    $result = array_values($results);
    if ($result) {
      return $result;
    }
  } catch (Exception $e) {
    watchdog_exception('kaltura', $e);
  }
  return FALSE;
}

/**
 * Helper function to get the description field from kaltura after notification.
 *
 * @param $type
 * @param $entry_id
 */
function get_entry_description($type, $entry_id) {
  $k_helpers = new KalturaHelpers();
  try {
    $kaltura_client = $k_helpers
      ->getKalturaClient(true);
    if ($type == 6) {
      $result = $kaltura_client->mixing
        ->get($entry_id);
      return $result->description;
    }
    else {
      $result = $kaltura_client->baseEntry
        ->get($entry_id);
      return $result->description;
    }
  } catch (Exception $e) {
    watchdog_exception('kaltura', $e);
  }
}

/**
 * Implements hook_help().
 *
 * TODO: all help stuff throughout the module requires a complete overhaul, for now it is completely useless.
 */
function kaltura_help($path, $arg) {
  switch ($path) {
    case 'admin/help#kaltura':
      return kaltura_get_help_html('general');
  }
}

/**
 * Helper function to load HTML content for Drupal's help pages.
 *
 * TODO: completely useless function, requires a complete overhaul.
 */
function kaltura_get_help_html($page) {
  switch ($page) {
    case 'general':
      $filename = 'kaltura_general_help';
      break;
    case 'crossdomain':
      $filename = 'kaltura_cd_help';
      break;
  }

  // $help_html = file_get_contents(drupal_get_path('module', 'kaltura') . '/kaltura_help/' . $filename . '.html');
  $help_html = '';
  return $help_html;
}

/**
 * Helper function that gets a widgetId, calls Kaltura's getWidget service and
 * returns the embed code of the widget.
 *
 * @param int $widget_id
 */
function katura_fetch_widget_html($widget_id) {
  try {
    $k_helpers = new KalturaHelpers();
    $session_user = $k_helpers
      ->getSessionUser();
    $kaltura_client = $k_helpers
      ->getKalturaClient();
    $result = $kaltura_client
      ->getWidget($session_user, $widget_id, 1);
    $embbed = $result['result']['widget']['widgetHtml'];
    return $embbed;
  } catch (Exception $e) {
    watchdog_exception('kaltura', $e);
  }
}

/**
 * Function to choose what URL the user will be redirected to after AddEntry in the CW.
 *
 * This function exposes a hook_cw_destination().
 */
function kaltura_cw_destination() {
  $url = kaltura_invoke('cw_destination');
  return $url ? $url[0] : url('kaltura/entries');
}

/**
 * Helper function to convert array of variables to the correct string.
 *
 * @param array $vars
 *
 * @return string
 */
function kaltura_format_cw_vars($vars = array()) {
  $str = urlencode(serialize($vars));
  return $str;
}

/**
 * Helper function to get a node id for a given entryId/kshowId.
 *
 * TODO: Seems like this function is not used anywhere.
 */
function kaltura_get_node_for_mix($entry_id) {
  $get_q = 'SELECT nid FROM {node_kaltura} WHERE kaltura_entryId = :entryid';
  $result = db_query($get_q, array(
    'entryid' => $entry_id,
  ));
  $obj = db_fetch_object($result);
  return $obj->nid;
}

/**
 * TODO: Seems like this function is not used anywhere.
 */
function katlura_get_metadata_for_mix($entry_id) {
  $get_q = 'SELECT vid, nid, kaltura_thumbnail_url FROM {node_kaltura} WHERE kaltura_entryId = :entryid';
  $result = db_query($get_q, array(
    'entryid' => $entry_id,
  ));
  $obj = db_fetch_object($result);
  return $obj;
}

Functions

Namesort descending Description
get_entry_description Helper function to get the description field from kaltura after notification.
kaltura_add_result_to_entry_data Helper function to add the result from a notification or API call to the entry_data field.
kaltura_cron Implements hook_cron().
kaltura_cw_destination Function to choose what URL the user will be redirected to after AddEntry in the CW.
kaltura_existing Ctools callback function for adding existing media that is all ready in the drupal db.
kaltura_format_cw_vars Helper function to convert array of variables to the correct string.
kaltura_get_entries Helper function to call the getEntries service CMAC.
kaltura_get_help_html Helper function to load HTML content for Drupal's help pages.
kaltura_get_node_for_mix Helper function to get a node id for a given entryId/kshowId.
kaltura_help Implements hook_help().
kaltura_invoke Implements module_invoke().
kaltura_libraries_info Implements hook_libraries_info().
kaltura_list_entries Callback function for the kaltura/entries URL.
kaltura_menu Implements hook_menu().
kaltura_metadata_editor Ctools callback function for metadata editor modal.
kaltura_metadata_editor_form Implements hook_form().
kaltura_metadata_editor_form_submit Submit function for the metadata editing form.
kaltura_node_update_index Implements hook_node_update_index().
kaltura_permission Implements hook_permission().
kaltura_theme Implements hook_theme().
kaltura_uploader Kaltura uploader.
kaltura_views_post_render Implements hook_views_post_render().
kaltura_views_pre_render Implements hook_pre_render().
kaltura_widget_to_media_type Helper function that converts the filed widget to kaltura media type.
katlura_get_metadata_for_mix TODO: Seems like this function is not used anywhere.
katura_fetch_widget_html Helper function that gets a widgetId, calls Kaltura's getWidget service and returns the embed code of the widget.
_kaltura_thumbnail_base_url Returns a URL prefix for thumbnails.

Constants