function commerce_coupon_install_helper in Commerce Coupon 7.2
Field setup.
4 calls to commerce_coupon_install_helper()
- commerce_coupon_flush_caches in ./
commerce_coupon.module - Implements hook_flush_caches().
- commerce_coupon_install in ./
commerce_coupon.install - Implements hook_install().
- commerce_coupon_update_7200 in ./
commerce_coupon.install - Upgrade a Coupons 1.x site to 2.x. MAKE A BACKUP BEFORE DOING THIS.
- commerce_coupon_update_7203 in ./
commerce_coupon.install - Add new configuration field to support different coupon handling strategies.
File
- ./
commerce_coupon.install, line 11 - Installation hooks and procedures for Commerce Coupon.
Code
function commerce_coupon_install_helper() {
field_info_cache_clear();
$fields = field_info_fields();
$instances = field_info_instances();
$field_types = field_info_field_types();
/*
* Discount coupon reference field
*/
if (empty($fields['commerce_discount_reference']) && isset($field_types['entityreference'])) {
// Create entity reference field.
$field = array(
'entity_types' => array(
'commerce_coupon',
),
'cardinality' => FIELD_CARDINALITY_UNLIMITED,
'settings' => array(
'handler' => 'base',
'target_type' => 'commerce_discount',
'handler_setting' => array(),
),
'field_name' => 'commerce_discount_reference',
'type' => 'entityreference',
'locked' => TRUE,
);
field_create_field($field);
}
// Add discount reference to discount coupon.
if (empty($instances['commerce_coupon']['discount_coupon']['commerce_discount_reference'])) {
$instance = array(
'field_name' => 'commerce_discount_reference',
'entity_type' => 'commerce_coupon',
'bundle' => 'discount_coupon',
'label' => t('Discount reference'),
'required' => TRUE,
'widget' => array(
'type' => 'entityreference_autocomplete',
'module' => 'entityreference',
),
);
field_create_instance($instance);
}
/*
* Order coupon reference field
*/
if (empty($fields['commerce_coupons']) && isset($field_types['entityreference'])) {
// Create entity reference field.
$field = array(
'entity_types' => array(
'commerce_order',
),
'cardinality' => FIELD_CARDINALITY_UNLIMITED,
'settings' => array(
'handler' => 'base',
'target_type' => 'commerce_coupon',
),
'field_name' => 'commerce_coupons',
'type' => 'entityreference',
'locked' => TRUE,
);
field_create_field($field);
}
// Add coupons fields to all order bundles.
$order_entity_info = entity_get_info('commerce_order');
foreach (array_keys($order_entity_info['bundles']) as $bundle) {
if (empty($instances['commerce_order'][$bundle]['commerce_coupons'])) {
$instance = array(
'field_name' => 'commerce_coupons',
'entity_type' => 'commerce_order',
'bundle' => $bundle,
'label' => t('Coupons'),
'required' => FALSE,
'widget' => array(
'type' => 'entityreference_autocomplete',
'module' => 'entityreference',
),
);
field_create_instance($instance);
}
}
// Discount coupon handling strategy.
if (empty($fields['commerce_coupon_strategy'])) {
// Create coupon handling strategy field.
$field = array(
'type' => 'list_text',
'field_name' => 'commerce_coupon_strategy',
'locked' => TRUE,
'settings' => array(
'allowed_values' => array(),
'allowed_values_function' => 'commerce_coupon_handling_strategies',
),
);
field_create_field($field);
}
foreach (commerce_discount_types() as $type => $value) {
if (empty($instances['commerce_discount'][$type]['commerce_coupon_strategy'])) {
$instance = array(
'field_name' => 'commerce_coupon_strategy',
'bundle' => $type,
'entity_type' => 'commerce_discount',
'label' => t('Coupon strategy'),
'description' => t('Using "multi" strategy might cause problems with some offer types.'),
'required' => TRUE,
'widget' => array(
'weight' => -10,
'type' => 'options_buttons',
'module' => 'options',
),
'default_value' => array(
0 => array(
'value' => 'once',
),
),
);
field_create_instance($instance);
}
}
}