Beispiel #1
0
function is_newinstance_status_type_valid($item_id, $owner_id, $new_status_type_r, &$errors)
{
    if ($new_status_type_r['closed_ind'] != 'Y') {
        if ((get_opendb_config_var('item_input', 'item_instance_support') !== FALSE || !is_exists_item_instance($item_id)) && (get_opendb_config_var('item_input', 'new_instance_owner_only') !== TRUE || is_user_owner_of_item($item_id, NULL, $owner_id))) {
            return TRUE;
        } else {
            $errors = array('error' => get_opendb_lang_var('operation_not_avail_new_instance'), 'detail' => '');
            return FALSE;
        }
    } else {
        $errors = array('error' => get_opendb_lang_var('s_status_type_not_supported', 's_status_type_desc', $new_status_type_r['description']), 'detail' => '');
        return FALSE;
    }
}
Beispiel #2
0
function handle_item_delete($item_r, $status_type_r, $HTTP_VARS, &$errors, $delete_with_closed_borrow_records = NULL)
{
    if ($item_r['owner_id'] != get_opendb_session_var('user_id') && !is_user_granted_permission(PERM_ITEM_ADMIN)) {
        $errors = array('error' => get_opendb_lang_var('cannot_delete_item_not_owned'), 'detail' => '');
        opendb_logger(OPENDB_LOG_WARN, __FILE__, __FUNCTION__, 'User to delete item instance they do not own', $item_r);
        return FALSE;
    }
    if ($status_type_r['delete_ind'] != 'Y') {
        $errors = array('error' => get_opendb_lang_var('operation_not_avail_s_status_type', 's_status_type_desc', $status_type_r['description']), 'detail' => '');
        opendb_logger(OPENDB_LOG_WARN, __FILE__, __FUNCTION__, 'Attempted to delete item instance with a status that prevents the item being deleted', $item_r);
        return FALSE;
    }
    if (is_exists_item_instance_relationship($item_r['item_id'], $item_r['instance_no'])) {
        $errors = array('error' => get_opendb_lang_var('item_not_deleted'), 'detail' => get_opendb_lang_var('item_related_to_other_items'));
        opendb_logger(OPENDB_LOG_WARN, __FILE__, __FUNCTION__, 'User attempted to to delete item with related items', $item_r);
        return FALSE;
    }
    if (is_item_reserved_or_borrowed($item_r['item_id'], $item_r['instance_no'])) {
        $errors = array('error' => get_opendb_lang_var('item_not_deleted'), 'detail' => get_opendb_lang_var('item_reserved_or_borrowed'));
        opendb_logger(OPENDB_LOG_WARN, __FILE__, __FUNCTION__, 'User attempted to to delete item with active reservation(s)', $item_r);
        return FALSE;
    }
    $inactive_borrowed_items_exist = FALSE;
    if (is_exists_item_instance_borrowed_item($item_r['item_id'], $item_r['instance_no'])) {
        if (get_opendb_config_var('item_input', 'allow_delete_with_closed_or_cancelled_borrow_records') !== TRUE) {
            $errors = array('error' => get_opendb_lang_var('item_not_deleted'), 'detail' => get_opendb_lang_var('item_has_inactive_borrowed_item'));
            opendb_logger(OPENDB_LOG_WARN, __FILE__, __FUNCTION__, 'User attempted to to delete item with inactive reservation(s)', $item_r);
            return FALSE;
        } else {
            $inactive_borrowed_items_exist = TRUE;
        }
    }
    if ($HTTP_VARS['confirmed'] == 'true' || $inactive_borrowed_items_exist !== TRUE && get_opendb_config_var('item_input', 'confirm_item_delete') === FALSE) {
        if ($inactive_borrowed_items_exist) {
            if (!delete_item_instance_inactive_borrowed_items($item_r['item_id'], $item_r['instance_no'])) {
                $db_error = db_error();
                $errors = array('error' => get_opendb_lang_var('undefined_error'), 'detail' => $db_error);
                return FALSE;
            }
        }
        if (!is_exists_item_instance_borrowed_item($item_r['item_id'], $item_r['instance_no'])) {
            delete_related_item_instance_relationship($item_r['item_id'], $item_r['instance_no'], $HTTP_VARS['parent_item_id'], $HTTP_VARS['parent_instance_no']);
            if (!is_exists_related_item_instance_relationship($item_r['item_id'], $item_r['instance_no'])) {
                if (!delete_item_instance($item_r['item_id'], $item_r['instance_no'])) {
                    $db_error = db_error();
                    $errors = array('error' => get_opendb_lang_var('item_not_deleted'), 'detail' => $db_error);
                    return FALSE;
                }
            } else {
                $errors = array('error' => get_opendb_lang_var('item_not_deleted'), 'detail' => get_opendb_lang_var('item_related_to_other_items'));
                opendb_logger(OPENDB_LOG_WARN, __FILE__, __FUNCTION__, 'User attempted to to delete item with attached item instance relationship record(s)', $item_r);
                return FALSE;
            }
        } else {
            if (is_item_reserved_or_borrowed($item_r['item_id'], $item_r['instance_no'])) {
                $errors = array('error' => get_opendb_lang_var('item_not_deleted'), 'detail' => get_opendb_lang_var('item_reserved_or_borrowed'));
            } else {
                $errors = array('error' => get_opendb_lang_var('item_not_deleted'), 'detail' => get_opendb_lang_var('item_has_inactive_borrowed_item'));
            }
            return FALSE;
        }
        // If child and no more instance left,
        // proceed with item and item_attribute delete.
        if (!is_exists_item_instance($item_r['item_id'], NULL)) {
            // Get rid of all reviews.
            if (is_item_reviewed($item_r['item_id'])) {
                delete_reviews($item_r['item_id']);
            }
            delete_item_attributes($item_r['item_id'], $item_r['instance_no']);
            if (!delete_item($item_r['item_id'])) {
                $db_error = db_error();
                $errors = array('error' => get_opendb_lang_var('item_not_deleted'), 'detail' => $db_error);
                return FALSE;
            }
            // As long as delete_item has worked, we do not care about anything else.
            return TRUE;
        }
    } else {
        if ($HTTP_VARS['confirmed'] != 'false') {
            if ($inactive_borrowed_items_exist) {
                return "__CONFIRM_INACTIVE_BORROW__";
            } else {
                return "__CONFIRM__";
            }
        } else {
            // confirmation required.
            return "__ABORTED__";
        }
    }
}
Beispiel #3
0
             }
         }
     }
     $page_title = get_opendb_lang_var('item_reserve_list');
     if (is_numeric($listingObject->getItemsPerPage())) {
         $listingObject->setTotalItems(fetch_my_basket_item_cnt(get_opendb_session_var('user_id')));
         if ($listingObject->getTotalItemCount() > 0) {
             $checkbox_column = TRUE;
             $result = fetch_my_basket_item_rs(get_opendb_session_var('user_id'), $listingObject->getCurrentOrderBy(), $listingObject->getCurrentSortOrder(), $listingObject->getStartIndex(), $listingObject->getItemsPerPage());
         }
     } else {
         $result = fetch_my_basket_item_rs(get_opendb_session_var('user_id'), $listingObject->getCurrentOrderBy(), $listingObject->getCurrentSortOrder());
     }
     // Set it explicitly here.
     $HTTP_VARS['op'] = 'my_reserve_basket';
     if (is_exists_item_instance($HTTP_VARS['item_id'], $HTTP_VARS['instance_no'])) {
         $footer_links_r[] = array(url => "item_display.php?item_id=" . $HTTP_VARS['item_id'] . "&instance_no=" . $HTTP_VARS['instance_no'], text => get_opendb_lang_var('back_to_item'));
     }
     if (is_opendb_session_var('listing_url_vars')) {
         $footer_links_r[] = array(url => "listings.php?" . get_url_string(get_opendb_session_var('listing_url_vars')), text => get_opendb_lang_var('back_to_listing'));
     }
 } else {
     if ($HTTP_VARS['op'] == 'admin_history') {
         echo _theme_header(get_opendb_lang_var('borrower_history'));
         echo "<h2>" . get_opendb_lang_var('borrower_history') . "</h2>";
         echo "\n<form action=\"{$PHP_SELF}\" method=\"GET\">";
         echo "\n<input type=\"hidden\" name=\"op\" value=\"my_history\">";
         echo "\n<table>";
         $results = fetch_user_rs(PERM_USER_BORROWER, ROLE_PERMISSIONS_INCLUDE, INCLUDE_CURRENT_USER, EXCLUDE_DEACTIVATED_USER, "fullname", "ASC");
         echo format_field(get_opendb_lang_var('borrower'), custom_select('uid', $results, '%fullname% (%user_id%)', 1, get_opendb_session_var('user_id'), 'user_id'));
         echo "</table>";
Beispiel #4
0
function perform_update_process(&$item_r, &$status_type_r, &$HTTP_VARS, &$footer_links_r)
{
    global $PHP_SELF;
    do_op_title($item_r, $status_type_r, $HTTP_VARS['start-op'] == 'newinstance' ? 'newinstance' : 'update');
    $errors = NULL;
    $return_val = FALSE;
    if ($HTTP_VARS['start-op'] == 'newinstance') {
        $item_r['instance_no'] = NULL;
        $return_val = handle_item_instance_insert($item_r, $status_type_r, $HTTP_VARS, $errors);
    } else {
        $return_val = handle_item_instance_update($item_r, $status_type_r, $HTTP_VARS, $errors);
    }
    if ($return_val === TRUE) {
        $return_val = handle_item_update($item_r, $HTTP_VARS, $errors);
        if (get_opendb_config_var('item_input', 'related_item_support') !== FALSE) {
            if (!empty($HTTP_VARS['parent_item'])) {
                $parent_item_r = get_item_id_and_instance_no($HTTP_VARS['parent_item']);
                if (is_exists_item_instance($parent_item_r['item_id'], $parent_item_r['instance_no']) && !is_exists_related_item_instance_relationship($item_r['item_id'], $item_r['instance_no'], $parent_item_r['item_id'], $parent_item_r['instance_no'])) {
                    insert_item_instance_relationship($parent_item_r['item_id'], $parent_item_r['instance_no'], $item_r['item_id'], $item_r['instance_no']);
                }
            }
        }
    }
    if ($return_val === "__INVALID_DATA__") {
        echo format_error_block($errors);
        $HTTP_VARS['op'] = 'edit';
        $formContents = handle_edit_or_refresh($HTTP_VARS['op'], $item_r, $status_type_r, $HTTP_VARS, $errors);
        if ($formContents !== FALSE) {
            echo $formContents;
        } else {
            echo format_error_block($errors);
        }
    } else {
        if ($return_val === TRUE) {
            if ($HTTP_VARS['start-op'] == 'newinstance') {
                echo "<p class=\"success\">" . get_opendb_lang_var('item_instance_added') . "</p>";
            } else {
                echo "<p class=\"success\">" . get_opendb_lang_var('item_updated') . "</p>";
            }
            echo format_error_block($errors, 'warning');
            $footer_links_r[] = array(url => "item_display.php?item_id=" . $item_r['item_id'] . "&instance_no=" . $item_r['instance_no'], text => get_opendb_lang_var('back_to_item'));
        } else {
            echo format_error_block($errors);
        }
    }
}