You are here

function commerce_file_form_commerce_file_license_issue_by_host_form_alter in Commerce File 7

Implements hook_form_FORM_ID_alter().

  • Set default status
  • Set a better line item label

File

includes/commerce_file_license.forms.inc, line 518
Forms for creating / editing, deleting, issuing licenses

Code

function commerce_file_form_commerce_file_license_issue_by_host_form_alter(&$form, &$form_state, $form_id) {
  $entity_type = $form_state['entity_type'];
  $entity = $form_state['entity'];
  $line_item_ids = array();
  $existing_licenses = array();

  // alter form and set line items based on entity type
  switch ($entity_type) {
    case 'commerce_order':
      $line_item_ref_items = field_get_items($entity_type, $entity, 'commerce_line_items');
      if (!empty($line_item_ref_items)) {
        foreach ($line_item_ref_items as $line_item_ref_item) {
          $line_item_ids[$line_item_ref_item['line_item_id']] = $line_item_ref_item['line_item_id'];
        }
      }
      break;
    case 'commerce_line_item':
      if (!empty($entity->line_item_id)) {
        $line_item_ids[$entity->line_item_id] = $entity->line_item_id;
      }

      // set entity label since line item does not define a useful label callback
      $form_state['entity_label'] = commerce_line_item_title($entity);
      break;
  }

  // set default status based on existing licenses related to line items
  if (!empty($line_item_ids)) {
    $existing_licenses = commerce_file_license_load_by_property(array(), $line_item_ids);
    if (!empty($existing_licenses)) {
      krsort($existing_licenses);
      $latest_license = reset($existing_licenses);
      $default_status = $latest_license->status;

      // determine if all licenses are the same status
      foreach ($existing_licenses as $existing_license) {
        if ($existing_license->status != $default_status) {
          $default_status = NULL;
        }
      }
      if (isset($default_status)) {
        $form['license_status']['#default_value'] = $default_status;
      }
    }
    else {

      // Create licenses
      $form['actions']['submit']['#value'] = t('Create');

      // check if there are line item file fields on any items
      $have_line_item_files = FALSE;
      $line_item_file_field_name = _commerce_file_get_field_names('line_item_files');
      $line_items = commerce_line_item_load_multiple($line_item_ids);
      foreach ($line_items as $line_item_id => $line_item) {
        $file_field_items = field_get_items('commerce_line_item', $line_item, $line_item_file_field_name);
        if (!empty($file_field_items)) {
          $have_line_item_files = TRUE;
          break;
        }
      }

      // can only sync files from the product if no line item files
      if (!$have_line_item_files) {
        $form['product_refresh']['#default_value'] = TRUE;
        $form['product_refresh']['#disabled'] = TRUE;
      }
    }
  }
}