You are here

function field_kaltura_field in Kaltura 6.2

Same name and namespace in other branches
  1. 5 plugins/field_kaltura/field_kaltura.module \field_kaltura_field()
  2. 6 plugins/field_kaltura/field_kaltura.module \field_kaltura_field()

Implementation of hook_field().

File

plugins/field_kaltura/field_kaltura.module, line 170
kaltura integration module - functions to provide kaltura as CCK field

Code

function field_kaltura_field($op, &$node, $field, &$items, $teaser, $page) {
  switch ($op) {
    case 'view':
    case 'insert':
      field_kaltura_create_node($node, $items, $field['type']);
      break;
    case 'validate':
      $allowed_values = content_allowed_values($field);
      if (is_array($items)) {
        foreach ($items as $delta => $item) {
          $error_element = isset($item['_error_element']) ? $item['_error_element'] : '';
          if (is_array($item) && isset($item['_error_element'])) {
            unset($item['_error_element']);
          }
          if (!empty($item['value'])) {

            // allowed values validation
            if (count($allowed_values) && !array_key_exists($item['value'], $allowed_values)) {
              form_set_error($error_element, t('%name: illegal value.', array(
                '%name' => t($field['widget']['label']),
              )));
            }

            // max length validation
            if (!empty($field['max_length']) && drupal_strlen($item['value']) > $field['max_length']) {
              form_set_error($error_element, t('%name: the value may not be longer than %max characters.', array(
                '%name' => $field['widget']['label'],
                '%max' => $field['max_length'],
              )));
            }
          }

          // validation that entry exists on Kaltura server
          try {
            $entries = explode(',', $item['value']);
            foreach ($entries as $entry_id) {
              if (!empty($entry_id)) {
                $entry = kaltura_get_entry($entry_id);
              }
            }
          } catch (Exception $ex) {
            watchdog('field_kaltura', t('Kaltura Exception: %message, backtrace: <pre>!trace</pre>'), array(
              '%message' => $ex
                ->getMessage(),
              '!trace' => print_r($ex
                ->getTrace(), 1),
            ));
            switch ($ex
              ->getCode()) {
              case 'ENTRY_ID_NOT_FOUND':
                form_set_error($error_element, t('Entry not found on Kaltura server: @message', array(
                  '@message' => $ex
                    ->getMessage(),
                )));
                break;
              default:
                form_set_error($error_element, t('Kaltura client exception: @message', array(
                  '@message' => $ex
                    ->getMessage(),
                )));
            }
          }
        }
      }
      return $items;
    case 'sanitize':
      foreach ($items as $delta => $item) {
        $items[$delta]['#kaltura_field'] = $field;
      }
      break;
  }
}