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)) { drupal_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.'); } // TODO: check if the item is 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)) { drupal_not_found(); } // Status check if ($transaction->status != MUAMBA_REQUESTED) { drupal_not_found(); } // Update database $update = db_update('muamba') ->fields(array( 'status' => MUAMBA_ACCEPTED, )) ->condition('mid', $mid, '=') ->execute(); // 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. * * @todo */ function muamba_reject($mid) { } /** * Cancel a request. * * @param $mid * Transaction id. * * @todo */ function muamba_cancel($mid) { } /** * Return an item. * * @param $mid * Transaction id. * * @todo */ function muamba_return($mid) { } /** * Recover an item. * * @param $mid * Transaction id. * * @todo */ function muamba_recover($mid) { global $user; // TODO: load nid from db $nid = (int) $nid; $node = node_load($nid); if (!$node || $node->type != MUAMBA_NODE_TYPE) { drupal_not_found(); } if ($node->uid != $user->uid) { // TODO: not node owner } } /** * Report a lost item. * * @param $mid * Transaction id. * * @todo */ function muamba_lost($mid) { }