function commerce_discount_rules_condition_info in Commerce Discount 7
Implements hook_rules_condition_info().
File
- ./
commerce_discount.rules.inc, line 11 - Rules integration for the Commerce Discount module.
Code
function commerce_discount_rules_condition_info() {
$inline_conditions = inline_conditions_get_info();
$conditions = array();
// Max usage per person.
$conditions['commerce_discount_usage_max_usage_per_person'] = array(
'label' => t('Max usage per person'),
'parameter' => array(
'order' => array(
'type' => 'commerce_order',
'label' => t('Order'),
),
'commerce_discount' => array(
'label' => t('Commerce Discount'),
'type' => 'token',
'options list' => 'commerce_discount_entity_list',
),
'usage' => array(
'type' => 'integer',
'label' => t('Maximum usage per customer'),
'description' => t('Enter the maximum number of times a specific person (as identified by email) may use this discount. Leave blank for unlimited.'),
),
),
'group' => t('Commerce Discount'),
);
// Max usage.
$conditions['commerce_discount_usage_max_usage'] = array(
'label' => t('Max usage'),
'parameter' => array(
'order' => array(
'type' => 'commerce_order',
'label' => t('Order'),
),
'commerce_discount' => array(
'label' => t('Commerce Discount'),
'type' => 'token',
'options list' => 'commerce_discount_entity_list',
),
'usage' => array(
'type' => 'integer',
'label' => t('Maximum overall usage'),
'description' => t('Enter the maximum number of times this discount may be used on the site, by anyone. Leave blank for unlimited.'),
),
),
'group' => t('Commerce Discount'),
);
$conditions['commerce_discount_date_condition'] = array(
'label' => t('Check discount dates'),
'group' => t('Commerce Discount'),
'parameter' => array(
'commerce_discount' => array(
'label' => t('Commerce Discount'),
'type' => 'token',
'options list' => 'commerce_discount_entity_list',
),
),
'base' => 'commerce_discount_date_condition',
);
$conditions['commerce_discount_compatibility_check'] = array(
'label' => t('Check discount compatibility at the order level'),
'parameter' => array(
'commerce_order' => array(
'type' => 'commerce_order',
'label' => t('Order'),
'description' => t('The order the discount would be applied to.'),
'wrapped' => TRUE,
),
'commerce_discount' => array(
'type' => 'token',
'label' => t('Discount'),
'description' => t('A discount with a compatibility strategy that requires evaluation.'),
'options list' => 'commerce_discount_entity_list',
),
),
'group' => t('Commerce Discount'),
);
$conditions['commerce_discount_line_item_compatibility_check'] = array(
'label' => t('Check discount compatibility at the line item level'),
'parameter' => array(
'commerce_line_item' => array(
'type' => 'commerce_line_item',
'label' => t('Line item'),
'description' => t('The line item the discount would be applied to.'),
'wrapped' => TRUE,
),
'commerce_discount' => array(
'type' => 'token',
'label' => t('Discount'),
'description' => t('A discount with a compatibility strategy that requires evaluation.'),
'options list' => 'commerce_discount_entity_list',
),
),
'group' => t('Commerce Discount'),
);
if (module_exists('commerce_order')) {
$conditions['commerce_order_compare_order_amount'] = array(
'label' => t('Order amount comparison'),
'parameter' => array(
'commerce_order' => array(
'type' => 'commerce_order',
'label' => t('Order'),
'description' => t('The order.'),
'wrapped' => TRUE,
),
'operator' => array(
'type' => 'text',
'label' => t('Operator'),
'description' => t('The operator used with the order amount value below.'),
'default value' => '>=',
'options list' => '_commerce_discount_operator_options',
),
'total' => array(
'type' => 'commerce_price',
'label' => t('Order amount'),
'default value' => '',
'description' => t('The value to compare against the passed order amount.'),
),
'line_item_types' => array(
'type' => 'list<text>',
'label' => t('Line item types'),
'description' => t('Select the line item types that should be included in the order total amount. Discount created line items are always excluded.'),
'default value' => commerce_order_compare_order_amount_options_default(),
'options list' => 'commerce_order_compare_order_amount_options_list',
'optional' => TRUE,
),
),
'module' => 'commerce_discount',
'group' => t('Commerce Discount'),
'callbacks' => array(
'execute' => $inline_conditions['commerce_order_compare_order_amount']['callbacks']['build'],
),
);
$conditions['commerce_order_has_owner'] = array(
'label' => t('Order owner'),
'parameter' => array(
'commerce_order' => array(
'type' => 'commerce_order',
'label' => t('Order'),
'description' => t('The order.'),
'wrapped' => TRUE,
),
'account' => array(
'type' => 'user',
'label' => t('User'),
'description' => t('User account.'),
),
),
'module' => 'commerce_discount',
'group' => t('Commerce Discount'),
'callbacks' => array(
'execute' => $inline_conditions['commerce_order_has_owner']['callbacks']['build'],
),
);
$conditions['commerce_order_contains_products'] = array(
'label' => t('Order contains products'),
'parameter' => array(
'commerce_order' => array(
'type' => 'commerce_order',
'label' => t('Order'),
'description' => t('The order.'),
'wrapped' => TRUE,
),
'products' => array(
'type' => 'text',
'label' => t('Product SKU(s)'),
'description' => t('Products SKU to look for on the order. Enter a comma-separated list of product SKU(s).'),
),
'operator' => array(
'type' => 'text',
'label' => t('Operator'),
'description' => t('The comparison type used with the SKUs above.'),
'default value' => 'any',
'options list' => '_commerce_discount_rules_product_match_options',
'optional' => TRUE,
),
),
'module' => 'commerce_discount',
'group' => t('Commerce Discount'),
'callbacks' => array(
'execute' => $inline_conditions['commerce_order_contains_products']['callbacks']['build'],
),
);
$conditions['commerce_order_has_specific_quantity_products'] = array(
'label' => t('Order has a specific quantity of products'),
'parameter' => array(
'commerce_order' => array(
'type' => 'commerce_order',
'label' => t('Order'),
'description' => t('The order.'),
'wrapped' => TRUE,
),
'products' => array(
'type' => 'text',
'label' => t('Product SKU(s)'),
'description' => t('Products SKU to look for on the order. Enter a comma-separated list of product SKU(s).'),
),
'operator' => array(
'type' => 'text',
'label' => t('Operator'),
'description' => t('The operator used with the product quantity value below.'),
'default value' => '>=',
'options list' => '_commerce_discount_operator_options',
),
'quantity' => array(
'type' => 'integer',
'label' => t('Quantity'),
'description' => t('Quantity value to be compared against each selected product(s).'),
),
),
'module' => 'commerce_discount',
'group' => t('Commerce Discount'),
'callbacks' => array(
'execute' => $inline_conditions['commerce_order_has_specific_quantity_products']['callbacks']['build'],
),
);
}
if (module_exists('commerce_product')) {
$conditions['commerce_product_contains_products'] = array(
'label' => t('Line item contains a specific product'),
'parameter' => array(
'commerce_line_item' => array(
'type' => 'commerce_line_item',
'label' => t('Line item'),
'description' => t('The line item.'),
'wrapped' => TRUE,
),
'sku' => array(
'type' => 'text',
'label' => t('SKU'),
'description' => t('Enter a comma-separated list of product SKU(s) to compare against the passed product line item.'),
),
),
'module' => 'commerce_discount',
'group' => t('Commerce Discount'),
'callbacks' => array(
'execute' => $inline_conditions['commerce_product_contains_products']['callbacks']['build'],
),
);
$conditions['commerce_product_has_type'] = array(
'label' => t('Line item contains a specific product type'),
'parameter' => array(
'commerce_line_item' => array(
'type' => 'commerce_line_item',
'label' => t('Line item'),
'description' => t('The line item.'),
'wrapped' => TRUE,
),
'type' => array(
'type' => 'text',
'label' => t('Type'),
'description' => t('Enter the product type to compare against the passed product line item.'),
'options list' => 'commerce_product_type_options_list',
),
),
'module' => 'commerce_discount',
'group' => t('Commerce Discount'),
'callbacks' => array(
'execute' => $inline_conditions['commerce_product_has_type']['callbacks']['build'],
),
);
}
if (module_exists('taxonomy') && module_exists('commerce_product')) {
$conditions['commerce_product_has_specified_terms'] = array(
'label' => t('Line item product contains specific terms ID'),
'parameter' => array(
'commerce_line_item' => array(
'type' => 'commerce_line_item',
'label' => t('Line item'),
'description' => t('The line item.'),
'wrapped' => TRUE,
),
'terms' => array(
'type' => 'text',
'label' => t('Terms ID'),
'description' => t('Enter a comma-separated list of term ID to compare against the passed product line item.'),
),
),
'module' => 'commerce_discount',
'group' => t('Commerce Discount'),
'callbacks' => array(
'execute' => $inline_conditions['commerce_product_has_specified_terms']['callbacks']['build'],
),
);
}
// Add a very simple boolean condition to check whether or not a line item was
// added to an order via a discount. This should likely be accompanied by an
// action to load that discount and additional conditions to check the name,
// type, and offer type of the discount.
$conditions['commerce_discount_line_item_added_by_discount'] = array(
'label' => t('Line item added by discount'),
'parameter' => array(
'commerce_line_item' => array(
'type' => 'commerce_line_item',
'label' => t('Line item'),
),
),
'group' => t('Commerce Discount'),
);
return $conditions;
}