123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- <?php
- /**
- * @file
- * Conditional Actions hooks and functions for the terms of service panes.
- */
- /**
- * Implements hook_ca_predicate().
- */
- function uc_termsofservice_ca_predicate() {
- $predicates['uc_termsofservice_display_pane'] = array(
- '#title' => t('Display pane depending on the product classes'),
- '#class' => 'uc_termsofservice',
- '#trigger' => 'uc_termsofservice_display_pane',
- '#status' => 1,
- '#conditions' => array(
- '#operator' => 'AND',
- '#conditions' => array(
- array(
- '#name' => 'uc_termsofservice_condition_product_class',
- '#title' => t('Check if there are products of the selected product classes.'),
- '#argument_map' => array(
- 'cart' => 'cart',
- ),
- '#settings' => array(
- 'negate' => FALSE,
- 'class' => array('product'),
- ),
- ),
- ),
- ),
- '#actions' => array(),
- );
- return $predicates;
- }
- /**
- * Implements hook_ca_trigger().
- */
- function uc_termsofservice_ca_trigger() {
- $triggers['uc_termsofservice_display_pane'] = array(
- '#title' => t('Display checkout or cart panes'),
- '#category' => t('Checkout'),
- '#arguments' => array(
- 'cart' => array('#entity' => 'cart', '#title' => t('Cart')),
- ),
- );
- return $triggers;
- }
- /**
- * Implements hook_ca_condition().
- */
- function uc_termsofservice_ca_condition() {
- $conditions['uc_termsofservice_condition_product_class'] = array(
- '#title' => t('Order has a product of a particular class'),
- '#category' => t('Order: Product'),
- '#callback' => 'uc_termsofservice_condition_product_class',
- '#arguments' => array(
- 'cart' => array('#entity' => 'cart', '#title' => t('Cart')),
- ),
- );
- return $conditions;
- }
- /**
- * Condition Callbacks and Forms.
- */
- /**
- * Checks that an order has a product of the selected class.
- *
- * @see uc_termsofservice_condition_product_class_form()
- */
- function uc_termsofservice_condition_product_class($cart, $settings) {
- foreach ($cart as $cart_item) {
- if ($cart_item->nid) {
- $type = db_result(db_query("SELECT type FROM {node} WHERE nid = %d", $cart_item->nid));
- if (in_array($type, array_values($settings['class']), TRUE)) {
- return TRUE;
- }
- }
- }
- return FALSE;
- }
- /**
- * @see uc_termsofservice_condition_product_class()
- */
- function uc_termsofservice_condition_product_class_form($form_state, $settings = array()) {
- $form['class'] = array(
- '#type' => 'checkboxes',
- '#title' => t('Product class'),
- '#options' => uc_product_type_names(),
- '#default_value' => $settings['class'],
- '#multiple' => TRUE,
- );
- return $form;
- }
|