From ea09d369e1a2639227642e793f54277290d6e843 Mon Sep 17 00:00:00 2001
From: OnkelTem <OnkelTem@239962.no-reply.drupal.org>
Date: Sat, 6 Dec 2014 16:45:55 +0300
Subject: [PATCH] Issue #2100587: Add Views support

---
 includes/views/robokassa.views.inc |  170 ++++++++++++++++++++++++++++++++++++
 robokassa.module                   |   10 +++
 2 files changed, 180 insertions(+)
 create mode 100644 includes/views/robokassa.views.inc

diff --git a/includes/views/robokassa.views.inc b/includes/views/robokassa.views.inc
new file mode 100644
index 0000000..54619d0
--- /dev/null
+++ b/includes/views/robokassa.views.inc
@@ -0,0 +1,170 @@
+<?php
+/**
+* @file
+* Views integration for Robokassa
+*/
+
+/**
+ * Implements hook_field_views_data().
+*/
+function robokassa_views_data() {
+
+  // robokassa table -- basic table information.
+
+  // Define the base group of this table. Fields that don't
+  // have a group defined will go into this field by default.
+  $data['robokassa']['table']['group'] = t('Robokassa');
+
+  // Advertise this table as a possible base table
+  $data['robokassa']['table']['base'] = array(
+    'field' => 'pid',
+    'title' => t('Robokassa payments'),
+    'access query tag' => 'administer payments',
+    'defaults' => array(
+      'field' => 'pid',
+    ),
+  );
+  $data['robokassa']['table']['entity type'] = 'robokassa_payment';
+
+  // robokassa table -- fields
+  // pid
+  $data['robokassa']['pid'] = array(
+    'title' => t('Pid'),
+    'help' => t('Unique payment ID.'),
+    // Information for displaying the pid
+    'field' => array(
+      'handler' => 'views_handler_field_numeric',
+      'click sortable' => TRUE,
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_numeric',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_numeric',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
+
+  // uid field
+  $data['robokassa']['uid'] = array(
+    'title' => t('Owner'),
+    'help' => t('The wl_users.uid that owns this payment; initially, this is the user that created it.'),
+    'relationship' => array(
+      'title' => t('Author'),
+      'help' => t('Relate payment to the user who created it.'),
+      'handler' => 'views_handler_relationship',
+      'base' => 'users',
+      'field' => 'uid',
+      'label' => t('owner'),
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_user_name',
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_numeric',
+    ),
+    'field' => array(
+      'handler' => 'views_handler_field_user',
+    ),
+  );
+
+  // amount field
+  $data['robokassa']['amount'] = array(
+    'title' => t('Amount'),
+    'help' => t('Value of the payment'),
+    'field' => array(
+      'handler' => 'views_handler_field_numeric',
+      'click sortable' => TRUE,
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_numeric',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_numeric',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
+
+  // created field
+  $data['robokassa']['created'] = array(
+    'title' => t('Create date'),
+    'help' => t('The date the payment was created.'),
+    'field' => array(
+      'handler' => 'views_handler_field_date',
+      'click sortable' => TRUE,
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort_date',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_date',
+    ),
+  );
+
+  // enrolled field
+  $data['robokassa']['enrolled'] = array(
+    'title' => t('Enroll date'),
+    'help' => t('The date the payment was enrolled.'),
+    'field' => array(
+      'handler' => 'views_handler_field_date',
+      'click sortable' => TRUE,
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort_date',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_date',
+    ),
+  );
+
+  // memo field
+  $data['robokassa']['memo'] = array(
+    'title' => t('Memo'),
+    'help' => t('Payment comment.'),
+    'field' => array(
+      'handler' => 'views_handler_field',
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_string',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_string',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
+
+  // error field
+  $data['robokassa']['error'] = array(
+    'title' => t('Error'),
+    'help' => t('Text of the error, if occured.'),
+    'field' => array(
+      'handler' => 'views_handler_field',
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_string',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_string',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
+
+  // params field
+  $data['robokassa']['params'] = array(
+    'title' => t('Params'),
+    'help' => t('Additional payment params.'),
+    'field' => array(
+      'handler' => 'views_handler_field_serialized',
+    ),
+  );
+
+  return $data;
+}
diff --git a/robokassa.module b/robokassa.module
index fc32505..3418a33 100644
--- a/robokassa.module
+++ b/robokassa.module
@@ -519,3 +519,13 @@ function robokassa_payment_delete_multiple($payment_ids) {
   entity_delete_multiple('robokassa_payment', $payment_ids);
 }
 
+/**
+ * Implements hook_views_api().
+ */
+function robokassa_views_api() {
+  return array(
+    'api' => 3,
+    'path' => drupal_get_path('module', 'robokassa') . '/includes/views',
+  );
+}
+
-- 
1.7.9.5

