type != MUAMBA_NODE_TYPE || !node_access('view', $node)) { drupal_not_found(); } // Check if user is blocked by the item owner if (module_exists('pm_block_user')) { $owner = user_load($node->uid); if (pm_block_user_has_blocked($user, $owner)) { return t('The item owner has blocked you from asking this item.'); } } // Check if user already requested the item if (muamba_check_user_request($nid, $user->uid)) { return t('You already requested this item.'); } // Notify item owner $thread = privatemsg_new_thread(array(user_load($node->uid)), t('Item request'), 'User has requested an item'); $thread_id = $thread['message']->thread_id; // Issue item request $request = db_insert('muamba') ->fields( array( 'nid' => $nid, 'owner' => $node->uid, 'uid' => $user->uid, 'status' => MUAMBA_REQUESTED, 'thread_id' => $thread_id, ) ) ->execute(); // User output return t('You have requested an item'); } /** * Check if user already requested an item. * * @param $nid * Item nid. * * @param $uid * Requester user nid. * * @return * TRUE if user already requested an item, FALSE otherwise. */ function muamba_check_user_request($nid, $uid) { $nid = (int) $nid; $uid = (int) $uid; $query = db_select('muamba', 'm'); $query ->condition('m.nid', $nid, '=') ->condition('m.uid', $uid, '=') ->condition('m.status', MUAMBA_REQUESTED, '='); $result = $query->countQuery()->execute()->fetchField(); if ($result > 0) { return TRUE; } return FALSE; } /** * Get the requests sent or received. * * @param $uid * Requester user uid. */ function muamba_get_transactions($uid, $type = 'sent', $status = MUAMBA_REQUESTED) { $uid = (int) $uid; $query = db_select('muamba', 'm'); if ($type == 'sent') { $query ->condition('m.uid', $uid, '=') ->condition('m.status', $status, '=') ->fields('m', array('mid', 'uid', 'owner', 'thread_id')); } else { $query ->condition('m.owner', $uid, '=') ->condition('m.status', $status, '=') ->fields('m', array('mid', 'uid', 'owner', 'thread_id')); } return $query->execute()->fetchAll(); } /** * Transaction management page. */ function muamba() { global $user; $sent = muamba_get_transactions($user->uid); $received = muamba_get_transactions($user->uid, 'received'); $output = theme('muamba_transactions', array('transactions' => $sent)); $output .= theme('muamba_transactions', array('transactions' => $received)); return $output; } /** * Accept a transaction request. * * @param $mid * Transaction id. * * @todo */ function muamba_accept($mid) { } /** * Reject a transaction request. * * @param $mid * Transaction id. * * @todo */ function muamba_reject($mid) { } /** * Release a transaction. * * @param $mid * Transaction id. * * @todo */ function muamba_release($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 } } /** * Return an item. * * @param $mid * Transaction id. * * @todo */ function muamba_return($mid) { }