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;
}
}
}
}