aboutsummaryrefslogtreecommitdiff
path: root/muamba.business.inc
diff options
context:
space:
mode:
authorSilvio Rhatto <rhatto@riseup.net>2011-10-04 13:10:59 -0300
committerSilvio Rhatto <rhatto@riseup.net>2011-10-04 13:10:59 -0300
commitf47b73d4bc46351a2ed6fdb842ce452b815df58e (patch)
treeb3618ceb3918b13661d0e394b8cd32cdfcac5b5a /muamba.business.inc
parenta3336da7dd92a2b8d31f2f33a6106a1802b5a387 (diff)
downloadmuamba-f47b73d4bc46351a2ed6fdb842ce452b815df58e.tar.gz
muamba-f47b73d4bc46351a2ed6fdb842ce452b815df58e.tar.bz2
Enhancing request/accept
Diffstat (limited to 'muamba.business.inc')
-rw-r--r--muamba.business.inc66
1 files changed, 40 insertions, 26 deletions
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.');
}