diff --git a/feedback.module b/feedback.module index ad1bc56..f168784 100644 --- a/feedback.module +++ b/feedback.module @@ -81,6 +81,45 @@ function feedback_entity_info() { } /** + * Implements hook_entity_property_info(). + */ +function feedback_entity_property_info() { + $info = array(); + $properties = &$info['feedback']['properties']; + + $properties['status'] = array( + 'label' => t("Status"), + 'type' => 'integer', + 'description' => t("0 for new, 1 for processed"), + 'schema field' => 'status', + ); + $properties['author'] = array( + 'label' => t("Author"), + 'type' => 'user', + 'description' => t("The author of the feedback."), + 'setter callback' => 'entity_property_verbatim_set', + 'required' => TRUE, + 'schema field' => 'uid', + ); + $properties['message'] = array( + 'label' => t("Title"), + 'description' => t("The feedback message."), + 'setter callback' => 'entity_property_verbatim_set', + 'schema field' => 'message', + 'required' => TRUE, + ); + $properties['timestamp'] = array( + 'label' => t("Date created"), + 'type' => 'date', + 'schema field' => 'timestamp', + 'description' => t("The date the feedback was created."), + ); + + return $info; +} + + +/** * Implements hook_field_extra_fields(). */ function feedback_field_extra_fields() { @@ -342,10 +381,6 @@ function feedback_form_submit($form, &$form_state) { $entry->location = $form_state['values']['location']; feedback_save($entry); - // Trigger rule if Rules is enabled - if (module_exists('rules')) { - rules_invoke_event('feedback_insert', $entry); - } drupal_set_message(t('Thanks for your feedback!')); } @@ -595,3 +630,24 @@ function feedback_views_api() { 'path' => drupal_get_path('module', 'feedback') . '/views', ); } + + +/** + * Implements hook_feedback_insert(). + */ +function feedback_feedback_insert($entry) { + // Trigger rule if Rules is enabled + if (module_exists('rules')) { + rules_invoke_event('feedback_insert', $entry); + } +} + +/** + * Implements hook_feedback_update(). + */ +function feedback_feedback_update($entry) { + // Trigger rule if Rules is enabled + if (module_exists('rules')) { + rules_invoke_event('feedback_update', $entry); + } +} diff --git a/feedback.rules.inc b/feedback.rules.inc index 06ff05d..829a84b 100644 --- a/feedback.rules.inc +++ b/feedback.rules.inc @@ -24,6 +24,20 @@ function feedback_rules_event_info() { 'feedback' => array('type' => 'feedback', 'label' => t('Feedback message')), ), ), + 'feedback_update' => $defaults + array( + 'label' => t('After saving existing feedback'), + 'variables' => array( + 'feedback' => array( + 'type' => 'feedback', + 'label' => t('Feedback message'), + ), + 'feedback_unchanged' => array( + 'type' => 'feedback', + 'label' => t('unchanged feedback entity'), + 'handler' => 'rules_events_entity_unchanged', + ), + ), + ), ); }