コード例 #1
0
ファイル: item_input.php プロジェクト: robboor/opendb
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__";
        }
    }
}
コード例 #2
0
ファイル: Listing.class.php プロジェクト: horrabin/opendb
 /**
  * @param $item_r
  */
 function addTitleColumn($item_r)
 {
     $s_item_type = $item_r['s_item_type'];
     $is_item_reviewed = FALSE;
     if (is_item_reviewed($item_r['item_id'])) {
         $is_item_reviewed = TRUE;
     }
     $is_borrowed_or_returned = FALSE;
     if (is_item_borrowed_or_returned_by_user($item_r['item_id'], $item_r['instance_no'], get_opendb_session_var('user_id'))) {
         $is_borrowed_or_returned = TRUE;
     }
     $item_cover_image = FALSE;
     $header_column_r = $this->findHeaderColumnByFieldname('title');
     if ($header_column_r['cover_image_support'] === TRUE) {
         $item_cover_image = NULL;
         if (strlen($this->_item_type_rs[$s_item_type]['image_attribute_type']) === 0) {
             $this->_item_type_rs[$s_item_type]['image_attribute_type_r'] = fetch_sfieldtype_item_attribute_type_r($s_item_type, 'IMAGE');
         }
         if (is_array($this->_item_type_rs[$s_item_type]['image_attribute_type_r'])) {
             $attribute_type_r = $this->_item_type_rs[$s_item_type]['image_attribute_type_r'];
             $item_cover_image = fetch_attribute_val($item_r['item_id'], $item_r['instance_no'], $attribute_type_r['s_attribute_type']);
             // a kludge to use FALSE to test whether a default image should be displayed
             if ($item_cover_image === FALSE) {
                 $item_cover_image = NULL;
             }
         }
     }
     $item_r['title'] = $this->_titleMaskCfg->expand_item_title($item_r);
     $title_href_link = 'item_display.php?item_id=' . $item_r['item_id'] . '&instance_no=' . $item_r['instance_no'];
     if ($item_cover_image !== FALSE) {
         $this->_row_column_rs[] = array(column_type => 'coverimage', title_href_link => $title_href_link, item_cover_image => $item_cover_image);
     }
     $this->_row_column_rs[] = array(column_type => 'title', item_title => $item_r['title'], title_href_link => $title_href_link, is_item_reviewed => $is_item_reviewed, is_borrowed_or_returned => $is_borrowed_or_returned);
 }