]> gitweb.fluxo.info Git - drupal/muamba.git/commitdiff
Coding muamba_recover() and misc fixes
authorSilvio Rhatto <rhatto@riseup.net>
Thu, 6 Oct 2011 20:41:54 +0000 (17:41 -0300)
committerSilvio Rhatto <rhatto@riseup.net>
Thu, 6 Oct 2011 20:41:54 +0000 (17:41 -0300)
muamba.business.inc
muamba.module
muamba.theme.inc

index 9d17f920ac006685469ca17bced6cc11f236a4cc..852add680b599c2913efd5ca6926a41208654fea 100644 (file)
@@ -269,23 +269,38 @@ function muamba_return($mid) {
  *
  * @param $mid
  *   Transaction id.
- *
- * @todo
  */
 function muamba_recover($mid) {
   global $user;
+  $mid         = (int) $mid;
+  $transaction = muamba_get_transaction($mid);
+  $node        = node_load($transaction['nid']);
 
-  // TODO: load nid from db
-  $nid  = (int) $nid;
-  $node = node_load($nid);
-
-  if (!$node || $node->type != MUAMBA_NODE_TYPE) {
+  // Access check
+  if (!muamba_has_management_access($node)) {
     drupal_not_found();
   }
 
-  if ($node->uid != $user->uid) {
-    // TODO: not node owner
+  // Status check
+  if ($transaction['status'] != MUAMBA_ACCEPTED ||
+      $transaction['status'] != MUAMBA_RETURNED ||
+      $transaction['status'] != MUAMBA_LOST) {
+    drupal_not_found();
   }
+
+  // Update database
+  $update = db_update('muamba')
+    ->fields(array(
+      'status' => MUAMBA_RECOVERED,
+    ))
+    ->condition('mid', $mid, '=')
+    ->execute();
+
+  // Notify item owner
+  $message = theme('muamba_recover_message', array('transaction' => $transaction));
+  $reply   = privatemsg_reply($transaction['thread_id'], $message);
+
+  return t('Recovered item.');  
 }
 
 /**
index de1724c4e43a97356e098b58585a9c19f3f11aed..4bff8519c122de2e3d93b26f03da2d1dea32420f 100644 (file)
@@ -174,6 +174,30 @@ function muamba_theme($existing, $type, $theme, $path) {
       ),
       'file' => 'muamba.theme.inc',
     ),
+    'muamba_cancel_message' => array(
+      'variables' => array(
+        'transaction' => NULL,
+      ),
+      'file' => 'muamba.theme.inc',
+    ),
+    'muamba_return_message' => array(
+      'variables' => array(
+        'transaction' => NULL,
+      ),
+      'file' => 'muamba.theme.inc',
+    ),
+    'muamba_recover_message' => array(
+      'variables' => array(
+        'transaction' => NULL,
+      ),
+      'file' => 'muamba.theme.inc',
+    ),
+    'muamba_lost_message' => array(
+      'variables' => array(
+        'transaction' => NULL,
+      ),
+      'file' => 'muamba.theme.inc',
+    ),
   );
 }
 
index ac8cdc71046f796bccddbe6758de2fc8b03e1598..4e201f7611f42b6a416fea85fefcc4ae96eb6169 100644 (file)
@@ -34,6 +34,8 @@ function theme_muamba_transactions($variables) {
   }
 
   foreach($transactions as $transaction) {
+    $actions = array();
+
     foreach (muamba_actions_available($type, $transaction['status']) as $action) {
       $callback  = muamba_actions($action);
       $actions[] = l(t($callback), 'muamba/'. $callback .'/'. $transaction['mid']);
@@ -104,3 +106,31 @@ function theme_muamba_accept_message($transaction = NULL) {
 function theme_muamba_reject_message($transaction = NULL) {
   return t('I reject your item request');
 }
+
+/**
+ * Theme callback.
+ */
+function theme_muamba_cancel_message($transaction = NULL) {
+  return t('I cancel my item request');
+}
+
+/**
+ * Theme callback.
+ */
+function theme_muamba_return_message($transaction = NULL) {
+  return t('I return your item');
+}
+
+/**
+ * Theme callback.
+ */
+function theme_muamba_recovered_message($transaction = NULL) {
+  return t('I recovered my item');
+}
+
+/**
+ * Theme callback.
+ */
+function theme_muamba_lost_message($transaction = NULL) {
+  return t('I declare that my item is lost');
+}