function i18n_commerce_product_product_form_validate in Internationalization for commerce product 7
Validation handler for commerce_product_product_form().
1 string reference to 'i18n_commerce_product_product_form_validate'
File
- ./
i18n_commerce_product.forms.inc, line 97 - Internationalization (i18n) module - Commerce product handling.
Code
function i18n_commerce_product_product_form_validate($form, &$form_state) {
$form_state['commerce_product']->tproduct_id = isset($form_state['values']['tproduct_id']) ? $form_state['values']['tproduct_id'] : NULL;
$product = $form_state['commerce_product'];
// TODO: Resolve workflow issues pertaining to token replacement in SKUs.
// Perform token replacement on the entered SKU.
// $sku = commerce_product_replace_sku_tokens($form_state['values']['sku'], $product);
// Until the above is resolved, simply use the SKU as entered with no tokens.
$sku = $form_state['values']['sku'];
// If invalid tokens were specified, throw an error.
if ($sku === FALSE) {
form_set_error('sku', t('The SKU contains invalid tokens.'));
}
else {
// Ensure the proposed SKU is unique or reused only during product updates.
$query = new EntityFieldQuery();
$query
->entityCondition('entity_type', 'commerce_product')
->propertyCondition('sku', $sku);
$result = $query
->execute();
if (!empty($result)) {
$product_id = key($result['commerce_product']);
if ($product_id != $product->product_id && $product_id != $product->tproduct_id) {
form_set_error('sku', t('This SKU is <a href="!url">already in use</a> and must be unique. Please supply another value.', array(
'!url' => url('admin/commerce/products/' . $product_id),
)));
}
}
// Validate the SKU for invalid characters.
if (!commerce_product_validate_sku($sku)) {
form_set_error('sku', t('The SKU %sku contains invalid characters.', array(
'%sku' => $sku,
)));
}
// Trim leading and trailing whitespace from the SKU.
form_set_value($form['sku'], trim($sku), $form_state);
}
// Notify field widgets to validate their data.
field_attach_form_validate('commerce_product', $product, $form, $form_state);
}