function commerce_product_product_form_validate in Commerce Core 7
Validation callback for commerce_product_product_form().
1 string reference to 'commerce_product_product_form_validate'
- commerce_product_product_form in modules/
product/ includes/ commerce_product.forms.inc - Form callback: create or edit a product.
File
- modules/
product/ includes/ commerce_product.forms.inc, line 128 - Forms for creating, editing, and deleting products.
Code
function commerce_product_product_form_validate($form, &$form_state) {
$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 {
// Trim leading and trailing whitespace from the SKU.
$sku = trim($sku);
// 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) {
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,
)));
}
// Update current SKU with trimmed version.
form_set_value($form['sku'], $sku, $form_state);
}
// Notify field widgets to validate their data.
field_attach_form_validate('commerce_product', $product, $form, $form_state);
}