uid)); $received = muamba_transactions_summary(muamba_get_transactions($user->uid, 'received')); $output = theme('muamba_transactions', array('transactions' => $sent, 'type' => 'sent')); $output .= theme('muamba_transactions', array('transactions' => $received, 'type' => 'received')); return $output; } /** * Request an item. * * @param $nid * Requested item. */ function muamba_request($nid) { global $user; $nid = (int) $nid; $node = node_load($nid); // Access check if (!muamba_has_request_access($node)) { return MENU_NOT_FOUND; } // Check if user is blocked by the item owner if (muamba_user_has_blocked($node, $user)) { return t('The item owner has blocked you from asking this item.'); } // Check if the item is available if (!muamba_check_availability($nid)) { return t('Item not available'); } // Check if user already requested the item if (muamba_check_user_request($nid, $user->uid)) { return t('You already requested this item.'); } // Create transaction $transaction = array( 'nid' => $nid, 'owner' => $node->uid, 'uid' => $user->uid, 'status' => MUAMBA_REQUESTED, ); // Issue item request $transaction['mid'] = db_insert('muamba') ->fields($transaction) ->execute(); // Notify item owner $subject = t('Item request: @title', array('@title' => check_plain($node->title))); $message = theme('muamba_request_message', array('transaction' => $transaction)); $thread = privatemsg_new_thread(array(user_load($node->uid)), $subject , $message); $thread_id = $thread['message']->thread_id; // Update request with thread id $update = db_update('muamba') ->fields(array( 'thread_id' => $thread_id, )) ->condition('mid', $transaction['mid'], '=') ->execute(); // User output return t('You have requested an item'); } /** * Accept a transaction request. * * @param $mid * Transaction id. */ function muamba_accept($mid) { global $user; $mid = (int) $mid; $transaction = muamba_get_transaction($mid); $node = node_load($transaction['nid']); // Access check if (!muamba_has_management_access($node)) { return MENU_NOT_FOUND; } // Status check if ($transaction['status'] != MUAMBA_REQUESTED) { return MENU_NOT_FOUND; } // Update database muamba_update_status($mid, MUAMBA_ACCEPTED); // Notify item owner $message = theme('muamba_accept_message', array('transaction' => $transaction)); $reply = privatemsg_reply($transaction['thread_id'], $message); return t('Accepted item request.'); } /** * Reject a transaction request. * * @param $mid * Transaction id. */ function muamba_reject($mid) { global $user; $mid = (int) $mid; $transaction = muamba_get_transaction($mid); $node = node_load($transaction['nid']); // Access check if (!muamba_has_management_access($node)) { return MENU_NOT_FOUND; } // Status check if ($transaction['status'] != MUAMBA_REQUESTED) { return MENU_NOT_FOUND; } // Update database muamba_update_status($mid, MUAMBA_REJECTED); // Notify item owner $message = theme('muamba_reject_message', array('transaction' => $transaction)); $reply = privatemsg_reply($transaction['thread_id'], $message); return t('Rejected item request.'); } /** * Cancel a request. * * @param $mid * Transaction id. */ function muamba_cancel($mid) { global $user; $mid = (int) $mid; $transaction = muamba_get_transaction($mid); $node = node_load($transaction['nid']); // Access check if ($transaction['uid'] != $user->uid) { return MENU_NOT_FOUND; } // Status check if ($transaction['status'] != MUAMBA_REQUESTED) { return MENU_NOT_FOUND; } // Update database muamba_update_status($mid, MUAMBA_CANCELLED); // Notify item owner $message = theme('muamba_cancel_message', array('transaction' => $transaction)); $reply = privatemsg_reply($transaction['thread_id'], $message); return t('Cancelled item request.'); } /** * Return an item. * * @param $mid * Transaction id. */ function muamba_return($mid) { global $user; $mid = (int) $mid; $transaction = muamba_get_transaction($mid); $node = node_load($transaction['nid']); // Access check if ($transaction['uid'] != $user->uid) { return MENU_NOT_FOUND; } // Status check if ($transaction['status'] != MUAMBA_ACCEPTED && $transaction['status'] != MUAMBA_LOST) { return MENU_NOT_FOUND; } // Update database muamba_update_status($mid, MUAMBA_RETURNED); // Notify item owner $message = theme('muamba_return_message', array('transaction' => $transaction)); $reply = privatemsg_reply($transaction['thread_id'], $message); return t('Cancelled item request.'); } /** * Recover an item. * * @param $mid * Transaction id. */ function muamba_recover($mid) { global $user; $mid = (int) $mid; $transaction = muamba_get_transaction($mid); $node = node_load($transaction['nid']); // Access check if (!muamba_has_management_access($node)) { return MENU_NOT_FOUND; } // Status check if ($transaction['status'] != MUAMBA_ACCEPTED && $transaction['status'] != MUAMBA_RETURNED && $transaction['status'] != MUAMBA_LOST) { return MENU_NOT_FOUND; } // Update database muamba_update_status($mid, MUAMBA_RECOVERED); // Notify item owner $message = theme('muamba_recover_message', array('transaction' => $transaction)); $reply = privatemsg_reply($transaction['thread_id'], $message); return t('Item recovered.'); } /** * Report a lost item. * * @param $mid * Transaction id. */ function muamba_lost($mid) { global $user; $mid = (int) $mid; $transaction = muamba_get_transaction($mid); $node = node_load($transaction['nid']); // Access check if (!muamba_has_management_access($node)) { return MENU_NOT_FOUND; } // Status check if ($transaction['status'] != MUAMBA_ACCEPTED && $transaction['status'] != MUAMBA_RETURNED) { return MENU_NOT_FOUND; } // Update database muamba_update_status($mid, MUAMBA_LOST); // Notify item owner $message = theme('muamba_lost_message', array('transaction' => $transaction)); $reply = privatemsg_reply($transaction['thread_id'], $message); return t('Item lost.'); }