Skip to main content

How to create custom rules condition in Drupal 7

hook_rules_condition_info() is used to create custom rules conditions.



/**
 * Implements hook_rules_condition_info()
 */
function custom_rules_rules_condition_info() {
  return array(

    'custom_rules_default_condition_dealer_store' => array(
      'label' => t('Dealer store'),
      'group' => t('Domains'),
      'parameter' => array(
        'operator' => array(
          'type' => 'text',
          'label' => t('Show pricing enabled'),
          'options list' => '__custom_rules_dealer_store_operators',
          'default value' => '0'
        )
      )
    ),
  );
}

/**
 * Custom hook
 * Test domain for matching
 * @param string $operator
 * @return bool
 */
function custom_rules_default_condition_dealer_store($operator) {

  $domain_info = domain_get_domain();
  // returns 0 or 1.
  // 1 means current domain is dealer store.
  // 0 means current domain is portal store.
  $show_pricing = domain_conf_variable_get($domain_info['domain_id'], 'show_pricing');

  switch ($operator) {
    case '1':
      return ($show_pricing == 1)?TRUE:FALSE;
    case '0': default:
      return ($show_pricing == 0)?TRUE:FALSE;
  }
}

/**
 * Get array comparsion operators
 * @return array
 */
function __custom_rules_dealer_store_operators() {
  return array(
    '1'     => t('Yes'),
    '0'     => t('No'),
  );
}


Comments

Popular posts from this blog

Use Case Diagram for Online Book Store

Online Movie Ticket Booking Sequence Diagram

Linear search & Binary search using Template

Write a program to search an element from a list. Give user the option to perform Linear or Binary search. Use Template functions. #include<iostream> using namespace std; template <class T> void Lsearch(T *a, T item, int n) { int z=0; for(int i=0;i<n;i++) { if(a[i]== item) { z=1; cout<<"\n Item found at position = "<<i+1<<"\n\n"; } else if(z!=1) { z=0; } } if(z==0) cout<<"\n Item not found in the list\n\n"; } template <class T> void Bsearch(T *a, T item, int n) { int beg=0,end=n-1; int mid=beg+end/2; while((a[mid]!=item) && (n>0)) { if(item>a[mid]) beg=mid; else end=mid; mid=(beg+end)/2; n--; } if(a[mid]==item) cout<<"\n Item found at position = "<<mid+1<<"\n\n"; else cout<<"\n Item not found in the list\n\n"; } void main() { int iarr[10] = {2,42,56,86,87,99,323,546,767,886};