* Requested item.
*/
function muamba_request($nid) {
- // Sanitize
+ global $user;
$nid = (int) $nid;
$node = node_load($nid);
- if (!$node || $node->type != MUAMBA_NODE_TYPE) {
+ // Access check
+ if (!$node || $node->type != MUAMBA_NODE_TYPE || !node_access('view', $node)) {
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 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)) {
- // TODO
+ 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'];
+ $thread_id = $thread['message']->thread_id;
// Issue item request
- // TODO
+ $request = db_insert('muamba')
+ ->fields(
+ array(
+ 'nid' => $nid,
+ 'uid' => $user->uid,
+ 'status' => MUAMBA_REQUESTED,
+ 'thread_id' => $thread_id,
+ )
+ )
+ ->execute();
// User output
return t('You have requested an item');
* 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;
- }
+ $nid = (int) $nid;
+ $uid = (int) $uid;
$query = db_select('muamba', 'm');
$query
->condition('m.nid', $nid, '=')
- ->condition('m.uid', $uid, '=');
+ ->condition('m.uid', $uid, '=')
+ ->condition('m.status', MUAMBA_REQUESTED, '=');
$result = $query->countQuery()->execute()->fetchField();
* Definitions.
*/
define('MUAMBA_NODE_TYPE', 'muamba');
+define('MUAMBA_REQUESTED', 0);
+define('MUAMBA_ACCEPTED', 1);
+define('MUAMBA_REJECTED', 2);
+define('MUAMBA_RELEASED', 3);
+define('MUAMBA_RETURNED', 4);
/**
* Implements hook_permission()