From 4f15de058dc6dadee6e79d16b441202b54161f02 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sat, 24 Sep 2011 19:52:36 -0300 Subject: Adding transactional fields to muamba data model --- muamba.business.inc | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++ muamba.install | 74 +++++++++++++++++++++++++++++++++++ muamba.misc.inc | 110 --------------------------------------------------- muamba.module | 10 ++--- 4 files changed, 190 insertions(+), 115 deletions(-) create mode 100644 muamba.business.inc delete mode 100644 muamba.misc.inc diff --git a/muamba.business.inc b/muamba.business.inc new file mode 100644 index 0000000..f7b9e05 --- /dev/null +++ b/muamba.business.inc @@ -0,0 +1,111 @@ +type != MUAMBA_NODE_TYPE) { + drupal_not_found(); + } + + global $user; + + // TODO: check if user has permission to access the node. + // TODO: check if user is not blocked by privatemsg? + + // Check if user already requested the item + if (muamba_check_user_request($nid, $user->uid)) { + // TODO + } + + // 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 + // TODO + + // 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) { + if (!is_int($nid) || !is_int($uid)) { + return FALSE; + } + + $query = db_select('muamba', 'm'); + + $query + ->condition('m.nid', $nid, '=') + ->condition('m.uid', $uid, '='); + + $result = $query->countQuery()->execute()->fetchField(); + + if ($result > 0) { + return TRUE; + } + + return FALSE; +} + +/** + * Release an item requested by a given user. + * + * @param $nid + * Item nid. + * + * @param $uid + * Requester user uid. + * + * @todo + */ +function muamba_release($nid, $uid) { + global $user; + + $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 + } +} + +/** + * Get the requests sent or received. + * + * @param $uid + * Requester user uid. + * + * @todo + */ +function muamba_get_requests($nid, $type = 'sent') { +} diff --git a/muamba.install b/muamba.install index ab0bcef..e6b3ead 100644 --- a/muamba.install +++ b/muamba.install @@ -21,6 +21,12 @@ function muamba_schema() { $schema['muamba'] = array( 'description' => 'The base table for muamba assets.', 'fields' => array( + 'mid' => array( + 'description' => t('The primary identifier for a muamba transaction.'), + 'type' => 'serial', + 'unsigned' => TRUE, + 'not null' => TRUE, + ), 'nid' => array( 'description' => t('The {node}.nid of the borrowed item.'), 'type' => 'int', @@ -35,6 +41,20 @@ function muamba_schema() { 'not null' => TRUE, 'default' => 0, ), + 'thread_id' => array( + 'description' => t('The {thread}.thread_id for the transaction.'), + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + ), + 'status' => array( + 'description' => t('Transaction status.'), + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + ), ), 'foreign keys' => array( 'node' => array( @@ -45,8 +65,62 @@ function muamba_schema() { 'table' => 'users', 'columns' => array('uid' => 'uid'), ), + 'thread' => array( + 'table' => 'pm_index', + 'columns' => array('thread_id' => 'thread_id'), + ), ), + 'primary key' => array('mid'), ); return $schema; } + +/** + * Adds transactional fields to muamba data model. + */ +function muamba_update_7000(&$sandbox) { + // Make sure to not run this update twice. + if (db_field_exists('muamba', 'mid')) { + return; + } + + db_add_field('muamba', 'mid', + array( + 'description' => t('The primary identifier for a muamba transaction.'), + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + ) + ); + + db_add_primary_key('muamba', array('mid')); + + db_add_field('muamba', 'status', + array( + 'description' => t('Transaction status.'), + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + ) + ); + + db_add_field('muamba', 'thread_id', + array( + 'description' => t('The {thread}.thread_id for the transaction.'), + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + ), + array( + 'foreign keys' => array( + 'thread' => array( + 'table' => 'pm_index', + 'columns' => array('thread_id' => 'thread_id'), + ) + ) + ) + ); +} diff --git a/muamba.misc.inc b/muamba.misc.inc deleted file mode 100644 index c164664..0000000 --- a/muamba.misc.inc +++ /dev/null @@ -1,110 +0,0 @@ -type != MUAMBA_NODE_TYPE) { - drupal_not_found(); - } - - global $user; - - // TODO: check if user has permission to access the node. - // TODO: check if user is not blocked by privatemsg? - - // Check if user already requested the item - if (muamba_check_user_request($nid, $user->uid)) { - // TODO - } - - // Issue item request - // TODO - - // Notify item owner - privatemsg_new_thread(array(user_load($node->uid)), t('Item request'), 'User has requested an item'); - - // 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) { - if (!is_int($nid) || !is_int($uid)) { - return FALSE; - } - - $query = db_select('muamba', 'm'); - - $query - ->condition('m.nid', $nid, '=') - ->condition('m.uid', $uid, '='); - - $result = $query->countQuery()->execute()->fetchField(); - - if ($result > 0) { - return TRUE; - } - - return FALSE; -} - -/** - * Release an item requested by a given user. - * - * @param $nid - * Item nid. - * - * @param $uid - * Requester user uid. - * - * @todo - */ -function muamba_release($nid, $uid) { - global $user; - - $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 - } -} - -/** - * Get the requests sent or received. - * - * @param $uid - * Requester user uid. - * - * @todo - */ -function muamba_get_requests($nid, $type = 'sent') { -} diff --git a/muamba.module b/muamba.module index a36b268..411ee07 100644 --- a/muamba.module +++ b/muamba.module @@ -31,7 +31,7 @@ function muamba_menu() { 'page callback' => 'muamba_request', 'access arguments' => array('request item'), 'type' => MENU_SUGGESTED_ITEM, - 'file' => 'muamba.misc.inc', + 'file' => 'muamba.business.inc', ); $items['muamba/accept'] = array( @@ -39,7 +39,7 @@ function muamba_menu() { 'page callback' => 'muamba_accept', 'access arguments' => array('accept item'), 'type' => MENU_SUGGESTED_ITEM, - 'file' => 'muamba.misc.inc', + 'file' => 'muamba.business.inc', ); $items['muamba/reject'] = array( @@ -47,7 +47,7 @@ function muamba_menu() { 'page callback' => 'muamba_reject', 'access arguments' => array('reject item'), 'type' => MENU_SUGGESTED_ITEM, - 'file' => 'muamba.misc.inc', + 'file' => 'muamba.business.inc', ); $items['muamba/release'] = array( @@ -55,7 +55,7 @@ function muamba_menu() { 'page callback' => 'muamba_release', 'access arguments' => array('release item'), 'type' => MENU_SUGGESTED_ITEM, - 'file' => 'muamba.misc.inc', + 'file' => 'muamba.business.inc', ); $items['muamba/return'] = array( @@ -63,7 +63,7 @@ function muamba_menu() { 'page callback' => 'muamba_return', 'access arguments' => array('return item'), 'type' => MENU_SUGGESTED_ITEM, - 'file' => 'muamba.misc.inc', + 'file' => 'muamba.business.inc', ); return $items; -- cgit v1.2.3