From f47b73d4bc46351a2ed6fdb842ce452b815df58e Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Tue, 4 Oct 2011 13:10:59 -0300 Subject: Enhancing request/accept --- muamba.business.inc | 66 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 26 deletions(-) (limited to 'muamba.business.inc') diff --git a/muamba.business.inc b/muamba.business.inc index b68443c..4d4bc5b 100644 --- a/muamba.business.inc +++ b/muamba.business.inc @@ -5,10 +5,6 @@ * Business logic for Muamba. */ -// Load requirements. -include_once('muamba.db.inc'); -include_once('muamba.misc.inc'); - /** * Determine possible actions for a transaction. * @@ -96,16 +92,13 @@ function muamba_request($nid) { $node = node_load($nid); // Access check - if (!$node || $node->type != MUAMBA_NODE_TYPE || !node_access('view', $node)) { + if (!muamba_has_request_access($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.'); - } + if (muamba_user_has_blocked($node, $user)) { + return t('The item owner has blocked you from asking this item.'); } // Check if user already requested the item @@ -113,21 +106,31 @@ function muamba_request($nid) { 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 - $thread = privatemsg_new_thread(array(user_load($node->uid)), t('Item request'), 'User has requested an item'); + $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; - // Issue item request - $request = db_insert('muamba') - ->fields( - array( - 'nid' => $nid, - 'owner' => $node->uid, - 'uid' => $user->uid, - 'status' => MUAMBA_REQUESTED, - 'thread_id' => $thread_id, - ) - ) + // Update request with thread id + $update = db_update('muamba') + ->fields(array( + 'thread_id' => $thread_id, + )) + ->condition('mid', $transaction['mid'], '=') ->execute(); // User output @@ -146,17 +149,28 @@ function muamba_accept($mid) { global $user; $mid = (int) $mid; $transaction = muamba_get_transaction($mid); + $node = node_load($transaction->nid); // Access check - // TODO: also check if user owns the item - $node = node_load($transaction->nid); - if (!$node || $node->type != MUAMBA_NODE_TYPE || !node_access('view', $node)) { + if (!muamba_has_management_access($node)) { + drupal_not_found(); + } + + // Status check + if ($transaction->status != MUAMBA_REQUESTED) { drupal_not_found(); } - // TODO // Update database + $update = db_update('muamba') + ->fields(array( + 'status' => MUAMBA_ACCEPTED, + )) + ->condition('mid', $mid, '=') + ->execute(); + // Notify item owner + // TODO return t('Accepted item request.'); } -- cgit v1.2.3