/**
  * Function to add or update rule
  * 
  * @param array $params 
  * @return array $result
  * @access public
  * @throws Exception when params is empty
  * @static
  */
 public static function add($params)
 {
     $result = array();
     if (empty($params)) {
         throw new Exception('Params can not be empty when adding or updating a civirule rule');
     }
     if (!empty($params['id'])) {
         CRM_Utils_Hook::pre('edit', 'CiviRuleRule', $params['id'], $params);
     } else {
         CRM_Utils_Hook::pre('create', 'CiviRuleRule', NULL, $params);
     }
     $rule = new CRM_Civirules_BAO_Rule();
     $fields = self::fields();
     foreach ($params as $key => $value) {
         if (isset($fields[$key])) {
             $rule->{$key} = $value;
         }
     }
     if (!isset($rule->name) || empty($rule->name)) {
         if (isset($rule->label)) {
             $rule->name = CRM_Civirules_Utils::buildNameFromLabel($rule->label);
         }
     }
     $rule->save();
     self::storeValues($rule, $result);
     if (!empty($params['id'])) {
         CRM_Utils_Hook::post('edit', 'CiviRuleRule', $rule->id, $rule);
     } else {
         CRM_Utils_Hook::post('create', 'CiviRuleRule', $rule->id, $rule);
     }
     return $result;
 }
 /**
  * Function to add or update rule
  * 
  * @param array $params 
  * @return array $result
  * @access public
  * @throws Exception when params is empty
  * @static
  */
 public static function add($params)
 {
     $result = array();
     if (empty($params)) {
         throw new Exception('Params can not be empty when adding or updating a civirule rule');
     }
     $rule = new CRM_Civirules_BAO_Rule();
     $fields = self::fields();
     foreach ($params as $key => $value) {
         if (isset($fields[$key])) {
             $rule->{$key} = $value;
         }
     }
     if (!isset($rule->name) || empty($rule->name)) {
         if (isset($rule->label)) {
             $rule->name = CRM_Civirules_Utils::buildNameFromLabel($rule->label);
         }
     }
     $rule->save();
     self::storeValues($rule, $result);
     return $result;
 }