]> gitweb.fluxo.info Git - drupal/muamba.git/commitdiff
Adding more transaction logic
authorSilvio Rhatto <rhatto@riseup.net>
Tue, 27 Sep 2011 00:11:41 +0000 (21:11 -0300)
committerSilvio Rhatto <rhatto@riseup.net>
Tue, 27 Sep 2011 00:11:41 +0000 (21:11 -0300)
muamba.business.inc
muamba.db.inc
muamba.misc.inc [new file with mode: 0644]
muamba.module
muamba.theme.inc

index 5efb469f3fad1fe77fc5c3f975852471c60ff786..1b40d1ba30bbe60bb72e96ece62c21aa2a0d005a 100644 (file)
@@ -9,6 +9,66 @@
 include_once('muamba.db.inc');
 include_once('muamba.misc.inc');
 
+/**
+ * Determine possible actions for a transaction.
+ *
+ * @param $type
+ *   Transaction type (sent or received).
+ *
+ * @param $status
+ *   Current transaction status.
+ *
+ * @return
+ *   Array of available action codes.
+ */
+function muamba_actions_available($type = 'sent', $status) {
+  if ($type == 'sent') {
+    switch ($status) {
+    case MUAMBA_REQUESTED:
+      $actions = array(
+        MUAMBA_ACCEPTED,
+        MUAMBA_REJECTED,
+        );
+      break;
+
+    case MUAMBA_ACCEPTED:
+      $actions = array(
+        MUAMBA_RELEASED,
+        );
+      break;
+
+    case MUAMBA_RETURNED:
+      $actions = array(
+        MUAMBA_RELEASED,
+        );
+      break;
+
+    default:
+      $actions = array();
+    }
+  }
+  else {
+    switch ($status) {
+    case MUAMBA_REQUESTED:
+      $actions = array(
+        MUAMBA_CANCELLED,
+        );
+      break;
+
+    case MUAMBA_ACCEPTED:
+      $actions = array(
+        MUAMBA_RETURNED,
+        );
+      break;
+
+    default:
+      $actions = array();
+    }
+  }
+
+  return $actions;
+}
+
 /**
  * Transaction management page.
  */
index 93eb5bc0bdc04cccfb4f89704cca53318a01ae56..bd2322f1da586739f1589e9ce1b363752368f257 100644 (file)
@@ -42,6 +42,15 @@ function muamba_check_user_request($nid, $uid) {
  *
  * @param $uid
  *   Requester user uid.
+ *
+ * @param $type
+ *   Transaction type (sent or received).
+ *
+ * @param $status
+ *   Current transaction status.
+ *
+ * @return
+ *   Array of existing transactions.
  */
 function muamba_get_transactions($uid, $type = 'sent', $status = MUAMBA_REQUESTED) {
   $uid   = (int) $uid;
diff --git a/muamba.misc.inc b/muamba.misc.inc
new file mode 100644 (file)
index 0000000..4b2d2e6
--- /dev/null
@@ -0,0 +1,80 @@
+<?php
+
+/**
+ * @fils
+ * Miscelaneous functions.
+ */
+
+// Load requirements.
+include_once('muamba.misc.inc');
+
+/**
+ * Builds detailed transaction information.
+ *
+ * @param $transactions
+ *   Array with transactions.
+ *
+ * @return
+ *   Array with summarized transactions.
+ */
+function muamba_transactions_summary($transactions) {
+  for ($n = 0; $n < sizeof($transactions); $n++) {
+    $transactions[$n]['node']  = node_load($transactions[$n]['nid']);
+    $transactions[$n]['user']  = user_load($transactions[$n]['uid']);
+    $transactions[$n]['owner'] = user_load($transactions[$n]['owner']);
+  }
+
+  return $transactions;
+}
+
+/**
+ * Get status descriptions.
+ *
+ * @param $code
+ *   Optional status code.
+ *
+ * @return
+ *   Array of status descriptions or code
+ *   description if $code is supplied.
+ */
+function muamba_statuses($code = NULL) {
+  $status = array(
+    MUAMBA_REQUESTED => 'requested',
+    MUAMBA_ACCEPTED  => 'accepted',
+    MUAMBA_REJECTED  => 'rejected',
+    MUAMBA_RELEASED  => 'released',
+    MUAMBA_RETURNED  => 'returned',
+  );
+
+  if ($code == NULL) {
+    return $status;
+  }
+
+  return $status[$code];
+}
+
+/**
+ * Get status callback name.
+ *
+ * @param $code
+ *   Optional status code.
+ *
+ * @return
+ *   Array of callback names or callback
+ *   name if $code is supplied.
+ */
+function muamba_actions($code = NULL) {
+  $status = array(
+    MUAMBA_REQUESTED => 'request',
+    MUAMBA_ACCEPTED  => 'accept',
+    MUAMBA_REJECTED  => 'reject',
+    MUAMBA_RELEASED  => 'releas',
+    MUAMBA_RETURNED  => 'return',
+  );
+
+  if ($code == NULL) {
+    return $status;
+  }
+
+  return $status[$code];
+}
index 9588dacdd577c07846f7bf6f180d848956a1992d..647609352d5f8ff4c8e02d93f49295da49b03b82 100644 (file)
@@ -14,6 +14,7 @@ define('MUAMBA_ACCEPTED', 1);
 define('MUAMBA_REJECTED', 2);
 define('MUAMBA_RELEASED', 3);
 define('MUAMBA_RETURNED', 4);
+define('MUAMBA_CANCELLED', 4);
 
 /**
  * Implements hook_permission()
index 771c80b82195f465538626d2f56e9003bcf94066..1bec871c30bfd9648958082387792fc536aed9b6 100644 (file)
@@ -5,12 +5,15 @@
  * Misc theme functions.
  */
 
+/**
+ * Theme callback.
+ */
 function theme_muamba_transactions($variables) {
   $rows         = array();
   $type         = $variables['type'];
   $transactions = $variables['transactions'];
 
-  $output       = '<div class="muamba-transactions">';
+  $output = '<div class="muamba-transactions">';
 
   if ($type == 'sent') {
     $title = t('Items I requested from people');
@@ -19,7 +22,7 @@ function theme_muamba_transactions($variables) {
     $title = t('My items that people requested');
   }
 
-  $output      .= '<h2>'. $title .'</h2>';
+  $output .= '<h2>'. $title .'</h2>';
 
   if (empty($transactions)) {
     $output .= t('There are no transactions.');
@@ -28,11 +31,16 @@ function theme_muamba_transactions($variables) {
   }
 
   foreach($transactions as $transaction) {
+    foreach (muamba_actions_available($type, $transaction['status']) as $action) {
+      $callback  = muamba_actions($action);
+      $available_actions[] = l(t($callback), $callback);
+    }
+
     $rows[] = array(
       'asset'   => $transaction['node']->title,
       'user'    => $transaction['user']->name,
-      'status'  => muamba_statuses($transaction['status']),
-      'actions' => 'accept', // TODO
+      'status'  => t(muamba_statuses($transaction['status'])),
+      'available_actions' => implode($available_actions, '|'),
     );
   }