? 562216-regcode_integrate_with_rules.patch
? regcode_integrate_with_rules-562216-6.patch
Index: regcode.api.php
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/regcode/Attic/regcode.api.php,v
retrieving revision 1.1.2.6
diff -u -p -r1.1.2.6 regcode.api.php
--- regcode.api.php	3 Sep 2009 21:24:55 -0000	1.1.2.6
+++ regcode.api.php	23 Sep 2009 05:31:31 -0000
@@ -37,7 +37,7 @@ function regcode_message($code) {
 function regcode_get_code($code, $account_id = FALSE) {
 
   // look up and retrieve code record from DB
-  $code = db_fetch_array(db_query("SELECT code, begins, expires, is_active, maxuses, uses FROM {regcode} WHERE code = '%s'", $code));
+  $code = db_fetch_array(db_query("SELECT code, category, begins, expires, is_active, maxuses, uses FROM {regcode} WHERE code = '%s'", $code));
 
   // check validity
   if (!is_array($code)) {
Index: regcode.rules.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/regcode/Attic/regcode.rules.inc,v
retrieving revision 1.1.2.1
diff -u -p -r1.1.2.1 regcode.rules.inc
--- regcode.rules.inc	22 Jul 2009 21:40:21 -0000	1.1.2.1
+++ regcode.rules.inc	23 Sep 2009 05:31:31 -0000
@@ -17,33 +17,48 @@ function regcode_rules_event_info() {
   );
 }
 
-/**
-* Implementation of hook_rules_data_type_info()
-*/
-function regcode_rules_data_type_info() {
+function regcode_rules_condition_info() {
   return array(
-    'node' => array(
-      'label' => t('Regcode'),
-      'class' => 'rules_data_type_regcode',
-      'savable' => FALSE,
-      'identifiable' => TRUE,
-      'uses_input_form' => FALSE,
-      'module' => 'regcode',
+    'rules_condition_regcode_category_compare' => array(
+      'label' => t('Registration code category is ....'),
+      'arguments' => array(
+        'regcode' => array('type' => 'regcode', 'label' => t('Regcode')),
+      ),
+      'module' => 'Regcode',
     ),
   );
 }
 
 /**
- * Defines the rules regcode data type
+* Condition Implementation for Condition Regcode category.
+* @ingroup rules
+*/
+function rules_condition_regcode_category_compare($regcode, $settings) {
+  return in_array($regcode['category'], $settings['regcode_categories']);
+}
+
+/**
+ * Forms related stuff
+ *
  */
-class rules_data_type_regcode extends rules_data_type {
 
-  function load($rid) {
-    return db_fetch_object(db_query('SELECT * FROM {regcode} WHERE rid=%d', $rid));
-  }
+/**
+ * Condition Regcode category: Form to select categories to match against
+ *
+ * @param array $settings
+ * @param array $form
+ */
+function rules_condition_regcode_category_compare_form($settings, &$form) {
+  $categories = regcode_categories();
+  $form['settings']['regcode_categories'] = array (
+    '#type' => 'checkboxes',
+    '#options' => array_combine($categories, $categories),
+    '#title' => t('Registration code category'),
+    '#description' => t('Condition evaluates to true if registration code used is of one of the selected categories'),
+    '#default_value' => $settings['regcode_categories'],
+  );
+}
 
-  function get_identifier() {
-    $regcode = &$this->get();
-    return $regcode->rid;
-  }
+function rules_condition_regcode_category_compare_submit(&$settings, $form, $form_state) {
+  $settings['regcode_categories'] = array_filter($settings['regcode_categories']);
 }
\ No newline at end of file
